주:

Oracle Cloud Infrastructure Resource Manager와 자동화 프로세스 통합

소개

OCI(Oracle Cloud Infrastructure) 리소스 관리자 서비스는 모든 OCI 리소스의 배포 및 운영을 자동화합니다. 이 서비스는 코드형 인프라(IaC) 모델을 사용하여 DevOps 엔지니어가 어디서나 인프라를 개발하고 배포할 수 있는 오픈 소스 산업 표준인 Terraform을 기반으로 합니다.

Terraform 구성은 선언적 구성 파일에 인프라를 인코딩합니다. OCI Resource Manager 서비스를 사용하면 여러 팀과 플랫폼에서 Infrastructure 구성 및 상태 파일을 공유하고 관리할 수 있습니다.

OCI Resource Manager를 통해 OCI 콘솔에서 Terraform 스크립트를 실행할 수 있습니다. REST 호출을 수행하거나 OCI CLI(Oracle Cloud Infrastructure Command Line Interface)를 사용하여 OCI Devops, Jenkins, GitHub 등과 같은 자동화 툴과의 통합 가능성을 확장할 수도 있습니다.

구조

이 자습서에서는 OCI 리소스 관리자 실행 사용자가 데이터베이스 및 저장된 비밀번호를 생성할 수 있는 적절한 액세스 권한을 가지도록 OCI 저장소 암호를 통해 안전하게 데이터베이스 관리자 비밀번호를 획득하여 Oracle Autonomous Database 인스턴스 배치를 자동화합니다.

목표

필요 조건

작업 1: OCI 저장소에서 Oracle Autonomous Database에 대한 암호 생성

OCI Vault에서 암호를 생성하여 중요한 데이터를 노출하지 않고 Terraform에서 새 리소스를 구성하는 방법을 설명합니다.

암호는 암호, 인증서, SSH 키 또는 OCI 서비스와 함께 사용하는 인증 토큰과 같은 인증서입니다. OCI Vault에 암호를 저장하면 코드 또는 구성 파일과 같은 다른 곳에 암호를 저장하는 것보다 더 강력한 보안을 제공합니다. 리소스 또는 기타 서비스에 액세스하기 위해 필요할 때 OCI Vault 서비스에서 암호를 검색할 수 있습니다.

OCI 콘솔, OCI CLI 또는 API를 사용하여 암호를 생성할 수 있습니다. 암호의 암호 컨텐츠는 외부 소스에서 서비스로 가져옵니다. OCI 저장소 서비스는 저장소에 암호를 저장합니다.

주: 이 작업의 경우 OCI 콘솔에서 관리자 사용자로 로그인해야 합니다. OCI 저장소에 비밀번호를 생성하려면 권한이 있어야 합니다.

  1. OCI 콘솔에 로그인하여 ID 및 보안저장소를 누릅니다.

    img_10.png

  2. 암호를 저장할 구획을 선택하고 저장소 생성을 누릅니다.

    img_29.png

  3. 저장소 이름을 입력하고 구획을 확인한 후 저장소 생성을 누릅니다.

    img_11.png

  4. Vault가 작성되었는지 확인하고 키를 작성합니다. 마스터 암호화 키키 생성을 누릅니다.

    img_12.png

  5. 구획을 확인하고 키 이름을 입력합니다. 예를 들어, autonomouskey이름으로 입력하고 키 생성을 누릅니다.

    img_13.png

    키가 만들어졌는지 확인합니다.

    img_14.png

  6. 비밀비밀 생성을 누릅니다.

    img_15.png

  7. 자율운영 관리자 비밀번호가 생성됩니다. 다음 정보를 입력하고 비밀 생성을 누릅니다.

    • 구획: 구획 선택.
    • 이름: 첫번째 암호의 이름을 입력합니다.
    • 비밀번호를 포함하려면 수동 암호 생성을 선택합니다.
    • 비밀 유형 템플리트: Plain-Text를 입력합니다.
    • 비밀 내용: 비밀번호를 입력합니다.

    img_16.png

  8. 비밀 OCID가 필요합니다. OCID를 복사하려면 복사를 누릅니다.

    img_17.png

태스크 2: OCI 사용자에 대한 정책 생성

이 자습서에서는 TestGroup라는 그룹에 포함된 사용자 이름 TestUser을 고려합니다. 이제 이름이 TestPolicy인 정책을 만듭니다.

이 작업은 Terraform 자동화의 보안을 보장하는 데 필요한 모든 권한을 제어하므로 중요합니다.

