ノート:

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プロフェッショナルおよび管理者。

目的

前提条件

タスク1: Microsoft Azureアプリケーション登録へのOracle Autonomous Databaseの登録

  1. 少なくともクラウド・アプリケーション管理者としてMicrosoft Azureポータルにサインインします。

    Microsoft Azureポータル

  2. 「ホーム」「Azure Active Directory」「アプリケーション登録」および「アプリケーションの登録」を参照します。「名前」ADB-DBと入力し、「登録」をクリックします。アプリケーションが作成されました。

    Microsoft Azureポータル

  3. 「アプリケーションID URI: 追加」「アプリケーションID URIの編集」をクリックし、前述のapi:テナンシ・ドメイン名に置き換えて、「保存」をクリックします。

    • アプリケーションID URI: <tenancy_domain_name>/appid

      Microsoft Azureポータル

  4. 「スコープの追加」をクリックして次の詳細を入力し、「スコープの追加」をクリックします。

    • スコープ名: session:scope:connect

    • 同意できるユーザー: Admins and users

    • 管理同意表示名: connect to database

    • 管理者の同意の説明: connect to database

    • ユーザー・コンテンツの表示名: connect to database

    • ユーザー・コンテンツの説明: connect to database

    • 状態: Enabled

      Microsoft Azureポータル

  5. 「概要」「アプリケーション・ロール」「アプリケーション・ロールの作成」をクリックし、次の詳細を入力して「適用」をクリックします。

    • 表示名: pdb.users

    • 許可されるメンバー・タイプ: Users/Groups

    • : pdb.users

    • 説明: all user access

    • このアプリケーション・ロールを有効にしますか。: Enabled

      Microsoft Azureポータル

      Microsoft Azureポータル

  6. 「アプリケーション・ロール」「アプリケーション・ロールの作成」をクリックし、次の詳細を入力して、「適用」をクリックします。

    • 表示名: dba.role

    • 許可されるメンバー・タイプ: Users/Groups

    • : dba.role

    • 説明: dba global role

    • このアプリケーション・ロールを有効にしますか。: Enabled

      Microsoft Azureポータル

  7. 「アプリケーション・ロール」「アプリケーション・ロールの作成」をクリックし、次の詳細を入力して、「適用」をクリックします

    • 表示名: hr.app

    • 許可されるメンバー・タイプ: Applications

    • : hr.app

    • 説明: application

    • このアプリケーション・ロールを有効にしますか。: Enabled

      Microsoft Azureポータル

  8. 「ホーム」「エンタープライズ・アプリケーション」「ADB-DB」「ユーザーとグループの割当て」に移動します。

  9. 「割当ての追加」で、「ユーザー」を選択し、「ユーザー」を選択します。アクセス・トークンの生成中に、この割り当てられたユーザーがシングル・サインオンで使用されます。

    • 「ロールの選択」で、pdb.usersを選択します。

    • 「Select」をクリックします。

    • 「Assign」をクリックします。

  10. 「割当ての追加」で、「ユーザー」を選択し、「ユーザー」を選択します。アクセス・トークンの生成中に、この割り当てられたユーザーがシングル・サインオンで使用されます。

    • 「ロールの選択」で、dba.roleを選択します。

    • 「Select」をクリックします。

    • 「Assign」をクリックします。

タスク2: クライアント・アプリケーション登録の作成

  1. 「ホーム」「アプリケーション登録」「アプリケーションの登録」にナビゲートし、次の詳細を入力して「登録」をクリックします。

    • 名前: ADB-Client

    • サポートされている勘定科目タイプ: Accounts in this organizational directory only

    • リダイレクトURI: Public client/native - http://localhost

      Microsoft Azureポータル

  2. 「APIの権限」にナビゲートし、「権限の追加」をクリックします。「API権限のリクエスト」で、「組織が使用するAPI」「ADB-DB」「委任された権限」および「権限」session:scope:connectとして選択し、「権限の追加」をクリックします。

    Microsoft Azureポータル

  3. 「APIの公開」「アプリケーションID URI: 追加」「アプリケーションID URIの編集」の順にクリックし、API:テナンシ・ドメイン名に置き換えます。

    Microsoft Azureポータル

タスク3: SQLデータベースへの接続

  1. Oracle Autonomous Databaseに移動し、「データベース・アクション」ドロップダウン・リストをクリックし、「SQL」を選択して次の問合せを入力します。

    Microsoft Azureポータル

    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
    

    OCIポータル

    ノート: identity_provider_typeは現在NONEに設定されています。

  2. データベース・プロシージャを実行して、アイデンティティ・プロバイダを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;
    

    OCIポータル

  3. SQL問合せを再度実行して、アイデンティティ・プロバイダを確認します。

    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
    

    OCIポータル

    ノート: identity_provider_typeAzure ADになりました。

  4. ユーザー - allusershrappおよびロール - 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';
    
  5. セッションの作成allusersおよびhrappに付与します。

    GRANT CREATE SESSION TO allusers;
    
    GRANT CREATE SESSION TO hrapp;
    
    GRANT pdb_dba TO dba_azure;
    

    OCIポータル

タスク4: Azureポータルへのナビゲート

  1. Azure Portalを開き、「ホーム」「アプリケーション登録」および「ADB-Client」に移動します。アプリケーション(クライアント) IDおよびディレクトリ(テナント) IDをコピーします。

    Microsoft Azureポータル

  2. Azureポータルを開き、「ホーム」「アプリケーション登録」および「ADB-DB」に移動します。スコープをコピーします。

    Microsoft Azureポータル

タスク5: MSAL Pythonライブラリを使用したMicrosoft Access Tokenの取得

  1. AuthZフローを使用してアクセス・トークンを取得するには、Pythonスクリプトを参照してください。MSAL Pythonライブラリを使用したMicrosoft Entra IDトークンの取得を参照してください。

  2. タスク4で取得したスクリプトのClient_idTenant_idおよびScopeを置き換えます。

    Pythonスクリプトの変更

タスク6: Pythonスクリプトの実行

  1. PowerShellを開きます。Pythonバージョンおよびpipバージョンを確認します。

    python --version
    
    pip --version
    
  2. 次のコマンドを使用してPythonスクリプトを実行します。自分を認証する必要があるMicrosoft Azure Portalにリダイレクトされます。

    python ./get-token-for-user.py
    

    Windows Powershell

  3. 認証が完了すると、PowerShellにリダイレクトされ、アクセス・トークンが生成されます。

    Azure

  4. アクセス・トークンをローカル・マシンに保存し、名前をtokenとして指定し、filetype All Typesとして保存します。

    Windows Powershell

  5. 環境に応じて、接続文字列を使用して接続します。ウォレット内の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>")))
    

    これで、データベースに正常に接続しました。

    データベース接続

  6. 次の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への接続を正常にテストしました。

確認

その他の学習リソース

docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。