ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントに例の値を使用します。演習を完了するときは、これらの値をクラウド環境に固有の値に置き換えます。
Oracle Autonomous DatabaseとMicrosoft Entra IDの統合
イントロダクション
Oracle Autonomous Databaseは、Microsoft Entra ID (ME-ID - 以前はAzure Active Directory (Azure AD)と呼ばれていました)と統合できます。ME-IDユーザーおよびアプリケーションは、ME-IDシングル・サインオン(SSO)資格証明を使用してログインし、ME-ID OAuth2アクセス・トークンを取得し、データベースにアクセスできます。
これは、ユーザーまたはアプリケーションが最初にME-IDからリクエストするME-ID OAuth2アクセス・トークンを使用して行われます。このOAuth2アクセス・トークンには、ユーザー・アイデンティティおよびデータベース・アクセス情報が含まれ、データベースに送信されます。
対象読者
IAMプロフェッショナルおよび管理者。
目的
- Microsoft Entra ID OAuth2アクセス・トークンを使用するようにAutonomous Databaseを構成し、ユーザーがME-ID SSO資格証明を使用してAutonomous Databaseにアクセスできるようにします。
前提条件
-
OCIにプロビジョニングされたAutonomous Database。
-
管理者権限を持つOCI IAMアイデンティティ・ドメイン・テナンシ。
-
Autonomous Database接続をテストするためのOracle Databaseツールについては、Oracle Databaseツールを使用したAutonomous Databaseへの接続を参照してください。このチュートリアルでは、Windowsシステムの新規Oracle ClientインストールでSQL*Plusコマンドライン・インタフェースを使用します。
-
管理者権限を持つ既存のMicrosoft Azureアカウント。
タスク1: Microsoft Azureアプリケーション登録へのOracle Autonomous Databaseの登録
-
少なくともクラウド・アプリケーション管理者としてMicrosoft Azureポータルにサインインします。
-
「ホーム」、「Azure Active Directory」、「アプリケーション登録」および「アプリケーションの登録」を参照します。「名前」に
ADB-DB
と入力し、「登録」をクリックします。アプリケーションが作成されました。 -
「アプリケーションID URI: 追加」、「アプリケーションID URIの編集」をクリックし、前述のapi:をテナンシ・ドメイン名に置き換えて、「保存」をクリックします。
-
アプリケーションID URI:
<tenancy_domain_name>/appid
-
-
「スコープの追加」をクリックして次の詳細を入力し、「スコープの追加」をクリックします。
-
スコープ名:
session:scope:connect
-
同意できるユーザー:
Admins and users
-
管理同意表示名:
connect to database
-
管理者の同意の説明:
connect to database
-
ユーザー・コンテンツの表示名:
connect to database
-
ユーザー・コンテンツの説明:
connect to database
-
状態:
Enabled
-
-
「概要」、「アプリケーション・ロール」、「アプリケーション・ロールの作成」をクリックし、次の詳細を入力して「適用」をクリックします。
-
表示名:
pdb.users
-
許可されるメンバー・タイプ:
Users/Groups
-
値:
pdb.users
-
説明:
all user access
-
このアプリケーション・ロールを有効にしますか。:
Enabled
-
-
「アプリケーション・ロール」、「アプリケーション・ロールの作成」をクリックし、次の詳細を入力して、「適用」をクリックします。
-
表示名:
dba.role
-
許可されるメンバー・タイプ:
Users/Groups
-
値:
dba.role
-
説明:
dba global role
-
このアプリケーション・ロールを有効にしますか。:
Enabled
-
-
「アプリケーション・ロール」、「アプリケーション・ロールの作成」をクリックし、次の詳細を入力して、「適用」をクリックします
-
表示名:
hr.app
-
許可されるメンバー・タイプ:
Applications
-
値:
hr.app
-
説明:
application
-
このアプリケーション・ロールを有効にしますか。:
Enabled
-
-
「ホーム」、「エンタープライズ・アプリケーション」、「ADB-DB」、「ユーザーとグループの割当て」に移動します。
-
「割当ての追加」で、「ユーザー」を選択し、「ユーザー」を選択します。アクセス・トークンの生成中に、この割り当てられたユーザーがシングル・サインオンで使用されます。
-
「ロールの選択」で、pdb.usersを選択します。
-
「Select」をクリックします。
-
「Assign」をクリックします。
-
-
「割当ての追加」で、「ユーザー」を選択し、「ユーザー」を選択します。アクセス・トークンの生成中に、この割り当てられたユーザーがシングル・サインオンで使用されます。
-
「ロールの選択」で、dba.roleを選択します。
-
「Select」をクリックします。
-
「Assign」をクリックします。
-
タスク2: クライアント・アプリケーション登録の作成
-
「ホーム」、「アプリケーション登録」、「アプリケーションの登録」にナビゲートし、次の詳細を入力して「登録」をクリックします。
-
名前:
ADB-Client
。 -
サポートされている勘定科目タイプ:
Accounts in this organizational directory only
。 -
リダイレクトURI:
Public client/native - http://localhost
。
-
-
「APIの権限」にナビゲートし、「権限の追加」をクリックします。「API権限のリクエスト」で、「組織が使用するAPI」、「ADB-DB」、「委任された権限」および「権限」を
session:scope:connect
として選択し、「権限の追加」をクリックします。 -
「APIの公開」、「アプリケーションID URI: 追加」、「アプリケーションID URIの編集」の順にクリックし、API:をテナンシ・ドメイン名に置き換えます。
タスク3: SQLデータベースへの接続
-
Oracle Autonomous Databaseに移動し、「データベース・アクション」ドロップダウン・リストをクリックし、「SQL」を選択して次の問合せを入力します。
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
ノート:
identity_provider_type
は現在NONE
に設定されています。 -
データベース・プロシージャを実行して、アイデンティティ・プロバイダをAzure ADに設定します。
BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION( type =>'AZURE_AD', params => JSON_OBJECT('tenant_id' VALUE '<tenant_id>', 'application_id' VALUE '<application_id>', 'application_id_uri' VALUE '<application_id_uri>'), force => TRUE ); END;
-
SQL問合せを再度実行して、アイデンティティ・プロバイダを確認します。
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
ノート:
identity_provider_type
がAzure AD
になりました。 -
ユーザー -
allusers
、hrapp
およびロール -dba_azure
を作成します。CREATE USER allusers IDENTIFIED GLOBALLY AS 'AZURE_ROLE=pdb.users'; CREATE USER hrapp IDENTIFIED GLOBALLY AS 'AZURE_ROLE=hr.app'; CREATE ROLE dba_azure IDENTIFIED GLOBALLY AS 'AZURE_ROLE=dba.role';
-
セッションの作成を
allusers
およびhrapp
に付与します。GRANT CREATE SESSION TO allusers;
GRANT CREATE SESSION TO hrapp;
GRANT pdb_dba TO dba_azure;
タスク4: Azureポータルへのナビゲート
-
Azure Portalを開き、「ホーム」、「アプリケーション登録」および「ADB-Client」に移動します。アプリケーション(クライアント) IDおよびディレクトリ(テナント) IDをコピーします。
-
Azureポータルを開き、「ホーム」、「アプリケーション登録」および「ADB-DB」に移動します。スコープをコピーします。
タスク5: MSAL Pythonライブラリを使用したMicrosoft Access Tokenの取得
-
AuthZフローを使用してアクセス・トークンを取得するには、Pythonスクリプトを参照してください。MSAL Pythonライブラリを使用したMicrosoft Entra IDトークンの取得を参照してください。
-
タスク4で取得したスクリプトの
Client_id
、Tenant_id
およびScope
を置き換えます。
タスク6: Pythonスクリプトの実行
-
PowerShellを開きます。Pythonバージョンおよび
pip
バージョンを確認します。python --version
pip --version
-
次のコマンドを使用してPythonスクリプトを実行します。自分を認証する必要があるMicrosoft Azure Portalにリダイレクトされます。
python ./get-token-for-user.py
-
認証が完了すると、PowerShellにリダイレクトされ、アクセス・トークンが生成されます。
-
アクセス・トークンをローカル・マシンに保存し、名前をtokenとして指定し、filetype
All Types
として保存します。 -
環境に応じて、接続文字列を使用して接続します。ウォレット内の
TNS.ora
に従って、hostnameおよびaccess-token-pathを置き換えます。conn /@(description= (retry_count-20) (retry_delay=3) (address= (protocol=tcps) (port=1522) (host-adb. us-ashburn-1.oraclecloud. com)) (connect_data=(<hostname>))(security-(ss1_server_dn_match-yes)(TOKEN_AUTH-OAUTH)(TOKEN_LOCATION-"<access-token-path>")))
これで、データベースに正常に接続しました。
-
次のSQL問合せを1つずつ実行し、出力を確認してユーザーおよびロールを検証します。
sqlplus /nolog
SELECT SYS_CONTEXT ('USERENV','CURRENT_USER') FROM DUAL;
SELECT SYS_CONTEXT ('USERENV','AUTHENTICATED_IDENTITY') FROM DUAL;
SELECT SYS_CONTEXT ('USERENV','ENTERPRISE_IDENTITY') FROM DUAL;
SELECT * FROM SESSION_ROLES;
exit
OAuth ME-IDアクセス・トークンを使用して、Autonomous Databaseへの接続を正常にテストしました。
関連リンク
確認
- 著者 - Indiradarshni Balasundaram、Alex Kovuru、Anuj Tripathi
その他の学習リソース
docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Integrate Oracle Autonomous Database with Microsoft Entra ID
F90208-01
December 2023
Copyright © 2023, Oracle and/or its affiliates.