ノート:

Microsoft Entra IDを使用したOracle Database 23aiの認証

イントロダクション

Oracle DatabaseをMicrosoft Entra ID (旧Microsoft Azure Active Directory)と統合すると、データベースへのセキュアでパスワードなしのアクセスが可能になります。この設定により、ユーザーおよびサービスは、シングル・サインオン(SSO)を介してMicrosoft Entra ID資格証明を使用してデータベースに接続できます。

認証は、Microsoft Entra IDによって発行されたOAuth2アクセス・トークンを介して処理されます。このトークン(ユーザーのアイデンティティおよびアクセスの詳細を含む)は、Oracle Databaseに渡されます。データベース・クライアントは、アクセスを許可する前にトークンの形式と有効期限を検証し、安全で合理化された接続プロセスを保証します。

なぜこれが必要なのか。

セキュリティの優先順位がますます高まる中、機密データへのアクセスの管理が重要になります。Oracle Databaseは、Microsoft Entra IDと連携して、パスワードなしでセキュアな認証を実現し、最新のID管理システムを活用してシームレスでスケーラブルかつ堅牢なアクセス制御を実現します。この統合は、Oracle Autonomous Database、Oracle Exadata、Oracle Base Database Serviceなど、幅広いOracleデプロイメントをサポートし、さまざまな環境間で一貫性のある安全なアクセスを実現します。

データベース・クライアントおよびツール

Microsoft Entra IDトークンをサポートするアプリケーションおよびツールは、Microsoft Entra IDを介してユーザーを直接認証し、クライアントAPIを介してデータベース・アクセス・トークンをOracle Databaseインスタンスに渡すことができます。SQL*Plusなどの既存のデータベース・ツールは、ファイルに格納されているMicrosoft Entra IDトークンを使用するように構成できます。トークンは、Microsoft PowerShell、Azure CLIなどのヘルパー・ツール、またはMicrosoft Authentication Library (MSAL)などのライブラリを使用して取得し、指定したファイルの場所に保存できます。後で、SQL*Plusはこのトークンを参照して接続を確立します。

Entraユーザー認証フロー(sqlplusを使用)

ノート:このチュートリアルでは、MSALを利用したPythonスクリプトを使用してセキュリティ・トークンを取得します。詳細は、Microsoft Authentication Library (MSAL)の概要を参照してください。

このチュートリアルでは、TLS設定を含むOracle Base Database 23aiのMicrosoft Entra ID認証の構成について説明します。データベース・タイプに固有のドキュメント(オンプレミス、Exadata、DBaaSまたはAutonomous)を参照してください。TLSはAutonomous Database用に事前構成されているため、そのステップをスキップできます。

対象読者

Oracle Database管理者およびOracle Cloud Infrastructure Identity and Access Management (OCI IAM)管理者。

目的

前提条件

タスク1: Oracle Database 23aiのTLSの設定