주: 이 작업의 경우 OCI에서 관리자 사용자로 로그인해야 합니다.

  1. OCI 콘솔로 이동하여 ID 및 보안정책을 누릅니다.

    img_18.png

  2. 정책 생성을 누릅니다.

    img_19.png

  3. 명세서 섹션에 다음 정책을 입력합니다.

    • 이 정책은 이전에 생성된 TestGroup를 그룹화하여 OCI 리소스 관리자에서 스택 및 작업을 관리할 수 있는 권한을 부여합니다.

      - Allow group 'Default'/'TestGroup' to manage orm-stacks in compartment integration
      - Allow group 'Default'/'TestGroup' to manage orm-jobs in compartment integration
      - Allow group 'Default'/'TestGroup' to read orm-config-source-providers in tenancy
      
    • 이 정책은 구획 통합에 Oracle Autonomous Database 인스턴스를 생성할 수 있는 권한을 제공합니다.

      - Allow group 'Default'/'TestGroup' to manage autonomous-database in compartment integration
      
    • 그룹은 Terraform 스크립트를 통해 OCI Vault에 저장된 비밀번호를 읽을 수 있습니다.

      - Allow group 'Default'/'TestGroup' to use secret-family in tenancy
      
    • 이 정책은 Terraform 스크립트를 특정 구획에 저장할 수 있는 권한을 제공합니다.

      - Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
      
    • 이 정책을 사용하면 TestGroup 사용자가 OCI 코드 편집기에서 코드를 편집할 수 있습니다.

      - Allow group 'Default'/'TestGroup' to use cloud-shell in tenancy
      

    cloud_shell.png

작업 3: 템플릿에서 스택 만들기

