Amazonリソース・ネーム(ARN)を使用したAWSリソースへのアクセス

Amazonリソース・ネーム(ARN)を使用して、Autonomous AI DatabaseでAWSリソースにアクセスできます。

Amazonリソース・ネーム(ARN)を使用したAWSリソースへのアクセスについて

自律型AIデータベースでARNロール・ベースの認証を使用する場合、長期的なAWS IAMアクセス・キーに基づいて資格証明を作成および保存することなく、AWSリソースに安全にアクセスできます。

たとえば、AWS S3バケットからAutonomous AI Databaseにデータをロードし、データに対してなんらかの操作を実行してから、変更したデータをS3バケットに書き戻すことができます。S3バケットにアクセスするためのAWSユーザー資格証明がある場合、ARNを使用せずにこれを実行できます。ただし、ロールベースのARNを使用してAutonomous AI DatabaseからAWSリソースにアクセスすると、次の利点があります。

  • 自律型AIデータベース・インスタンスからAWSリソースにアクセスする必要があるユーザーやスキーマごとに異なるポリシーを使用して、ロールベースのアクセスを作成できます。これにより、ロール別にAWSリソースへのアクセスを制限するポリシーを設定できます。たとえば、ロール別の読取り専用アクセスに制限するポリシーをS3バケットに設定します。

  • ARNベースの資格証明は、AWSリソースにアクセスするためにコードで長期的なAWSユーザー資格証明を提供する必要がないため、より優れたセキュリティを提供します。Autonomous AI Databaseは、AWS Assume Role Operationから生成された一時資格証明を管理します。

自律型AIデータベースを使用したARNの使用の構成ステップ

自律型AIデータベースでARNを使用して資格証明を作成する前に、AWSでアカウント管理者は、S3バケットなどのAWSリソースにアクセスできるポリシーを定義する必要があります。デフォルトでは、ARN資格証明サービスはAutonomous AI Databaseで有効になっていません。ADMINユーザーは、必要なユーザーのARN資格証明を有効にします。これにより、Autonomous AI DatabaseインスタンスでARN資格証明を作成および使用できるようになります。

AWSでは、ロールARNは指定されたアクセスの識別子であり、AWSコンソールで表示できます。セキュリティを強化するために、AWS管理者がAWSアカウントのロール、ポリシー、および信頼関係を構成するときは、ロールの信頼関係で外部IDも構成する必要があります。

外部IDは、ロールを引き受けるための追加の保護を提供します。AWS管理者は、Autonomous AI Databaseインスタンスに基づいて、外部IDを次のいずれかとして構成します:

  • コンパートメントOCID

  • データベースOCID

  • テナンシOCID

AWSでは、リクエストURLに含まれる外部IDによって識別される信頼できるユーザーのみがロールを引き受けることができます。リクエスト内の指定された外部IDは、ロールの信頼関係で構成された外部IDと一致します。

ノート

ノート:セキュリティには外部IDの設定が必要です。

次の図は、構成ステップの概要を示しています。

adb_arn_config_steps.pngの説明が続きます

図adb_arn_config_steps.pngの説明

DBMS_CLOUDでARNを使用するステップ

各AWSリソースには独自のアイデンティティがあり、リソースは、ARNを識別するパラメータを使用して作成したDBMS_CLOUD資格証明を使用してAutonomous AI Databaseインスタンスと認証します。Autonomous AI Databaseは、AWSリソースへのアクセスに使用する主要な資格証明を作成して保護します。

ARNベースの資格証明を使用するDBMS_CLOUDプロシージャまたはファンクションを呼び出すと、Autonomous AI DatabaseによってAWSアカウント内でsts:AssumeRoleコールが開始されます。このアクションにより、AWS Security Token Service (STS)が操作の一時的なセキュリティ資格証明を発行するように求められます。

sts:AssumeRoleコールは、この目的のために特別に指定されたOracle制御のAWSサービス・プリンシパルによってトリガーされます。データが格納されている、またはデータが転送される中間Oracle所有のAWSアカウントはありません。

AWSリソースへのアクセスに対するすべての認可は、AWSアカウントのロールに対して構成したIAMポリシーおよび信頼関係に基づいて、一時資格証明が使用された時点でAWSによって直接評価されます。そのためには、AWS IAMロールのARNを含むAutonomous AI Databaseに資格証明を作成する必要があります。この資格証明により、Autonomous AI Databaseは指定されたロールを引き受け、AWS STSから一時資格証明を取得できます。

これらの資格証明を構成することで、Autonomous AI Databaseは、sts:AssumeRoleプロセスを介して取得された一時資格証明を使用してAWSリソースに安全にアクセスできます。