タスク1.1: TLS構成のためのオペレーティング・システム(OS)の準備

  1. データベース・サーバーにログインし、rootユーザーに切り替えてディレクトリを設定します。

    [opc@db23aigrid ~]$ sudo su -
    
    [root@db23aigrid ~]# mkdir -p /etc/ORACLE/WALLETS/oracle
    
    [root@db23aigrid ~]# cd /etc/
    
    [root@db23aigrid etc]# chown -R oracle:oinstall ORACLE/
    
  2. oracleユーザーとしてホスト名を取得します。

    [root@db23aigrid etc]# su - oracle
    
    [oracle@db23aigrid admin]$ hostname -f
    

    サンプル出力:

    db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com
    
  3. データベースへの接続

    [oracle@db23aigrid admin]$ sqlplus "/as sysdba"
    
  4. ウォレットのルート・ディレクトリを確認します。

    SQL> show parameter wallet_root;
    

    サンプル出力:

    NAME           TYPE      VALUE
    ----------     ------    ----------------------------------------------------
    wallet_root    string    /opt/oracle/dcs/commonstore/wallets/DB23GRID_w54_iad
    
  5. プラガブル・データベース(PDB)名およびGUIDを確認します。

    SQL> show pdbs;
    

    サンプル出力:

    CON_ID   CON_NAME      OPEN MODE      RESTRICTED
    -----    --------      ---------      ----------
    2        PDB$SEED      READ ONLY      NO
    
    3        DB23GRIDPDB   READ WRITE     NO
    
    SQL> select guid from v$containers where name = 'DB23GRIDPDB';
    

    サンプル出力:

    GUID
    -- -----------------------------
    32435DD0A1EC55xxx0639400000A7225
    
  6. ウォレットおよび証明書のローカル・ディレクトリを作成します。

    [oracle@db23aigrid ~]$ mkdir -p /home/oracle/wallet_tls/certificates/rootCA
    
    [oracle@db23aigrid ~]$ mkdir -p /home/oracle/wallet_tls/certificates/db_wallet
    
  7. PDB GUIDを使用して、ウォレット・ルート・パスの下にデータベースTLSディレクトリを作成します。

    [oracle@db23aigrid ~]$ mkdir -p /opt/oracle/dcs/commonstore/wallets/DB23GRID_w54_iad/32435DDxxxxxx7E0639400000A7225/tls
    
  8. TLS関連の環境変数で.bashrcを更新します。

    [oracle@db23aigrid ~]$ vi ~/.bashrc
    

    次の項目を追加して、環境に応じて値を調整します。

    export DBUSR_SYSTEM=system
    export DBUSR_PWD=QAZxswedc123##     # Wallet and Database Administrator (sys) password
    
    export ORA_TLS_DIR=/etc/ORACLE/WALLETS/oracle
    export TLS_DIR=/opt/oracle/dcs/commonstore/wallets/DB23GRID_w54_iad/32435DD0A1EC55E7E0639400000A7225/tls
    export ROOT_TLS_DIR=/home/oracle/wallet_tls/certificates/rootCA
    export DB_TLS_DIR=/home/oracle/wallet_tls/certificates/db_wallet
    
    export TLS_DN=CN=db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com,O=oracle,L=Austin,ST=Texas,C=US
    export TLS_SAN=DNS:db23aigrid,DNS:db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com,
    IPV4Address:143.47.117.99
    
  9. 変更の適用

    [oracle@db23aigrid ~]$ . ~/.bashrc
    