Oracle Autonomous Database 인스턴스에 대한 스택을 생성합니다. 이를 위해 템플릿을 사용할 수 있습니다. 첫번째 단계는 작업 2에서 생성한 유저로 로그인하는 것입니다.

  1. OCI 콘솔로 이동하여 햄버거 메뉴를 누릅니다.

    img_1.png

  2. 개발자 서비스스택을 누릅니다.

    img_2.png

  3. 구획을 선택하고 스택 생성을 누릅니다.

    CleanShot 2024-04-15(07.47.32.png)

  4. 스택 정보 페이지에서 템플리트를 선택하고 템플리트 선택을 눌러 Oracle Autonomous Database용 Terraform 스크립트를 생성합니다.

    CleanShot 2024-04-15(07.48.19.png)

  5. 서비스 탭에서 Autonomous Transaction Processing Database를 선택하고 템플리트 선택을 누릅니다.

    CleanShot 2024-04-15(07.49.57.png)

  6. Terraform 스크립트를 생성하고 OCI Object Storage 버킷에 저장할 수 있습니다. 사용자정의 Terraform 제공자 사용을 선택하고 버킷 구획이름을 입력한 다음 스택을 저장합니다.

    CleanShot 2024-04-15(07.51.23.png)

    스택이 저장됩니다.

    CleanShot 2024-04-15(07.54.01.png)

  7. 이 템플리트는 OCI 저장소에 저장된 암호를 읽지 않습니다. Terraform이 암호를 읽도록 하려면 코드를 변경해야 합니다.

    편집을 누르고 코드 편집기에서 Terraform 구성 편집을 선택합니다.

    img_3.png

  8. 코드를 편집할 수 있습니다. 기본 코드는 암호에 대한 임의 문자열을 생성합니다.

    • main.tf 파일.

      CleanShot 2024-04-15(08.05.40.png)

      CleanShot 2024-04-15(08.08.32.png)

      oci_secrets_secretbundle라는 새 데이터를 추가하고 다음 속성에 지정해야 합니다.

      • admin_password(autonomous_data_warehouseautonomous_database 섹션)
      • password(autonomous_database_wallet 섹션)
    • main.tf - autonomous_data_warehouse 섹션.

      data "oci_secrets_secretbundle" "bundle" {
          secret_id = var.secret_ocid
      }
      
      admin_password = base64decode(data.oci_secrets_secretbundle.bundle.secret_bundle_content.0.content)
      

      CleanShot 2024-04-15(08.28.07.png)

    • main.tf - autonomous_database 섹션.

      img_4.png

    • main.tf - autonomous_database_wallet 섹션.

      img_5.png

      CleanShot 2024-04-15(08.30.15) substituir.png

    variables.tf 파일에 다음 코드를 추가하고 작업 1에서 생성된 암호의 OCID를 바꿉니다.

    variable "secret_ocid" {
        default = "ocid1.vaultsecret.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    }
    
    • variables.tf 파일.

      CleanShot 2024-04-15(08.30.52.png)

    주: 파일을 저장합니다. 마우스 커서를 스택 위로 이동(편집기의 오른쪽에 있는 Autonomous Transaction Processing.... 제목에서) 마우스 오른쪽 버튼을 누르고 프로젝트를 저장합니다. 저장하지 않고 그대로 두면 원래 코드 스크립트에서 임의 문자열을 사용하는 것으로 가정합니다.

작업 4: 권한 테스트

정책을 테스트하고 특정 구획에서 OCI Resource Manager, OCI Vault 및 Oracle Autonomous Database 인스턴스를 제어하는 방법을 확인할 수 있습니다.

  1. 관리자 사용자 인증서로 OCI 콘솔에 로그인하고 TestPolicy 정책에서 TestGroup 그룹에 대한 모든 정책을 제거합니다. 를 누르고 확인합니다.

    img_7.png

  2. 이제 TestGroup 그룹의 user로 로그인하면 스택이 표시되지 않으므로 실행할 수 없습니다.

    CleanShot 2024-04-15(20.02.33.png)

  3. 관리 사용자를 사용하여 다음 명령문을 추가합니다.

    Allow group 'Default'/'TestGroup' to manage orm-stacks in compartment integration
    Allow group 'Default'/'TestGroup' to manage orm-jobs in compartment integration
    Allow group 'Default'/'TestGroup' to read orm-config-source-providers in tenancy
    Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
    

    img_8.png

    다음 명령문은 OCI 리소스 관리자 스택을 사용할 수 있도록 TestGroup 권한을 사용자에게 부여합니다.

    CleanShot 2024-04-15(20.12.55.png)

  4. 사용자가 Oracle Autonomous Database 인스턴스를 생성하고 OCI Vault에서 암호를 읽을 수 있는 권한 부여를 제거했습니다. 따라서 성공 없이 스택을 실행할 수 있습니다. 테스트하려면 스택 세부정보 페이지에서 적용을 누릅니다.

    CleanShot 2024-04-15(20.16.39.png)

    CleanShot 2024-04-15(20.18.40.png)

  5. TestPolicy에 Oracle Autonomous Database 및 OCI Vault 권한을 추가합니다.

    Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
    Allow group 'Default'/'TestGroup' to manage autonomous-database in compartment integration
    

    img_9.png

  6. 스택 세부정보 페이지에서 적용을 누르면 비밀번호를 노출하지 않고도 모든 리소스를 제어할 수 있습니다.

    CleanShot 2024-04-15(21.34.57.png)

작업 5: REST를 사용하여 OCI Resource Manager Automation 호출

OCI의 모든 리소스에는 OCI 콘솔에서 실행되는 것처럼 서비스를 호출하기 위한 OCI REST API 또는 OCI CLI 명령이 있습니다.

OCI REST API에 대한 자세한 내용은 OCI REST API를 참조하십시오. OCI CLI 명령 목록은 Oracle Cloud Infrastructure CLI 명령 참조에서 확인할 수 있습니다.

이제 OCI REST API 또는 OCI CLI 명령을 사용하여 OCI Resource Manager 스택을 실행하도록 선택할 수 있습니다. 작업을 생성하려면 CreateJob을 참조하거나 다음 샘플 코드 curl-oci.zip를 OCI 매개변수로 준비된 curl-oci.sh와 함께 사용할 수 있습니다.

img_20.png

REST 요청에 대한 서명을 생성해야 합니다. 자세한 내용은 Oracle Cloud Infrastructure(OCI) REST call walkthrough with curl을 참조하십시오.

  1. STACK-RUN.sh라는 파일을 생성합니다. curl-oci.sh를 사용하는 REST 요청이 됩니다. 이 툴은 OCI 정보로 권한 부여 문자열을 준비합니다.

    img_1.png

  2. 스택 ID구획 ID를 사용하여 request.json라는 파일을 만듭니다.

    img.png

  3. curl-oci.sh 파일을 열고 다음 매개변수를 변경합니다. 이러한 매개변수는 OCI CLI 설치와 동일합니다.

    img_2.png

    이제 스크립트를 실행합니다.

    img_3.png

    성공 결과를 볼 수 있습니다.

    img_4.png

확인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.