Oracle Cloud Infrastructure VaultでのVaultシークレット資格証明の使用

Oracle Cloud Infrastructure Vaultにシークレット(パスワード)がシークレットとして格納されるボールト・シークレット資格証明の使用について説明します。

ボールト・シークレット資格証明を使用して、クラウド・リソースにアクセスしたり、データベース・リンクを使用して他のデータベースにアクセスしたり、ユーザー名/パスワード・タイプの資格証明が必要な場所で使用できます。

Oracle Cloud Infrastructure Vaultを使用したVaultシークレット資格証明の作成の前提条件

Oracle Cloud Infrastructure Vaultシークレットでボールト・シークレット資格証明を使用するために必要な前提条件ステップについて説明します。

シークレットがOracle Cloud Infrastructure Vaultに格納されるボールト・シークレット資格証明を作成するには、まず必要な前提条件を実行します。

  1. ボールトを作成し、Oracle Cloud Infrastructure Vaultを使用してボールトにシークレットを作成します。

    詳細は、ボールトおよびシークレットを作成する手順のボールトの管理およびキー管理の概要を参照してください。

  2. Oracle Cloud Infrastructure Vaultのシークレットにアクセスできるように動的グループを設定します。

    ボールト・シークレット資格証明を作成するAutonomous Databaseインスタンスの動的グループを作成します:

    1. Oracle Cloud Infrastructureコンソールで、「アイデンティティとセキュリティ」をクリックします。
    2. 「アイデンティティ」で、「ドメイン」をクリックし、アイデンティティ・ドメインを選択します(または、新しいアイデンティティ・ドメインを作成します)。
    3. 「アイデンティティ・ドメイン」で、「動的グループ」をクリックします。
    4. 「動的グループの作成」をクリックし、「名前」「説明」およびルールを入力します。
      • 既存のデータベースの動的グループの作成:

        Autonomous Databaseインスタンスが動的グループの一部であることを指定できます。次の例の動的グループには、resource.idパラメータでOCIDが指定されているAutonomous Databaseのみが含まれます:

        resource.id = 'your_Autonomous_Database_instance_OCID'
      • まだプロビジョニングされていないデータベースの動的グループを作成します:

        Autonomous Databaseインスタンスのプロビジョニングまたはクローニング前に動的グループを作成する場合、新しいデータベースのOCIDはまだ使用できません。この場合、特定のコンパートメントのリソースを指定する動的グループを作成します:

        resource.compartment.id = 'your_Compartment_OCID'
    5. 「作成」をクリックします
  3. 動的グループのポリシー・ステートメントを記述して、Oracle Cloud Infrastructureリソース(シークレット)へのアクセスを有効にします。
    1. Oracle Cloud Infrastructure Consoleで、「アイデンティティとセキュリティ」をクリックし、「ポリシー」をクリックします。
    2. To write policies for the dynamic group you created in the previous step, click Create Policy, and enter a Name and a Description.
    3. ポリシー・ビルダー「手動エディタの表示」オプションを使用して、ポリシーを作成します。

      たとえば、動的グループへのアクセスでコンパートメント内の特定のシークレットを読み取ることを許可するには:

      Allow dynamic-group dynamic_group_name to read secret-bundles in compartment compartment_name
         where target.secret.id='secret_OCID'

      たとえば、動的グループへのアクセスがコンパートメント内のすべてのシークレットを読み取ることを許可するには:

      Allow dynamic-group dynamic_group_name to read secret-bundles in compartment compartment_name

      詳細は、Vaultサービスの詳細を参照してください。

    4. グループまたは動的グループを選択し、場所を選択します。
    5. 「作成」をクリックします

Oracle Cloud Infrastructure Vaultを使用したVaultシークレット資格証明の作成

資格証明でOracle Cloud Infrastructure Vaultシークレットを使用するステップについて説明します。

これにより、Oracle Cloud Infrastructure Vaultにシークレットを格納し、クラウド・リソースにアクセスしたり、他のデータベースにアクセスするために作成した資格証明でシークレットを使用できます。

シークレットがOracle Cloud Infrastructure Vaultに格納されるボールト・シークレット資格証明を作成するには:

  1. リソース・プリンシパル認証を有効にして、Oracle Cloud Infrastructure Vaultのシークレットへのアクセスを提供します。
  2. 動的グループを作成し、Autonomous DatabaseがOracle Cloud Infrastructure Vaultのシークレットにアクセスできるようにするポリシーを定義します。
  3. DBMS_CLOUD.CREATE_CREDENTIALを使用して、ボールト・シークレット資格証明を作成します。

    次に例を示します。

    BEGIN DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name   => 'OCI_SECRET_CRED',
        params            => JSON_OBJECT(
            'username'   value 'SCOTT',
            'secret_id'  value 'ocid1.vaultsecret.oc1.iad.example..aaaaaaaauq5ok5nq3bf2vwetkpqsoa' ));
    END;
    /

    説明:

    • username: 元の資格証明のユーザー名です。これは、OCI Swiftユーザーのユーザー名、データベース・リンクを使用してデータベースにアクセスするために必要なユーザー名など、任意のタイプのユーザー名/パスワード資格証明のユーザー名です。

    • secret_id: ボールト・シークレットIDです。たとえば、パスワードmysecretをOracle Cloud Infrastructure Vaultのシークレットに格納する場合、secret_id値はボールト・シークレットOCIDです。

    ボールト・シークレット資格証明を作成するには、DBMS_CLOUDパッケージに対するEXECUTE権限が必要です。

    詳細は、CREATE_CREDENTIALプロシージャを参照してください。

  4. この資格証明を使用して、クラウド・リソースにアクセスします。

    次に例を示します。

    SELECT count(*) FROM DBMS_CLOUD.LIST_OBJECTS(
        'OCI_SECRET_CRED',
        'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/' );
ノート

シークレット(パスワード)がOracle Cloud Infrastructure Vaultのコンテンツから12時間ごとにリフレッシュされます。Oracle Cloud Infrastructure Vaultのシークレット値を変更すると、Autonomous Databaseインスタンスが最新のシークレット値を取得するのに最大12時間かかる場合があります。

DBMS_CLOUD.REFRESH_VAULT_CREDENTIALを実行して、ボールト・シークレット資格証明を即時にリフレッシュします。このプロシージャは、Oracle Cloud Infrastructure Vaultからボールト・シークレットの最新バージョンを取得します。詳細は、REFRESH_VAULT_CREDENTIALプロシージャを参照してください。