機械翻訳について

リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセス

Oracle Cloud Infrastructureリソース・プリンシパルは、Autonomous Databaseとともに使用できます。 ユーザーまたはテナンシ管理者は、Oracle Cloud Infrastructureポリシーと、リソース・プリンシパルでOracle Cloud Infrastructureリソースにアクセスできる動的グループを定義します。 資格証明オブジェクトを作成する必要はありません。Autonomous Databaseは、指定したOracle Cloud Infrastructureリソースへのアクセスに使用するリソース・プリンシパル資格証明を作成して保護します。

リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセスについて

リソース・プリンシパルを使用して、Oracle Cloud Infrastructureリソースを認証およびアクセスできます。

リソース・プリンシパルは、データベースが他のOracle Cloud Infrastructureサービスに対して自身を認証できるようにする一時セッション・トークンとセキュアな資格証明で構成されます。 リソース・プリンシパルを使用してサービスにアクセスする場合、Autonomous Database上の資格証明とともに格納されたトークンは、動的グループがアクセス権を付与されているリソースに対してのみ有効です。

リソース・プリンシパルを使用するには、ユーザーまたはテナンシ管理者がOracle Cloud Infrastructureポリシーと、リソース・プリンシパルでOracle Cloud Infrastructureリソースにアクセスできる動的グループを定義します。 資格証明オブジェクトを作成する必要はありません。Autonomous Databaseは、指定したOracle Cloud Infrastructureリソースへのアクセスに使用するリソース・プリンシパル資格証明を作成して保護します。

たとえば、Autonomous Databaseの使用中に、Oracle Cloud Infrastructureリソースを使用して次のことを実行できます:

  • オブジェクト・ストレージ・バケットのデータにアクセスし、データに対してなんらかの操作を実行し、変更したデータをオブジェクト・ストレージ・バケットに書き戻します。
  • ボールト、キーまたはシークレットにアクセスします。

  • 作業リクエストをリストしたり、作業リクエスト・エラーをリストします。

データベースの操作中は、データベース・ユーザーとして認証し、データベースにアクセスします。 Autonomous DatabaseユーザーにはOracle Cloud Infrastructure Identity and Access Management (IAM)アイデンティティがないため、Autonomous Databaseユーザーはデータベース資格証明を使用してOracle Cloud Infrastructureサービスにアクセスできません。 リソース・プリンシパルがない場合は、Oracle Cloud Infrastructureリソースにアクセスするための資格証明を取得し、Autonomous Databaseからリソースにアクセスするための資格証明オブジェクトを作成する必要があります。

リソース・プリンシパルにより、リソースはOracle Cloud Infrastructureサービスでアクションを実行する権限を付与できます。 各リソースには独自のアイデンティティがあり、リソースは追加された証明書を使用して認証します。 これらの証明書は自動的に作成され、リソースに割り当てられ、ローテーションされるため、リソースにアクセスするために独自の資格証明を作成して管理する必要がなくなります。

Autonomous Databaseでは、リソース・プリンシパルを使用して、次のインタフェースを使用してOracle Cloud Infrastructure APIを認証できます:

  • 資格証明引数を取得するDBMS_CLOUDプロシージャおよびファンクション
  • Oracle Cloud Infrastructure PL/SQL SDK APIs

リソース・プリンシパルを使用して認証する場合、Autonomous Databaseは、Oracle Cloud Infrastructureリソースにアクセスするためのセキュアなメソッドを提供します。

Autonomous Databaseでリソース・プリンシパルを設定するには、いくつかのステップが必要です:

リソース・プリンシパルを使用して認証する場合、Oracle Cloud Infrastructureリソースにアクセスするために資格証明を作成および管理する必要はありません。 Autonomous Databaseを指定すると、リソース・プリンシパルが使用可能になり、リソース・プリンシパルが保護されます。

Autonomous Databaseでリソース・プリンシパルを使用するための前提条件の実行

リソース・プリンシパルを使用してOracle Cloud Infrastructureリソースをコールする前に、Oracle Cloud Infrastructureテナンシ管理者が、リソース・プリンシパル権限を定義するOracle Cloud Infrastructureポリシー、動的グループおよびルールを作成する必要があります。

