リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセス
Oracle Cloud Infrastructureリソース・プリンシパルをAutonomous AI Databaseで使用できます。お客様またはテナンシ管理者は、Oracle Cloud Infrastructureポリシーと、リソース・プリンシパルがOracle Cloud Infrastructureリソースにアクセスできるようにする動的グループを定義します。資格証明オブジェクトを作成する必要はなく、Autonomous AI Databaseは、指定したOracle Cloud Infrastructureリソースへのアクセスに使用するリソース・プリンシパル資格証明を作成および保護します。
リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセスについて
リソース・プリンシパルを使用して、Oracle Cloud Infrastructureリソースを認証およびアクセスできます。
リソース・プリンシパルは、データベースが他のOracle Cloud Infrastructureサービスに対して自身を認証できるようにする一時セッション・トークンおよびセキュアな資格証明で構成されます。リソース・プリンシパルを使用してサービスにアクセスする場合、Autonomous AI Databaseの資格証明とともに格納されるトークンは、動的グループにアクセス権が付与されているリソースに対してのみ有効です。
リソース・プリンシパルを使用するには、ユーザーまたはテナンシ管理者が、リソース・プリンシパルを使用してOracle Cloud InfrastructureリソースにアクセスできるようにするOracle Cloud Infrastructureポリシーおよび動的グループを定義します。資格証明オブジェクトを作成する必要はなく、Autonomous AI Databaseは、指定したOracle Cloud Infrastructureリソースへのアクセスに使用するリソース・プリンシパル資格証明を作成および保護します。
たとえば、Autonomous AI Databaseの使用中に、Oracle Cloud Infrastructureリソースを使用して次のことを実行できます:
-
オブジェクト・ストレージ・バケットからデータにアクセスし、データに対してなんらかの操作を実行し、変更したデータをオブジェクト・ストレージ・バケットに書き戻します。
-
ボールト、キーまたはシークレットにアクセスします。
-
作業リクエストをリストするか、作業リクエスト・エラーをリストします。
データベースを操作する場合、データベース・ユーザーとして認証してアクセスします。Autonomous AI DatabaseユーザーにはOracle Cloud Infrastructure Identity and Access Management (IAM)アイデンティティがないため、Autonomous AI Databaseユーザーは、データベース資格証明を使用してOracle Cloud Infrastructureサービスにアクセスできません。リソース・プリンシパルを使用しない場合は、Oracle Cloud Infrastructureリソースにアクセスするための資格証明を取得し、Autonomous AI Databaseからリソースにアクセスするための資格証明オブジェクトを作成する必要があります。
リソース・プリンシパルにより、Oracle Cloud Infrastructureサービスに対するアクションの実行が許可されるリソースを認可できます。各リソースには、それぞれのアイデンティティがあり、追加された証明書を使用して認証を行います。これらの証明書は自動的に作成され、リソースに割り当てられ、ローテーションされるため、リソースにアクセスするために独自の資格証明を作成および管理する必要がなくなります。
自律型AIデータベースでは、リソース・プリンシパルを使用して、次のインタフェースを使用してOracle Cloud Infrastructure APIに対する認証を行うことができます。
-
資格証明引数を取る
DBMS_CLOUDプロシージャおよびファンクション -
Oracle Cloud Infrastructure PL/SQL SDK API
リソース・プリンシパルを使用して認証する場合、Autonomous AI Databaseでは、Oracle Cloud Infrastructureリソースにアクセスするためのセキュアな方法が提供されます。
Autonomous AI Databaseでリソース・プリンシパルを設定するには、いくつかのステップが必要です:
-
定義Oracle Cloud Infrastructure Infrastructure Identity and Access Management (IAM)ポリシーを作成する必要があります。詳細は、Autonomous AI Databaseでリソース・プリンシパルを使用するための前提条件の実行を参照してください。
-
ADMINユーザーのリソース・プリンシパルの有効化、およびオプションでデータベース・ユーザーのリソース・プリンシパルの有効化を行う必要があります。詳細は、Oracle Cloud Infrastructureリソースにアクセスするためのリソース・プリンシパルの有効化を参照してください。
リソース・プリンシパルを使用して認証する場合、Oracle Cloud Infrastructureリソースにアクセスするための資格証明を作成および管理する必要はありません。Autonomous AI Databaseにより、リソース・プリンシパルが使用可能になり、リソース・プリンシパルを保護されます。
Autonomous AI Databaseでリソース・プリンシパルを使用するための前提条件の実行
リソース・プリンシパルを使用してOracle Cloud Infrastructureリソースをコールする前に、Oracle Cloud Infrastructureテナンシ管理者は、リソース・プリンシパル権限を定義するOracle Cloud Infrastructureポリシー、動的グループおよびルールを作成する必要があります。
Autonomous AI Databaseでリソース・プリンシパルを使用する前に、次のステップを実行します:
-
Oracle Cloud Infrastructureの動的グループを作成します。
-
Oracle Cloud Infrastructureコンソールで、「アイデンティティとセキュリティ」をクリックし、「動的グループ」をクリックします
-
「動的グループの作成」をクリックし、「名前」、「説明」およびルールを入力するか、Rule Builderを使用してルールを追加します。
-
「作成」をクリックします。
ルール基準を満たすリソースは、動的グループのメンバーです。動的グループのルールを定義する場合は、どのリソースへのアクセス権を他のリソースに付与するかを検討します。
たとえば、以下の例を考えてみます。
-
特定のAutonomous AI Databaseインスタンスがリソースにアクセスできるようにします。
Autonomous AI Databaseは、OCIDを使用して
resource.idパラメータで指定されます:resource.id = 'your_Autonomous_Database_instance_OCID'ノート
ノート:アイデンティティ・ドメイン名を検索するには、アイデンティティ・ドメインURLの検索を参照してください。複数のアイデンティティ・ドメインが構成されている場合は、Autonomous AIデータベースが存在する場所または作成された場所を指定します。テナンシでアイデンティティ・ドメインを使用する場合は、ドメイン名を追加する必要があります。たとえば:
resource.id = 'identity_domain_name/your_Autonomous_Database_instance_OCID' -
コンパートメント内のすべてのAutonomous AI Databaseを許可します。
Autonomous AI Databaseは
resource.typeパラメータで指定され、コンパートメントはresource.compartment.idパラメータの指定されたOCIDによって識別されます:ALL {resource.type = 'autonomousdatabase', resource.compartment.id = ' your_Compartment_OCID'} -
コンパートメント内のすべてのリソースを許可します
OCIDで識別されるリソース・タイプで、
resource.compartment.idパラメータで指定します。ALL {resource.compartment.id='*your_Compartment_OCID*'}
動的グループの作成と、グループにリソースを追加するルールの作成の詳細は、動的グループの管理を参照してください。
-
-
Oracle Cloud Infrastructureリソースへのアクセスを有効にするための動的グループのポリシー・ステートメントを記述します。
-
Oracle Cloud Infrastructureコンソールで「アイデンティティとセキュリティ」をクリックし、「ポリシー」をクリックします。
-
動的グループのポリシーを記述するには、「ポリシーの作成」をクリックし、「名前」および「説明」を入力します。
-
ポリシー・ビルダーを使用してポリシーを作成します。
たとえば、テナンシのオブジェクト・ストア内のバケットおよびオブジェクトを管理するために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 -
「作成」をクリックします。
-
ノート
ノート:リソース・プリンシパル・トークンは2時間キャッシュされます。したがって、ポリシーまたは動的グループを変更した場合、変更の影響を確認するには、2時間待つ必要がある。
ポリシーの詳細は、ポリシーの仕組みおよびポリシーの管理を参照してください。
Oracle Cloud Infrastructureリソースにアクセスするためのリソース・プリンシパルの有効化
Autonomous AI Databaseでリソース・プリンシパルを有効にするには、次のステップを実行します。これにより、データベースはOCIリソースを安全に認証およびアクセスできます。
前提条件として、動的グループおよびポリシーを構成します。詳細は、Autonomous AI Databaseでリソース・プリンシパルを使用するための前提条件の実行を参照してください。
Autonomous AI Databaseでリソース・プリンシパルを有効にするには:
-
ADMINユーザーとして、Autonomous AI Databaseインスタンスのリソース・プリンシパルを有効にします。
たとえば:
EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL();詳細は、ENABLE_RESOURCE_PRINCIPALプロシージャを参照してください。
これにより、資格証明
OCI$RESOURCE_PRINCIPALが作成されます。 -
(オプション)このステップが必要なのは、ADMINユーザー以外のデータベース・ユーザーにリソース・プリンシパル資格証明へのアクセス権を付与する場合のみです。ADMINユーザーとして、指定したデータベース・ユーザーのリソース・プリンシパルを有効にします。
たとえば:
EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(username => 'adb_user');これは、ユーザー
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プロシージャを参照してください。
-
リソース・プリンシパル資格証明が有効になっていることを確認します。
たとえば、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 AI Databaseインスタンスでのリソース・プリンシパルの有効化は、1回かぎりの操作です。リソース・プリンシパルを無効にするためにDBMS_CLOUD_ADMIN.DISABLE_RESOURCE_PRINCIPALを実行しないかぎり、リソース・プリンシパルを再度有効にする必要はありません。
自律型AIデータベースでのリソース・プリンシパルの無効化
すべてのAutonomous AI Databaseユーザーまたは指定したユーザーのリソース・プリンシパルを無効にするステップを示します。
-
すべてのユーザーのリソース・プリンシパルを無効にするには、ADMINユーザーとして次のコマンドを実行します。
EXEC DBMS_CLOUD_ADMIN.DISABLE_RESOURCE_PRINCIPAL();これは、資格証明
OCI$RESOURCE_PRINCIPALを削除します。 -
リソース・プリンシパル資格証明が無効になっていることを確認します。
たとえば:
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リソースにアクセスするための資格証明が提供されます。
まだ実行していない場合は、必要な前提条件ステップを実行します。
-
Oracle Cloud Infrastructureリソースへのアクセスは、動的グループ・ルールと、Oracle Cloud Infrastructureポリシーおよび動的グループで設定したポリシーによって異なります。詳細は、Autonomous AI Databaseでリソース・プリンシパルを使用するための前提条件の実行を参照してください。
-
動的グループおよびポリシーを定義した後、ADMINスキーマまたは別のスキーマでリソース・プリンシパルを使用できるようにします。詳細は、Oracle Cloud Infrastructureリソースにアクセスするためのリソース・プリンシパルの有効化を参照してください。
リソース・プリンシパル資格証明でDBMS_CLOUDプロシージャを使用するには:
-
DBMS_CLOUDプロシージャまたはファンクションを使用し、資格証明名としてOCI$RESOURCE_PRINCIPALを指定します。たとえば、リソース・プリンシパルを使用してOracle Cloud Infrastructure Object Storageにアクセスできます。
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の資格証明の作成は不要です。