Autonomous AI DatabaseからAWSリソースに安全にアクセスするためのIAMロールおよび信頼関係の構成の詳細なステップは、ロールAmazonリソース名(ARN)を使用したAutonomous AI DatabaseからAWSリソースへの安全なアクセスを参照してください。

AWSリソースにアクセスするためのARNパラメータを使用して資格証明を作成するには:

  1. AWSアカウントで前提条件ステップを実行します: AWSアカウントで、AWS管理コンソールから、またはCLIを使用して、Autonomous AI Databaseで使用するARNのロールおよびポリシーを作成し、ロールの信頼関係を更新します。OracleユーザーARNは、ロールの信頼関係が更新されたときに構成されます。

    詳細は、Amazonリソース・ネーム(ARN)を使用するためのAWS管理の前提条件の実行を参照してください。

  2. 自律型AIデータベースでの前提条件ステップの実行: 自律型AIデータベースでは、ADMINユーザーまたは別のユーザーがARNパラメータで資格証明を使用してAWSリソースにアクセスできるようにする必要があります。

    詳細は、Amazon ARNを使用するためのAutonomous AI Database前提条件の実行を参照してください。

  3. DBMS_CLOUD.CREATE_CREDENTIALを使用して資格証明を作成し、AWSロールを識別するパラメータを指定します。資格証明オブジェクトを使用すると、Autonomous AI Databaseは、AWSアカウントのロールに定義されたポリシーで指定されているとおりにAWSリソースにアクセスできます。

    これらのステップの詳細は、「AWSリソースにアクセスするためのARNパラメータを使用した資格証明の作成」を参照してください。

  4. DBMS_CLOUD.COPY_DATADBMS_CLOUD.LIST_OBJECTSなどの資格証明パラメータを取得するDBMS_CLOUDプロシージャまたはファンクションを使用して、前のステップで作成した資格証明オブジェクトを使用します。

次の図は、DBMS_CLOUDでARNを使用するステップの概要を示しています。

aws-arn-authentication-dbms-cloud.pngの説明が続きます

図aws-arn-authentication-dbms-cloud.pngの説明

Amazonリソース・ネーム(ARN)を使用するためのAWS管理の前提条件の実行

AWS管理コンソールまたはAPIを使用して、AWSユーザー、ロール、ポリシー、および信頼関係を作成します。これらのステップは、DBMS_CLOUD.CREATE_CREDENTIALとともに使用して、Autonomous AI DatabaseでARNパラメータを使用して資格証明を作成する前に実行します。

ARNを使用してAWSリソースにアクセスするには、AWS管理者がAWSリソースにアクセスできるポリシーおよびプリンシパルを定義します。たとえば、Autonomous AI Databaseの使用中に、S3バケットのデータにアクセスし、データに対してなんらかの操作を実行してから、変更したデータをS3バケットに書き戻すことができます。

ノート

ノート:既存のAWS構成および使用している外部IDに応じて、Autonomous AI Databaseインスタンスごとに新しいロールおよびポリシーを作成する必要はありません。リソースへのアクセスに必要なポリシーを含むAWSロールがすでにある場合(たとえば、S3クラウド・ストレージにアクセスする場合)、ステップ3で詳細を含めるように信頼関係を変更できます。同様に、必要な信頼関係を持つロールがすでにある場合、コンパートメントOCIDまたはテナンシOCIDを指定する外部IDを使用する場合は、そのロールを使用して、OCIコンパートメントまたはテナンシ内のすべてのデータベースにアクセスできます。

