8 Oracle DatabaseのMicrosoft Azureユーザーの認証および認可
Oracleデータベースは、Microsoft Entra ID (旧称Microsoft Azure AD)のMicrosoft Azureユーザーがシングル・サインオン認証を使用して接続するように構成できます。
ノート:
Microsoftは最近、Microsoft Azure ADの名前をMicrosoft Entra IDに変更しました。この名前の変更は、現在のOracle Databaseドキュメントで使用されています。以前のOracle Databaseリリースでは、Azure ADという名前が使用されていました。- Microsoft Entra IDとのOracle Database統合の概要
Microsoft Entra IDを構成してOracleデータベースにアクセスするには、全体的なプロセスについて理解する必要があります。 - Microsoft Entra ID統合のためのOracle Databaseの構成
Microsoft Entra IDとOracle Databaseインスタンスの統合では、データベースをEntra IDに登録する必要があります。 - Oracle Databaseスキーマおよびロールのマッピング
Azureユーザーは、1つのデータベース・スキーマにマップされ、オプションで1つ以上のデータベース・ロールにマップされます。 - Oracle DatabaseへのEntra IDクライアント接続の構成
登録済データベースに接続するようにクライアント接続を構成できます。 - Microsoft Entra IDプロキシ認証の構成
プロキシ認証により、Azureユーザーは、アプリケーションのメンテナンスなどのタスクのためにデータベース・スキーマにプロキシできます。 - Microsoft Power BIシングル・サインオンの構成
Power BIユーザーのみがOracle Databaseに接続する場合、ユーザーはより簡単な構成を選択できます。 - Microsoft Entra ID接続のトラブルシューティング
トレース・ファイルを使用して、Microsoft Entra ID接続の問題を診断できます。ORA-12599
およびORA-03114
エラーを簡単に修正することもできます。
親トピック: ユーザー認証および認可の管理
8.1 Oracle DatabaseとMicrosoft Entra IDの統合の概要
OracleデータベースにアクセスするためのMicrosoft Entra IDの構成を開始する前に、全体的なプロセスについて理解する必要があります。
- Oracle DatabaseとMicrosoft Entra IDの統合について
Oracle DatabaseおよびMicrosoft Entra IDは、ユーザーおよびアプリケーションがEntra ID資格証明を使用してデータベースに接続できるように構成できます。 - Oracle DatabaseとMicrosoft Entra IDの統合のアーキテクチャ
Microsoft Azure Active Directoryアクセス・トークンは、OAuth 2.0標準とその拡張に従います。 - Oracle DatabaseスキーマおよびロールへのAzureユーザーのマッピング
Microsoft AzureユーザーをOracle Databaseインスタンスに対して認証するには、その前にMicrosoft AzureユーザーをOracle Databaseスキーマにマップし、(ロールを介して)必要な権限を付与しておく必要があります。 - Entra IDを使用したOracle Databaseへの接続のユースケース
Oracle Databaseでは、データベースへの接続のユースケースをいくつかサポートしています。 - Oracle Databaseを使用したMicrosoft Entra IDアイデンティティの認証の一般的なプロセス
Oracle Database管理者およびMicrosoft Entra ID管理者は、AzureユーザーがEntra IDOAuth2
アクセス・トークンを使用してデータベースに接続できるようにするロールを果たします。
8.1.1 Oracle DatabaseとMicrosoft Entra IDの統合の概要
Oracle DatabaseおよびMicrosoft Entra IDは、ユーザーおよびアプリケーションがEntra ID資格証明を使用してデータベースに接続できるように構成できます。
Azureのユーザーおよびアプリケーションは、Entra IDシングル・サインオン(SSO)資格証明を使用してログインし、データベースにアクセスできます。これは、ユーザーまたはアプリケーションがEntra IDから最初にリクエストするEntra ID OAuth2
アクセス・トークンを使用して行われます。このOAuth2
アクセス・トークンには、ユーザーIDおよびデータベース・アクセス情報が含まれ、データベースに送信されます。マルチファクタ認証およびパスワードレス認証の構成の詳細は、Microsoft社の記事Azure Active Directoryのパスワードレス認証オプションを参照してください。
この統合は、次のOracle Database環境で実行できます。
- オンプレミスOracle Databaseリリース19.18以降(21cを除く)
- すべてのOracle Databaseサーバー・プラットフォーム: Linux、Windows、AIX、SolarisおよびHPUX
- Oracle Autonomous Database Serverless
- Oracle Autonomous Database on Dedicated Exadata Infrastructure
- Oracle Autonomous Database on Exadata Cloud@Customer
- Oracle Exadata Database Service on Dedicated Infrastructure
- Oracle Exadata Database Service on Cloud@Customer
- Oracle Base Database Service
Entra IDを構成する手順では、これらの環境を網羅するために「Oracle Database」という用語を使用します。
このタイプの統合により、AzureユーザーはOracle Databaseインスタンスにアクセスできます。Azureユーザーおよびアプリケーションは、Entra IDシングル・サインオン(SSO)資格証明を使用してログインし、データベースに送信するEntra ID OAuth2
アクセス・トークンを取得できます。
Entra ID管理者は、Oracle Databaseを作成し、Entra IDに登録します。Entra ID内では、これはアプリ登録と呼ばれ、アプリケーション登録の略です。これは、Entra IDを使用しているソフトウェアについてEntra IDが知っておく必要があるデジタル情報です。Entra ID管理者は、Entra IDでのデータベース・アプリケーション登録用のアプリケーションのロールも作成します。アプリケーション・ロールは、Azureユーザー、グループおよびアプリケーションをデータベース・スキーマおよびロールに接続します。Entra ID管理者は、Azureユーザー、グループ、またはアプリケーションをアプリケーション・ロールに割り当てます。これらのアプリケーション・ロールは、データベース・グローバル・スキーマ、グローバル・ロール、またはスキーマとロールの両方にマップされます。アプリケーション・ロールに割り当てられたAzureユーザー、グループ、またはアプリケーションは、データベース・グローバル・スキーマ、グローバル・ロール、あるいはスキーマとロールの両方にマップされます。Oracleグローバル・スキーマは、Azureユーザーに排他的にマップすることもできます。Azureゲスト・ユーザー(非組織ユーザー)またはEntra IDサービス・プリンシパル(アプリケーション)は、Entra IDアプリケーション・ロールを介してのみデータベース・グローバル・スキーマにマップできます。Oracleグローバル・ロールはAzureアプリケーション・ロールからのみマップでき、Azureユーザーからはマップできません。
Entra IDトークンをサポートするために更新されるツールおよびアプリケーションは、Entra IDを使用してユーザーを直接認証し、データベース・アクセス・トークンをOracle Databaseインスタンスに渡すことができます。SQL*Plusなどの既存のデータベース・ツールを構成して、ファイルの場所からEntra IDトークンを使用できます。このような場合、Entra IDトークンは、Microsoft PowerShellやAzure CLIなどのツールを使用して取得し、ファイルの場所に配置できます。Entra ID OAuth2
データベース・アクセス・トークンは、有効期限付きで発行されます。Oracle Databaseクライアント・ドライバは、トークンをデータベースに渡す前に、トークンの形式が有効であることと、有効期限が切れていないことを確認します。トークンのスコープはデータベースです。つまり、トークンにはそのトークンが使用されるデータベースに関する情報が含まれています。Entra IDプリンシパルがデータベースEntra IDアプリ登録で割り当てられたアプリケーション・ロールは、アクセス・トークンの一部として含まれています。Entra IDトークンのディレクトリの場所には、ユーザーがトークン・ファイルをその場所に書き込み、データベース・クライアントがこれらのファイルを取得するために十分な権限のみ(ユーザーによる読取りおよび書込みのみなど)を付与する必要があります。データベースへのアクセスはトークンによって許可されるため、トークンはファイル・システム内で保護される必要があります。
Azureユーザーは、いくつかの方法を使用してEntra IDからトークンをリクエストし、Azureログイン・ウィンドウを開いてEntra ID資格証明を入力できます。
Oracle Databaseは、次のEntra IDプリンシパルを表すトークンを受け入れます:
- Azureユーザー。Entra IDテナンシの登録ユーザーです
- ゲスト・ユーザー。Entra IDテナンシでゲスト・ユーザーとして登録されているユーザーです
- サービス。クライアント資格証明フロー(接続プール・ユースケース)を使用し、それ自体としてデータベースに接続する登録済アプリケーションです
Oracle Databaseでは、次のEntra ID認証フローがサポートされています:
- コード交換用証明キー(PKCE)を使用した対話型フロー(認可コード・フローとも呼ばれる)は、ブラウザを使用してクライアント環境でEntra IDに対して認証するために(アプリケーションではなく)人間のユーザーに最も一般的に使用されます
- クライアント資格証明。(エンド・ユーザーとしてではなく)それ自体として接続するデータベース・アプリケーションで使用されます
- On-Behalf-Of (OBO)。アプリケーションがログイン・ユーザーの代理としてアクセス・トークンを要求してデータベースに送信します
- リソース所有者パスワード資格証明(ROPC)。本番環境での使用は推奨されませんが、ポップアップ・ブラウザでのユーザー認証の組込みが困難なテスト環境で使用できます。ROPCでは、トークン・リクエスト・コールの一部としてEntra IDユーザー名とパスワード資格証明が必要です。
ノート:
Microsoft Entra IDとのDBaaS統合では、管理権限(SYSDBA
、SYSOPER
、SYSBACKUP
、SYSDG
、SYSKM
およびSYSRAC
)を持つユーザーはサポートされていません。
関連トピック
8.1.2 Oracle DatabaseとMicrosoft Entra IDの統合のアーキテクチャ
Microsoft Azure Active Directoryアクセス・トークンは、OAuth 2.0標準とその拡張に従います。
Entra IDアクセス・トークンは、データベース・クライアント(SQLPlusまたはSQLclなど)からデータベースにアクセスする前に必要です。Oracleクライアント(OCI、JDBC、ODPなど)がファイルの場所からEntra IDトークンを選択するよう構成されたり、トークンがデータベース・クライアントAPIを介してクライアントに渡されたりすることがあります。Azureユーザーはスクリプト(例についてはMicrosoftを参照)を使用してトークンを取得し、それをデータベース・クライアントが取得できるファイルの場所に置くことができます。アプリケーションは、Azure SDKを使用してアクセス・トークンを取得し、データベース・クライアントAPIを介してそのトークンを渡すことができます。アプリケーションが直接トークンを取得できない場合は、Microsoft PowerShellやAzureコマンドライン・インタフェースなどのコマンドライン・ツールを使用して、Entra IDトークンを取得できます。
次の図は、OAuth2
トークンを使用したOAuth 2.0標準の一般的なフロー図です。サポートされている各フローの詳細は、Microsoft Entra IDドキュメントの『Authentication flow support in MSAL』を参照してください。
認可コード・フローはOAuth2標準で、標準の一部として詳細に説明されています。フローには2つのステップがあります。最初のステップでは、ユーザーを認証し、認可コードを取得します。2番目のステップでは、認可コードを使用してデータベース・アクセス・トークンを取得します。
- Azureユーザーは、リソース、Oracle Databaseインスタンスへのアクセスをリクエストします。
- データベース・クライアントまたはアプリケーションは、Entra IDからの認可コードをリクエストします。
- Entra IDはAzureユーザーを認証し、認可コードを返します。
- ヘルパー・ツールまたはアプリケーションはEntra IDの認可コードを使用して、
OAuth2
トークンと交換します。 - データベース・クライアントは、
OAuth2
アクセス・トークンをOracleデータベースに送信します。トークンには、データベースのためのEntra IDアプリケーション登録でユーザーが割り当てられたデータベース・アプリケーション・ロールが含まれます。 - Oracle Databaseインスタンスは、Entra ID公開キーを使用して、アクセス・トークンがEntra IDによって作成されたことを確認します。
データベース・クライアントとデータベース・サーバーの両方を、AzureポータルのAzure Active Directoryセクションで「app registrations」機能を使用して登録する必要があります。データベース・クライアントは、Entra IDアプリケーション登録で登録する必要があります。データベース・クライアントには、データベースのアクセス・トークン取得を許可する権限も付与する必要があります。
8.1.3 Oracle DatabaseスキーマおよびロールのAzureユーザーのマッピング
Microsoft AzureユーザーをOracle Databaseインスタンスに対して認証するには、その前にMicrosoft AzureユーザーをOracle Databaseスキーマにマップし、(ロールを介して)必要な権限を付与しておく必要があります。
Microsoft Azureでは、Entra ID管理者は、ユーザー、グループおよびアプリケーションをデータベース・アプリケーション・ロールに割り当てることができます。
Entra IDユーザーをデータベース・スキーマに排他的にマッピングするには、データベース管理者がこのユーザーのライフサイクル(参加、移動、退去)用のデータベース・スキーマを作成および管理する必要があります。データベース管理者は、ユーザーが組織に参加するときにスキーマを作成する必要があります。また、データベース管理者は、Azureユーザーが割り当てられているタスクに合わせて、データベース・スキーマに付与されている権限およびロールを変更する必要があります。Azureユーザーが組織を離れた場合、データベース管理者は、使用されていないアカウントがデータベースに残らないようにデータベース・スキーマを削除する必要があります。データベース・アプリケーション・ロールを使用すると、Entra ID管理者は、グローバル・スキーマとグローバル・ロールにマップされているアプリケーション・ロールにユーザーを割り当てることによってアクセスおよびロールを制御できます。このようにして、データベースへのユーザー・アクセスはEntra ID管理者によって管理されるため、データベース管理者がすべてのユーザーのスキーマを作成、管理および削除する必要はありません。
Azureユーザーは、データベース・スキーマ(ユーザー)に排他的にまたはアプリケーション・ロールを介してマップできます。
- AzureユーザーとOracle Databaseスキーマの間の排他的マッピングの作成。このタイプのマッピングでは、Azureユーザーに対してデータベース・スキーマを作成する必要があります。Azureユーザーが必要とするデータベース権限およびロールは、データベース・スキーマに付与する必要があります。データベース・スキーマは、Azureユーザーがデータベースに対して認可された場合に作成するだけでなく、付与された権限およびロールをEntra IDのロールおよびタスクの変更に応じて変更する必要があります。最後に、データベース・スキーマはAzureユーザーが組織を離れるときに削除する必要があります。
- Entra IDアプリケーション・ロールとOracle Databaseスキーマの間の共有マッピングの作成。このタイプのマッピングは排他的マッピングよりも一般的で、アプリケーション・ロールに直接割り当てられるAzureユーザーか、アプリケーション・ロールに割り当てられるEntra IDグループのメンバー用です。アプリケーション・ロールは、Oracle Databaseスキーマにマップされます(共有スキーマ・マッピング)。共有スキーマ・マッピングを使用すると、複数のAzureユーザーが同じOracle Databaseスキーマを共有できるため、新規ユーザーが組織に加入するたびに新しいデータベース・スキーマを作成する必要はありません。この運用効率により、データベース管理者は、新規ユーザーの構成、権限とロールの更新、およびアカウントの削除を行わずに、データベース・アプリケーションのメンテナンス、パフォーマンスおよびチューニングのタスクに集中できます。
マップされたグローバル・スキーマに直接付与されるデータベース・ロールおよび権限に加えて、マップされたグローバル・ロールを介して追加のロールおよび権限を付与できます。同じ共有グローバル・スキーマにマップされている異なるAzureユーザーで、異なる権限およびロールが必要な場合があります。Azureアプリケーション・ロールは、Oracle Databaseグローバル・ロールにマップできます。アプリケーション・ロールに割り当てられているAzureユーザーまたはアプリケーション・ロールに割り当てられているEntra IDグループのメンバーであるAzureユーザーには、データベースへのアクセス時にOracle Databaseグローバル・ロールが付与されます。
次の図は、使用可能な様々なタイプの割当ておよびマッピングを示しています。
これらのマッピングは、次のようになります。
- Azureユーザーは、Oracle Databaseグローバル・スキーマ(ユーザー)に直接マップできます。
- Azureユーザー、Entra IDグループまたはアプリケーションはアプリケーション・ロールに割り当てられ、さらにOracle Databaseグローバル・スキーマ(ユーザー)またはグローバル・ロールのいずれかにマップされます。
8.1.4 Entra IDを使用したOracle Databaseへの接続のユースケース
Oracle Databaseでは、データベースへの接続にいくつかのユースケースをサポートしています。
- OAuth2認可コード・フロー: 人間のユーザーに対して最も一般的なフローです。クライアントは、AzureユーザーにEntra IDで認可コードを取得するよう指示します。このコードは、データベース・アクセス・トークンの取得に使用されます。Microsoft Azureの記事『Microsoft identity platform and OAuth 2.0 authorization code flow』を参照してください。
- リソース所有者のパスワード資格証明(ROPC): このフローは、本番サーバーではお薦めしません。ポップアップ認証ウィンドウでは動作しないテスト・ソフトウェアで使用できます。これは、非グラフィックのユーザー・インタフェース環境でユーザーの認証にポップアップ・ウィンドウを使用できない場合に使用されます。
- クライアント資格証明: このフローは、アプリケーションのデータベースへの接続に使用されます。アプリケーションはEntra IDアプリケーションの登録によって登録する必要があり、クライアントIDとクライアント・パスワードが必要です。これらのクライアント資格証明は、アプリケーションがデータベースに接続するときのEntra IDからのデータベース・アクセス・トークン取得に使用する必要があります。アプリケーションは、ファイル・システムまたはデータベース・クライアントAPIを介してトークンを渡すことができます。
- On-Behalf-Of (OBO)トークン: :Azureアプリケーションは、ログイン・ユーザーのOBOトークンをリクエストします。OBOトークンは、Azureユーザー・アイデンティティおよびデータベースに割り当てられたアプリケーション・ロールを持つデータベースのアクセス・トークンでもあります。これにより、Azureユーザーはアプリケーションではなくユーザーとしてデータベースにログインできます。AzureユーザーのOBOトークンをリクエストし、APIを介してデータベース・クライアントに渡すことができるのはアプリケーションのみです。
8.1.5 Oracle DatabaseでMicrosoft Entra IDアイデンティティを認証する一般的なプロセス
Oracle Database管理者およびMicrosoft Entra ID管理者は、AzureユーザーがEntra ID OAuth2
アクセス・トークンを使用してデータベースに接続できるようにするロールを果たします。
一般プロセスは次のとおりです。
- Oracle Database管理者は、Oracle Database環境がMicrosoft Entra ID統合の要件を満たしていることを確認します。「Microsoft Entra ID統合のためのOracle Databaseの要件」を参照してください。
- Entra ID管理者はデータベースのEntra IDアプリケーション登録を作成し、Oracle Database管理者はデータベース・アクセス用のEntra IDトークンを使用できるようにデータベースを有効にします。
アプリケーション登録プロセスの一環として、Entra ID管理者は、Azureユーザー、グループおよびアプリケーションとOracle Databaseスキーマおよびロールの間のマッピングに使用するAzureアプリケーション・ロールを作成します。
- Oracle Database管理者は、グローバル・スキーマを作成して、Azureユーザー(排他的スキーマ・マッピング)またはAzureアプリケーション・ロール(共有スキーマ・マッピング)のいずれかにマップします。Azureユーザーまたはアプリケーションは、1つのスキーマにマップする必要があります。
- オプションで、Oracle管理者はグローバルOracle Databaseロールを作成し、Azureアプリケーション・ロールにマップします。
- Oracle Databaseインスタンスに接続するAzureエンド・ユーザーは、クライアント・アプリケーションをEntra IDクライアントとして登録します(Oracleデータベースを登録する方法と同様です)。
アプリケーション・クライアントがパブリックでないかぎり、Entra IDクライアントにはクライアント識別およびクライアント・シークレットがあります。アプリケーション・クライアントがパブリックの場合は、アプリケーション・クライアント識別のみが必要です。
- Azureエンド・ユーザー(データベース管理者でもかまいません)は、PowerShellやAzureコマンドライン・インタフェースなどのユーティリティを使用して接続し、
OAuth2
データベース・アクセス・トークンを取得して、ローカル・ファイル・ディレクトリに格納します。また、アプリケーションは、Entra IDOAuth2
アクセス・トークンをEntra IDから直接リクエストし、データベース・クライアントAPIを介して渡すこともできます。Entra IDOAuth2
トークンの受渡しの詳細は、次のOracle Databaseクライアント・ドキュメントを参照してください:- JDBCシン・クライアント: 『Oracle Database JDBC開発者ガイド』
- Oracle Call Interface (OCI): 『Oracle Call Interface開発者ガイド』
- Oracle Data Provider for .NET (ODP): 『Oracle Data Provider for .NET開発者ガイド』のOracle Databaseへの接続に関する項
- Oracle Databaseインスタンスに接続すると、Azureエンド・ユーザーは必要に応じてデータベース操作を実行します。
8.2 Microsoft Entra ID統合のためのOracle Databaseの構成
Microsoft Entra IDとOracle Databaseインスタンスを統合するには、データベースをEntra IDに登録する必要があります。
- Microsoft Entra ID統合のためのOracle Databaseの要件
Microsoft Entra IDを使用してOracle Databaseインスタンスを構成するには、その前に環境が特別な要件を満たしていることを確認する必要があります。 - Oracle DatabaseインスタンスのMicrosoft Entra IDテナンシへの登録
Entra ID管理者権限を持つユーザーは、Microsoft Entra IDを使用して、Oracle DatabaseインスタンスをMicrosoft Entra IDテナンシに登録します。 - Microsoft Entra ID v2アクセス・トークンの有効化
Oracle Databaseでは、v1およびv2 Azure ADOAuth2
アクセス・トークンとの統合がサポートされています。 - Microsoft Entra IDでのアプリケーション・ロールの管理
Entra IDでは、Azureユーザーおよびグループに割り当てられ、Oracle Databaseのグローバル・スキーマおよびロールにもマップされるアプリケーション・ロールを作成および管理できます。 - Oracle DatabaseでのEntra ID外部認証の有効化
Oracle DatabaseでのMicrosoft Entra ID外部認証を有効にする必要があります。 - Oracle DatabaseのEntra ID外部認証の無効化
Oracle DatabaseインスタンスのEntra ID外部認証を無効にするには、ALTER SYSTEM
文を使用する必要があります。
8.2.1 Microsoft Entra ID統合のためのOracle Databaseの要件
Microsoft Entra IDを使用してOracle Databaseインスタンスを構成するには、その前に環境が特別な要件を満たしていることを確認する必要があります。
次のことに注意してください。
- Oracle Databaseサーバーは、Entra ID公開キーをリクエストできる必要があります。エンタープライズ・ネットワーク接続の設定によっては、プロキシ設定の構成が必要になる場合があります。
- Entra IDトークンをリクエストする必要があるユーザーとアプリケーションは、Entra IDへのネットワーク接続も可能である必要があります。接続のプロキシ設定を構成する必要がある場合があります。
- トークンを安全に転送するため、Oracle DatabaseクライアントとOracle Databaseサーバーの間にTransport Layer Security (TLS)を構成する必要があります。このTLS接続は、一方向または相互のいずれかです。
- 自己署名または既知の認証局によって署名されるTLSサーバー証明書を作成できます。既知の認証局(CA)によって署名された証明書を使用する利点は、データベース・クライアントが、ルート証明書を使用してローカル・ウォレットを作成および保持するのではなく、システムのデフォルト証明書ストアを使用してOracle Databaseサーバー証明書を検証できることです。これはLinuxおよびWindowsクライアントにのみ適用されることに注意してください。
8.2.2 Oracle DatabaseインスタンスのMicrosoft Entra IDテナンシへの登録
Entra ID管理者権限を持つユーザーは、Microsoft Entra IDを使用して、Oracle DatabaseインスタンスをMicrosoft Entra IDテナンシに登録します。
8.2.3 Microsoft Entra ID v2アクセス・トークンの有効化
Oracle Databaseでは、v1およびv2 Azure AD OAuth2
アクセス・トークンとの統合がサポートされています。
OAuth2
アクセス・トークンを使用すると、資格証明フローは変更なしで以前と同様に引き続き機能します。ただし、対話型フローでv2トークンを使用する場合は、upn:
クレームを追加する必要があります。
- 使用しているEntra IDアクセス・トークンのバージョンを確認します。
- Microsoft Entra IDポータルにログインします。
- Entra IDを検索して選択します。
- 「Manage」で、「App registrations」を選択します。
- シナリオおよび目的の結果に基づいてオプションの要求を構成するアプリケーションを選択します。
- 「Manage」で、「Token configuration」を選択します。
- 「Add optional claim」をクリックし、「upn」を選択します。
aud:
クレームにはAPP ID値のみが反映されます。v2トークンが使用されている場合、https:domain
接頭辞をAPP ID URIに設定する必要はありません。これにより、デフォルトのAPP ID URIを使用できるため、データベースの構成が簡略化されます。
8.2.4 Microsoft Entra IDでのアプリケーション・ロールの管理
Entra IDでは、Azureユーザーおよびグループに割り当てられ、Oracle Databaseのグローバル・スキーマおよびロールにもマップされるアプリケーション・ロールを作成および管理できます。
- Microsoft Entra IDアプリケーション・ロールの作成
データベースに接続する必要のあるAzureユーザー、グループおよびアプリケーションは、データベース・アプリケーション・ロールに割り当てられます。 - Microsoft Entra IDアプリケーション・ロールへのユーザーおよびグループの割当て
Microsoft AzureユーザーがOracleデータベースにアクセスするためには、その前に、Oracle Databaseスキーマ・ユーザーまたはロールにマップされるアプリケーション・ロールにMicrosoft Azureユーザーを割り当てておく必要があります。 - アプリケーション・ロールへのアプリケーションの割当て
クライアント資格証明フローを使用してデータベースに接続する必要のあるアプリケーションは、アプリケーション・ロールに割り当てる必要があります。
8.2.4.1 Microsoft Entra IDアプリケーション・ロールの作成
データベースに接続する必要のあるAzureユーザー、グループおよびアプリケーションは、データベース・アプリケーション・ロールに割り当てられます。
8.2.4.2 Microsoft Entra IDアプリケーション・ロールへのユーザーおよびグループの割当て
Microsoft AzureユーザーがOracleデータベースにアクセスするためには、その前に、Oracle Databaseスキーマ・ユーザーまたはロールにマップされるアプリケーション・ロールにMicrosoft Azureユーザーを割り当てておく必要があります。
- AzureユーザーおよびEntra IDグループをアプリケーション・ロールに割り当てる権限を持つ管理者としてEntra IDにログインします。
- エンタープライズ・アプリケーションで、作成したOracle Databaseアプリケーション登録の名前を検索します。これは、アプリケーション登録の作成時に自動的に作成されます。
- 「Directory + subscription」フィルタを使用して、Oracle接続を含むAzure Active Directoryテナントを見つけます。
- 「Azure Active Directory」を選択します。
- 「Manage」で、「Enterprise applications」を選択し、以前に登録したOracle Databaseアプリケーション登録名を選択します。
- 「Getting Started」で「Assign users and groups」を選択します。
- 「Add user/group」を選択します。
- 「Add assignment」ウィンドウで、「Users and groups」を選択して、ユーザーおよびセキュリティ・グループのリストを表示します。
- このリストから、アプリケーション・ロールに割り当てるユーザーおよびグループを選択し、「Select」をクリックします。
- 「Add assignment」ウィンドウで、「Select a role」を選択して、作成したアプリケーション・ロールのリストを表示します。
- アプリケーション・ロールを選択し、「Select」を選択します。
- 「Assign」をクリックします。
8.2.5 Oracle Databaseに対するEntra ID外部認証の有効化
Oracle DatabaseでのMicrosoft Entra ID外部認証を有効にする必要があります。
Entra ID外部認証のためのOracle Databaseの有効化の詳細は、オンプレミス(非クラウド)のOracleデータベースに関してこのドキュメントで説明する情報に加え、次のプラットフォーム固有のドキュメントを参照してください。
8.2.6 Oracle Databaseに対するEntra ID外部認証の無効化
Oracle DatabaseインスタンスのEntra ID外部認証を無効にするには、ALTER SYSTEM
文を使用する必要があります。
Oracle Autonomous Database ServerlessからEntra IDを無効にするには、「Oracle Autonomous Database Serverlessの使用」を参照してください。次の手順は、他のすべてのプラットフォームに適用されます。
8.3 Oracle Databaseスキーマおよびロールのマッピング
Azureユーザーは、1つのデータベース・スキーマにマップされ、オプションで1つ以上のデータベース・ロールにマップされます。
- Oracle DatabaseスキーマのMicrosoft Azureユーザーへの排他的マッピング
Oracle DatabaseスキーマをMicrosoft Azureユーザーに排他的にマップできます。 - 共有Oracleスキーマのアプリケーション・ロールへのマッピング
このマッピングでは、Oracleスキーマがアプリケーション・ロールにマップされます。したがって、そのアプリケーション・ロールを持つすべてのユーザーが同じ共有スキーマを取得します。 - アプリケーション・ロールへのOracle Databaseグローバル・ロールのマッピング
Entra IDアプリケーション・ロールにマップされるOracle Databaseグローバル・ロールは、Azureユーザーおよびアプリケーションに、ログイン・スキーマを介して付与されている権限およびロールに加え、さらに権限およびロールを付与します。
8.3.1 Oracle DatabaseスキーマのMicrosoft Azureユーザーへの排他的マッピング
Oracle DatabaseスキーマをMicrosoft Azureユーザーに排他的にマップできます。
8.3.2 共有Oracleスキーマのアプリケーション・ロールへのマッピング
このマッピングでは、Oracleスキーマがアプリケーション・ロールにマップされます。したがって、そのアプリケーション・ロールを持つすべてのユーザーが同じ共有スキーマを取得します。
8.4 Oracle DatabaseへのEntra IDクライアント接続の構成
登録済データベースに接続するようにクライアント接続を構成できます。
- Entra IDへのクライアント接続の構成について
Oracle DatabaseクライアントがEntra IDOAuth2
トークンを使用してアクセスのためにデータベースに送信するために、3つの異なる方法が用意されています。 - Microsoft Entra ID OAuth2トークンを使用したOracle DatabaseへのSQL*Plusクライアント接続の操作フロー
Azureユーザー、Entra IDおよびOracleデータベース間の接続は、これらの3つのコンポーネント全体でのOAuth2
トークンの受渡しに依存します。 - Entra ID接続でサポートされるクライアント・ドライバ
Oracle Databaseは、Entra ID接続用の複数のタイプのクライアント・ドライバをサポートしています。 - Entra IDアプリ登録によるクライアントの登録
このタイプの登録は、Entra IDアプリ登録によるOracle Databaseの登録と同様に行われます。 - Microsoft Entra IDトークンを使用するためのクライアントの構成
Oracle Databaseクライアントに応じて、Entra IDからトークンを直接リクエストするか、ファイルの場所から取得するようにクライアントを構成できます。 - Oracle Databaseクライアント外部でのEntra ID OAuth2トークンの取得の例
これらの例は、データベース・クライアントを使用してトークンを直接取得していない場合に、データベース・クライアントとは別にEntra IDOAuth2
トークンを取得できる様々な方法を示しています。 - データベースがインターネットに接続するためのネットワーク・プロキシの作成
このネットワーク・プロキシを使用すると、OracleデータベースはEntra IDエンドポイントに到達できるようになります。 - ネット・ネーミングおよびシークレットのための集中管理されたEntra IDサービスの使用
Azureアプリケーション構成およびAzure Vaultを使用して、ネット名とシークレットを一元的に格納できます。
8.4.1 Entra IDへのクライアント接続の構成について
Oracle DatabaseクライアントがEntra ID OAuth2
トークンを使用してアクセスのためにデータベースに送信するために、3つの異なる方法が用意されています。
-
Entra IDエンドポイントに直接接続し、ユーザーのトークンを取得します(対話型フロー)。
-
ファイルの場所からトークンを取得します(サポートされているすべてのEntra IDフロー)。
-
クライアントAPIを使用して、トークンをクライアントに渡します(サポートされているすべてのEntra IDフロー)。
Oracle Databaseでは、様々なユース・ケースに対して複数のEntra IDフローがサポートされています。各フローの詳細は、Microsoftのドキュメントで確認する必要があります。各データベース・クライアントは、異なるバージョンを持つ異なるフローをサポートできます。これらのタイプの詳細は、JDBC、ODP.NET、およびクライアントでサポートされているEntra IDフローに関するその他のプラットフォーム固有のクライアント・ドキュメントで確認できます。この項では、シック・クライアントとも呼ばれるOCIおよびインスタント・クライアントの使用について説明します。
使用可能なフローのタイプは次のとおりです:
-
対話型フロー(OAuth2認証フローとも呼ばれる)は、人間のアクターが使用する主要なフローです。このフローでは、ユーザーがEntra ID資格証明を入力するためにブラウザを開くことができる環境が必要です。
-
デバイス・コード・フローは一部のクライアントでサポートされていますが、現在、OCIおよびInstant Clientではサポートされていません。このタイプのフローは、人間のアクター用でもあり、ブラウザを開けない環境用でもあります。
-
管理対象アイデンティティ・フロー(一部のクライアントではサポートされますが、OCIおよびインスタント・クライアントではサポートされません)は、Azureコンピュート・ノードで実行され、ノードの管理対象アイデンティティにアクセスできるアプリケーション用です。
-
クライアント資格証明フローは、特にAzure環境で実行されていない場合に、アプリケーション用として設計されています。
-
リソース所有者のパスワード資格証明(ROPC)フローは、本番用途ではお薦めしません。
ユーザーが人間のアクターとしてデータベースにアクセスする必要がある場合、対話型フローを構成し、Entra IDからトークンを直接取得するようにデータベース・クライアントを構成することをお薦めします。アプリケーションは、クライアント資格証明フローを使用する必要があります。通常、アプリケーションは、定期的に実行されるスクリプトを使用してEntra IDからトークンを取得し、データベース・クライアントが使用できるようにファイルの場所に配置します。アプリケーションを変更してEntra ID SDKと統合できる場合は、SDKを使用してトークンを取得し、クライアントAPIを使用してクライアントに渡すこともできます。
ユースケースに最も適したクライアント接続方法を選択する必要があります。このガイドでは、Entra ID OAuth2
アクセス・トークンを取得する様々な方法を使用してSQL*Plusを接続する例を紹介します。すべてのOracle Databaseリリース19cクライアントで、ファイルとして渡されるトークン、またはクライアントAPIを介して渡されるトークンを受け入れることができます。JDBC Thin、Instant ClientおよびODP.netドライバは、データベース・クライアントAPIを介してアプリケーションからのトークンも受け入れます。PowerShellやAzure CLIなどのツールは、クライアント・ドライバで使用するためにEntra ID OAuth2
アクセス・トークンを取得できます。Entra IDトークンを取得するには、Entra IDアプリケーション登録プロセスを通じてクライアントを登録する必要があります。このクライアントの登録は、アプリケーション登録を使用したOracle DatabaseサーバーのEntra IDへの登録と同様に行われます。データベースとクライアントの両方をEntra IDに登録する必要があります。
データベースを登録する必要があるのは、クライアントがデータベースのアクセス・トークンを取得する権限を取得できるようにするためです。クライアントを登録する必要があるのは、Entra IDが信頼できるクライアントがアクセス・トークンをリクエストしていることを認識できるようにするためです。
クライアントをEntra IDに接続する方法の詳細は、次のMicrosoft Azureの記事を参照してください:
8.4.2 Microsoft Entra ID OAuth2トークンを使用したOracle DatabaseへのSQL*Plusクライアント接続の操作フロー
Azureユーザー、Entra IDおよびOracleデータベースの間の接続では、3つのコンポーネントを通じたOAuth2
トークンの受渡しが利用されます。
Oracle DatabaseクライアントがEntra ID OAuth2
トークンをOracleデータベースに送信するには、3つの方法があります。
- Oracle Databaseクライアント経由
- ファイルの場所の指定
- Oracle DatabaseクライアントAPIの使用
Oracle Databaseクライアントを使用したOracle DatabaseへのEntra ID OAuth2トークンの送信
Oracle Databaseクライアントは、Entra IDエンドポイントからOAuth2
トークンを直接リクエストできます。この方法により、必要な構成が簡略化されます。次の図は、パブリック・クライアントでの対話型フローの使用を示しています。対話型フローは、OAuth2
認可フローとも呼ばれます。認可フローの詳細は、MicrosoftのMicrosoft identity platform and OAuth2.0 authorization code flow』に関する記事を参照してください。
図8-3 クライアントを使用してOracle Databaseに送信されるEntra ID OAuth2トークン

