機械翻訳について

Azureサービス・プリンシパルを使用したAzureリソースへのアクセス

Azureサービス・プリンシパルをAutonomous Databaseとともに使用すると、独自の資格証明オブジェクトを作成してデータベースに保存しなくても、Azureリソースにアクセスできます。

Azureサービス・プリンシパルの有効化

Azureサービス・プリンシパル認証を有効にして、Autonomous Databaseが長期資格証明を指定せずにAzureサービスにアクセスできるようにします。

ノート:

Autonomous DatabaseをAzureサービス・プリンシパル認証で使用するには、Microsoft Azureアカウントが必要です。 詳細はMicrosoft Azureを参照してください。

Autonomous DatabaseでAzureサービス・プリンシパル認証を有効にするには:

  1. Microsoft Azure Active DirectoryテナントIDを取得します。

    詳細については、「Azure Active DirectoryテナントIDの検索方法」を参照してください。

  2. DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTHを使用してAzureサービス・プリンシパルを有効にします。

    たとえば:

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            provider => 'AZURE',
            username => 'adb_user',
            params   => JSON_OBJECT('azure_tenantid' value 'azure_tenantID'));
    END;
    /

    これにより、Azureサービス・プリンシパル認証が有効になり、Autonomous DatabaseにAzureアプリケーションが作成されます。

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

    たとえば:

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

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

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            provider => 'AZURE',
            username => 'adb_user2');
    END;
    /

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

Azureアプリケーション同意とロールの割当て

Azureサービス・プリンシパル認証を使用してAutonomous DatabaseからAzureリソースにアクセスするには、Azureアプリケーションに同意し、Azureリソースへのアクセスを許可するロールを割り当てる必要があります。

Azureアプリケーションの同意を提供し、ロールを割り当てるには、次のステップを実行します:

  1. Autonomous Databaseで、CLOUD_INTEGRATIONSを問い合せます。

    たとえば:

    SELECT param_name, param_value FROM CLOUD_INTEGRATIONS;
    
    PARAM_NAME        PARAM_VALUE
    --------------- ------------------------------------------------------------------------------------------------------------------------------------------
    azure_tenantid    29981886-6fb3-44e3-82ab-d870b0e8e7eb
    azure_consent_url https://login.microsoftonline.com/f8cdef31-91255a/oauth2/v2.0/authorize?client_id=d66f1b5-1250d5445c0b&response_type=code&scope=User.read
    azure_app_name    ADBS_APP_OCID1.AUTONOMOUSDATABASE.REGION1.SEA.ANZWKLJSZLYNB3AAWLYL3JVC4ICEXLB3ZG6WTCX735JSSY2NRHOBU4DZOOVA

    ビューCLOUD_INTEGRATIONSは、ADMINユーザーまたはDWROLEロールを持つユーザーが使用できます。

  2. ブラウザで、azure_consent_urlパラメータで指定されたAzure同意URLを開きます。

    たとえば、ブラウザでURLをコピーして入力します:

    https://login.microsoftonline.com/f8cdef31-91255a/oauth2/v2.0/authorize?client_id=d66f1b5-1250d5445c0b&response_type=code&scope=User.read

    「権限がリクエストされました」ページが開き、次のような同意リクエストが表示されます:

    azure_consent.pngの説明は以下のとおりです
    「図azure_consent.pngの説明」
  3. 同意を指定するには、「受入れ」をクリックします。
  4. Microsoft Azureコンソールで、指定したAzureリソースへのアクセスを許可するために付与するロールを割り当てます。

    たとえば、Autonomous DatabaseからAzure Blob Storageにアクセスする場合は、Azureアプリケーション(サービス・プリンシパル)がAzure Blob Storageにアクセスできるようにロールを割り当てます。

    ノート:

    Azure Blob Storageを使用するには、Azureストレージ・アカウントが必要です。 Azureストレージ・アカウントがない場合は、ストレージ・アカウントを作成します。 詳細については、「ストレージ・アカウントの作成」を参照してください。
    1. Microsoft Azureコンソールの「Azureサービス」で、「ストレージ・アカウント」を選択します。
    2. 「ストレージ・アカウント」で、サービス主体アクセス権を付与するストレージ・アカウントをクリックします。
    3. 左側の「アクセス制御(IAM)」をクリックします。
    4. 上部の領域から、「+追加→ロール割当の追加」をクリックします。
    5. 検索領域でテキストを入力して、表示されるロールのリストを絞り込みます。 たとえば、「ストレージ・ブロブ」を含む使用可能なロールを表示するには、「ストレージ・ブロブ」と入力します。
    6. 付与するアクセスに応じて、1つ以上のロールを選択します。 たとえば、「ストレージBlobデータ・コントリビュータ」を選択します。
    7. 「次へ」をクリックします。
    8. 「ロール割当の追加」「メンバー」で、「+メンバーの選択」をクリックします。
    9. 「メンバーの検索」の選択フィールドに、ステップ1にリストされているazure_app_name (CLOUD_INTEGRATIONSビューのparam_value列)を入力します。
    10. アプリケーションを選択します。

      たとえば、ADBS_APP_OCID1.AUTONOMOUSDATABASE.REGION1.SEA.ANZWKLJSZLYNB3AAWLYL3JVC4ICEXLB3ZG6WTCX735JSSY2NRHOBU4DZOOVAをクリック

    11. 「選択」をクリックします。
    12. 「レビュー+割り当て」をクリックします。
  5. 「レビュー+割当」を再度クリックします。

    ロールの割当て後、Azureでロールの割当ての伝播に最大5分かかる可能性があるため、待機する必要があります。

