Azureサービス・プリンシパルを使用したAzureリソースへのアクセス
自律型AIデータベースでAzureサービス・プリンシパルを使用すると、独自の資格証明オブジェクトを作成してデータベースに保存することなく、Azureリソースにアクセスできます。
Azureサービス・プリンシパルの有効化
Azureサービス・プリンシパル認証を有効にして、Autonomous AI Databaseが長期的な資格情報を提供せずにAzureサービスにアクセスできるようにします。
ノート
ノート: Autonomous AI DatabaseをAzureサービス・プリンシパル認証とともに使用するには、Microsoft Azureアカウントが必要です。詳細は、Microsoft Azureを参照してください。
Autonomous AI DatabaseでAzureサービス・プリンシパル認証を有効にするには:
-
Microsoft Azure Active DirectoryテナントIDを取得します。
詳細は、「Azure Active DirectoryテナントIDの検索方法」を参照してください。
-
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 AI DatabaseにAzureアプリケーションが作成されます。
指定したユーザーに、他のユーザーのAzureサービス・プリンシパルを有効にする権限を与える場合は、
paramsパラメータgrant_optionをTRUEに設定します。たとえば:
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アプリケーション同意の提供およびロールの割当て
Autonomous AI DatabaseからAzureサービス・プリンシパル認証を使用してAzureリソースにアクセスするには、Azureアプリケーションに同意し、Azureリソースへのアクセスを許可するロールを割り当てる必要があります。
Azureアプリケーションの同意を提供し、ロールを割り当てるには、次のステップを実行します。
-
Autonomous AI 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ロールを持つユーザーが使用可能です。 -
ブラウザで、
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「要求された権限」ページが開き、同意要求が表示されます。
-
同意を得るには、「同意」をクリックします。
-
Microsoft Azureコンソールで、指定したAzureリソースへのアクセスを許可するために付与するロールを割り当てます。
たとえば、Autonomous AI DatabaseからAzure Blob Storageにアクセスする場合は、Azureアプリケーション(サービス・プリンシパル)がAzure Blob Storageにアクセスできるようにロールを割り当てます。
ノート
ノート: Azure Blob Storageを使用するには、Azureストレージ・アカウントが必要です。Azureストレージ・アカウントがない場合は、ストレージ・アカウントを作成します。詳細は、ストレージ・アカウントの作成を参照してください。
a. Microsoft Azureコンソールの「Azureサービス」で、「ストレージ・アカウント」を選択します。
b. 「ストレージ・アカウント」で、サービス・プリンシパル・アクセス権を付与するストレージ・アカウントをクリックします。
c. 左側の「アクセス制御(IAM)」をクリックします。
d. 上部の領域で、「+追加」→「ロール割当ての追加」をクリックします。
e. 検索領域にテキストを入力して、表示されるロールのリストを絞り込みます。たとえば、Storage Blobと入力すると、Storage Blobを含む使用可能なロールが表示されます。
f. 付与するアクセスに適したロールを1つ以上選択します。たとえば、「Storage Blob Data Contributor」を選択します。
g 「次へ」をクリックします。
h. 「ロール割当ての追加」の「メンバー」で、「+メンバーの選択」をクリックします。
i 「メンバーの選択」の「選択」フィールドに、ステップ1 (
CLOUD_INTEGRATIONSビューのparam_value列)にリストされているazure_app_nameを入力します。j. アプリケーションを選択します。たとえば、
ADBS_APP_OCID1.AUTONOMOUSDATABASE.REGION1.SEA.ANZWKLJSZLYNB3AAWLYL3JVC4ICEXLB3ZG6WTCX735JSSY2NRHOBU4DZOOVAをクリックします。k. 「選択」をクリックします。
l 「Review + assign」をクリックします。
-
「Review + Assign」を再度クリックします。
ロールを割り当てた後は、Azureでの伝播に最大5分かかる可能性があるため、待機する必要があります。
この例では、Azure Blob Storageにアクセスするためのロールを付与するステップを示します。他のAzureサービスへのアクセスを提供する場合は、Azureアプリケーション(サービス・プリンシパル)がAzureサービスにアクセスできるように、追加のAzureサービスに対して同等のステップを実行する必要があります。
Azureサービス・プリンシパルとDBMS_CLOUDの使用
DBMS_CLOUDコールを実行してAzureリソースにアクセスし、資格証明名をAZURE$PAと指定すると、Azure側の認証はAzureサービス・プリンシパルを使用して行われます。
まだ実行していない場合は、必要な前提条件ステップを実行します。
-
ADMINスキーマまたは別のスキーマを有効にして、Azureサービス・プリンシパル認証を使用します。詳細は、Azureサービス・プリンシパルの有効化を参照してください。
-
アプリケーションに同意し、Azureロール割当て権限を実行します。詳細は、Azureアプリケーション同意の提供およびロールの割当てを参照してください。
DBMS_CLOUDプロシージャまたはファンクションをAzureサービス・プリンシパルとともに使用するには、資格証明名として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サービス・プリンシパルの無効化
Autonomous AI Database with Azureサービス・プリンシパルからのAzureリソースへのアクセスを無効にするには、DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTHを使用します。
Autonomous AI DatabaseでAzureサービス・プリンシパルを無効にするには:
BEGIN
DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTH(
provider => 'AZURE',
username => 'adb_user');
END;
/provider値がAZUREで、usernameがADMINユーザー以外のユーザーである場合、プロシージャは指定されたユーザーから権限を取り消します。この場合、ADMINユーザーおよび他のユーザーは引き続きADMIN.AZURE$PAを使用でき、Autonomous AI Databaseインスタンス用に作成されたアプリケーションはインスタンス上に残ります。
provider値がAZUREで、usernameがADMINの場合、このプロシージャはAzureサービス・プリンシパル・ベースの認証を無効化し、Autonomous AI Databaseインスタンス上のAzureサービス・プリンシパル・アプリケーションを削除します。この場合、Azureサービス・プリンシパルを有効にする場合は、Azureサービス・プリンシパルを再び使用するために必要なすべてのステップ(次を含む)を実行する必要があります。
-
Azureサービス・プリンシパル認証を使用するには、
ADMINスキーマまたは別のスキーマを有効にします。詳細は、Azureサービス・プリンシパルの有効化を参照してください。 -
アプリケーションに同意し、Azureロール割当て権限を実行します。詳細は、Azureアプリケーション同意の提供およびロールの割当てを参照してください。
詳細は、DISABLE_PRINCIPAL_AUTHプロシージャを参照してください。
Azureサービス・プリンシパルに関するノート
Azureサービス・プリンシパルを使用するためのノート。
Azureサービス・プリンシパルを使用したAutonomous AI Databaseインスタンスのクローニング: Azureサービス・プリンシパルを有効にしてインスタンスをクローニングする場合、Azureサービス・プリンシパル構成はクローンに継承されません。クローン・インスタンスでAzureサービス・プリンシパルを有効にする場合は、ステップを実行して、クローンでAzureサービス・プリンシパルを有効にします。