「図8-3 クライアントを使用してOracle Databaseに送信されるEntra ID OAuth2トークン」の説明
- ユーザーは、
/
スラッシュ・ログインを使用してAzure SSOログインを使用します。接続文字列(またはsqlnet.ora
)には、Oracle Databaseクライアントがユーザーのトークンを取得するために必要なすべてのパラメータが含まれます。 - Oracle Databaseクライアントは、Entra IDエンドポイントに接続して認可コードをリクエストします。
- ユーザーがEntra IDを使用してログインしていない場合は、ブラウザ・ウィンドウが開き、ユーザーはAzure SSO資格証明を入力するようリクエストされます。
- Oracle Databaseクライアントは、認可コードを使用して
OAuth2
アクセス・トークンをリクエストします。 - Oracle Databaseクライアントは、
OAuth2
アクセス・トークンを受信すると、このトークンをOracleデータベースに送信します。 - Oracleデータベースは、(Entra ID公開キーを使用して)このアクセス・トークンがEntra IDからのものであることを確認してから、トークンに追加のクレームがないかどうかチェックします。次に、データベースはスキーマ・マッピング(排他的または共有)を検出し、セッションを作成します。データベースは、Azureユーザーにアプリケーション・ロールによっても割り当てられている、すべてのグローバル・ロールも付与します。
Oracle DatabaseにEntra ID OAuth2トークンを送信するためのファイルの場所の指定
次の図は、Entra ID OAuth2
トークンをOracleデータベースに送信するためにファイルの場所を使用する方法を示しています。
図8-4 ファイルの場所を使用してOracle Databaseに送信されるEntra ID OAuth2トークン