タスク1.2: TLS Walletおよび証明書の構成

  1. ルート・ウォレットを作成および構成します。

    1. ルート・ウォレットを作成します。

      [oracle@db23aigrid ~]$ orapki wallet create -wallet ${ROOT_TLS_DIR} -pwd ${DBUSR_PWD} -auto_login
      
    2. ウォレットの内容を空白で表示します。

      [oracle@db23aigrid ~]$ orapki wallet display -wallet ${ROOT_TLS_DIR}
      
    3. ルートCAウォレット用の自己署名証明書を作成します。

      [oracle@db23aigrid ~]$ orapki wallet add -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -keysize 2048 -sign_alg sha256 -self_signed -validity 3652 -pwd ${DBUSR_PWD} -addext_san $TLS_SAN
      
    4. ディレクトリには、cwallet.ssoおよびewallet.p12ファイルが必要です。

      ls -l ${ROOT_TLS_DIR}
      
    5. ウォレットの内容(ユーザーと信頼できる証明書)を表示します。

      orapki wallet display -wallet ${ROOT_TLS_DIR}
      
    6. データベース・ウォレットの作成に使用するルートCAの信頼できる証明書をエクスポートします。

      [oracle@db23aigrid ~]$ orapki wallet export -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
      
    7. rootCA.crtファイルの内容を表示します。

      cat ${ROOT_TLS_DIR}/rootCA.crt
      
  2. サーバー(データベース)・ウォレットを作成および構成します。

    1. データベース・ウォレットを作成します。

      [oracle@db23aigrid ~]$ orapki wallet create -wallet ${DB_TLS_DIR} -pwd ${DBUSR_PWD} -auto_login
      
    2. 信頼できるルート証明書をウォレットに追加します(これは証明書管理者から取得)。

      [oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -trusted_cert -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
      
    3. ウォレットに秘密キーおよび証明書リクエストを作成します。

      [oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -keysize 2048 -dn $TLS_DN -pwd ${DBUSR_PWD}-addext_san $TLS_SAN
      
    4. 証明書リクエストをエクスポートして、署名を受けます。

      [oracle@db23aigrid ~]$ orapki wallet export -wallet ${DB_TLS_DIR} -dn $TLS_DN -request ${DB_TLS_DIR}/db23gridpdb.csr -pwd ${DBUSR_PWD}
      
    5. ウォレットの内容を表示します。「リクエストされた証明書」の下にエントリがあります。

      orapki wallet display -wallet ${DB_TLS_DIR}
      
    6. 証明書署名リクエスト(CSR)ファイルの内容を表示します。

      cat ${DB_TLS_DIR}/db23gridpdb.csr
      
  3. サーバー証明書に署名してインポートします。

    1. 自己署名ルート・ウォレットを使用してCSRに署名します。

      [oracle@db23aigrid ~]$ orapki cert create -wallet ${ROOT_TLS_DIR} -request ${DB_TLS_DIR}/db23gridpdb.csr -cert ${DB_TLS_DIR}/db23gridpdb-signed.crt -validity 3652 -sign_alg sha256 -pwd ${DBUSR_PWD}
      
    2. 署名付きサーバーユーザー証明書を表示します。

      cat ${DB_TLS_DIR}/db23gridpdb-signed.crt
      
    3. 署名されたデータベース・サーバー・ユーザー証明書をデータベース・ウォレットにインポートします。

      [oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -user_cert -cert ${DB_TLS_DIR}/db23gridpdb-signed.crt -pwd ${DBUSR_PWD}
      
    4. ウォレットの内容を表示し、データベース・サーバー・ユーザー証明書が「ユーザー証明書」の下に表示されていることを確認します。データベース・サーバーおよびリスナーに使用するウォレットは、使用のためにデプロイする準備ができました。

      orapki wallet display -wallet ${DB_TLS_DIR}
      
  4. ウォレット・ファイルをデプロイします。

    1. データベース・サーバー・ウォレット・ファイルをコピーします。

      [oracle@db23aigrid ~]$ cp -v ${DB_TLS_DIR}/ewallet.p12 ${TLS_DIR}
      
      [oracle@db23aigrid ~]$ cp -v ${DB_TLS_DIR}/cwallet.sso ${TLS_DIR}
      
      [oracle@db23aigrid ~]$ cp -v ${DB_TLS_DIR}/ewallet.p12 ${ORA_TLS_DIR}
      
      [oracle@db23aigrid ~]$ cp -v ${DB_TLS_DIR}/cwallet.sso ${ORA_TLS_DIR}
      
    2. 証明書をエクスポート

      [oracle@db23aigrid ~]$ orapki wallet export -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
      
  5. rootユーザーとして、ルートCAのシステム全体を信頼します。

    1. [root@db23ailvm etc]# cp -v /home/oracle/wallet_tls/certificates/rootCA/rootCA.crt /etc/pki/catrust/source/anchors/コマンドを実行します。

    2. [root@db23ailvm etc]# update-ca-trust extractコマンドを実行します。

    3. 適切なファイルアクセス権を設定します。

      cd /etc/ORACLE/WALLETS/
      
      chmod -R 755 oracle/
      

タスク1.3: TLS通信のためのOracleの構成

  1. 一方向TLSのsqlnet.oraを編集し、次の行を追加します。

    [oracle@db23aigrid ~]$ cd $ORACLE_HOME/network/admin
    
    [oracle@db23aigrid ~]$ vi sqlnet.ora
    
    SSL_CLIENT_AUTHENTICATION = FALSE
    
  2. tnsnames.oraを編集し、TCPTCPSの両方のエントリがPDBデータベースに追加されていることを確認します。

    環境に応じて値を調整します。

    [oracle@db23aigrid ~]$ cd $ORACLE_HOME/network/admin
    
    [oracle@db23aigrid ~]$ vi tnsnames.ora
    
    DB23GRIDPDB=(DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
    (ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=db23aigrid)(PORT=1521)))
    (CONNECT_DATA=(SERVICE_NAME=DB23GRIDPDB.sub10121249210.dbsecvcn.oraclevcn.com)))
    
    DB23GRIDPDB_TLS=(DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
    (ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCPS)(HOST=db23aigrid)(PORT=1522)))
    (CONNECT_DATA=(SERVICE_NAME=DB23GRIDPDB.sub10121249210.dbsecvcn.oraclevcn.com)))
    

タスク1.4: TLSを使用したリスナーの構成

