機械翻訳について

Google Serviceアカウントを使用したGoogle Cloud Platformリソースへのアクセス

Googleサービス・アカウントを使用して、Autonomous DatabaseインスタンスからGoogle Cloud Platform (GCP)リソースにアクセスできます。

Googleサービス・アカウントを使用したGoogle Cloudリソースへのアクセスについて

Autonomous DatabaseでGoogleサービス・アカウント・ベースの認証を使用する場合、アプリケーションは、GCPリソースの長期的なIAMアクセス・キーに基づいて資格証明を作成および保存することなく、Google Cloud Platform (GCP)リソースに安全にアクセスできます。

Googleサービス・アカウントは、アプリケーションで使用される特別なGCPアカウントです。 Googleサービス・アカウントを使用して、(サービス・アカウントにIAMロール構成を介したアクセス権限が付与された後)アプリケーションから認可されたGCP REST APIコールを作成できます。 アプリケーションがGCPサービス・アカウント・ベースの認証でコールを行うと、初期コールはOAuth 2.0を使用して一時アクセス・トークンを生成します。 OAuth 2.0アクセス・トークンは1時間有効です。 その時間内の後続のリクエストでは、OAuth 2.0アクセス・トークンを使用して、認可されたGCP REST APIコールを実行します。

たとえば、Google Cloud StorageからAutonomous Databaseにデータをロードし、データに対してなんらかの操作を実行し、変更したデータをGoogle Cloud Storageに書き戻すことができます。 Google Cloud StorageにアクセスするGCPユーザー資格証明がある場合は、サービス・アカウントを使用せずにこれを実行できます。 ただし、ロールベースのGoogleサービス・アカウントを使用してAutonomous DatabaseからGCPリソースにアクセスすると、次の利点があります:

  • Autonomous DatabaseインスタンスからGCPリソースへのアクセスを必要とする様々なユーザーまたはスキーマに対して様々なポリシーを使用して、ロールベースのアクセスを作成できます。 これにより、リソースへのアクセスをロール別に制限するポリシーを設定できます。 たとえば、ロール別の読取り専用アクセスに限定されたポリシーをGoogle Cloud Storageバケットに設定します。
  • アプリケーションがGCPリソースにアクセスするときに、コードの長期ユーザー資格証明を指定する必要がないため、Googleサービス・アカウント・ベースの資格証明はより優れたセキュリティを提供します。 Autonomous Databaseは、Googleサービス・アカウントの一時資格証明を管理するため、データベースにGCPリソース・ユーザー資格証明を格納する必要はありません。

Googleサービス・アカウントの詳細は、「サービス・アカウント」を参照してください。

Googleサービス・アカウントの有効化とGCPサービス・アカウント名の検索

Google Cloud Platform (GCP)リソースをGoogleサービス・アカウントで使用する前に、Autonomous Databaseインスタンスに対してGCPアクセスを有効にする必要があります。

  1. 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_optionTRUEに設定します。

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            provider => 'GCP',
            username => 'adb_user',
            params   => JSON_OBJECT('grant_option' value TRUE));
    END;
    /

    grant_optionTRUEに設定して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;
    /
  2. DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTHを実行すると、Googleサービス・アカウントが作成されます。 CLOUD_INTEGRATIONSを問い合せて、Autonomous 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
  3. GCPリソースの構成時にこの値を指定する必要があるため、gcp_service_accountパラメータ値に注意してください。

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

Googleサービス・アカウントへのロールの割当ておよびGCPリソースへのアクセスの提供

Autonomous DatabaseインスタンスのGoogle Cloud Platform (GCP)リソースを使用するには、ユーザーまたはGoogle Cloud管理者が、アプリケーションがアクセスするGoogleサービス・アカウントにロールおよび権限を割り当てる必要があります。 Googleサービス・アカウントのロールの割当てに加えて、Google Cloud管理者を使用するGCPリソースでは、Google IAMプリンシパルを追加する必要があります。