「図8-4 ファイルの場所を使用してOracle Databaseに送信されるEntra ID OAuth2トークン」の説明
- Azureユーザーがスクリプトを使用してデータベースのEntra IDアクセス・トークンをリクエストし、返されたトークンが、特定のファイルの場所で
token
というファイルに書き込まれます。Azureユーザーは、この時点でEntra IDを使用して認証することがリクエストされる場合があります。 - Azureユーザーは、
/
スラッシュ・ログインを使用してデータベースに接続します。sqlnet.ora
またはtnsnames.ora
のいずれかの接続文字列により、Oracle Instant Clientは、Entra IDOAuth2
トークンが必要であることを伝えられ、指定されたファイルの場所からこのトークンを取得するよう指示されます。その後、アクセス・トークンがOracleデータベースに送信されます。 - Oracleデータベースは、(Entra ID公開キーを使用して)このアクセス・トークンがEntra IDからのものであることを確認してから、トークンに追加のクレームがないかどうかチェックします。次に、データベースがスキーマ・マッピング(排他的または共有)を検出し、データベース・セッションを作成します。データベースは、Azureユーザーにアプリケーション・ロールによっても割り当てられている、すべてのグローバル・ロールも付与します。
Oracle DatabaseクライアントAPIを使用したOracle DatabaseへのEntra ID OAuth2トークンの送信
次の図は、Oracle DatabaseクライアントAPIを使用してEntra ID OAuth2トークンをOracleデータベースに送信する方法を示しています。
図8-5 クライアントAPIを使用してOracle Databaseに送信されるEntra ID OAuth2トークン

