AWS Secrets Managerでのボールト・シークレット資格証明の使用

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

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

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

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

シークレットがAWS Secrets Managerに格納されているボールトシークレット資格情報を作成するには、まず必要な前提条件を実行します。

  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 Secrets Managerでシークレットにアクセスするための Amazonリソース名(ARN)のアクセス権を提供します。

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

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

AWS Secrets Managerを使用したボールト・シークレット資格証明の作成

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

これにより、AWS Secrets Managerにシークレットを格納し、作成した資格証明でシークレットを使用してクラウドリソースにアクセスしたり、ほかのデータベースにアクセスしたりできます。

シークレットが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/' );
ノート

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

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