8 Oracle DatabaseのMicrosoft Azure Active Directoryユーザーの認証および認可
Oracle Databaseは、Microsoft Azure ADユーザーがシングル・サインオンを使用して接続するように構成できます。
- Microsoft Azure ADとのOracle Database統合の概要
Microsoft Azure ADを構成してOracleデータベースにアクセスするには、全体的なプロセスについて理解する必要があります。 - Microsoft Azure AD統合のためのOracle Databaseの構成
Microsoft Azure ADとOracle Databaseインスタンスの統合では、データベースをAzure ADに登録する必要があります。 - Oracle Databaseスキーマおよびロールのマッピング
Azure ADユーザーは、1つのデータベース・スキーマにマップされ、オプションで1つ以上のデータベース・ロールにマップされます。 - Oracle DatabaseへのAzure ADクライアント接続の構成
Azure AD登録済データベースに接続するようにクライアント接続を構成できます - Microsoft Azure ADプロキシ認証の構成
プロキシ認証により、Azure ADユーザーは、アプリケーションのメンテナンスなどのタスクのためにデータベース・スキーマにプロキシできます。 - Microsoft Azure AD接続のトラブルシューティング
トレース・ファイルを使用して、Microsoft Azure AD接続の問題を診断できます。ORA-12599
およびORA-03114
エラーを簡単に修正することもできます。
親トピック: ユーザー認証および認可の管理
8.1 Oracle DatabaseとMicrosoft Azure ADの統合の概要
OracleデータベースにアクセスするためのMicrosoft Azure ADの構成を開始する前に、全体的なプロセスについて理解する必要があります。
- Oracle DatabaseとMicrosoft Azure ADの統合について
Oracle DatabaseおよびMicrosoft Azure ADは、ユーザーおよびアプリケーションがAzure AD資格証明を使用してデータベースに接続できるように構成できます。 - Oracle DatabaseとMicrosoft Azure ADの統合のアーキテクチャ
Microsoft Azure Active Directoryアクセス・トークンは、OAuth 2.0標準とその拡張に従います。 - Oracle DatabaseスキーマおよびロールへのAzure ADユーザーのマッピング
Microsoft AzureユーザーをOracle Databaseインスタンスに対して認証するには、その前にMicrosoft AzureユーザーをOracle Databaseスキーマにマップし、(ロールを介して)必要な権限を付与しておく必要があります。 - Azure ADを使用したOracle Databaseへの接続のユースケース
Oracle Databaseでは、データベースへの接続のユースケースをいくつかサポートしています。 - Oracle DatabaseでMicrosoft Azure ADアイデンティティを認証する一般的なプロセス
Azure AD OAuth2アクセス・トークンを使用してAzure ADユーザーがデータベースに接続できるように、Oracle Database管理者およびMicrosoft Azure AD管理者がロールを再生します。
8.1.1 Oracle DatabaseとMicrosoft Azure ADの統合の概要
Oracle DatabaseおよびMicrosoft Azure ADは、ユーザーおよびアプリケーションがAzure AD資格証明を使用してデータベースに接続できるように構成できます。
Azure ADのユーザーおよびアプリケーションは、Azure ADシングル・サインオン(SSO)資格証明を使用してログインし、スタンドアロンおよびCDBマルチテナント・データベースにアクセスできます。これは、ユーザーまたはアプリケーションが最初にAzure ADからリクエストするAzure AD OAuth2
アクセス・トークンを使用して行われます。このOAuth2
アクセス・トークンには、ユーザーIDおよびデータベース・アクセス情報が含まれ、データベースに送信されます。マルチファクタ認証およびパスワードレス認証の構成の詳細は、Microsoft社の記事Azure Active Directoryのパスワードレス認証オプションを参照してください。
この統合は、次のOracle Database環境で実行できます。
- オンプレミスOracle Databaseリリース19.18以降のサポート対象プラットフォーム(リリース21cを除く)
- Oracle Autonomous Database Serverless
- 専用Exadataインフラストラクチャ上のOracle Autonomous Database
- Oracle Base Database Service
- Oracle Exadata Cloud Service (Oracle ExaCS)
Azure ADを構成する手順では、これらの環境を網羅するために「Oracle Database」という用語を使用します。
このタイプの統合により、Azure ADユーザーはOracle Databaseインスタンスにアクセスできます。Azure ADのユーザーおよびアプリケーションは、Azure ADシングル・サインオン(SSO)資格証明を使用してログインし、Azure ADのOAuth2
アクセス・トークンを取得してデータベースに送信できます。
Azure AD管理者は、Oracle Databaseを作成してAzure ADに登録します。Azure AD内では、これはアプリ登録と呼ばれ、アプリケーション登録の略です。これは、Azure ADを使用しているソフトウェアについてAzure ADが理解しておく必要があるデジタル情報です。Azure AD管理者は、Azure ADでデータベース・アプリを登録するためのアプリケーション(アプリ)ロールも作成します。アプリケーション・ロールは、Azureユーザー、グループおよびアプリケーションをデータベース・スキーマおよびロールに接続します。Azure AD管理者は、Azure ADユーザー、グループ、またはアプリケーションをアプリケーションのロールに割り当てます。これらのアプリケーション・ロールは、データベース・グローバル・スキーマ、グローバル・ロール、またはスキーマとロールの両方にマップされます。アプリケーション・ロールに割り当てられたAzure ADユーザー、グループ、またはアプリケーションは、データベース・グローバル・スキーマ、グローバル・ロール、あるいはスキーマとロールの両方にマップされます。Oracleグローバル・スキーマは、Azure ADユーザーに排他的にマップすることもできます。Azure ADゲスト・ユーザー(組織ユーザー以外)またはAzure ADサービス・プリンシパル(アプリケーション)のみ、Azure ADアプリケーション・ロールを介してデータベース・グローバル・スキーマにマップできます。Oracleグローバル・ロールはAzureアプリケーション・ロールからのみマップでき、Azureユーザーからはマップできません。
Azure ADトークンをサポートするように更新されたツールおよびアプリケーションにより、Azure ADでユーザーを直接認証し、データベース・アクセス・トークンをOracle Databaseインスタンスに渡すことができます。SQL*Plusなどの既存のデータベース・ツールを構成して、ファイルの場所からAzure ADトークンを使用できます。このような場合、Azure ADトークンは、Microsoft PowerShellやAzure CLIなどのツールを使用して取得し、ファイルの場所に配置できます。Azure AD OAuth2
データベース・アクセス・トークンは、有効期限付きで発行されます。Oracle Databaseクライアント・ドライバは、トークンをデータベースに渡す前に、トークンの形式が有効であることと、有効期限が切れていないことを確認します。トークンのスコープはデータベースです。つまり、トークンにはそのトークンが使用されるデータベースに関する情報が含まれています。データベースAzure ADアプリ登録でAzure ADプリンシパルが割り当てられたアプリケーション・ロールは、アクセス・トークンの一部として含められます。Azure ADトークンのディレクトリの場所には、ユーザーがトークン・ファイルをその場所に書き込み、データベース・クライアントがこれらのファイルを取得するために十分な権限のみ(ユーザーによる読取りおよび書込みのみなど)を付与する必要があります。データベースへのアクセスはトークンによって許可されるため、トークンはファイル・システム内で保護される必要があります。
Azure ADユーザーは、いくつかの方法を使用してAzure ADからトークンをリクエストし、Azureログイン・ウィンドウを開いてAzure AD資格証明を入力できます。
Oracle Databaseは、次のAzure ADプリンシパルを表すトークンを受け入れます。
- Azure ADユーザー。Azure ADテナンシの登録ユーザーです
- ゲスト・ユーザー。Azure ADテナンシでゲスト・ユーザーとして登録されているユーザーです
- サービス。クライアント資格証明フロー(接続プール・ユースケース)を使用し、それ自体としてデータベースに接続する登録済アプリケーションです
Oracle Databaseでは、次のAzure AD認証フローがサポートされています。
- コード交換用証明キー(PKCE)を使用した対話型フロー(認可コード・フローとも呼ばれる)は、ブラウザを使用してクライアント環境でAzure ADに対して認証するために(アプリケーションではなく)人間のユーザーに最も一般的に使用されます
- クライアント資格証明。(エンド・ユーザーとしてではなく)それ自体として接続するデータベース・アプリケーションで使用されます
- On-Behalf-Of (OBO)。アプリケーションがログイン・ユーザーの代理としてアクセス・トークンを要求してデータベースに送信します
- リソース所有者パスワード資格証明(ROPC)。本番環境での使用は推奨されませんが、ポップアップ・ブラウザでのユーザー認証の組込みが困難なテスト環境で使用できます。ROPCでは、トークン・リクエスト・コールの一部としてAzure ADユーザー名とパスワード資格証明が必要です。
8.1.2 Oracle DatabaseとMicrosoft Azure ADの統合のアーキテクチャ
Microsoft Azure Active Directoryアクセス・トークンは、OAuth 2.0標準とその拡張に従います。
Azure ADアクセス・トークンは、データベース・クライアント(SQLPlusまたはSQLclなど)からデータベースにアクセスする前に必要です。Oracleクライアント(OCI、JDBC、ODPなど)がファイルの場所からAzure ADトークンを選択するよう構成されたり、トークンはデータベース・クライアントAPIを介してクライアントに渡されることがあります。Azureユーザーはスクリプト(例についてはMicrosoftを参照)を使用してトークンを取得し、それをデータベース・クライアントが取得できるファイルの場所に置くことができます。アプリケーションは、Azure SDKを使用してアクセス・トークンを取得し、データベース・クライアントAPIを介してそのトークンを渡すことができます。アプリケーションが直接トークンを取得できない場合は、Microsoft PowerShellやAzureコマンドライン・インタフェースなどのコマンドライン・ツールを使用して、Azure ADトークンを取得できます。
次の図は、OAuth2
トークンを使用したOAuth 2.0標準の一般的なフロー図です。サポートされている各フローの詳細は、Microsoft Azure ADドキュメントの『Authentication flow support in MSAL』を参照してください。
図8-1 対話型認可コード・フローを使用したAzure ADユーザーによるデータベースへのアクセス
「図8-1 対話型認可コード・フローを使用したAzure ADユーザーによるデータベースへのアクセス」の説明
認可コード・フローはOAuth2標準で、標準の一部として詳細に説明されています。フローには2つのステップがあります。最初のステップでは、ユーザーを認証し、認可コードを取得します。2番目のステップでは、認可コードを使用してデータベース・アクセス・トークンを取得します。
- Azure ADユーザーは、リソース、Oracle Databaseインスタンスへのアクセスをリクエストします。
- データベース・クライアントまたはアプリケーションは、Azure ADからの認可コードをリクエストします。
- Azure ADはAzure ADユーザーを認証し、認可コードを返します。
- ヘルパー・ツールまたはアプリケーションはAzure ADの認可コードを使用して、
OAuth2
トークンと交換します。 - データベース・クライアントは、
OAuth2
アクセス・トークンをOracleデータベースに送信します。トークンには、データベースのためのAzure ADアプリケーション登録でユーザーが割り当てられたデータベース・アプリケーション・ロールが含まれます。 - Oracle DatabaseインスタンスはAzure AD公開キーを使用して、アクセス・トークンがAzure ADによって作成されたことを確認します。
データベース・クライアントとデータベース・サーバーの両方を、AzureポータルのAzure Active Directoryセクションで「app registrations」機能を使用して登録する必要があります。データベース・クライアントは、Azure ADアプリケーション登録で登録する必要があります。データベース・クライアントには、データベースのアクセス・トークン取得を許可する権限も付与する必要があります。
8.1.3 Oracle DatabaseスキーマおよびロールのAzure ADユーザーのマッピング
Microsoft AzureユーザーをOracle Databaseインスタンスに対して認証するには、その前にMicrosoft AzureユーザーをOracle Databaseスキーマにマップし、(ロールを介して)必要な権限を付与しておく必要があります。
Microsoft Azureでは、Azure AD管理者は、ユーザー、グループおよびアプリケーションをデータベース・アプリケーション・ロールに割り当てることができます。
Azure ADスキーマをデータベース・スキーマに排他的にマップするには、Azure ADユーザーが組織に参加するとき、またはデータベースに対して認可されるときにデータベース管理者がデータベース・スキーマを作成する必要があります。また、データベース管理者は、Azure ADユーザーが割り当てられているタスクに合わせて、データベース・スキーマに付与されている権限およびロールを変更する必要があります。Azure ADユーザーが組織を離れた場合、データベース管理者は、使用されていないアカウントがデータベースに残らないようにデータベース・スキーマを削除する必要があります。データベース・アプリケーション・ロールを使用すると、Azure AD管理者は、グローバル・スキーマとグローバル・ロールにマップされているアプリケーション・ロールにユーザーを割り当てることによってアクセスおよびロールを制御できます。このようにして、データベースへのユーザー・アクセスはAzure AD管理者によって管理されるため、データベース管理者がすべてのユーザーのスキーマを作成、管理および削除する必要はありません。
Azure ADユーザーは、データベース・スキーマ(ユーザー)に排他的にまたはアプリケーション・ロールを介してマップできます。
- Azure ADユーザーとOracle Databaseスキーマの間の排他的マッピングの作成。このタイプのマッピングでは、Azure ADユーザーに対してデータベース・スキーマを作成する必要があります。Azure ADユーザーが必要とするデータベース権限およびロールは、データベース・スキーマに付与する必要があります。データベース・スキーマは、Azure ADユーザーがデータベースに対して認可された場合に作成するだけでなく、付与された権限およびロールをAzure ADのロールおよびタスクの変更に応じて変更する必要があります。最後に、データベース・スキーマはAzure ADユーザーが組織を離れるときに削除する必要があります。
- Azure ADアプリケーション・ロールとOracle Databaseスキーマの間の共有マッピングの作成。このタイプのマッピングは排他的マッピングよりも一般的で、アプリケーション・ロールに直接割り当てられるAzure ADユーザーか、アプリケーション・ロールに割り当てられるAzure ADグループのメンバー用です。アプリケーション・ロールは、Oracle Databaseスキーマにマップされます(共有スキーマ・マッピング)。共有スキーマ・マッピングを使用すると、複数のAzure ADユーザーが同じOracle Databaseスキーマを共有できるため、新規ユーザーが組織に加入するたびに新しいデータベース・スキーマを作成する必要はありません。この運用効率により、データベース管理者は、新規ユーザーの構成、権限とロールの更新、およびアカウントの削除を行わずに、データベース・アプリケーションのメンテナンス、パフォーマンスおよびチューニングのタスクに集中できます。
マップされたグローバル・スキーマに直接付与されるデータベース・ロールおよび権限に加えて、マップされたグローバル・ロールを介して追加のロールおよび権限を付与できます。同じ共有グローバル・スキーマにマップされている異なるAzure ADユーザーで、異なる権限およびロールが必要な場合があります。Azureアプリケーション・ロールは、Oracle Databaseグローバル・ロールにマップできます。アプリケーション・ロールに割り当てられているAzure ADユーザーまたはアプリケーション・ロールに割り当てられているAzure ADグループのメンバーであるAzure ADユーザーには、データベースへのアクセス時にOracle Databaseグローバル・ロールが付与されます。
次の図は、使用可能な様々なタイプの割当ておよびマッピングを示しています。
これらのマッピングは、次のようになります。
- Azure ADユーザーは、Oracle Databaseグローバル・スキーマ(ユーザー)に直接マップできます。
- Azure ADユーザー、Azure ADグループまたはアプリケーションはアプリケーション・ロールに割り当てられ、さらにOracle Databaseグローバル・スキーマ(ユーザー)またはグローバル・ロールのいずれかにマップされます。
8.1.4 Azure ADを使用したOracle Databaseへの接続のユースケース
Oracle Databaseでは、データベースへの接続にいくつかのユースケースをサポートしています。
- OAuth2認可コード・フロー: 人間のユーザーに対して最も一般的なフローです。クライアントは、Azure ADユーザーにAzure ADで認可コードを取得するよう指示します。このコードは、データベース・アクセス・トークンの取得に使用されます。Microsoft Azureの記事『Microsoft identity platform and OAuth 2.0 authorization code flow』を参照してください。
- リソース所有者のパスワード資格証明(ROPC): このフローは、本番サーバーではお薦めしません。ポップアップ認証ウィンドウでは動作しないテスト・ソフトウェアで使用できます。これは、非グラフィックのユーザー・インタフェース環境でユーザーの認証にポップアップ・ウィンドウを使用できない場合に使用されます。
- クライアント資格証明: このフローは、アプリケーションのデータベースへの接続に使用されます。アプリケーションはAzure ADアプリケーションの登録によって登録する必要があり、クライアントIDとクライアント・パスワードが必要です。これらのクライアント資格証明は、アプリケーションがデータベースに接続するときのAzure ADからのデータベース・アクセス・トークン取得に使用する必要があります。アプリケーションは、ファイル・システムまたはデータベース・クライアントAPIを介してトークンを渡すことができます。
- On-Behalf-Of (OBO)トークン: :Azureアプリケーションは、ログイン・ユーザーのOBOトークンをリクエストします。OBOトークンは、Azure ADユーザー・アイデンティティおよびデータベースに割り当てられたアプリケーション・ロールを持つデータベースのアクセス・トークンでもあります。これにより、Azure ADユーザーはアプリケーションではなくユーザーとしてデータベースにログインできます。Azure ADユーザーのOBOトークンをリクエストし、APIを介してデータベース・クライアントに渡すことができるのはアプリケーションのみです。
8.1.5 Oracle DatabaseでMicrosoft Azure ADアイデンティティを認証する一般的なプロセス
Azure AD OAuth2アクセス・トークンを使用してAzure ADユーザーがデータベースに接続できるように、Oracle Database管理者およびMicrosoft Azure AD管理者がロールを再生します。
一般プロセスは次のとおりです。
- Oracle Database管理者は、Oracle Database環境がMicrosoft Azure AD統合の要件を満たしていることを確認します。「Microsoft Azure AD統合のためのOracle Databaseの要件」を参照してください。
- Azure AD管理者はデータベースのAzure ADアプリケーション登録を作成し、Oracle Database管理者はデータベース・アクセス用のAzure ADトークンを使用できるようにデータベースを有効にします。
アプリケーション登録プロセスの一環として、Azure AD管理者は、Azureユーザー、グループおよびアプリケーションとOracle Databaseスキーマおよびロールの間のマッピングに使用するAzureアプリケーション・ロールを作成します。
- Oracle Database管理者は、グローバル・スキーマを作成して、Azure ADユーザー(排他的スキーマ・マッピング)またはAzureアプリケーション・ロール(共有スキーマ・マッピング)のいずれかにマップします。Azure ADユーザーまたはアプリケーションは、1つのスキーマにマップする必要があります。
- オプションで、Oracle管理者はグローバルOracle Databaseロールを作成し、Azureアプリケーション・ロールにマップします。
- Oracle Databaseインスタンスに接続するAzure ADエンド・ユーザーは、クライアント・アプリケーションをAzure ADクライアントとして登録します(Oracleデータベースを登録する方法と同様です)。
アプリケーション・クライアントがパブリックでないかぎり、Azure ADクライアントにはクライアント識別およびクライアント・シークレットがあります。アプリケーション・クライアントがパブリックの場合は、アプリケーション・クライアント識別のみが必要です。
- Azure ADエンド・ユーザー(データベース管理者でもかまいません)は、PowerShellやAzureコマンドライン・インタフェースなどのユーティリティを使用して接続し、
OAuth2
データベース・アクセス・トークンを取得して、ローカル・ファイル・ディレクトリに格納します。アプリケーションは、Azure ADから直接Azure ADOAuth2
アクセス・トークンをリクエストし、データベース・クライアントAPIを介して渡すこともできます。Azure ADOAuth2
トークンの受渡しの詳細は、次のOracle Databaseクライアント・ドキュメントを参照してください。- JDBCシン・クライアント: 『Oracle Database JDBC開発者ガイド』
- Oracle Call Interface (OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』
- Oracle Data Provider for .NET (ODP): 『Oracle Data Provider for .NET開発者ガイドfor Microsoft Windows』のOracle Databaseへの接続に関する項
- Oracle Databaseインスタンスに接続すると、Azure ADエンド・ユーザーは必要に応じてデータベース操作を実行します。
8.2 Microsoft Azure AD統合のためのOracle Databaseの構成
Oracle DatabaseインスタンスとのMicrosoft Azure AD統合では、データベースをAzure ADに登録する必要があります。
- Microsoft Azure AD統合のためのOracle Databaseの要件
Microsoft Azure ADを使用してOracle Databaseインスタンスを構成するには、その前に環境が特別な要件を満たしていることを確認する必要があります。 - Oracle DatabaseインスタンスのMicrosoft Azure ADテナンシへの登録
Azure AD管理者権限を持つユーザーは、Microsoft Azure ADを使用して、Oracle DatabaseインスタンスをMicrosoft Azure ADテナンシに登録します。 - Microsoft Azure AD v2アクセス・トークンの有効化
Oracle Databaseでは、v1およびv2 Azure ADOAuth2
アクセス・トークンとの統合がサポートされています。 - Microsoft Azure ADでのアプリケーション・ロールの管理
Azure ADでは、Azure ADユーザーおよびグループに割り当てられ、Oracle Databaseのグローバル・スキーマおよびロールにもマップされるアプリケーション・ロールを作成および管理できます。 - Oracle DatabaseでのAzure AD外部認証の有効化
Oracle DatabaseでのMicrosoft Azure AD外部認証を有効にする必要があります。 - Oracle DatabaseのAzure AD外部認証の無効化
Oracle DatabaseインスタンスのAzure AD外部認証を無効にするには、ALTER SYSTEM
文を使用する必要があります。
8.2.1 Microsoft Azure AD統合のためのOracle Databaseの要件
Microsoft Azure ADを使用してOracle Databaseインスタンスを構成するには、その前に環境が特別な要件を満たしていることを確認する必要があります。
次のことに注意してください。
- Oracle Databaseサーバーは、Azure AD公開キーをリクエストできる必要があります。エンタープライズ・ネットワーク接続の設定によっては、プロキシ設定の構成が必要になる場合があります。
- Azure ADトークンをリクエストする必要があるユーザーやアプリケーションは、Azure ADへのネットワーク接続も可能である必要があります。接続のプロキシ設定を構成する必要がある場合があります。
- トークンを安全に転送するため、Oracle DatabaseクライアントとOracle Databaseサーバーの間にTransport Layer Security (TLS)を構成する必要があります。このTLS接続は、一方向または相互のいずれかです。
- 自己署名または既知の認証局によって署名されるTLSサーバー証明書を作成できます。既知の認証局(CA)によって署名された証明書を使用する利点は、データベース・クライアントが、ルート証明書を使用してローカル・ウォレットを作成および保持するのではなく、システムのデフォルト証明書ストアを使用してOracle Databaseサーバー証明書を検証できることです。これはLinuxおよびWindowsクライアントにのみ適用されることに注意してください。
8.2.2 Oracle DatabaseインスタンスのMicrosoft Azure ADテナンシへの登録
Azure AD管理者権限を持つユーザーは、Microsoft Azure ADを使用して、Oracle DatabaseインスタンスをMicrosoft Azure ADテナンシに登録します。
8.2.3 Microsoft Azure AD v2アクセス・トークンの有効化
Oracle Databaseでは、v1およびv2 Azure AD OAuth2
アクセス・トークンとの統合がサポートされています。
OAuth2
アクセス・トークンを使用すると、資格証明フローは変更なしで以前と同様に引き続き機能します。ただし、対話型フローでv2トークンを使用する場合は、upn:
クレームを追加する必要があります。
- 使用しているAzure ADアクセス・トークンのバージョンを確認します。
- Microsoft Azureポータルにログインします。
- 「Azure Active Directory」を検索して選択します。
- 「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 Azure ADでのアプリケーション・ロールの管理
Azure ADでは、Azure ADユーザーおよびグループに割り当てられ、Oracle Databaseのグローバル・スキーマおよびロールにもマップされるアプリケーション・ロールを作成および管理できます。
- Microsoft Azure ADアプリケーション・ロールの作成
データベースに接続する必要のあるAzure ADユーザー、グループおよびアプリケーションは、データベース・アプリケーション・ロールに割り当てられます。 - Microsoft Azure ADアプリケーション・ロールへのユーザーおよびグループの割当て
Microsoft Azure ADユーザーがOracleデータベースにアクセスするためには、その前に、Oracle Databaseスキーマ・ユーザーまたはロールにマップされるアプリケーション・ロールにMicrosoft Azure ADユーザーを割り当てておく必要があります。 - アプリケーション・ロールへのアプリケーションの割当て
クライアント資格証明フローを使用してデータベースに接続する必要のあるアプリケーションは、アプリケーション・ロールに割り当てる必要があります。
8.2.4.1 Microsoft Azure ADアプリケーション・ロールの作成
データベースに接続する必要のあるAzure ADユーザー、グループおよびアプリケーションは、データベース・アプリケーション・ロールに割り当てられます。
8.2.4.2 Microsoft Azure ADアプリケーション・ロールへのユーザーおよびグループの割当て
Microsoft Azure ADユーザーがOracleデータベースにアクセスするためには、その前に、Oracle Databaseスキーマ・ユーザーまたはロールにマップされるアプリケーション・ロールにMicrosoft Azure ADユーザーを割り当てておく必要があります。
- Azure ADユーザーおよびグループをアプリケーション・ロールに割り当てる権限を持つ管理者としてAzure ADにログインします。
- エンタープライズ・アプリケーションで、作成した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に対するAzure AD外部認証の有効化
Oracle DatabaseでのMicrosoft Azure AD外部認証を有効にする必要があります。
Azure AD外部認証のためのOracle Databaseの有効化の詳細は、オンプレミス(非クラウド)のOracleデータベースに関してこのドキュメントで説明する情報に加え、次のプラットフォーム固有のドキュメントを参照してください。
8.2.6 Oracle Databaseに対するAzure AD外部認証の無効化
Oracle DatabaseインスタンスのAzure AD外部認証を無効にするには、ALTER SYSTEM
文を使用する必要があります。
Oracle Autonomous Database ServerlessからAzure ADを無効にするには、Oracle Autonomous Database Serverlessの使用を参照してください。次の手順は、他のすべてのプラットフォームに適用されます。
8.3 Oracle Databaseスキーマおよびロールのマッピング
Azure ADユーザーは、1つのデータベース・スキーマにマップされ、オプションで1つ以上のデータベース・ロールにマップされます。
- Oracle DatabaseスキーマのMicrosoft Azure ADユーザーへの排他的マッピング
Oracle DatabaseスキーマをMicrosoft Azure ADユーザーに排他的にマップできます。 - 共有Oracleスキーマのアプリケーション・ロールへのマッピング
このマッピングでは、Oracleスキーマがアプリケーション・ロールにマップされます。したがって、そのアプリケーション・ロールを持つすべてのユーザーが同じ共有スキーマを取得します。 - アプリケーション・ロールへのOracle Databaseグローバル・ロールのマッピング
Azureアプリケーション・ロールにマップされるOracle Databaseグローバル・ロールは、Azureユーザーおよびアプリケーションに、ログイン・スキーマを介して付与されている権限およびロールに加え、さらに権限およびロールを付与します。
8.3.1 Oracle DatabaseスキーマのMicrosoft Azure ADユーザーへの排他的マッピング
Oracle DatabaseスキーマをMicrosoft Azure ADユーザーに排他的にマップできます。
8.3.2 共有Oracleスキーマのアプリケーション・ロールへのマッピング
このマッピングでは、Oracleスキーマがアプリケーション・ロールにマップされます。したがって、そのアプリケーション・ロールを持つすべてのユーザーが同じ共有スキーマを取得します。
8.4 Oracle DatabaseへのAzure ADクライアント接続の構成
Azure AD登録済データベースに接続するようにクライアント接続を構成できます
- Azure ADへのクライアント接続の構成について
Azure ADトークンを使用してOracle Databaseインスタンスに接続するようにクライアントを構成するには、様々な方法があります。 - Azure AD接続でサポートされるクライアント・ドライバ
Oracle Databaseは、Azure AD接続用の複数のタイプのクライアント・ドライバをサポートしています。 - ネット・ネーミングおよびシークレットのための集中管理されたOracle Cloud Infrastructureサービスの使用
Oracle Cloud Infrastructure (OCI)オブジェクト・ストアおよびボールトを使用して、ネット名とシークレットを一元的に格納できます。 - PowerShellでのSQL*PlusクライアントからOracle Databaseへの接続の操作フロー
Azureユーザー、Azure ADおよびOracleデータベースの間の接続では、これらのコンポーネントを通じたOAuth2
トークンの受渡しが利用されます。 - Azure ADアプリ登録によるクライアントの登録
このタイプの登録は、Azure ADアプリ登録によるOracle Databaseの登録と同様に行われます。 - Azure AD OAuth2トークンの取得の例
これらの例は、Azure ADOAuth2
トークンを取得する様々な方法を示しています。 - Azure ADアクセス・トークン用のSQL*Plusの構成
特定の場所からAzure ADデータベース・アクセス・トークンを取得し、/
スラッシュ・ログインが使用されるときにそのトークンを使用するように、SQL*Plusを構成する必要があります。 - データベースがインターネットに接続するためのネットワーク・プロキシの作成
このネットワーク・プロキシを使用すると、OracleデータベースはAzure ADエンドポイントに到達できるようになります。 - クライアントによるAzureトークンの直接取得の有効化
クライアント自身によるAzureトークンの直接取得を有効にするパラメータを設定できます。
8.4.1 Azure ADへのクライアント接続の構成について
Azure ADトークンを使用してOracle Databaseインスタンスに接続するようにクライアントを構成するには、様々な方法があります。
環境に最も適したクライアント接続方法を選択してください。このガイドでは、Azure AD OAuth2アクセス・トークンを取得する様々な方法を使用してSQL*Plusを接続する例を紹介します。すべてのOracle Databaseリリース19cクライアントで、ファイルとして渡されるトークンを受け入れることができます。JDBC Thin、Instant ClientおよびODP.netドライバは、データベース・クライアントAPIを介してアプリケーションからのトークンも受け入れます。SQL*PlusなどのOracle Databaseツールではトークンを直接取得できないため、PowerShellやAzure CLIなどのツールを使用してAzure AD OAuth2
アクセス・トークンを取得する必要があります。Azure ADトークンを取得するには、Azure ADアプリ登録プロセスによってクライアントを登録する必要があります。このクライアントの登録は、アプリ登録を使用したOracle DatabaseサーバーのAzure ADへの登録と同様に行われます。データベースとクライアントの両方をAzure ADに登録する必要があります。
データベースを登録する必要があるのは、クライアントがデータベースのアクセス・トークンを取得する権限を取得できるようにするためです。クライアントを登録する必要があるのは、Azure ADが信頼できるクライアントがアクセス・トークンをリクエストしていることを認識できるようにするためです。
クライアントをAzure ADに接続する方法の詳細は、次のMicrosoft Azureの記事を参照してください。
8.4.2 Azure AD接続でサポートされるクライアント・ドライバ
Oracle Databaseは、Azure AD接続用の複数のタイプのクライアント・ドライバをサポートしています。
- JDBC Thin: Oracle Database 19.16 (2022年7月)、Oracle Database 21.8 (2022年10月)
- OCI (Cドライバ): Oracle Database 19.16 (2022年7月)
- OCIベースのOracle Instant Client
- Oracle Data Provider (コア): Oracle Database 19.16、Oracle Database 21.7
- Oracle Data Provider (管理対象外): OCIベース
- Oracle Data Provider (管理対象): Oracle Database 19.16、Oracle Database 21.7
- OCIベースのその他のドライバは、OCI互換性を採用しています
8.4.3 ネット・ネーミングおよびシークレットのための集中管理されたOracle Cloud Infrastructureサービスの使用
Oracle Cloud Infrastructure (OCI)オブジェクト・ストアおよびボールトを使用して、ネット名とシークレットを一元的に格納できます。
この機能は現在、JDBCシン・ドライバおよび.NETシン・ドライバでサポートされています。
次のガイドを参照してください:
8.4.4 PowerShellでのSQL*PlusクライアントからOracle Databaseへの接続の操作フロー
Azureユーザー、Azure ADおよびOracleデータベースの間の接続では、これらのコンポーネントを通じたOAuth2
トークンの受渡しが利用されます。
この例では、パブリック・クライアントでのリソース所有者パスワード資格証明(ROPC)フローの使用を示します。ROPCの詳細は、Microsoft Azureの記事『Microsoft identity platform and OAuth 2.0 Resource Owner Password Credentials』を参照してください。
- AzureユーザーがPowerShellでデータベースのAzure ADアクセス・トークンをリクエストし、返されたトークンが、特定のファイルの場所で
token
というファイルに書き込まれます。 - Azureユーザーは、
/
スラッシュ・ログインを使用してデータベースに接続します。sqlnet.ora
またはtnsnames.ora
のいずれかの接続文字列からInstant Clientに、Azure ADOAuth2
トークンが必要であり、指定されたファイルの場所からこのトークンを取得するよう指示されます。アクセス・トークンがデータベースに送信されます。 - データベースは、(Azure AD公開キーを使用して)アクセス・トークンがAzure ADから取得されたことを確認し、トークンに追加のクレームがないかチェックします。
- データベースがスキーマ・マッピング(排他的または共有)を検出し、セッションを作成します。データベースは、Azureユーザーにアプリケーション・ロールによっても割り当てられている、すべてのグローバル・ロールも付与します。
8.4.5 Azure ADアプリ登録によるクライアントの登録
このタイプの登録は、Azure ADアプリ登録によるOracle Databaseの登録と同様に行われます。
- 機密およびパブリック・クライアント登録
ユースケースに応じて、データベース・クライアントを機密またはパブリックとしてAzureに登録できます。 - Azure ADへのデータベース・クライアント・アプリケーションの登録
クライアント・アプリ登録の作成は、Microsoft Azure ADテナンシを使用してOracle Databaseインスタンスを作成する場合と同様に行われます。
8.4.5.1 機密およびパブリック・クライアント登録
ユースケースに応じて、データベース・クライアントを機密またはパブリックとしてAzureに登録できます。
認証フローおよびアプリケーション・シナリオの詳細は、Microsoft Azureの記事『Authentication flows and application scenarios』を参照してください。
機密クライアント・アプリケーションを登録する場合、クライアントにはクライアントIDに加えてシークレットが必要です。機密クライアント・アプリケーションは、Azure ADリクエストを行うときにクライアントIDとシークレットの両方を使用します。ただし、企業においてSQL*PlusおよびSQLclのすべてのユーザーが独自のシークレットを持つ個別のアプリ登録を作成することは実用的ではありません。また、組織内でシークレットを共有し始めると、シークレットはもはやシークレットではなくなります。パブリック・クライアント・アプリケーションのみを作成するほうがはるかに有用です。パブリック・クライアント・アプリケーションはシークレットを持たず、クライアントIDのみを持ちます。すべてのデータベース・ツール・ユーザーは、Azure ADに接続するときにパブリック・クライアントIDを使用して、アクセス・トークンを取得できます。その場合もAzure ADユーザーは、自分のユーザー資格証明を使用してAzure ADに対して認証される必要があります。
8.4.6 Azure AD OAuth2トークンの取得の例
次の例では、Azure AD OAuth2
トークンを取得するための様々な方法を示します。
- 例: PowerShellで、リソース所有者のパスワード資格証明を使用してトークンを取得する
この例では、PowerShellで、リソース所有者のパスワード資格証明(ROPC)を使用してAzure ADアクセス・トークンを取得する方法を示します。 - 例: Microsoft Authentication LibraryでPythonを使用して、認可フローを使用する
Microsoft Authentication Library (MSAL)を使用したこの例はPythonで作成されているため、PowerShellやLinuxなどの様々なプラットフォームで実行できます。 - 例: リソース所有者パスワード資格証明フローでCurlを使用する
この例では、パブリックAzure ADクライアントでリソース所有者パスワード資格証明(ROPC)フローを使用して、Azure AD APIに対してcurl
コマンドを使用する方法を示します。 - 例: Azure CLIを使用した認可フロー
この例では、Azure CLIを使用してアクセス・トークンを取得し、取得したトークンをファイルに書き込む方法を示します。
8.4.6.1 例: PowerShellで、リソース所有者のパスワード資格証明を使用してトークンを取得する
この例では、PowerShellで、リソース所有者のパスワード資格証明(ROPC)を使用してAzure ADアクセス・トークンを取得する方法を示します。
OAuth2
アクセス・トークンを取得するには、PowerShellからRESTコールを実行します。この構成には、Oracle DatabaseインスタンスをAzure ADに登録したときに生成された、またはユーザーが指定した複数の値が必要です。
OAuth2
アクセス・トークンが取得され、ファイルとして格納されました。次のステップでは、SQL*Plusクライアントがストア・アクセス・トークンを使用し、それをデータベースに送信できるようにします。
親トピック: Azure AD OAuth2トークンの取得の例
8.4.6.2 例: Microsoft Authentication LibraryでPythonを使用して、認可フローを使用する
Microsoft Authentication Library (MSAL)を使用したこの例はPythonで作成されているため、PowerShellやLinuxなどの様々なプラットフォームで実行できます。
OAuth2
認可フローが必要です。認可フローではAzure ADへのラウンド・トリップが2回必要であるため、MSALを使用して処理することをお薦めします。MSALでPythonスクリプトを使用する方法は、Microsoftの記事『Get Azure AD tokens by using the Microsoft Authentication Library』を参照してください。これらの手順はDatabricksサービス用ですが、Databricksスコープではなく、データベース・アプリケーションIDのURIとスコープにスコープを変更します。
親トピック: Azure AD OAuth2トークンの取得の例
8.4.6.3 例: リソース所有者パスワード資格証明フローでCurlを使用する
この例では、パブリックAzure ADクライアントでリソース所有者パスワード資格証明(ROPC)フローを使用してAzure AD APIに対してcurl
コマンドを使用する方法を示します。
親トピック: Azure AD OAuth2トークンの取得の例
8.4.6.4 例: Azure CLIを使用した認可フロー
この例では、Azure CLIを使用してアクセス・トークンを取得し、取得したトークンをファイルに書き込む方法を示します。
親トピック: Azure AD OAuth2トークンの取得の例
8.4.7 Azure ADアクセス・トークン用のSQL*Plusの構成
特定の場所からAzure ADデータベース・アクセス・トークンを取得し、/
スラッシュ・ログインが使用されるときにそのトークンを使用するように、SQL*Plusを構成する必要があります。
OAuth2
トークンを使用できます。Azure ADトークンにはデフォルトの場所がないため、この場所を指定する必要があります。
TOKEN_AUTH
およびTOKEN_LOCATION
パラメータは、tnsnames.ora
およびsqlnet.ora
で指定できます。tnsnames.ora
接続文字列内のTOKEN_AUTH
およびTOKEN_LOCATION
値は、その接続の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="/test/oracle/aad-token"))
TOKEN_AUTH
およびTOKEN_LOCATION
パラメータによって接続文字列を更新したら、AzureユーザーはSQL*Plusを起動する次のコマンドを実行して、Oracle Databaseインスタンスにログインできます。接続記述子自体を含めるか、tnsnames.ora
ファイルからの記述子の名前を使用できます。
connect /@exampledb_high
または、接続文字列を使用できます。たとえば:
connect /@(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="/test/oracle/aad-token")
TOKEN_AUTH
はsqlnet.ora
ファイルまたは接続文字列のいずれかによってすでに設定されているため、データベース・クライアントはAzure OAuth2
トークンを取得するようにすでに構成されています。データベース・クライアントはOAuth2
トークンを取得し、そのトークンをOracle Databaseインスタンスに送信します。
8.4.8 データベースがインターネットに接続するためのネットワーク・プロキシの作成
このネットワーク・プロキシを使用すると、OracleデータベースはAzure ADエンドポイントに到達できるようになります。
- インターネットに接続するためのデータベースのネットワーク・プロキシの作成について
OracleデータベースはAzure ADエンドポイントに接続する必要があり、ネットワーク構成およびデフォルトのトラスト・ストア・アクセスが必要になる場合があります。 - Azureエンドポイントのアクセシビリティのテスト
Oracle DatabaseインスタンスがAzure ADエンドポイントにアクセスできることを確認する必要があります。 - デフォルトのOracle Database環境用のネットワーク・プロキシの作成
ネットワーク・プロキシを作成するには、環境変数を設定してからリスナーを再起動する必要があります。 - Oracle Real Application Clusters環境用のネットワーク・プロキシの作成
ネットワーク・プロキシを作成するには、環境変数を設定してからデータベースを再起動する必要があります。 - Windowsレジストリ・エディタでのネットワーク・プロキシの作成
Windows環境でネットワーク・プロキシを作成するには、レジストリ・エディタ(regedit
)を更新する必要があります。
8.4.8.1 データベースがインターネットに接続するためのネットワーク・プロキシの作成について
OracleデータベースはAzure ADエンドポイントに接続する必要があり、ネットワーク構成およびデフォルトのトラスト・ストア・アクセスが必要になる場合があります。
企業内にHTTPネットワーク・プロキシが配置されている場合、デフォルトのOracle Database環境およびOracle Real Applications Clusters環境に対してデータベースを構成できます。データベースは、Azure ADへのTransport Layer Security (TLS)リンクを確立するため、データベース・サーバー上のデフォルトのトラスト・ストアへのアクセスも必要です。これを有効にするには、データベース・サーバーがシステムのデフォルトの証明書ストアにアクセスできることを確認します。
8.4.8.2 Azureエンドポイントのアクセシビリティのテスト
Oracle DatabaseインスタンスがAzure ADエンドポイントにアクセスできることを確認する必要があります。
OAuth2
トークンを受け入れるには、データベースがAzure ADエンドポイントから公開キーをリクエストする必要があります。
HTTP_PROXY
パッケージを設定する必要があります。デフォルトのOracle Database環境を使用しているか、Oracle Real Application Clusters RAC環境を使用しているかに応じて、「関連トピック」にリストされているトピックを確認します。ネットワーク管理者は、正しいHTTP_PROXY
設定を通知できる必要があります。
8.4.8.3 デフォルトのOracle Database環境用のネットワーク・プロキシの作成
ネットワーク・プロキシを作成するには、環境変数を設定してからリスナーを再起動する必要があります。
8.4.8.4 Oracle Real Application Clusters環境用のネットワーク・プロキシの作成
ネットワーク・プロキシを作成するには、環境変数を設定してからデータベースを再起動する必要があります。
8.4.9 クライアントによるAzureトークンの直接取得の有効化
クライアント自身がAzureトークンを直接取得できるようにパラメータを設定できます。
この機能は、JDBCシン・クライアント、ODP.NET CoreクラスまたはODP.NET管理対象ドライバ・クラスを使用する環境で使用できます。これにより、クライアントは、次の方法を使用して認証リクエストをユーザーに表示できます。
- ユーザーがWebアプリケーションを使用している場合、ユーザーの認証を求める認証リクエストがダイアログ・ボックスに表示されます。
- ユーザーがコマンドライン・シェルで作業している場合、認証リクエストはプロンプトとして表示されます。
これらの認証リクエスト・タイプのいずれかでこの機能を有効にするには、クライアントのsqlnet.ora
ファイルまたは接続文字列で次のパラメータを設定する必要があります。接続文字列はsqlnet.ora
よりも優先されます。
表8-1 トークンを直接取得するパラメータ
パラメータ | 説明 |
---|---|
|
トークン認証を設定します。次のいずれかの値を入力します。
|
|
アプリケーションが登録されたときにAzure ADによってアプリケーションに割り当てられた、一意のアプリケーション(クライアント) ID。このアプリケーションは、ユーザーのためにデータベースのアクセス・トークン取得をリクエストするデータベース・クライアントです。 |
|
アプリケーションID URIは、Azure AD内のアプリケーションを一意に識別するURIです。この値は、データベースのAzure ADアプリケーション登録の概要画面から取得します。 |
|
データベースのAzureテナンシIDを指定します。 |
8.5 Microsoft Azure ADプロキシ認証の構成
プロキシ認証により、Azure ADユーザーは、アプリケーションのメンテナンスなどのタスクのためにデータベース・スキーマにプロキシできます。
- Microsoft Azure ADプロキシ認証の構成について
Azureユーザーは、プロキシ認証を使用してOracle Autonomous Databaseに接続できます。 - Azure ADユーザーのためのプロキシ認証の構成
Azure ADユーザーのプロキシ認証を構成するには、このユーザーがグローバル・スキーマへのマッピング(排他的マッピングまたは共有マッピング)をすでに持っている必要があります。Azure ADユーザーがプロキシする別のデータベース・スキーマも使用可能になっている必要があります。 - Azure ADユーザー・プロキシ認証の検証
Azure ADユーザー・プロキシ構成でトークン認証を検証できます。
8.5.1 Microsoft Azure ADプロキシ認証の構成について
Azureユーザーはプロキシ認証を使用して、Oracle Autonomous Databaseに接続できます。
プロキシ認証は、通常、実際のユーザーを認証し、アプリケーションを管理するためにスキーマ権限およびロールを含むデータベース・スキーマの使用をユーザーに認可するために使用されます。アプリケーション・スキーマ・パスワードの共有などの代替方法は、安全でないものとみなされ、どの実際のユーザーがアクションを実行したかを監査できません。
たとえば、アプリケーション・データベース管理者である名前付きAzure ADユーザーが資格証明を使用して認証し、データベース・スキーマ・ユーザー(hrapp
など)にプロキシできる環境でのユースケースが考えられます。この認証により、Azure AD管理者は、アプリケーションのメンテナンスを実行するためにhrapp
権限およびロールをユーザーhrapp
として使用できますが、認証にはAzure AD資格証明を使用します。アプリケーション・データベース管理者は、データベースにサインインし、アプリケーション・スキーマにプロキシしてこのスキーマを管理できます。
親トピック: Microsoft Azure ADプロキシ認証の構成
8.5.2 プロキシ認証のためのAzure ADユーザーの構成
Azure ADユーザーのプロキシ認証を構成するには、このユーザーがすでにグローバル・スキーマへのマッピング(排他的マッピングまたは共有マッピング)を持っている必要があります。Azure ADユーザーがプロキシする別のデータベース・スキーマも使用可能になっている必要があります。
CONNECT [hrapp]/@connect_string
親トピック: Microsoft Azure ADプロキシ認証の構成
8.6 Microsoft Azure AD接続のトラブルシューティング
トレース・ファイルを使用して、Microsoft Azure AD接続の問題を診断できます。ORA-12599
およびORA-03114
エラーを簡単に修正することもできます。
- Azure ADとのOracle Databaseクライアント接続をトラブルシューティングするためのトレース・ファイル
トレース・ファイルを使用して、Microsoft Azure ADを使用したOracle Database統合をトラブルシューティングできます。 - トークンを使用してデータベースにアクセスしようとしたときに発生するORA-12599およびORA-03114エラー
ORA-12599: 「TNS: 暗号チェックサムの不一致が発生しました」
エラーおよびORA-03114: 「Oracleに接続されていません。」
エラーは、接続しようとしているデータベースがネイティブ・ネットワーク暗号化によって保護されていることを示しています。 - Azure ADアクセス・トークンのバージョンの確認
JSON WebトークンのWebサイトを使用すると、サイトで使用されているMicrosoft Azure ADアクセス・トークンのバージョンを確認できます。
8.6.1 Oracle DatabaseクライアントとAzure ADの接続をトラブルシューティングするためのトレース・ファイル
トレース・ファイルを使用して、Oracle DatabaseとMicrosoft Azure ADの統合に関してトラブルシューティングできます。
- 接続のトラブルシューティングに使用されるトレース・ファイルについて
クライアント側でMicrosoft Azure AD接続をトラブルシューティングするために、2つのレベルのトレース・ファイルを生成できます。 - トークン認証のクライアント・トレースの設定
クライアント側のsqlnet.ora
ファイルにEVENT
設定を追加して、クライアント・トレースを制御できます。
8.6.1.1 接続のトラブルシューティングに使用するトレース・ファイルについて
クライアント側でMicrosoft Azure AD接続をトラブルシューティングするために、2つのレベルのトレース・ファイルを生成できます。
生成できるトレース・ファイルの2つのレベルは次のとおりです。
- 低レベル・トレースでは、エラーの発生時にトレースが出力されます。
- TCPSがAzure AD接続用に設定されていない場合は、プロトコルがTCPSである必要があるというメッセージが出力されます。
SSL_SERVER_DN_MATCH
がTRUE
に設定されていない場合は、値がFALSE
であるというメッセージが出力されます。TOKEN_LOCATION
が指定されていない場合は、トークンの場所が存在しないというメッセージが出力されます。- 指定された
TOKEN_LOCATION
にトークンが存在しない場合は、メッセージが出力されます。 -
OCI_ATTR_TOKEN_ISBEARER
をtrueに設定せずにアプリケーションがトークンを渡した場合、欠落している属性についてのメッセージが出力されます。 - アプリケーションが
OCI_ATTR_TOKEN_ISBEARER
をTRUE
に設定し、トークンを渡さなかった場合、欠落している属性についてのメッセージが出力されます。 - トークンが期限切れの場合は、メッセージが出力されます。
- 高レベル・トレースでは、前述のようにエラーの発生時にトレースが出力されます。さらに、次のように、成功時にトレースが出力されます。
SSL_SERVER_DN_MATCH
が存在する場所(tnsnames.ora
またはsqlnet.ora
)が出力されます。また、TRUE
に設定されている場合は、TRUE
の値が出力されます。- アプリケーションでトークンと
OCI_ATTR_TOKEN_ISBEARER=true
の両方が設定されている場合は、メッセージが出力されます。 -
TOKEN_AUTH
に、正しい値OAUTH
が設定されている場合は、その値が出力されます。 - トークンが期限切れでない場合は、メッセージが出力されます。
8.6.2 トークンを使用してデータベースにアクセスしようとしたときにORA-12599およびORA-03114エラーが発生する
ORA-12599: 「TNS: 暗号チェックサムの不一致が発生しました」
エラーおよびORA-03114: 「Oracleに接続されていません。」
エラーは、接続しようとしているデータベースがネイティブ・ネットワーク暗号化によって保護されていることを示します。
トークンを使用してOracleデータベースにアクセスする場合は、ネットワーク・ネイティブ暗号化ではなくTransport Layer Security (TLS)接続を確立する必要があります。これらのエラーを修正するには、TLSがデータベースに対して適切に構成されていることを確認してください。ローカル・データベースのユーザー名とパスワードを使用して構成をテストし、次のSYSCONTEXT USERENV
パラメータを確認する必要があります。
-
NETWORK_PROTOCOL
-
TLS_VERSION
8.6.3 Azure ADアクセス・トークンのバージョンの確認
JSON WebトークンのWebサイトを使用すると、サイトで使用されているMicrosoft Azure ADアクセス・トークンのバージョンを確認できます。