Autonomous Databaseを使用してリソース・プリンシパルを使用する前に、次のステップを実行します:

  1. Oracle Cloud Infrastructure動的グループを作成します。
    1. Oracle Cloud Infrastructureコンソールで「アイデンティティとセキュリティ」をクリックし、「動的グループ」をクリック
    2. 「動的グループを作成」をクリックし、「名前」「説明」およびルールを入力するか、「ルール・ビルダー」を使用してルールを追加します。
    3. 「作成」をクリックします。

    ルール基準を満たすリソースは、動的グループのメンバーです。 動的グループのルールを定義するときは、他のリソースへのアクセス権を付与するリソースを考慮してください。

    たとえば、次の例を考えてみます:

    • 特定のAutonomous Databaseインスタンスがリソースにアクセスできるようにします。

      Autonomous Databaseは、OCIDを使用してresource.idパラメータで指定されます:

      resource.id = 'your_Autonomous_Database_instance_OCID'

      テナンシでアイデンティティ・ドメインを使用する場合は、ドメイン名を追加する必要があります。 たとえば:

      resource.id = 'identity_domain_name/your_Autonomous_Database_instance_OCID'
    • コンパートメント内のすべてのAutonomous Databaseを許可します。

      Autonomous Databaseresource.typeパラメータで指定され、コンパートメントはresource.compartment.idパラメータで指定されたOCIDで識別されます:

      ALL {resource.type = 'autonomousdatabase', resource.compartment.id = 'your_Compartment_OCID'}
    • コンパートメント内のすべてのリソースの許可

      resource.compartment.idパラメータで指定されているOCIDで識別されるリソース・タイプ:

      ALL
              {resource.compartment.id='your_Compartment_OCID'}

    動的グループの作成およびグループへのリソースの追加に関するルールの作成の詳細は、「動的グループの管理」を参照してください。

  2. 動的グループのポリシー・ステートメントを記述して、Oracle Cloud Infrastructureリソースへのアクセスを有効にします。
    1. Oracle Cloud Infrastructureコンソールで、「アイデンティティとセキュリティ」をクリックして「ポリシー」をクリックします。
    2. 動的グループのポリシーを記述するには、「ポリシーの作成」をクリックし、「名前」および「説明」を入力します。
    3. 「ポリシー・ビルダー」を使用してポリシーを作成します。

      たとえば、Oracle Cloud Infrastructureオブジェクト・ストアへのアクセスでテナンシのオブジェクト・ストア内のバケットおよびオブジェクトを管理できるようにするポリシーを作成するには:

      Allow dynamic-group Example5 to manage buckets in tenancy
      Allow dynamic-group Example5 to manage objects in tenancy

      テナンシでアイデンティティ・ドメインを使用する場合は、ドメイン名を追加する必要があります。 たとえば:

      Allow dynamic-group identity_domain_name/Example5 to manage buckets in tenancy
      Allow dynamic-group identity_domain_name/Example5 to manage objects in tenancy
    4. 「作成」をクリックします。

ノート:

リソース・プリンシパル・トークンは2時間キャッシュされます。 したがって、ポリシーまたは動的グループを変更した場合、変更の影響を確認するには、2時間待つ必要があります。

ポリシーの詳細は、「ポリシーの動作」および「ポリシーの管理」を参照してください。

リソース・プリンシパルによるOracle Cloud Infrastructureリソースへのアクセスの有効化

次のステップを実行して、Autonomous Databaseでリソース・プリンシパルを有効にします。

前提条件として、動的グループおよびポリシーを構成します。 詳細については、「Autonomous Databaseでリソース・プリンシパルを使用するための前提条件の実行」を参照してください。