タスク1.5: TLS接続の検証

  1. TCP (非TLS)をテストします。

    $ sqlplus system/QAZxswedc123##@DB23GRIDPDB
    
    SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual;
    
    NETWORK_PROTOCOL
    
    Tcp
    
  2. TCPS (TLS有効)のテスト

    $ sqlplus system/QAZxswedc123##@DB23GRIDPDB_TLS
    
    SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual;
    
    NETWORK_PROTOCOL
    
    Tcps
    

タスク1.6: TLSのクライアント・ホストの構成

ノート:このタスクの前提条件。

ステップに従って、クライアント・ホストを構成します。

  1. データベース・サーバーから証明書およびウォレット・ファイルをコピーします。任意の優先ファイル転送ツールを使用して、これらのファイルをデータベース・サーバーからクライアントに移動できます。

    cd /home/oracle/wallet_tls/certificates/
    
    tar -cvf rootCA.tar rootCA
    
    chmod 755 rootCA.tar
    
    cp rootCA.tar /tmp/
    
  2. クライアント・ディレクトリを設定します。

    [opc@bastion-server8-8 ~]$ sudo su - oracle
    
    [oracle@bastion-server8-8 ~]$ mkdir wallet_db23aigrid_tls
    
    [oracle@bastion-server8-8 ~]$ mkdir -p network/admin
    
    [oracle@bastion-server8-8 ~]$ export TNS_ADMIN=/home/oracle/network/admin
    
  3. 証明書およびウォレット・ファイルをデータベース・サーバーからクライアント・インスタンスに転送します。

    [oracle@bastion-server8-8 ~]$ cp rootCA.tar wallet_db23aigrid_tls /
    
    [oracle@bastion-server8-8 ~]$ cd wallet_db23aigrid_tls /
    
    [oracle@linuxclient23:~/wallet_db23aigrid_tls]$ cp /tmp/rootCA.tar
    
  4. 証明書ファイルを抽出します。

    [oracle@linuxclient23:~/wallet_db23aigrid_tls]$ tar -xvf rootCA.tar
    
  5. tnsnames.oraを構成します。

    [oracle@bastion-server8-8 ~]$ cd ~/network/admin
    
    [oracle@linuxclient23:~/instantclient_23_7/network/admin]$ vi tnsnames.ora
    
       DB23GRIDPDB=
       (DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
       (ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=143.47.117.99)(PORT=1521)))
       (CONNECT_DATA=(SERVICE_NAME=DB23GRIDPDB.sub10121249210.dbsecvcn.oraclevcn.com)))
    
       DB23GRIDPDB_TLS=(DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
       (ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCPS)(HOST=db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com)(PORT=
       1522)))
       (CONNECT_DATA=(SERVICE_NAME=DB23GRIDPDB.sub10121249210.dbsecvcn.oraclevcn.com))
       (SECURITY = (SSL_SERVER_DN_MATCH=TRUE)))
    
  6. sqlnet.oraを構成します。

    [oracle@linuxclient23:~/instantclient_23_7/network/admin]$ vi sqlnet.ora
    
       SSL_CLIENT_AUTHENTICATION = FALSE
       WALLET_LOCATION =
       (SOURCE =(METHOD = FILE)
       (METHOD_DATA =(DIRECTORY =/home/oracle/wallet_db23aigrid_tls/rootCA)))
    

タスク1.7: クライアント・インスタンスからの接続のテスト

  1. TCP (非TLS)をテストします。

    $ sqlplus system/QAZxswedc123##@DB23GRIDPDB
    
    SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual;
    
      NETWORK_PROTOCOL
    
      Tcp
    
  2. TCPS (TLS有効)をテストします。

    $ sqlplus system/QAZxswedc123##@DB23GRIDPDB_TLS
    
    SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual;
    
      NETWORK_PROTOCOL
    
      Tcps
    

タスク2: Microsoft Azureとデータベース統合の設定