この例では、Azure Blob Storageにアクセスするためのロールを付与するステップを示します。 他のAzureサービスへのアクセスを提供する場合は、Azureアプリケーション(サービス・プリンシパル)がAzureサービスにアクセスできるように、追加のAzureサービスに対して同等のステップを実行する必要があります。

Azureサービス・プリンシパルをDBMS_CLOUDとともに使用

AzureリソースにアクセスするためのDBMS_CLOUDコールを行い、資格証明名をAZURE$PAとして指定すると、Azure側の認証はAzureサービス・プリンシパルを使用して行われます。

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

Azureサービス・プリンシパルでDBMS_CLOUDプロシージャまたはファンクションを使用するには、資格証明名としてAZURE$PAを指定します。 たとえば、Azureサービス・プリンシパル資格証明を使用して、次のようにAzure Blob Storageにアクセスできます:

SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('AZURE$PA', 'https://treedata.blob.core.windows.net/treetypes/');

OBJECT_NAME BYTES CHECKSUM                 CREATED              LAST_MODIFIED        
----------- ----- ------------------------ -------------------- -------------------- 
trees.txt      58 aCB1qMOPVobDLCXG+2fcvg== 2022-04-07T23:03:01Z 2022-04-07T23:03:01Z

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

Azureサービス・プリンシパルの無効化

Azureサービス・プリンシパルでAutonomous DatabaseからAzureリソースへのアクセスを無効にするには、DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTHを使用します。

Autonomous DatabaseでAzureサービス・プリンシパルを無効にするには:

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

provider値がAZUREで、usernameADMINユーザー以外のユーザーである場合、プロシージャは指定されたユーザーから権限を取り消します。 この場合、ADMINユーザーおよび他のユーザーは引き続きADMIN.AZURE$PAを使用でき、Autonomous Databaseインスタンス用に作成されたアプリケーションはインスタンス上に残ります。

provider値がAZUREで、usernameADMINの場合、プロシージャはAzureサービス・プリンシパル・ベースの認証を無効にし、Autonomous Databaseインスタンス上のAzureサービス・プリンシパル・アプリケーションを削除します。 この場合、Azureサービス・プリンシパルを有効にする場合は、Azureサービス・プリンシパルを再度使用するために必要なすべてのステップ(次を含む)を実行する必要があります:

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

Azureサービス・プリンシパルに関するノート

Azureサービス・プリンシパルを使用するためのノート。

  • Azureサービス・プリンシパルを使用したAutonomous Databaseインスタンスのクローニング: Azureサービス・プリンシパルを有効にしてインスタンスをクローニングすると、Azureサービス・プリンシパル構成はクローンに継承されません。 クローン・インスタンスでAzureサービス・プリンシパルを有効にする場合は、クローンでAzureサービス・プリンシパルを有効にするステップを実行します。