Googleサービス・アカウントを使用したGoogle Cloud Platformリソースへのアクセス
Googleサービス・アカウントを使用して、自律型AIデータベース・インスタンスからGoogle Cloud Platform (GCP)リソースにアクセスできます。
Googleサービス・アカウントを使用したGoogle Cloudリソースへのアクセスについて
Autonomous AI DatabaseでGoogleサービス・アカウント・ベースの認証を使用する場合、アプリケーションは、GCPリソースの長期IAMアクセス・キーに基づいて資格証明を作成および保存することなく、Google Cloud Platform (GCP)リソースに安全にアクセスできます。
Googleサービスアカウントは、アプリケーションで使用される特別な種類のGCPアカウントです。Googleサービス・アカウントを使用して、アプリケーションから認可されたGCP REST APIコールを実行できます(サービス・アカウントにIAMロール構成を介してアクセス権限が付与された後)。アプリケーションがGCPサービス・アカウント・ベースの認証を使用してコールを行うと、初期コールはOAuth2.0を介して一時アクセス・トークンを生成します。OAuth2.0アクセス・トークンは1時間有効です。1時間以内の後続のリクエストでは、OAuth2.0アクセス・トークンを使用して、認可されたGCP REST APIコールを行います。
たとえば、Google Cloud StorageからAutonomous AI Databaseにデータをロードし、データに対してなんらかの操作を実行し、変更したデータをGoogle Cloud Storageに書き戻すことができます。これは、Google Cloud StorageにアクセスするためのGCPユーザー資格証明がある場合、サービス・アカウントを使用せずに実行できます。ただし、ロールベースのGoogleサービス・アカウントを使用してAutonomous AI DatabaseからGCPリソースにアクセスすると、次の利点があります。
-
自律型AIデータベース・インスタンスからGCPリソースにアクセスする必要があるユーザーやスキーマごとに異なるポリシーを使用して、ロールベースのアクセスを作成できます。これにより、ロール別にリソースへのアクセスを制限するポリシーを設定できます。たとえば、ロール別にGoogle Cloud Storageバケットへの読取り専用アクセスに制限されるポリシーを設定します。
-
Googleサービス・アカウント・ベースの資格証明は、アプリケーションがGCPリソースにアクセスするときにコードで長期的なユーザー資格証明を指定する必要がないため、より優れたセキュリティを提供します。Autonomous AI Databaseは、Googleサービス・アカウントの一時資格証明を管理するため、GCPリソース・ユーザー資格証明をデータベースに保存する必要はありません。
Googleサービス・アカウントの詳細は、サービス・アカウントを参照してください。
Googleサービス・アカウントの有効化とGCPサービス・アカウント名の検索
Google Cloud Platform (GCP)リソースをGoogleサービス・アカウントで使用する前に、Autonomous AI DatabaseインスタンスのGCPアクセスを有効にする必要があります。
-
DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTHを使用したGoogleサービス・アカウント認証を有効にします。たとえば、
ADMINユーザーに対してGoogleサービス・アカウント認証を有効にするには:BEGIN DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH( provider => 'GCP' ); END; /ADMIN以外のユーザーadb_userに対して、次のようにGoogleサービス・アカウント認証を有効にします。BEGIN DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH( provider => 'GCP', username => 'adb_user'); END; /指定したユーザーに、他のユーザーのGoogleサービス・アカウント認証を有効にする権限を付与する場合は、
paramsパラメータgrant_optionをTRUEに設定します。BEGIN DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH( provider => 'GCP', username => 'adb_user', params => JSON_OBJECT('grant_option' value TRUE)); END; /grant_optionをTRUEに設定してDBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTHを実行すると、adb_userで別のユーザーのGoogleサービス・アカウント認証を有効にできます。たとえば、adb_userとして接続する場合、次のコマンドを実行して、adb_user2のGCPサービス・アカウント・アクセスを有効にできます。BEGIN DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH( provider => 'GCP', username => 'adb_user2'); END; / -
DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTHを実行すると、Googleサービス・アカウントが作成されます。CLOUD_INTEGRATIONSを問い合せて、Autonomous AI Databaseインスタンスのサービス・アカウントの詳細を取得します。SELECT * FROM CLOUD_INTEGRATIONS WHERE param_name = 'gcp_service_account';PARAM_NAME PARAM_VALUE --------------------------------------------------------------------------- gcp_service_account GCP-SA-22222-32222@gcp-example.iam.gserviceaccount.com -
GCPリソースの構成時にこの値を指定する必要があるため、
gcp_service_accountパラメータ値に注意してください。
詳細は、ENABLE_PRINCIPAL_AUTHプロシージャを参照してください。
Googleサービス・アカウントへのロールの割当てとGCPリソースへのアクセスの提供
自律型AIデータベース・インスタンスのGoogle Cloud Platform (GCP)リソースを使用するには、ユーザーまたはGoogle Cloud管理者が、アプリケーションからアクセスするGoogleサービス・アカウントにロールおよび権限を割り当てる必要があります。Googleサービス・アカウントのロールの割当てに加えて、Google Cloud管理者を使用するGCPリソースに対して、Google IAMプリンシパルを追加する必要があります。
前提条件として、まずAutonomous AI DatabaseインスタンスでGoogleサービス・アカウントを有効にします。詳細は、「Googleサービス・アカウントの有効化とGCPサービス・アカウント名の検索」を参照してください。
-
アカウントのGoogle Cloud Consoleを開きます。
-
指定された権限を持つロールを作成します。
-
ナビゲーション・メニューから、「IAMおよび管理」を選択します。
-
「IAMおよび管理」ナビゲータから、「ロール」を選択します。
-
「ロール」ページで、「その他のアクション」をクリックし、「+ CREATE ROLE」を選択します。
たとえば、オブジェクト・ストアの読取りおよび書込みロールを作成して、オブジェクト・ストア・バケットの使用を制御できます。
-
-
「ロールの作成」ページで、「+追加パーミッション」をクリックします。
-
フィルタを選択して、権限のリストを制限します。
たとえば、「権限: Storage.Objects」というフィルタを入力して、オブジェクト・ストアの権限のみを表示します。
-
「権限の追加」ダイアログで、「追加」をクリックします。
-
-
「ロールの作成」ページで、「CREATE」をクリックします。
-
アクセスするリソースのロールおよびプリンシパルを追加します。
たとえば、作成したロールオブジェクト・ストアの読取り/書込みを使用してGoogle Cloud Storageにアクセスする場合:
-
ナビゲータから、「クラウド・ストレージ」を選択し、「バケット」を選択します。
-
使用するバケットを選択し、「操作」をクリックします。
-
+ ADD PRINCIPALをクリックします。
-
-
「バケット名へのアクセス権を付与」ダイアログで、選択したリソースのロールとプリンシパルを追加します。
-
「プリンシパルの追加」で、Autonomous AI Databaseインスタンスから
gcp_service_accountパラメータの値を追加します。 -
「バケット名へのアクセス権の付与」ダイアログで、「ロールの割当て」にロールを入力し、「保存」をクリックします。
-
これらのステップを完了すると、ロールとプリンシパルが割り当てられます。これにより、Autonomous AI Databaseインスタンスで実行されているアプリケーションが、Googleサービス・アカウントでGCPリソースにアクセスできます。
DBMS_CLOUDでのGoogleサービス・アカウントの使用
DBMS_CLOUDコールを実行してGoogle Cloud Platform (GCP)リソースにアクセスし、資格証明名をGCP$PAと指定すると、Google Cloud Platform側の認証はGoogleサービス・アカウントを使用して行われます。
確認していない場合は、前提条件の手順を実行します。
-
ADMINスキーマまたは別のスキーマを有効にして、Googleサービス・アカウント認証を使用します。詳細は、「Googleサービス・アカウントの有効化とGCPサービス・アカウント名の検索」を参照してください。
-
アクセスするリソースのGoogle Cloud Platformロール割当てを実行します。詳細は、Googleサービス・アカウントへのロールの割当てとGCPリソースへのアクセスの提供を参照してください。
Googleサービス・アカウント認証でDBMS_CLOUDプロシージャまたはファンクションを使用するには:
-
資格証明名として
GCP$PAを使用します。 -
仮想ホスト型を使用してGCPリソースにアクセスするためのURIを構築します。
https://BUCKET_NAME.storage.googleapis.com/OBJECT_NAMEたとえば、Googleサービス・アカウント資格証明を使用して、次のようにGoogle Cloud Storageにアクセスできます。
SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('GCP$PA', 'https://treetypes.storage.googleapis.com/' );OBJECT_NAME BYTES CHECKSUM CREATED LAST_MODIFIED ----------- ----- -------------------------------- ------- ------------------------ trees.txt 58 682075a8c38f5686c32c25c6fb67dcbe 2022-10-05T20:03:55.253Z
詳細は、次を参照してください:
-
GCP仮想ホスト・スタイルのリクエストの詳細は、リクエスト・エンドポイントを参照してください。
-
LIST_OBJECTSファンクションを参照してください。
Googleサービス・アカウントの無効化
Google Cloud Platform (GCP)リソースへのGoogleサービス・アカウント・アクセスを無効にするには、DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTHを使用します。
provider値がGCPで、usernameがADMINユーザー以外のユーザーである場合、プロシージャは指定されたユーザーから権限を取り消します。この場合、ADMINユーザーおよび他のユーザーは引き続きGCP$PAを使用できます。
たとえば、adb_userの権限を取り消すには:
BEGIN
DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTH(
provider => 'GCP',
username => 'adb_user');
END;
/provider値がGCPで、usernameがADMINの場合、このプロシージャはAutonomous AI DatabaseインスタンスでのGoogleサービス・アカウント・アクセスを無効にします。usernameのデフォルト値はADMINです。
たとえば:
BEGIN
DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTH(
provider => 'GCP' );
END;
/詳細は、DISABLE_PRINCIPAL_AUTHプロシージャを参照してください。
Googleサービス・アカウント・ノート
Googleサービス・アカウントの使用に関するノート。
-
Google Cloud Platform (GCP)文字制限:
DBMS_CLOUDは、Google Cloud Storageバケット名にアクセスするためのを含むURIをサポートしていません。Google Cloud Storageのバケット名に「」が含まれている場合は、次のエラーが表示されることがあります。SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('GCP$PA', 'https://app_bucket.storage.googleapis.com/');ORA-20006: Unsupported object store URI - https://app_bucket.storage.googleapis.com/ ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD", line 1306 -
Googleサービス・アカウントを使用したAutonomous AI Databaseインスタンスのクローニング: Googleサービス・アカウントを有効にしてインスタンスをクローニングする場合、Googleサービス・アカウント構成はクローンに継承されません。クローン・インスタンスでGoogleサービス・アカウントを有効にする場合は、クローンでGoogleサービス・アカウントを有効にするステップを実行します。