「図8-5 クライアントAPIを使用してOracle Databaseに送信されるEntra ID OAuth2トークン」の説明
- アプリケーションは、スクリプトを使用してOracleデータベースのEntra IDアクセス・トークンをリクエストします。返されたトークンは、クライアントAPIを使用してデータベース・クライアントに送信されます。トークンは、ユーザー(On-Behalf-Ofトークン・フロー)またはアプリケーション(クライアント資格証明フロー)を表すことができます
- Oracle Databaseクライアントは、アクセス・トークンをOracleデータベースに送信します。
- Oracleデータベースは、(Entra ID公開キーを使用して)このアクセス・トークンがEntra IDからのものであることを確認してから、トークンに追加のクレームがないかどうかチェックします。データベースがスキーマ・マッピング(排他的または共有)を検出し、セッションを作成します。データベースは、アプリケーション・ロールを介してアプリケーションまたはユーザーに割り当てられている任意のグローバル・ロールも付与します。
8.4.3 Entra ID接続でサポートされているクライアント・ドライバ
Oracle Databaseは、Entra ID接続用の複数のタイプのクライアント・ドライバをサポートしています。
四半期ごとのリリースで拡張機能が追加されるため、サポートされているバージョンには最新の四半期ごとのパッチを使用することをお薦めします。また、一部の機能はOracle Database 23aiバージョンにのみ存在し、バックポートされません。
- シック・クライアント(OCI Cドライバ、Oracle Instant Client、Oracle Data Provider - 非管理(ODP.NET Unmanaged)、JDBC Thick、OCI Cドライバに基づくその他のクライアント): Oracle Database 19.16 (2022年7月)以上、21cではサポート対象外、Database 23aiでは完全サポート対象
- JDBC Thin: Oracle Database 19.16 (2022年7月)、Oracle Database 21.8 (2022年10月)
- Oracle Data Provider (ODP.NET Core、Managed): Oracle Database 19.16、Oracle Database 21.7
- Python Thin: 1.1.0以上
- Node.js Thin: v6.3以上
8.4.4 Entra IDアプリケーション登録によるクライアントの登録
このタイプの登録は、Entra IDアプリケーション登録によるOracle Databaseの登録と同様に行われます。
- 機密およびパブリック・クライアント登録
ユースケースに応じて、データベース・クライアントを機密またはパブリックとしてEntra IDに登録できます。 - Entra IDへのデータベース・クライアント・アプリケーションの登録
クライアント・アプリ登録の作成は、Microsoft Entra IDテナンシを使用してOracle Databaseインスタンスを作成する場合と同様に行われます。
8.4.4.1 機密およびパブリック・クライアント登録
ユースケースに応じて、データベース・クライアントを機密またはパブリックとしてEntra IDに登録できます。
認証フローおよびアプリケーション・シナリオの詳細は、Microsoft Azureの記事『Authentication flows and application scenarios』を参照してください。
機密クライアント・アプリケーションを登録する場合、クライアントにはクライアントIDに加えてシークレットが必要です。機密クライアント・アプリケーションは、Entra IDリクエストを行うときにクライアントIDとシークレットの両方を使用します。ただし、企業においてSQL*PlusおよびSQLclのすべてのユーザーが独自のシークレットを持つ個別のアプリ登録を作成することは実用的ではありません。また、組織内でシークレットを共有し始めると、シークレットはもはやシークレットではなくなります。パブリック・クライアント・アプリケーションのみを作成するほうがはるかに有用です。パブリック・クライアント・アプリケーションはシークレットを持たず、クライアントIDのみを持ちます。すべてのデータベース・ツール・ユーザーは、Entra IDに接続するときにパブリック・クライアントIDを使用して、アクセス・トークンを取得できます。その場合もAzureユーザーは、自分のユーザー資格証明を使用してEntra IDに対して認証される必要があります。
8.4.5 Microsoft Entra IDトークンを使用するためのクライアントの構成
Oracle Databaseクライアントに応じて、Entra IDからトークンを直接リクエストするか、ファイルの場所から取得するようにクライアントを構成できます。
- Microsoft Entra IDトークンを使用するためのクライアントの構成
Entra IDOAuth2
アクセス・トークンを使用するようにデータベース・クライアントを構成するために、様々な方法があります。 - クライアントによるEntra IDトークンの直接取得の有効化
クライアント自身によるEntra IDトークンの直接取得を有効にするパラメータを設定できます。 - クライアント資格証明フロー
クライアント資格証明フローを使用すると、Azure以外のクラウド環境のオンプレミス・アプリケーションおよびアプリケーションは、MS-EI OAuth2トークンを取得してOracle Databaseに接続できます。 - クライアントによるファイルの場所からのEntra IDトークンの取得の有効化
/
スラッシュ・ログインの使用時に、Entra IDの場所をファイルの場所から取得することを選択した場合、クライアントを構成する必要があります。 - ネットワーク・サービス構成情報のためのAzureアプリケーション構成ストアの使用
接続文字列およびその他のネットワーク構成情報はAzureアプリケーション構成ストアに格納できます。
8.4.5.1 Microsoft Entra IDトークンを使用するためのクライアントの構成
Entra ID OAuth2
アクセス・トークンを使用するようにデータベース・クライアントを構成するために、様々な方法があります。
OAuth2
トークンを直接リクエストできます。また、データベース・クライアントで使用するためにトークンを取得してファイルの場所に配置するには、別のユーティリティを実行する必要があります。アプリケーションは、Azure SDKを使用してトークンを取得し、データベース・クライアントAPIを介してこれを送信することもできます。クライアントAPIの使用およびクライアント構成情報については、データベース・クライアント固有のドキュメントを参照してください。Entra IDからトークンをリクエストする前に、次の構成を実行する必要があります。
OAuth2
トークンを渡すには、データベース・クライアントとデータベース・サーバーの間のTLS接続が必要です。TLS (サーバー認証)またはmTLS (クライアントおよびサーバー認証)を使用できます。データベース・クライアントおよびプラットフォームでサポートされている場合は、TLSを使用してウォレットを使用しない場合に単純にシステムのデフォルトの証明書ストアを使用できます。TLSの使用に加えて、部分DN一致または完全DN一致(SSL_SERVER_DN_MATCH = ON
)を指定する必要があります。
8.4.5.2 クライアントによるEntra IDトークンの直接取得の有効化
クライアント自身がEntra IDトークンを直接取得できるようにパラメータを設定できます。
Oracle Databaseクライアントは、サポートしているフローに関してプラットフォームおよびバージョンによって異なります。次の表に、各クライアントがサポートできる内容を示します。
表8-1 トークンを直接取得するパラメータ
データベース・クライアント | クライアントAPIを使用した受渡し | ファイルの場所の使用 | データベース・クライアントの直接サポート |
---|---|---|---|
シック・クライアント(OCI Cドライバ、インスタンス・クライアントとシック・クライアントを使用するプラットフォーム固有のドライバ(JDBC Thick、ODP.NET Unmanaged、Python Thickなど)) |
クライアント・バージョン19.16以上、21c以外、すべての23ai すべてのフロー(対話型、クライアント資格証明、OBO、ROPC)でサポート対象 |
クライアント・バージョン19.16以上、21c以外、すべての23ai すべてのフロー(対話型、クライアント資格証明、OBO、ROPC)でサポート対象 |
クライアント・バージョン23.4以上 対話型フローのサポートのみ |
JDBC Thin |
クライアント・バージョン19.16以上、21.7以上、すべての23ai すべてのフロー(対話型、クライアント資格証明、OBO、ROPC)でサポート対象 |
クライアント・バージョン19.16以上、21.7以上、すべての23ai すべてのフロー(対話型、クライアント資格証明、OBO、ROPC)でサポート対象 |
クライアント・バージョン23ai 次のフローをサポート(対話型、デバイス・コード、クライアント資格証明、管理対象アイデンティティ、OBO、ROPC) |
ODP.NET Core、Managed |
クライアント・バージョン19.16以上、21.7以上、すべての23ai すべてのフロー(対話型、クライアント資格証明、OBO、ROPC)でサポート対象 |
クライアント・バージョン19.16以上、21.7以上、すべての23ai すべてのフロー(対話型、クライアント資格証明、OBO、ROPC)でサポート対象 |
クライアント・バージョン23ai 次のフローをサポート(対話型、デバイス・コード、クライアント資格証明、管理対象アイデンティティ、OBO、ROPC) |
Python Thin |
サポート対象外 |
サポート対象外 |
サポート対象外 |
Node.js |
サポート対象外 |
サポート対象外 |
サポート対象外 |
接続文字列パラメータは、データベース・クライアント間で共通です。これらのドライバを使用したこの機能に関するより具体的な詳細は、各データベース・クライアント・ドキュメント(JDBC Thin、ODP.NET Core、Managed)を参照してください。次の情報は、OCIシック・クライアント/インスタント・クライアント専用です。ただし、接続文字列パラメータに関する情報は、ドライバ全体で一貫性が保たれます。
クライアントでこの機能を有効にして、サポートされているフローについてEntra IDからトークンを直接取得するには、クライアントのsqlnet.ora
ファイルまたは接続文字列で次のパラメータを設定する必要があります。接続文字列はsqlnet.ora
よりも優先されます。
データベース・クライアントがEntra ID OAuth2トークンを取得するには、データベース・クライアントがEntra IDエンドポイントに接続できる必要があります。ファイアウォールの背後で作業している場合は、インターネットに到達するためにプロキシの設定が必要になることがあります。インターネットに接続できるかどうかわからない場合は、「Microsoft Entra ID接続のトラブルシューティング」の項を参照してください。
表8-2 トークンを直接取得するパラメータ
パラメータ | 説明 |
---|---|
|
トークン認証を設定します。データベース・クライアントにデータベース・トークンの取得またはファイルの場所からの取得を依頼する場合、このパラメータが必須です。クライアントAPIを介してトークンを渡す場合、このパラメータは必要ありません。 次のいずれかの値を入力します。
|
|
アプリケーションが登録されたときにEntra IDによってアプリケーションに割り当てられた、一意のアプリケーション(クライアント) ID。このアプリケーションは、ユーザーのためにデータベースのアクセス・トークン取得をリクエストするデータベース・クライアントです。これは、データベース・サーバーのクライアントIDではありません。 |
|
アプリケーションID URIは、Entra ID内のデータベースを一意に識別するURIです。この値は、データベースのEntra IDアプリケーション登録の概要画面から取得します。 |
|
データベースのAzureテナンシIDを指定します。 |
|
HTTPサーバーのポート番号を設定するためのオプションのパラメータ。このURLは、Entra認証エンドポイントから認可コードを取得し、認可コードを受信するために使用するポートを決定します。 |
各パラメータの詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。次に、トークンを取得するために対話型フローの使用を指定する例を示します。
conn /@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=example.us-phoenix-1.oraclecloud.com)(PORT=6010))
(SECURITY=(SSL_SERVER_DN_MATCH=YES)
(AZURE_DB_APP_ID_URI=https://oracledevelopment.onmicrosoft.com/11111111-11a1-1a11-111a-a11a11111111)
(TENANT_ID=1a111aa1-a1a1-1a11-a1a1-a11aaaaa1111)
(CLIENT_ID=aa11a111-111a-1a11-1aa1-1aa1a1aa1111)
(TOKEN_AUTH=AZURE_INTERACTIVE))(CONNECT_DATA=(SERVICE_NAME=cdb1_pdb3.regress.rdbms.dev.us.oracle.com)))
8.4.5.3 クライアント資格証明フロー
クライアント資格証明フローを使用すると、Azure以外のクラウド環境のオンプレミス・アプリケーションおよびアプリケーションは、MS-EI OAuth2トークンを取得してOracle Databaseに接続できます。
クライアント資格証明フローは、(Oracle Database 21cではなく)Oracle Database 19c以降、トークン・ファイルの受渡し方法およびOCI-CクライアントAPIを使用してサポートされています。Oracle Database 23ai OCI-Cクライアントは、MS-EIエンドポイントからのMS-EI OAuth2トークンの直接取得もサポートしており、最初にトークンを取得するスクリプトは必要ありません。クライアント資格証明フローのトークンを取得するには、MS-EIアプリ登録を使用してアプリケーションを登録するときに、クライアントIDとMS-EIからのクライアント・シークレットが必要です。これは、DBAが対話型フローを使用してデータベースに接続するためにパブリック・クライアントを設定する場合とは異なります。人間のユーザーが資格証明を使用してAzureにサインインするため、パブリック・クライアントにクライアント・シークレットは必要ありません。クライアント資格証明フローでは、MS-EIに対して認証してトークンを取得するためのクライアント・シークレットがアプリケーションに必要です。クライアント・シークレットは機密であるため、Oracle Walletを使用してクライアントIDおよびクライアント・シークレットを格納することをお薦めします。
対話型フローに使用されるクライアント(人間のユーザー用)とクライアント資格証明フロー(アプリケーション用)には、いくつかの違いがあります。対話型フローでは、ユーザーおよびグループはMS-EIエンタープライズ・アプリケーションのデータベース・アプリケーション・ロールにマップされます。クライアント資格証明フローでは、クライアント・アプリケーションはデータベース・アプリケーション・ロールにのみ直接マップできます。
Oracle DatabaseとMicrosoft Entra IDの間のクライアント資格証明フローを構成するには、次のステップに従います。
Microsoft Entra IDを使用したOracle Databaseの登録
- データベース・アプリケーションの所有者であること
- アプリケーションのデータベース・アプリケーションでアプリケーション・ロールを作成すること
- アプリケーション・クライアント・アプリケーションのクライアント・シークレットを作成すること
- データベース・アプリケーションに接続するためのAPI権限を作成し、それに承認を与えること
Oracle Databaseでのアプリケーション・ロール・マッピングの作成
前のステップで、新しいアプリケーション・ロールを作成しました。次に、データベースにスキーマ・マッピングを作成し、適切なロールと権限を新しいロールのスキーマに付与する必要があります。
CREATE USER
またはALTER USER
システム権限を持つユーザーとして、Oracle Databaseインスタンスにログインします。- Azureアプリケーション・ロール名を指定する
IDENTIFIED GLOBALLY AS
句を使用してCREATE USER
またはALTER USER
文を実行します。たとえば、hr_app
という名前の新しいデータベース・グローバル・ユーザー・アカウント(スキーマ)を作成し、それをhrapp
という名前の既存のEntra IDアプリケーション・ロールにマップするには、次のようにします:CREATE USER hr_app IDENTIFIED GLOBALLY AS 'AZURE_ROLE=HRAPP';
クライアント・シークレットを格納するためのウォレットの作成
orapki
を使用してウォレットを作成し、クライアント・シークレットを格納します。
- ウォレットを作成し、ウォレット・パスワードを設定します:
orapki wallet create -wallet . -auto_login_only
- クライアントIDとクライアント・シークレットを使用してエントリを作成します:
orapki secretstore create_entry -wallet . -alias oracle.security.azure.credential.<CLIENT_ID> -secret <CLIENT_SECRET>
ノート:
CLIENT_ID
値は大/小文字が区別され、接続文字列またはsqlnet.ora
ファイルのCLIENT_ID
値の大/小文字と一致する必要があります。
- エントリを表示します:
orapki wallet display -wallet .
- 特定のエントリを表示します:
orapki secretstore view_entry -wallet . -alias oracle.security.azure.credential.<CLIENT_ID>
- エントリを変更します:
orapki secretstore modify_entry -wallet . -alias oracle.security.azure.credential.<CLIENT_ID> -secret <CLIENT_SECRET>
- エントリを削除します:
orapki secretstore delete_entry -wallet . -alias oracle.security.azure.credential.<CLIENT_ID>
8.4.5.4 クライアントによるファイルの場所からのEntra IDトークンの取得の有効化
/
スラッシュ・ログインの使用時に、Entra IDの場所をファイルの場所から取得することを選択した場合、クライアントを構成する必要があります。
sqlnet.ora
ファイルまたはtnsnames.ora
ファイルのいずれかで構成できます。
- クライアントで、
tnsnames.ora
接続文字列またはsqlnet.ora
ファイル内で次のパラメータを設定または確認します:SSL_SERVER_DN_MATCH
: DN一致が有効になるように、このパラメータがON
に設定されていることを確認します。TOKEN_AUTH
: このパラメータをOAUTH
に設定します。TOKEN_LOCATION
: このパラメータをトークンのファイルの場所に設定します。このトークンにはデフォルトの場所がありません。トークンの名前がtoken
である場合は、指定する必要があるのはファイル・ディレクトリ(/test/oracle/aad-token
など)のみです。トークン名がtoken
と異なる場合(たとえば、azure.token
)、この名前をパスに含める必要があります(たとえば、/test/oracle/aad-token/azure.token
)。
tnsnames.ora
接続文字列のパラメータ値は、その接続のsqlnet.ora
設定より優先されます。次のコードはtnsnames.ora
エントリの例です。この場合、SSL_SERVER_DN_MATCH
はsqlnet.ora
で指定され、接続文字列には表示されません:
(description=
(retry_count=20)(retry_delay=3)
(address=(protocol=tcps)(port=1522)
(host=example.us-phoenix-1.oraclecloud.com))
(connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com))
(security=(ssl_server_cert_dn="CN=example.uscom-east-1.oraclecloud.com,
OU=Oracle BMCS US, O=Example Corporation,
L=Redwood City, ST=California, C=US")
(TOKEN_AUTH=OAUTH)(TOKEN_LOCATION="/oracle/tokens/aad-token"))
接続文字列がこれらのパラメータで更新された後、Azureユーザーは、まず外部ユーティリティを実行してトークンを取得し、次のコマンドを実行してSQL*Plusを起動することで、Oracle Databaseインスタンスにログインできます。接続記述子自体を含めるか、tnsnames.ora
ファイルからの記述子の名前を使用できます。
connect /@exampledb_high
TOKEN_AUTH
は接続文字列またはsqlnet.ora
ファイルのいずれかによってすでに設定されているため、データベース・クライアントはAzure OAuth2
トークンを取得するようにすでに構成されています。データベース・クライアントはOAuth2
トークンを取得し、そのトークンをOracle Databaseインスタンスに送信します。
8.4.5.5 ネットワーク・サービス構成情報のためのAzureアプリケーション構成ストアの使用
接続文字列およびその他のネットワーク構成情報はAzureアプリケーション構成ストアに格納できます。
詳細は、『Oracle Database Net Services管理者ガイド』のAzureアプリケーション構成ストアに関する項を参照してください。
8.4.6 Oracle Databaseクライアントの外部でのEntra ID OAuth2トークンの取得の例
これらの例は、データベース・クライアントを使用してトークンを直接取得していない場合に、データベース・クライアントとは別にEntra ID OAuth2
トークンを取得できる様々な方法を示しています。
- Oracle Database Clientの外部でのMicrosoft Entra ID OAuth2トークンの取得の例について
Oracle Databaseクライアントには、Entra IDOAuth2
トークンを直接取得するために様々な機能があります。 - 例: 対話型(認可)フロー用のPythonスクリプトを使用したトークンのリクエスト
対話型(認可)フローは、人間のユーザーがデータベースにアクセスするための最も一般的なフローです。 - 例: 対話型(認可)フロー用のAzure CLIを使用したトークンのリクエスト
この例では、Azure CLIを使用してアクセス・トークンを取得し、取得したトークンをファイルに書き込む方法を示します。 - クライアント資格証明フロー用のAzure CLIを使用したトークンのリクエスト
クライアント資格証明フローは、Entra IDOAuth2
トークンを使用してデータベースにアクセスする必要があるアプリケーションに使用されます。
8.4.6.1 Oracle Databaseクライアントの外部でのMicrosoft Entra ID OAuth2トークンの取得の例について
Oracle Databaseクライアントには、Entra ID OAuth2
トークンを直接取得するために様々な機能があります。
様々なフローのトークンを取得するためのデータベース・クライアントの構成については、特定のクライアント・ドキュメントを確認してください。Entra IDトークンを使用する他の2つの方法は、次のとおりです:
- クライアントAPIを使用したトークンの受渡し
- ファイル・システムを介したトークンの受渡し
APIの使用については、クライアント・ドキュメントを確認してください。Entra IDからトークンをリクエストし、データベース・クライアントが取得できるようトークンをファイルの場所に格納するために、ユーティリティまたはスクリプトが使用されます。スクリプトまたはユーティリティを使用したトークンのリクエストおよび格納は、Oracle Databaseの外部で行われます。Entra IDトークンの取得方法については、Microsoftやインターネット上の他のサイトから入手可能な例が多数あります。(Azure AD OAuth2
トークンも検索してください)。この項のサンプルは、一部の例にすぎず、Oracleではサポートされていません。
8.4.6.2 例: 対話型(認可)フロー用のPythonスクリプトを使用したトークンのリクエスト
対話型(認可)フローは、人間のユーザーがデータベースにアクセスするための最も一般的なフローです。
OAuth2
アクセス・トークンを取得する前に、組織が要求する多要素認証も完了する必要があります。Microsoft Authentication Library (MSAL)を使用したこの例はPythonで作成されており、Windows PowerShellやLinuxなどの様々なプラットフォームで実行できます。認可フローではAzure ADへのラウンド・トリップが2回必要であるため、MSALを使用して処理することをお薦めします。MSALでPythonスクリプトを使用する方法は、Microsoftの記事『Get Entra ID tokens by using the Microsoft Authentication Library』を参照してください。これらの手順はDatabricksサービス用ですが、Databricksスコープではなく、データベース・アプリケーションIDのURIとスコープにスコープを変更します。
8.4.6.3 例: 対話型(認可)フロー用のAzure CLIを使用したトークンのリクエスト
この例では、Azure CLIを使用してアクセス・トークンを取得し、取得したトークンをファイルに書き込む方法を示します。
8.4.6.4 クライアント資格証明フロー用のAzure CLIを使用したトークンのリクエスト
クライアント資格証明フローは、Entra ID OAuth2
トークンを使用してデータベースにアクセスする必要があるアプリケーションに使用されます。
アプリケーションは「ヘッドレス」であり、Azureポータルで対話的に認証するユーザーがいないため、対話型フローをアプリケーションで使用することはできません。クライアント資格証明フローは、アプリケーション用に設計されています。これらのフローでは、アプリケーションの登録には、クライアントIDとともにクライアント・シークレットが必要です。これらは、Entra ID OAuth2
データベース・アクセス・トークンを取得するために使用されます。
スクリプトがトークンを取得した後、このトークンをファイルに書き込み(この項の例を参照)、データベース・クライアントがトークンにアクセスできるようにする必要があります。Microsoftでは、サービス・プリンシパルがトークンをリクエストする例をいくつか示しています。Microsoftの記事『Get Microsoft Entra ID (formerly Azure Active Directory) tokens for service principals』を参照してください。
8.4.7 データベースがインターネットに接続するためのネットワーク・プロキシの作成
このネットワーク・プロキシを使用すると、OracleデータベースはEntra IDエンドポイントに到達できるようになります。
- インターネットに接続するためのデータベースのネットワーク・プロキシの作成について
OracleデータベースはEntra IDエンドポイントに接続する必要があり、ネットワーク構成およびデフォルトのトラスト・ストア・アクセスが必要になる場合があります。 - Entra IDエンドポイントのアクセシビリティのテスト
Oracle DatabaseがEntra IDエンドポイントにアクセスできることを確認する必要があります。 - デフォルトのOracle Database環境用のネットワーク・プロキシの作成
ネットワーク・プロキシを作成するには、環境変数を設定してからリスナーを再起動する必要があります。 - Oracle Real Application Clusters環境用のネットワーク・プロキシの作成
ネットワーク・プロキシを作成するには、環境変数を設定してからデータベースを再起動する必要があります。 - Windowsレジストリ・エディタでのネットワーク・プロキシの作成
Windows環境でネットワーク・プロキシを作成するには、レジストリ・エディタ(regedit
)を更新する必要があります。
8.4.7.1 データベースがインターネットに接続するためのネットワーク・プロキシの作成について
OracleデータベースはEntra IDエンドポイントに接続する必要があり、ネットワーク構成およびデフォルトのトラスト・ストア・アクセスが必要になる場合があります。
企業内にHTTPネットワーク・プロキシが配置されている場合、デフォルトのOracle Database環境およびOracle Real Applications Clusters環境に対してデータベースを構成できます。データベースは、Entra IDへのTransport Layer Security (TLS)リンクを確立するため、データベース・サーバー上のデフォルトのトラスト・ストアへのアクセスも必要です。これを有効にするには、データベース・サーバーがシステムのデフォルトの証明書ストアにアクセスできることを確認します。
関連トピック
8.4.7.2 Entra IDエンドポイントのアクセシビリティのテスト
Oracle DatabaseがEntra IDエンドポイントにアクセスできることを確認する必要があります。
curl https://login.windows.net/common/discovery/keys
ステータス・コード200は成功を示します。このコマンドの実行に失敗した場合は、プロキシ情報についてITヘルプ・デスクに確認してください。
OAuth2
トークンを受け入れるには、データベースがMicrosoft Entra IDエンドポイントからの公開キーをリクエストする必要があります。
HTTP_PROXY
パッケージを設定する必要があります。デフォルトのOracle Database環境を使用しているか、Oracle Real Application Clusters RAC環境を使用しているかに応じて、「関連トピック」にリストされているトピックを確認します。ネットワーク管理者は、正しいHTTP_PROXY
設定を通知できる必要があります。
8.4.7.3 デフォルトのOracle Database環境用のネットワーク・プロキシの作成
ネットワーク・プロキシを作成するには、環境変数を設定してからリスナーを再起動する必要があります。
8.4.7.4 Oracle Real Application Clusters環境用のネットワーク・プロキシの作成
ネットワーク・プロキシを作成するには、環境変数を設定してからデータベースを再起動する必要があります。
8.5 Microsoft Entra IDプロキシ認証の構成
プロキシ認証により、Azureユーザーは、アプリケーションのメンテナンスなどのタスクのためにデータベース・スキーマにプロキシできます。
- Microsoft Entra IDプロキシ認証の構成について
Azureユーザーは、プロキシ認証を使用してOracle Autonomous Databaseに接続できます。 - Azureユーザーのためのプロキシ認証の構成
Azureユーザーのプロキシ認証を構成するには、このユーザーがグローバル・スキーマへのマッピング(排他的マッピングまたは共有マッピング)をすでに持っている必要があります。Azureユーザーがプロキシする別のデータベース・スキーマも使用可能になっている必要があります。 - Azureユーザー・プロキシ認証の検証
Azureユーザー・プロキシ構成でトークン認証を検証できます。
8.5.1 Microsoft Entra IDプロキシ認証の構成について
Azureユーザーはプロキシ認証を使用して、Oracle Autonomous Databaseに接続できます。
プロキシ認証は、通常、実際のユーザーを認証し、アプリケーションを管理するためにスキーマ権限およびロールを含むデータベース・スキーマの使用をユーザーに認可するために使用されます。アプリケーション・スキーマ・パスワードの共有などの代替方法は、安全でないものとみなされ、どの実際のユーザーがアクションを実行したかを監査できません。
たとえば、アプリケーション・データベース管理者である名前付きAzureユーザーが資格証明を使用して認証し、データベース・スキーマ・ユーザー(hrapp
など)にプロキシできる環境でのユースケースが考えられます。この認証により、Entra ID管理者は、アプリケーションのメンテナンスを実行するためにhrapp
権限およびロールをユーザーhrapp
として使用できますが、認証にはEntra ID資格証明を使用します。アプリケーション・データベース管理者は、データベースにサインインし、アプリケーション・スキーマにプロキシしてこのスキーマを管理できます。
親トピック: Microsoft Entra IDプロキシ認証の構成
8.5.2 プロキシ認証のためのAzureユーザーの構成
Azureユーザーのプロキシ認証を構成するには、このユーザーがすでにグローバル・スキーマへのマッピング(排他的マッピングまたは共有マッピング)を持っている必要があります。Azureユーザーがプロキシする別のデータベース・スキーマも使用可能になっている必要があります。
CONNECT [hrapp]/@connect_string
親トピック: Microsoft Entra IDプロキシ認証の構成
8.6 Microsoft Power BIシングル・サインオンの構成
Power BIユーザーのみがOracle Databaseに接続する場合、ユーザーはより簡単な構成を選択できます。
- Microsoft Power BIシングル・サインオンの構成について
Microsoft Power BIデータ・ビジュアライゼーション・ツールのユーザーは、Microsoft Entra ID (MSEI)も頻繁に使用します。これらのユーザーは、MSEIシングル・サインオン(SSO)資格証明を使用してOracleデータ・ソースにシームレスにアクセスすることを必要としています。 - Oracle Databaseの構成
Microsoft Power BIからのアクセス・トークンを受け入れるようにOracleデータベースを構成します。 - ユーザーの認可
Power BI Azure ADユーザーは、データベースに対して認可されている必要があります。 - Microsoft Entra IDを使用したPower BIのOracle Databaseへの接続
データベースを構成した後は、Power BI DesktopまたはServiceを構成する必要があります。
8.6.1 Microsoft Power BIシングル・サインオンの構成について
Microsoft Power BIデータ・ビジュアライゼーション・ツールのユーザーは、Microsoft Entra ID (MSEI)も頻繁に使用します。これらのユーザーは、MSEIシングル・サインオン(SSO)資格証明を使用してOracleデータ・ソースにシームレスにアクセスすることを必要としています。
以前は、Power BIユーザーは、データベースのローカルのユーザー名とパスワードを使用してOracle Databaseにアクセスするか、セキュリティ・チームが一元化されたアクセス管理を要求した場合はOracle Databaseから別のデータベースにデータを移行する必要がありました。
MSEI SSOを使用してOracleデータ・ソースにアクセスすることで、ユーザーは集中管理され、パスワード資格証明ではなくAzure ADトークンが使用されるため、セキュリティが向上します。データはOracle Databaseに残り、移行する必要がないため、DBAの使いやすさも向上します。また、ユーザーはSSOを使用してソース・データベースにアクセスできるため、データベースのパスワード資格証明を記憶して継続的にローテーションする必要もありません。
- Oracle Database Server 23ai (オンプレミスおよびクラウド)
- Oracle Database Server 19c (19.20以上、オンプレミスおよびクラウド)
- MSEIトークンをサポートする任意のデータベース・クライアント
詳細は、「Entra ID接続でサポートされているクライアント・ドライバ」を参照してください。
次の図は、MSEI SSOを使用して、Microsoft Power BIのソースとして使用されるOracleデータベースにアクセスする方法を示しています。
図8-6 Oracle Database for Power BIに送信されるMicrosoft Entra IDアクセス・トークン
- Power BIユーザーは、MSEIを使用して自身を認証します
- Power BIは、データベースへの接続が開くとデータベースに対するユーザーのアクセス・トークンを取得します
- Power BIは、MSEI Power BIアクセス・トークンをOracle Databaseに送信します
- Oracle DatabaseはMSEI公開キーをキャッシュし、MSEI Power BIトークンを検証します
8.6.2 Oracle Databaseの構成
Microsoft Power BIからのアクセス・トークンを受け入れるようにOracleデータベースを構成します。
前提条件:
Oracleデータベースは、MSEIアプリケーション登録で登録する必要があります。
- 外部アイデンティティ・プロバイダをMicrosoft Entra IDとして設定します:
ALTER SYSTEM SET IDENTITY_PROVIDER_TYPE=AZURE_AD SCOPE=BOTH;
- 外部アイデンティティ・プロバイダを構成します。
ALTER SYSTEM SET identity_provider_config='{"application_id_uri": 111-111-111, "tenant_id": "111-111-111", "app_id":"111-111-111"}';
ノート:
値identity_provider_config
には、Power BIアクセス・トークンの操作時にこの例で使用されている「111-111-111」などを指定できます
この構成は、Power BIユーザーSSO統合に固有のものです。完全なMSEI統合では、Power BIユーザーSSO統合もサポートされています。完全なMSEI統合により、Power BIユーザー・アクセスとSQLPlusを使用するDBA、MSEI対話型ログインとクライアント資格証明フローを使用したアプリケーションによるデータベースへのアクセスの両方が可能になります。このトピックで説明するさらに簡単なPower BI SSO構成では、Power BIユーザーのみがデータベースにアクセスできます。
MSEI完全統合の詳細は、「Microsoft Entra ID統合のためのOracle Database構成」を参照してください。
8.6.4 Microsoft Entra IDを使用したPower BIのOracle Databaseへの接続
データベースを構成したら、Power BI DesktopまたはServiceを構成する必要があります。
Oracleブログ「Microsoft Power BI can now connect with the Oracle Database using Microsoft Entra ID SSO tokens」の手順に従います。
8.7 Microsoft Entra ID接続のトラブルシューティング
トレース・ファイルを使用して、Microsoft Entra ID接続の問題を診断できます。ORA-12599
およびORA-03114
エラーを簡単に修正することもできます。
- Entra IDとのOracle Databaseクライアント接続をトラブルシューティングするためのトレース・ファイル
トレース・ファイルを使用して、Entra IDを使用したOracle Database統合をトラブルシューティングできます。 - トークンを使用してデータベースにアクセスしようとしたときに発生するORA-12599およびORA-03114エラー
ORA-12599: 「TNS: 暗号チェックサムの不一致が発生しました」
エラーおよびORA-03114: 「Oracleに接続されていません。」
エラーは、接続しようとしているデータベースがネイティブ・ネットワーク暗号化によって保護されていることを示しています。 - Entra IDアクセス・トークンのバージョンの確認
JSON WebトークンのWebサイトを使用すると、サイトで使用されているEntra IDアクセス・トークンのバージョンを確認できます。
8.7.1 Oracle DatabaseクライアントとEntra IDの接続をトラブルシューティングするためのトレース・ファイル
トレース・ファイルを使用して、Oracle DatabaseとEntra IDの統合に関してトラブルシューティングできます。
- 接続のトラブルシューティングに使用されるトレース・ファイルについて
クライアント側でEntra ID接続をトラブルシューティングするために、2つのレベルのトレース・ファイルを生成できます。 - トークン認証のクライアント・トレースの設定
クライアント側のsqlnet.ora
ファイルにEVENT
設定を追加して、クライアント・トレースを制御できます。
8.7.1.1 接続のトラブルシューティングに使用するトレース・ファイルについて
クライアント側でEntra ID接続をトラブルシューティングするために、2つのレベルのトレース・ファイルを生成できます。
生成できるトレース・ファイルの2つのレベルは次のとおりです。
- 低レベル・トレースでは、エラーの発生時にトレースが出力されます。
- TCPSがEntra ID接続用に設定されていない場合は、プロトコルがTCPSである必要があるというメッセージが出力されます。
SSL_SERVER_DN_MATCH
がTRUE
に設定されていない場合は、値がFALSE
であるというメッセージが出力されます。TOKEN_LOCATION
が指定されていない場合は、トークンの場所が存在しないというメッセージが出力されます。- 指定された
TOKEN_LOCATION
にトークンが存在しない場合は、メッセージが出力されます。 -
OCI_ATTR_TOKEN_ISBEARER
をtrueに設定せずにアプリケーションがトークンを渡した場合、欠落している属性についてのメッセージが出力されます。 - アプリケーションが
OCI_ATTR_TOKEN_ISBEARER
をTRUE
に設定し、トークンを渡さなかった場合、欠落している属性についてのメッセージが出力されます。 - トークンが期限切れの場合は、メッセージが出力されます。
- トークンがMicrosoft Entra ID v2.0トークンで、upnクレームまたはロール・クレームが含まれていない場合、必要なクレームがないというメッセージが出力されます。
- 高レベル・トレースでは、前述のようにエラーの発生時にトレースが出力されます。さらに、次のように、成功時にトレースが出力されます。
SSL_SERVER_DN_MATCH
が存在する場所(tnsnames.ora
またはsqlnet.ora
)が出力されます。また、TRUE
に設定されている場合は、TRUE
の値が出力されます。- アプリケーションでトークンと
OCI_ATTR_TOKEN_ISBEARER=true
の両方が設定されている場合は、メッセージが出力されます。 -
TOKEN_AUTH
に、正しい値OAUTH
が設定されている場合は、その値が出力されます。 - トークンが期限切れでない場合は、メッセージが出力されます。
- トークンがMicrosoft Entra ID v2.0トークンで、upnクレームまたはロール・クレームが存在する場合、必要なクレームが存在するというメッセージが出力されます。
8.7.2 トークンを使用してデータベースにアクセスしようとしたときにORA-12599およびORA-03114エラーが発生する
ORA-12599: 「TNS: 暗号チェックサムの不一致が発生しました」
エラーおよびORA-03114: 「Oracleに接続されていません。」
エラーは、接続しようとしているデータベースがネイティブ・ネットワーク暗号化によって保護されていることを示します。
トークンを使用してOracleデータベースにアクセスする場合は、ネットワーク・ネイティブ暗号化ではなくTransport Layer Security (TLS)接続を確立する必要があります。これらのエラーを修正するには、TLSがデータベースに対して適切に構成されていることを確認してください。ローカル・データベースのユーザー名とパスワードを使用して構成をテストし、次のSYSCONTEXT USERENV
パラメータを確認する必要があります。
-
NETWORK_PROTOCOL
-
TLS_VERSION
関連トピック
8.7.3 Entra IDアクセス・トークン・バージョンの確認
JSON WebトークンのWebサイトを使用すると、サイトで使用されているEntra IDアクセス・トークンのバージョンを確認できます。