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

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

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

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

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

  • Autonomous DatabaseインスタンスからAWSリソースにアクセスする必要がある様々なユーザーまたはスキーマに対して異なるポリシーを使用して、ロールベースのアクセスを作成できます。これにより、ロール別にAWSリソースへのアクセスを制限するポリシーを設定できます。たとえば、ロール別の読取り専用アクセスに制限するポリシーをS3バケットに設定します。
  • ARNベースの資格証明は、AWSリソースにアクセスするためにコードで長期的なAWSユーザー資格証明を提供する必要がないため、より優れたセキュリティを提供します。Autonomous Databaseは、AWS Assume Role操作から生成された一時資格証明を管理します。

Autonomous DatabaseでのARNの使用の構成ステップ

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

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

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

  • コンパートメントOCID

  • データベースOCID

  • テナンシOCID

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

ノート

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

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

adb_arn_config_steps.epsの説明が続きます
図adb_arn_config_steps.epsの説明

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

各AWSリソースには独自のアイデンティティがあり、リソースは、ARNを識別するパラメータを使用して作成するDBMS_CLOUD資格証明を使用してAutonomous Databaseインスタンスで認証されます。Autonomous Databaseは、AWSリソースへのアクセスに使用するプリンシパル資格証明を作成および保護します。

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

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

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

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

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

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

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

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

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

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

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

ノート

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

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

  1. ポリシーを作成します。ポリシーでは、S3バケットなどのAWSリソースにアクセスする権限を指定します。
  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. 「ロールの作成」をクリックします。

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

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

  3. ロールの信頼関係を指定します。
    1. 「ロール」リストの「ロール名」で、作成したロールを選択します。
    2. 選択したロールのロール・サマリー・ページで、「信頼関係」タブを選択します。
    3. 信頼関係で、「信頼関係の編集」をクリックします。
    4. 信頼関係を編集して、プリンシパル・パラメータAWSを指定します。

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

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

      Autonomous DatabaseでAWS ARN資格証明をDBMS_CLOUD.CREATE_CREDENTIALで作成する場合、または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 Databaseインスタンスのみが信頼されます。コンパートメントOCIDを使用する場合、ポリシーの信頼関係はコンパートメント内のすべてのAutonomous Databaseインスタンスを信頼し、同じロールARNを使用して、指定されたコンパートメント内の任意のAutonomous DatabaseにAWSリソースへのアクセス権を付与できます。同様に、テナンシOCIDを使用する場合は、同じロールARNを使用して、指定されたテナンシ内の任意のAutonomous 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の左側のナビゲーション・メニューから「アイデンティティとセキュリティ」をクリックし、「コンパートメント」を選択します。コンパートメントIDを表示するには、Autonomous Databaseインスタンスを含むコンパートメントを選択します。

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

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

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

      arn_aws_create_role_aws_trust_final.pngの説明が続きます
      図arn_aws_create_role_aws_trust_final.pngの説明

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

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

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

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

  1. Autonomous Databaseインスタンスで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値を使用します。この値を指定すると、AWS側でDBMS_CLOUDがAWSリソースにアクセスする権限が付与されます。

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

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

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

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

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

  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. DBMS_CLOUDプロシージャを使用して、ARN資格証明を使用してAmazonリソースにアクセスします。

    たとえば、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パラメータを使用した資格証明の更新

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

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

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

  1. ARNベースの資格証明を更新して新しいARN値を指定するには、DBMS_CLOUD.UPDATE_CREDENTIALを使用します。
    BEGIN
      DBMS_CLOUD.UPDATE_CREDENTIAL(
         credential_name => 'DEF_CRED_ARN',
         attribute => 'aws_role_arn',
         value => 'new_ARN_value'); 
    END;
    /

    これにより、aws_role_arn属性が、DEF_CRED_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プロシージャを参照してください。