Oracle Autonomous DatabaseとMicrosoft Entra IDの統合について
Oracle Autonomous DatabaseおよびMicrosoft Entra IDは、ユーザーおよびアプリケーションがEntra ID資格証明を使用してデータベースに接続できるように構成できます。
Azureユーザーおよびアプリケーションは、Entra ID Single Sign On (SSO)資格証明を使用してログインし、データベースにアクセスできます。これは、ユーザーまたはアプリケーションが最初にEntra IDからリクエストするEntra ID OAuth2
アクセス・トークンを使用して行われます。このOAuth2
アクセス・トークンには、ユーザー・アイデンティティおよびデータベース・アクセス情報が含まれ、データベースに送信されます。マルチファクタ認証およびパスワードレス認証の構成の詳細は、Microsoftの記事「Azure Active Directoryのパスワードなし認証オプション」を参照してください。
この統合は、次のOracle Database環境で実行できます:
- オンプレミスのOracle Databaseリリース19.18以降(21cを除く)
- すべてのOracle Databaseサーバー・プラットフォーム: Linux、Windows、AIX、SolarisおよびHPUX
- Oracle Autonomous Database Serverless
- 専用Exadataインフラストラクチャ上のOracle Autonomous Database
- Exadata Cloud@Customer上のOracle Autonomous Database
- Oracle Exadata Database Service on Dedicated Infrastructure
- Oracle Exadata Database Service on Cloud@Customer
- Oracle Base Database Service
Entra IDを構成する手順は、Oracle Databaseという用語を使用してこれらの環境を網羅しています。
このタイプの統合により、AzureユーザーはOracle Autonomous Databaseインスタンスにアクセスできます。Azureユーザーおよびアプリケーションは、Entra IDシングル・サインオン(SSO)資格証明を使用してログインし、データベースに送信するEntra ID OAuth2
アクセス・トークンを取得できます。
Entra ID管理者は、Oracle Autonomous 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ユーザーからマップすることはできません。
Oracle APEX、Database Actions、Oracle Graph Studio、Oracle Database API for MongoDBなどのOracle Autonomous Databaseツールは、データベースとの接続にEntra IDトークンを使用する互換性がありません。
Entra IDトークンをサポートするように更新されたツールおよびアプリケーションは、Entra IDを使用してユーザーを直接認証し、データベース・アクセス・トークンをOracle Autonomous 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 Autonomous Databaseは、次のEntra IDプリンシパルを表すトークンを受け入れます。
- Azureユーザー(Entra IDテナンシに登録されているユーザー)
- Entra IDテナンシでゲスト・ユーザーとして登録されているゲスト・ユーザー
- サービス。これは、クライアント資格証明フローを使用してデータベースに自身で接続する登録されたアプリケーションです(接続プールのユース・ケース)
Oracle Autonomous Databaseでは、次のEntra ID認証フローがサポートされています。
- Proof Key for Code Exchange (PKCE)を使用した対話型フロー(認可コード・フローとも呼ばれます)。ブラウザを使用してクライアント環境でEntra IDを認証するために(アプリケーションではなく)ヒューマン・ユーザーによく使用されます。
- クライアント資格証明(エンド・ユーザーではなく、自身で接続するデータベース・アプリケーション用)
- On-Behalf-Of (OBO)。ログイン・ユーザーのかわりにアプリケーションがアクセス・トークンをリクエストして、データベースに送信します
- リソース所有者パスワード資格証明(ROPC)は、本番での使用には推奨されませんが、ポップアップ・ブラウザのユーザー認証を組み込むことが困難なテスト環境で使用できます。ROPCでは、Entra IDユーザー名およびパスワード資格証明がトークン・リクエスト・コールの一部である必要があります。
Microsoft Entra IDとのDBaaS統合では、管理権限(
SYSDBA
、SYSOPER
、SYSBACKUP
、SYSDG
、SYSKM
およびSYSRAC
)を持つユーザーはサポートされません。
トピック
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ドキュメントの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アプリケーション登録で登録する必要があります。データベース・クライアントには、データベースのアクセス・トークン取得を許可する権限も付与する必要があります。
Oracle DatabaseスキーマおよびロールへのAzureユーザーのマッピング
Microsoft Azureユーザーは、Oracle Databaseインスタンスに対して認証できるようになる前に、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グローバル・スキーマ(ユーザー)またはグローバル・ロールのいずれかにマップされます。
Entra IDを使用したOracle Databaseへの接続のユースケース
Oracle Databaseでは、データベースへの接続にいくつかのユースケースをサポートしています。
- OAuth2認可コード・フロー:人間のユーザーに対して最も一般的なフローです。クライアントは、AzureユーザーにEntra IDで認可コードを取得するよう指示します。このコードは、データベース・アクセス・トークンの取得に使用されます。Microsoft Azureの記事のMicrosoft IDプラットフォームとOAuth 2.0認可コード・フローを参照してください。
- リソース所有者のパスワード資格証明(ROPC):このフローは、本番サーバーではお薦めしません。ポップアップ認証ウィンドウでは動作しないテスト・ソフトウェアで使用できます。これは、非グラフィックのユーザー・インタフェース環境でユーザーの認証にポップアップ・ウィンドウを使用できない場合に使用されます。
- クライアント資格証明:このフローは、アプリケーションがデータベースに接続するために使用されます。アプリケーションはEntra IDアプリケーションの登録によって登録する必要があり、クライアントIDとクライアント・パスワードが必要です。これらのクライアント資格証明は、アプリケーションがデータベースに接続するときのEntra IDからのデータベース・アクセス・トークン取得に使用する必要があります。アプリケーションは、ファイル・システムまたはデータベース・クライアントAPIを介してトークンを渡すことができます。
- ON-BEHALF-OF (OBO)トークン: Azureアプリケーションは、ログイン・ユーザーのOBIトークンをリクエストします。OBOトークンは、Azureユーザー・アイデンティティを持つデータベースと、データベースに割り当てられたアプリケーション・ロールのアクセス・トークンでもあります。これにより、Azureユーザーは、アプリケーションではなくユーザーとしてデータベースにログインできるようになります。アプリケーションのみが、AzureユーザーのOBIトークンをリクエストし、APIを介してデータベース・クライアントに渡すことができます。