AWSシークレット・マネージャでのVaultシークレット資格証明の使用

AWSシークレット・マネージャに資格証明シークレット(パスワード)が格納されているボールト・シークレット資格証明の使用について説明します。

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

AWSシークレット・マネージャを使用してVaultシークレット資格証明を作成するための前提条件

AWSシークレット・マネージャでボールト・シークレット資格証明を使用するために必要な前提条件について説明します。

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

  1. AWS Secrets Managerでシークレットを作成し、AWSシークレットARNをコピーします。

    詳細は、AWSシークレット・マネージャを参照してください。

  2. Amazonリソース名(ARN)を使用するには、AWS管理の前提条件を実行します。
  3. AWSプリンシパル認証を有効にして、AWSシークレット・マネージャでシークレットへのアクセスを提供します。

    たとえば、Autonomous Databaseインスタンスで次を実行します:

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(                                     
              provider => 'AWS',
              params =>
                 JSON_OBJECT( 
                    'aws_role_arn' value 'arn:aws:iam::123456:role/AWS_ROLE_ARN'));
    END; 
    /

    詳細は、ENABLE_PRINCIPAL_AUTHプロシージャおよびAmazonリソース名(ARN)を使用したAWSリソースへのアクセスについてを参照してください。

  4. AWSを設定して、AWSシークレット・マネージャでシークレットにアクセスするためのAmazonリソース名(ARN)の権限を提供します。

    AWSコンソールで、シークレットへの読取りアクセス権をプリンシパル認証資格証明に付与する必要があります。

    1. AWSコンソールでIAMに移動し、Access Managementで「ロール」を選択します。
    2. ロールの選択
    3. 「権限」タブで、「権限の追加」「インライン・ポリシーの作成」をクリックします。
    4. 「サービス」セクションで、サービスとして「シークレット・マネージャ」を選択します。
    5. 「アクション」セクションで、「読取り」アクセス・レベルを選択します。
    6. 「リソース」セクションで「ARNの追加」をクリックし、シークレットにARNを指定して「追加」「ポリシーの確認」→ポリシー名を指定→「ポリシーの作成」をクリックします。
    7. 「権限」タブに戻り、インライン・ポリシーがアタッチされていることを確認します。

AWSシークレット・マネージャを使用したVaultシークレット資格証明の作成

資格証明でAWSシークレット・マネージャ・シークレットを使用するステップについて説明します。

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

シークレットがAWSシークレット・マネージャに格納されるボールト・シークレット資格証明を作成するには:

  1. AWSシークレット・マネージャでシークレットを作成し、インライン・ポリシーを作成して、Autonomous DatabaseがAWSシークレット・マネージャのシークレットにアクセスできるようにします。
  2. DBMS_CLOUD.CREATE_CREDENTIALを使用して、AWSシークレット・マネージャ・シークレットにアクセスするためのボールト・シークレット資格証明を作成します。

    次に例を示します。

    BEGIN DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name      => 'AWS_SECRET_CRED',
        params               => JSON_OBJECT( 
             'username'   value 'access_key',
             'secret_id'  value 'arn:aws:secretsmanager:region:account-ID:secret:secret_name' ));
    END;
    /

    説明:

    • username: 元の資格証明のユーザー名です。任意のタイプのユーザー名/パスワード資格証明のユーザー名にできます。

    • secret_id: ボールト・シークレットAWS ARNです。

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

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

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

    次に例を示します。

    SELECT count(*) FROM DBMS_CLOUD.LIST_OBJECTS(
         'AWS_SECRET_CRED', 
         'https://s3-us-west-2.amazonaws.com/adb/' );
ノート

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

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