Autonomous Databaseでリソース・プリンシパルを有効にするには:

  1. ADMINユーザーとして、Autonomous Databaseインスタンスのリソース・プリンシパルを有効にします。

    たとえば:

    EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL();
    
    PL/SQL procedure successfully completed. 
    
    詳細については、「ENABLE_RESOURCE_PRINCIPALプロシージャ」を参照してください。

    これにより、資格証明OCI$RESOURCE_PRINCIPALが作成されます。

  2. (オプション)このステップは、ADMINユーザー以外のデータベース・ユーザーにリソース・プリンシパル資格証明へのアクセス権を付与する場合にのみ必要です。 ADMINユーザーとして、指定したデータベース・ユーザーのリソース・プリンシパルを有効にします。

    たとえば:

    EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(username => 'adb_user');
    
    PL/SQL procedure successfully completed. 
    

    これにより、ユーザーadb_userが資格証明OCI$RESOURCE_PRINCIPALにアクセスできるようになります。

    指定したユーザーに他のユーザーのリソース・プリンシパルを有効にする権限が必要な場合は、grant_optionパラメータをTRUEに設定します。

    たとえば:

    BEGIN
    DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(
         username => 'adb_user',
         grant_option => TRUE);
    END;
    /

    このコマンドを実行すると、adb_userは別のユーザーのリソース・プリンシパルを有効にできます。 たとえば、adb_userとして接続する場合は、次のコマンドを実行します:

    EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(username => 'adb_user2');
    
    詳細については、「ENABLE_RESOURCE_PRINCIPALプロシージャ」を参照してください。
  3. リソース・プリンシパル資格証明が有効であることを確認します。

    たとえば、ADMINユーザーとしてビューDBA_CREDENTIALSを問い合せます:

    SELECT owner, credential_name FROM dba_credentials 
            WHERE credential_name = 'OCI$RESOURCE_PRINCIPAL' AND owner = 'ADMIN'; 
    
    OWNER  CREDENTIAL_NAME
    -----  ----------------------
    ADMIN  OCI$RESOURCE_PRINCIPAL 
    

    たとえば、非ADMINユーザーとしてビューALL_TAB_PRIVSを問い合せます:

    SELECT grantee, table_name, grantor FROM ALL_TAB_PRIVS
       WHERE grantee = 'ADB_USER' 
            AND table_name = 'OCI$RESOURCE_PRINCIPAL' 
            AND table_schema = 'ADMIN';
    
    GRANTEE   TABLE_NAME                GRANTOR
    --------- -----------------------   -------------
    ADB_USER  OCI$RESOURCE_PRINCIPAL    ADMIN

Autonomous Databaseインスタンスでリソース・プリンシパルを有効にすることは、1回かぎりの操作です。 DBMS_CLOUD_ADMIN.DISABLE_RESOURCE_PRINCIPALを実行してリソース・プリンシパルを無効にしないかぎり、リソース・プリンシパルを再度有効にする必要はありません。

Autonomous Databaseでのリソース・プリンシパルの無効化

すべてのAutonomous Databaseユーザーまたは指定したユーザーのリソース・プリンシパルを無効化するステップを表示します。

  1. すべてのユーザーのリソース主体を無効にするには、ADMINユーザーとして次のコマンドを実行します:
    EXEC DBMS_CLOUD_ADMIN.DISABLE_RESOURCE_PRINCIPAL();

    これにより、資格証明OCI$RESOURCE_PRINCIPALが削除されます。

  2. リソース・プリンシパル資格証明が無効になっていることを確認します。

    たとえば:

    SELECT owner, credential_name FROM dba_credentials 
            WHERE credential_name = 'OCI$RESOURCE_PRINCIPAL' AND owner = 'ADMIN';
    
    No rows selected
    

指定したデータベース・ユーザーのリソース・プリンシパル資格証明へのアクセスを削除するには、usernameパラメータを含めます。 これにより、指定したユーザーのOCI$RESOURCE_PRINCIPAL資格証明へのアクセスが拒否されます。

たとえば:

EXEC DBMS_CLOUD_ADMIN.DISABLE_RESOURCE_PRINCIPAL(username => 'ADB_USER');

詳細については、「DISABLE_RESOURCE_PRINCIPALプロシージャ」を参照してください。

DBMS_CLOUDでのリソース・プリンシパルの使用

DBMS_CLOUDコールでリソース・プリンシパル資格証明を指定すると、データベースはユーザーのOracle Cloud Infrastructureリクエストを認証し、データベースはOracle Cloud Infrastructureリソースにアクセスするための資格証明を提供します。

まだ実行していない場合は、必要な前提条件ステップを実行します:

リソース・プリンシパル資格証明でDBMS_CLOUDプロシージャを使用するには:

  1. DBMS_CLOUDプロシージャまたはファンクションを使用し、資格証明名としてOCI$RESOURCE_PRINCIPALを指定します。

    たとえば、リソース・プリンシパルを使用してOracle Cloud Infrastructureオブジェクト・ストレージにアクセスできます:

    CREATE TABLE CHANNELS
       (channel_id CHAR(1),
        channel_desc VARCHAR2(20),
        channel_class VARCHAR2(20)
       );
    /
    
    BEGIN
     DBMS_CLOUD.COPY_DATA(
        table_name =>'CHANNELS',
        credential_name =>'OCI$RESOURCE_PRINCIPAL',
        file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/channels.txt',
        format => json_object('delimiter' value ',')
     );
    END;
    /
    

「資格証明の作成と既存の表へのデータのコピー」に示すように、オブジェクト・ストレージへのアクセスに必要なステップを比較する場合、システム定義のOCI$RESOURCE_PRINCIPAL資格証明を使用しているため、リソース・プリンシパルを使用する場合、ステップ1の資格証明の作成は不要です。