タスク2.1: Microsoft Azureへのデータベース・サーバーの登録

  1. アプリケーションを登録するためのMicrosoft Entra ID権限を持つ管理者としてMicrosoft Azureポータルにログインします。

  2. 「Azure Active directory admin center」ページで、「Microsoft Entra ID」を選択します。

  3. 「アプリケーション登録」および「新規登録」をクリックします。

  4. 次の情報を入力します

    • 名前: BaseDB-Serverと入力します。

    • このアプリケーションを使用したり、このAPIにアクセスできるユーザー: 「この組織ディレクトリ内のアカウントのみ」を選択します。

  5. 「登録」をクリックします。

  6. 「登録済アプリケーション」で、「APIの公開」をクリックします。

  7. 「アプリケーションID URI」の横にある「追加」をクリックし、「保存」をクリックします。他の値はデフォルトのままにします。

  8. 「スコープの追加」をクリックして、次の情報を入力します。

    • スコープ名: session:scope:connectと入力します。

    • 誰が同意できますか?: 「Admins and users」と入力します。

    • 管理同意表示名: 「データベースに接続」を選択します。

    • 管理者の同意の説明: 「データベースに接続」を選択します。

    • ユーザー同意表示名: 「データベースに接続」を選択します。

    • ユーザー承諾の説明: 「データベースに接続」を選択します。

    • 状態: 「有効」を選択します。

    「スコープの追加」をクリックします。追加したら、「スコープ」の値を必ずコピーします。

    APIの公開

  9. 「トークン構成」で、「トークン・タイプ」「アクセス」である「請求」「upn」として追加します。

    ノート:これは、Microsoft Entra ID v2トークンの有効化の一部として必要です。v2トークンの詳細は、「Microsoft Entra ID v2アクセス・トークンの有効化」を参照してください。

    v2トークンを取得するために、Microsoft Entra IDでアプリケーションのマニフェストを変更する必要がある場合もあります。

    上限請求の追加

  10. 「アプリケーション・ロール」で、次のアプリケーション・ロールを追加します。

    アプリケーション・ロールの追加

  11. 「概要」で、「アプリケーションID URI」「ディレクトリ(テナント) ID」および「アプリケーション(クライアント) ID」をコピーします。

  12. 「ホーム」「エンタープライズ・アプリケーション」BaseDB「サーバー」にナビゲートし、「ユーザー/グループの追加」をクリックしてユーザーを割り当てます。

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

  14. 「ロールの選択」で、pdb.usersを選択し、「選択」および「割当て」をクリックします。

  15. 同じユーザーに対してステップ13と14を繰り返し、dba.roleを割り当てます。

タスク2.2: Microsoft Azureでのデータベース・クライアントの登録

  1. データベース・クライアント・アプリケーションを次の情報で登録します。

    • 名前: BaseDB-Clientと入力します。

    • サポートされている勘定科目のタイプ: 「この組織ディレクトリ内の勘定科目のみ」を選択します。

    • リダイレクトURI: パブリック・クライアント/ネイティブ- <http://localhost>と入力します。

  2. 「管理」で、「API権限」および「権限の追加」をクリックします。「組織が使用するAPI」「BaseDBサーバー」「委任権限」「権限」「session:scope:connect」として選択し、「権限の追加」をクリックします。

  3. 「概要」で、「アプリケーションID URI」および「ディレクトリ(テナント)」IDをコピーします。

タスク2.3: Microsoft Azureのデータベース・サーバーの構成

次の問合せを実行して、Microsoft Azure ADをアイデンティティ・プロバイダとして構成し、データベース・グローバル・ユーザーおよびロールを作成します。

  1. PDBデータベースの現在のアイデンティティ・プロバイダを確認します。

    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
    
  2. Microsoft Azureをアイデンティティ・プロバイダとして設定します。

    ALTER SYSTEM SET IDENTITY_PROVIDER_TYPE=AZURE_AD SCOPE=BOTH;
    
  3. 更新されたアイデンティティ・プロバイダを検証します。

    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
    
  4. アイデンティティ・プロバイダ構成を設定します。application_id_uritenant_idおよびapp_idを、タスク2.1.11でコピーした値に置き換えます。

    ALTER SYSTEM SET IDENTITY_PROVIDER_CONFIG =
    '{
       "application_id_uri": "api://b7ae5060-667c-47b7-83f8-71283df2a2f6" ,
       "tenant_id": "ef2b4271-9238-4dcd-8c56-d3e915e37c6f",
       "app_id": "b7ae5060-667c-47b7-83f8-71283df2a2f6"
    }' SCOPE=BOTH;
    
  5. データベースにグローバル・ユーザーおよびロールを作成します。

    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';
    
  6. ユーザーおよびロールに権限を付与します。

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

タスク2.4: Microsoft Azureアクセス・トークンを生成するためのヘルパー・ユーティリティの構成

