ノート:

Oracle Cloud Infrastructure Resource Managerと自動化プロセスの統合

イントロダクション

Oracle Cloud Infrastructure (OCI) Resource Managerサービスは、すべてのOCIリソースのデプロイメントと操作を自動化します。infrastructure-as-code (IaC)モデルを使用するサービスは、DevOpsエンジニアがインフラストラクチャをどこでも開発およびデプロイできるオープン・ソースの業界標準であるTerraformに基づいています。

Terraform構成は、宣言的な構成ファイルのインフラストラクチャをエンコードします。OCI Resource Managerサービスを使用すると、複数のチームおよびプラットフォームにわたってインフラストラクチャ構成と状態ファイルを共有および管理できます。

OCI Resource Managerを使用すると、OCIコンソールでTerraformスクリプトを実行できます。また、RESTコールを作成したり、Oracle Cloud Infrastructureコマンドライン・インタフェース(OCI CLI)を使用したりすることもできるため、OCI Devops、Jenkins、GitHubなどの自動化ツールとの統合の可能性が広がります。

architecture

このチュートリアルでは、データベースに公開せずにOCI Vaultシークレットを介してデータベース管理パスワードを安全に取得することで、Oracle Autonomous Databaseインスタンスのデプロイメントを自動化します。これにより、OCI Resource Manager実行ユーザーは、データベースおよび格納されたパスワードを作成するための適切なアクセス権を持ちます。

目的

前提条件

タスク1: OCI VaultでのOracle Autonomous Databaseのシークレットの作成

OCI Vaultにパスワードを作成し、機密データを公開せずにTerraformで新しいリソースを構成する方法を説明します。

セキュリティとは、パスワード、証明書、SSHキー、OCIサービスで使用する認証トークンなどの資格証明です。シークレットをOCI Vaultに格納すると、コードや構成ファイルなどの他の場所に格納するよりも優れたセキュリティを実現できます。リソースまたはその他のサービスにアクセスするためにシークレットが必要な場合、OCI Vaultサービスからシークレットを取得できます。

OCIコンソール、OCI CLIまたはAPIを使用して、シークレットを作成できます。秘密のシークレット・コンテンツは、外部ソースからサービスにインポートされます。OCI Vaultサービスは、シークレットをボールトに格納します。

ノート:このタスクでは、OCIコンソールで管理ユーザーとしてログインする必要があります。OCI Vaultでパスワードを作成する権限が必要です。

  1. OCIコンソールにログインし、「アイデンティティとセキュリティ」および「Vault」をクリックします。

    img_10.png

  2. シークレットを格納するコンパートメントを選択し、「Vaultの作成」をクリックします。

    img_29.png

  3. ボールトの名前を入力し、コンパートメントを確認し、「Vaultの作成」をクリックします。

    img_11.png

  4. ボールトが作成されたことを確認し、キーを作成します。「マスター暗号化キー」および「キーの作成」をクリックします。

    img_12.png

  5. コンパートメントを確認し、キーの名前を入力します。たとえば、「名前」autonomouskeyと入力し、「キーの作成」をクリックします。

    img_13.png

    キーが作成されていることを確認します。

    img_14.png

  6. 「シークレット」および「シークレットの作成」をクリックします。

    img_15.png

  7. Autonomous Adminパスワードを作成します。次の情報を入力し、「シークレットの作成」をクリックします。

    • コンパートメント:コンパートメントの選択
    • 名前:最初のシークレットの名前を入力します。
    • パスワードを含めるには、「手動シークレット生成」を選択します。
    • シークレット・タイプ・テンプレート: Plain-Textと入力します。
    • シークレット・コンテンツ:パスワードを入力します。

    img_16.png

  8. シークレットOCIDが必要です。OCIDをコピーするには、「コピー」をクリックします。

    img_17.png

タスク2: OCIユーザーのポリシーの作成

このチュートリアルでは、TestGroupという名前のグループに含まれるユーザー名TestUserについて考えます。次に、TestPolicyという名前のポリシーを作成します。

これは、Terraform自動化のセキュリティを保証するために必要なすべての権限を制御するため、このタスクは重要です。

ノート:このタスクでは、OCIの管理ユーザーを使用してログインする必要があります。

  1. OCIコンソールに移動し、「アイデンティティとセキュリティ」および「ポリシー」をクリックします。

    img_18.png

  2. 「ポリシーの作成」をクリックします。

    img_19.png

  3. 「ステートメント」セクションで、次のポリシーを入力します。

    • これらのポリシーにより、OCIリソース・マネージャでスタックおよびジョブを管理するために以前に作成したTestGroupをグループ化する権限が付与されます。

      - 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データベース」を選択し、「テンプレートの選択」をクリックします。

    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 Vaultに格納されているシークレットを読み取りません。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という名前の新しいデータを追加し、次の属性に割り当てる必要があります。

      • autonomous_data_warehouseおよびautonomous_databaseセクションにあるadmin_password
      • 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グループのユーザーでログインすると、スタックが表示されないため、実行できません。

    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

    次の文は、TestGroupのユーザーにOCIリソース・マネージャ・スタックを使用する権限を付与します。

    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リクエストの署名を作成する必要があります。詳細は、curlを使用したOracle Cloud Infrastructure (OCI) RESTコールのウォークスルーを参照してください。

  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を参照してください。