AWS管理コンソールまたはAPIを使用して、AWS管理者は次のステップを実行します。

  1. ポリシーを作成します。ポリシーでは、S3バケットなどのAWSリソースにアクセスする権限を指定します。

    詳細は、Amazon S3リソースにアクセスするためのIAMポリシーの作成を参照してください。

  2. ロールを作成し、そのロールにポリシーをアタッチします。

    1. AWS管理コンソールにアクセスし、「Identity and Access Management (IAM)」を選択します。

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

    3. 「別のAWSアカウント」を選択します。

    4. 「アカウントID」を入力します。

      一時的な値として使用します。後でこれをAWSリソースへのアクセスに使用するアカウントIDに置き換えます。

    5. 「オプション」領域で、「外部IDが必要」を選択し、0000などの一時外部IDを入力します。後で、この外部IDを有効な値に置き換えます。

    6. 「次の権限」をクリックして、ステップ1で作成したポリシーまたはロールに適用するその他のポリシーをアタッチします。

    7. 「次のタグ」をクリックし、必要に応じてロールにタグを適用または作成します。

    8. 「次のレビュー」をクリックし、「ロール名」および「ロールの説明」を追加します。

    9. 「ロールの作成」をクリックします。

    ロールのARNをDBMS_CLOUD.CREATE_CREDENTIALとともに使用して、ARNパラメータを使用して資格証明オブジェクトを作成し、AWSリソースにアクセスします。

    詳細は、IAMユーザーに権限を委任するロールの作成を参照してください。

  3. ロールの信頼関係を指定します。

    1. 「ロール」リストの「ロール名」で、作成したロールを選択します。

    2. 選択したロールのロール・サマリー・ページで、「信頼関係」タブを選択します。

    3. 信頼関係で、「信頼関係の編集」をクリックします。

    4. 信頼関係を編集して、プリンシパル・パラメータAWSを指定します。

      このAWSユーザーARNは、CLOUD_INTEGRATIONSビューで使用できます。詳細は、Amazon ARNを使用するためのAutonomous AI Database前提条件の実行を参照してください。

    5. 信頼関係を編集して外部IDを指定します。

      Autonomous AI Databaseでは、DBMS_CLOUD.CREATE_CREDENTIALでAWS ARN資格証明を作成する場合、またはDBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTHでAWS ARNを有効にする場合、デフォルトではexternal_id_typeパラメータ値はdatabase_ocidです。オプションで、external_id_type値を、サポートされている値のいずれか(database_ocidcompartment_ocidまたはtenant_ocid)に設定できます。

      データベースOCIDを外部IDとして使用する場合、ポリシーの信頼関係では、OCIDで指定されたAutonomous AI Databaseインスタンスのみが信頼されます。コンパートメントOCIDを使用する場合、ポリシーの信頼関係はコンパートメント内のすべてのAutonomous AI Databaseインスタンスを信頼し、同じロールARNを使用して、指定されたコンパートメント内の任意のAutonomous AI DatabaseにAWSリソースへのアクセス権を付与できます。同様に、テナンシOCIDを使用する場合は、同じロールARNを使用して、指定されたテナンシ内の任意のAutonomous AI DatabaseにAWSリソースへのアクセス権を付与できます。

      以前はステップ2で、信頼関係の外部IDを一時値0000に設定していました。

      AWSでは、次のいずれかと一致するように信頼関係の外部ID値を構成します。

      • external_id_typeタイプがdatabase_ocidの場合、AWSでロールの信頼関係の外部IDをデータベースOCIDに構成します。

        データベースOCIDは、次の問合せを実行して使用できます。

        SELECT cloud_identity FROM v$pdbs;

        詳細は、テナンシ詳細の取得を参照してください。

      • external_id_typeタイプがcompartment_ocidの場合、AWSでロールの信頼関係の外部IDをコンパートメントOCIDに構成します。

        コンパートメントOCIDは、Oracle Cloud Infrastructure Consoleの「コンパートメントの詳細」ページで使用できます。「コンパートメントの詳細」ページを検索するには、Oracle Cloud Infrastructureの左側のナビゲーション・メニューから、「アイデンティティとセキュリティ」をクリックし、「コンパートメント」を選択します。Autonomous AI Databaseインスタンスを含むコンパートメントを選択して、コンパートメントIDを表示します。

      • external_id_typeタイプがtenant_ocidの場合、AWSでは、ロールの信頼関係の外部IDをテナンシOCIDに構成します。

        テナンシOCIDは、Oracle Cloud Infrastructure Consoleの「テナンシの詳細」ページで使用できます。テナンシ詳細ページを検索するには、Oracle Cloud Infrastructureの左側のナビゲーション・メニューから「ガバナンスと管理」をクリックし、「テナンシ詳細」を選択します。「テナンシ情報」タブには、テナンシのOCIDが表示されます。

      • ExternalIDの値を設定する場合、デフォルトではOCID値は大文字である必要があります。OCIDを小文字で指定する場合は、信頼関係を編集するときに、JSONで"StringEquals"ではなく"StringEqualsIgnoreCase"という条件を設定します。

    詳細は、IAMロールでのトラスト・ポリシーの使用方法およびAWSリソースへのアクセス権をサード・パーティに付与する際に外部IDを使用する方法を参照してください。

ARNロールの構成が終了したら、インスタンスでARNを有効にできます。詳細は、Amazon ARNを使用するためのAutonomous AI Database前提条件の実行を参照してください。

Amazon ARNを使用するためのAutonomous AI Databaseの前提条件の実行

ARNパラメータを指定してDBMS_CLOUD.CREATE_CREDENTIALでAWSリソースを使用する前に、ADMINユーザーはAutonomous AI DatabaseインスタンスでARNを有効にする必要があります。