前提条件として、まずAutonomous DatabaseインスタンスでGoogleサービス・アカウントを有効にします。 詳細については、「Googleサービス・アカウントの有効化とGCPサービス・アカウント名の検索」を参照してください。

  1. アカウントのGoogle Cloudコンソールを開きます。
  2. 指定された権限を持つロールを作成します。
    1. ナビゲーション・メニューから「IAM &管理」を選択します。
    2. IAMの&管理ナビゲータで、「ロール」を選択します。
    3. ロール・ページで、その他のアクションをクリックし、+ CREATE ROLEを選択します。

    たとえば、ロール「オブジェクト・ストア読取りおよび書込み」を作成してオブジェクト・ストア・バケットの使用を制御できます。

    gcp_iam_roles_create.pngの説明は以下のとおりです
    「図gcp_iam_roles_create.pngの説明」
  3. 「ロールの作成」ページで、+ ADD PERMISSIONSをクリックします。
    1. フィルタを選択して権限のリストを制限します。

      たとえば、フィルタ「権限: Storage.Objects」を入力して、オブジェクト・ストア権限のみを表示します。

      gcp_iam_roles_add_permissions.pngの説明は以下のとおりです
      「図gcp_iam_roles_add_permissions.pngの説明」
    2. 権限の追加ダイアログで、ADDをクリックします。
  4. 「ロールの作成」ページで、CREATEをクリックします。
  5. アクセスするリソースのロールおよびプリンシパルを追加します。

    たとえば、作成したロールを使用してGoogle Cloud Storageにアクセスする場合は、オブジェクト・ストア読取り書込み:

    1. ナビゲータから「クラウド・ストレージ」を選択し、「バケット」を選択します。
    2. 使用するバケットを選択し、PERMISSIONSをクリックします。
    3. + ADD PRINCIPALをクリックします。
  6. バケット名へのアクセスの付与」ダイアログで、選択したリソースのロールおよびプリンシパルを追加します。
    1. 「プリンシパルの追加」で、Autonomous Databaseインスタンスからgcp_service_accountパラメータの値を追加します。
    2. バケット名へのアクセスの付与」ダイアログで、「ロールの割当て」の下にロールを入力し、「セーブ」をクリックします。

これらのステップを完了すると、ロールおよびプリンシパルが割り当てられます。 これにより、Autonomous Databaseインスタンスで実行されているアプリケーションは、Googleサービス・アカウントを使用してGCPリソースにアクセスできます。

DBMS_CLOUDでのGoogleサービス・アカウントの使用

Google Cloud Platform (GCP)リソースにアクセスするためのDBMS_CLOUDコールを行い、資格証明名をGCP$PAとして指定すると、Google Cloud Platform側での認証は、Googleサービス・アカウントを使用して行われます。

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

Googleサービス・アカウント認証でDBMS_CLOUDプロシージャまたはファンクションを使用するには:

  1. 資格証明名としてGCP$PAを使用します。
  2. 仮想ホスト形式を使用して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 
    

詳細は、次を参照してください:

Googleサービス・アカウントの無効化

Google Cloud Platform (GCP)リソースへのGoogleサービス・アカウント・アクセスを無効にするには、DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTHを使用します。

provider値がGCPで、usernameADMINユーザー以外のユーザーである場合、プロシージャは指定されたユーザーから権限を取り消します。 この場合、ADMINユーザーおよび他のユーザーは引き続きGCP$PAを使用できます。

たとえば、adb_userの権限を取り消すには:

BEGIN
    DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTH(
        provider => 'GCP',
        username => 'adb_user');
END;
/

provider値がGCPで、usernameADMINの場合、このプロシージャはAutonomous 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 Databaseインスタンスのクローニング: Googleサービス・アカウントを有効にしてインスタンスをクローニングすると、Googleサービス・アカウント構成はクローンに継承されません。 クローン・インスタンスでGoogleサービス・アカウントを有効にする場合は、クローンでGoogleサービス・アカウントを有効にするステップを実行します。