このタスクでは、Pythonユーティリティを使用して、ファイルに保存され、後でSQL*Plusによって参照されるアクセス・トークンを生成します。このユーティリティーを実行するには、MSALモジュールが必要です。

  1. Get-Token.pyからPythonユーティリティを保存します。

  2. 次のPythonコードで、scopeの値をタスク2.1.8でコピーした値に置き換えます。同様に、client_idおよびtenant_idの値をタスク2.2.3の値で更新します。

  3. 次のコマンドを使用してPythonコードを実行します。

    python ./get-token.py
    
  4. すべてが正しく構成されている場合は、ユーザー認証のためにMicrosoft Azureポータルへのブラウザ・リダイレクトがトリガーされます。認証時に、アクセス・トークンを含むPythonコマンドが実行されたディレクトリにトークン・ファイルが生成されます。「アクセス・トークン」および「リフレッシュ・トークン」も端末ウィンドウに出力されます。

  5. (オプション)、生成されたトークンを検証するには、jwt.ioに移動して、トークン文字列を「エンコード済」フィールドに貼り付けます。「デコード済」フィールドには、トークン文字列に関する情報が表示されます。

タスク2.5: SQL*PLUSを使用したログイン

  1. SQL*PLUSを使用してMicrosoft Azureトークン・ログインをテストします。

    sqlplus /nolog
    
    conn /@(description= (retry_count=20) (retry_delay=3) (address= (protocol=tcps) (port=1522) (host=db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com)) (connect_data=(service_name=DB23GRIDPDB.sub10121249210.dbsecvcn.oraclevcn.com))(security=(SSL_SERVER_DN_MATCH=TRUE)(TOKEN_AUTH=OAUTH)(TOKEN_LOCATION=/home/oracle)))
    
  2. ログイン・ユーザーを確認します。

    ノート:ログイン後、次の問合せを実行してユーザーのセッション固有の情報を取得できます。

    • CURRENT_USER変数は、アクティブな現在のユーザーを返します。
    • ALLUSERSは、Microsoft Entra IDアプリケーション・ロールを介して割り当てられた共有スキーマ・ユーザーです。
    • AUTHENTICATED_IDENTITYは、Microsoft Entra IDからの認証済ユーザーを表します。
    • ENTERPRISE_IDENTITYは、Microsoft Entra IDから認証されたユーザーのGUIDを返します。
    • SESSION_ROLESは、ローカルに付与され、Microsoft Entra IDアプリケーション・ロールを介してグローバル・マッピングを介して付与されるロールの結合リストを返します。
    1. 次の問合せを実行して、現在のユーザーを確認します。

      SELECT SYS_CONTEXT ('USERENV','CURRENT_USER') FROM DUAL;
      

      出力:

      SYS_CONTEXT('USERENV','CURRENT_USER')
      
      
      ALLUSERS
      
    2. 次の問合せを実行して、認証済ユーザーを確認します。

      SELECT SYS_CONTEXT ('USERENV','AUTHENTICATED_IDENTITY') FROM DUAL;
      

      出力:

      SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY')
      
      
      <anujtrip.ai@gmail.com>
      
    3. 次の問合せを実行して、認証済ユーザーのGUIDを確認します。

      SELECT SYS_CONTEXT ('USERENV','ENTERPRISE_IDENTITY') FROM DUAL;
      

      出力:

      SYS_CONTEXT('USERENV','ENTERPRISE_IDENTITY')
      
      
      7eb35b90-dcxxx5-bc0b-48789368e9cf
      
    4. 次の問合せを実行して、アプリケーション・ロールを確認します。

      SELECT * FROM SESSION_ROLES;
      

      出力:

      ROLE
      
      DBA_AZURE
      
      PDB_DBA
      
      CONNECT
      

次のステップ

Microsoft Entra IDベースの認証を正常に実装すると、一元化されたアイデンティティ・ガバナンスを通じてユーザー・ロールとアクセス・ポリシーを連携させることができます。共有スキーマのユーザーおよびロールにグローバル・マッピングを利用することで、アクセス制御を合理化し、管理の複雑さを軽減できます。さらに、セキュリティを強化し、組織ポリシーへのコンプライアンスを確保するために、ユーザー・セッションとアクセス・パターンを監視することが不可欠です。また、この統合を他のデータベースまたはアプリケーションに拡張して、企業全体で一貫したアイデンティティ管理を維持することも検討する必要があります。

承認

その他の学習リソース

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

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