デフォルトでは、ARN資格証明サービスはAutonomous AI Databaseで有効になっていません。ADMINユーザーは、プロシージャDBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTHを実行して、ADMINユーザーまたは他のユーザーがARNパラメータを使用して資格証明を作成できるようにします。

  1. 自律型AIデータベース・インスタンスでARN資格証明の使用を有効にします。

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

    指定したユーザーに他のユーザーのARN資格証明を有効にする権限を付与する場合は、paramsパラメータgrant_optionTRUEに設定します。

    たとえば:

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

    このコマンドを実行した後、adb_userには、他のユーザーのARN資格証明を有効にする権限があります。

    たとえば、adb_userとして接続する場合は、次のコマンドを実行できます。

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            username => 'adb_user2');
    END;
    /

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

  2. CLOUD_INTEGRATIONSビューを問い合せて、OracleのAWSユーザーARNを取得します。

    SELECT param_value FROM CLOUD_INTEGRATIONS
            WHERE param_name = 'aws_user_arn';
    PARAM_VALUE
    
    --------------------------------------------
    arn:aws:iam::account-ID:user/username

    ビューCLOUD_INTEGRATIONSは、ADMINユーザーまたはDWROLE権限を持つユーザーが使用できます。

    AWS管理者は、AWSシステムのロールおよびポリシーとのAWSロールの信頼関係を構成する際に、aws_user_arn値を使用します。この値を指定すると、DBMS_CLOUDがAWSリソースにアクセスするための権限がAWS側に付与されます。

DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTHを実行してAutonomous AI DatabaseインスタンスでARNを有効にすると、AWS$ARNという名前の資格証明を入力として取得するDBMS_CLOUD APIで使用できます。AWS$ARNという名前の資格証明を除き、ARNパラメータを使用して追加の資格証明を作成し、AWSリソースにアクセスすることもできます。詳細は、ARNリソースにアクセスするためのARNパラメータを使用した資格証明の作成を参照してください。

AWSリソースにアクセスするためのARNパラメータを使用した資格証明の作成

自律型AIデータベース・インスタンスでARNの使用を有効にし、ARNがAWS管理者によって構成された後、自律型AIデータベースでは、ARNパラメータを使用して資格証明オブジェクトを作成できます。

Autonomous AI Databaseは、DBMS_CLOUDプロシージャおよびファンクションを使用して資格証明オブジェクトを指定するときに、Amazonリソースへのアクセスに使用するプリンシパル資格証明を作成して保護します。

Autonomous AI DatabaseでAmazonリソースを使用するには、次を実行します:

  1. ARN値を指定するには、プロシージャDBMS_CLOUD.CREATE_CREDENTIALparamsパラメータを使用して資格証明を作成します。次に例を示します。

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_ARN',
        params =>
            JSON_OBJECT('aws_role_arn' value 'arn:aws:iam::123456:role/AWS_ROLE_ARN',
                        'external_id_type' value 'database_ocid')
      );
    END;
    /

    この操作により、資格証明が暗号化された形式でデータベースに作成されます。資格証明には任意の名前を使用できます。

    パラメータの詳細は、「CREATE_CREDENTIALプロシージャ」を参照。

  2. ARN資格証明を使用してAmazonリソースにアクセスするには、DBMS_CLOUDプロシージャを使用します。

    たとえば、DBMS_CLOUD.LIST_OBJECTSを使用します。

    SELECT object_name FROM DBMS_CLOUD.LIST_OBJECTS(
               credential_name => 'DEF_CRED_ARN',
               location_uri    => 'https://my-bucket.s3.us-west-2.amazonaws.com/');

AWSリソース用のARNパラメータを使用した資格証明の更新

自律型AIデータベースで使用するARN資格証明は、一時的なロール・ベースの資格証明を使用してAutonomous AI DatabaseからAWSリソースにアクセスできるAWSトークン・サービスと連携します。

AWS STSがこれらの操作に対して発行する短命トークンは、操作中にのみメモリー内に存在し、長期的な資格として格納されません。

AWS管理者がポリシー、ロールまたは信頼関係を取り消す場合は、資格証明を更新するか、新しい資格証明を作成してAWSリソースにアクセスする必要があります。

資格証明を更新するには、次のステップを実行します。

  1. DBMS_CLOUD.UPDATE_CREDENTIALを使用してARNベースの資格証明を更新し、新しいARN値を指定します。

    BEGIN
      DBMS_CLOUD.UPDATE_CREDENTIAL(
         credential_name => 'DEF_CRED_ARN',
         attribute => 'aws_role_arn',
         value => 'new_ARN_value');
    END;
    /

    これにより、DEF_CRED_ARNという名前の資格証明のaws_role_arn属性が新しい値new_ARN_valueに更新されます。

  2. DBMS_CLOUD.UPDATE_CREDENTIALを使用してARNベースの資格証明を更新し、属性のexternal_id_type値を更新します。

    BEGIN
      DBMS_CLOUD.UPDATE_CREDENTIAL(
         credential_name => 'DEF_CRED_ARN',
         attribute => 'external_id_type',
         value => 'compartment_ocid');
    END;
    /

    これにより、external_id_type属性値が値compartment_ocidに更新されます。

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