IAM統合を使用したデータベース・クロステナンシへのアクセス
両方のテナンシのポリシーで許可されている場合、あるテナンシのユーザーおよびグループは別のテナンシのAutonomous Databaseインスタンスにアクセスできます。
- DBaaSインスタンスへのIAMユーザーのクロステナンシ・アクセスについて
Oracle Cloud Infrastructure (OCI) DBaaSインスタンスへのクロステナンシ・アクセスは、単一のテナンシ・シナリオと似ていますが、マッピングおよびトークン・リクエストにはテナンシ情報が必要であり、このクロステナンシ・データベース・リソース・アクセスを許可するには両方のテナンシでポリシーが必要であることを除きます。 - ポリシーの構成
クロステナンシ・データベース・アクセスを許可するには、ユーザー・テナンシとデータベース・リソース・テナンシの両方にポリシーを作成する必要があります。 - 別のテナンシのユーザーおよびグループへのデータベース・スキーマおよびロールのマッピング
このタイプのマッピングを実行する場合は、テナンシOCIDをマッピング情報に追加して、データベースがクロステナンシ・アクセスであることを認識できるようにする必要があります。 - クロステナンシ・アクセス用のデータベース・クライアントの構成
一部のデータベース・クライアントを直接構成できます。 - OCIコマンドライン・インタフェースを使用したクロステナンシ・トークンのリクエスト
クロステナンシ・リクエストのdb-token
を取得するには、Oracle Cloud Infrastructure (OCI)コマンドライン・インタフェース・コマンドに--scope
パラメータを追加する必要があります。アクセスしているデータベースがユーザー・テナンシのホーム・リージョンとは異なるリージョンにある場合は、--regionパラメータを使用してOCI CLIコマンドにもリージョンを追加する必要があります。
DBaaSインスタンスへのIAMユーザーのクロステナンシ・アクセスについて
Oracle Cloud Infrastructure (OCI) DBaaSインスタンスへのクロステナンシ・アクセスは、単一のテナンシのシナリオに似ていますが、マッピングおよびトークン・リクエストにはテナンシ情報が必要であり、このクロス・テナンシ・データベース・リソース・アクセスを許可するには両方のテナンシでポリシーが必要であることを除きます。
次の図は、OCI DBaaSインスタンスへのクロステナンシ・アクセスのプロセスを示しています。
図3-1 OCI DBaaSインスタンスへのクロステナンシ・アクセス
クロステナンシ・プロセスは次のとおりです。
- ポリシーは、両方のテナンシでクロス・テナンシへのアクセスを承認および許可するために必要です。
- IAMプリンシパル(ユーザーまたはアプリケーション)は、クロステナンシ・リソースのdb-tokenをリクエストします。
db-token
が返され、別のテナンシのデータベースへのアクセスに使用されます- データベースは、ユーザーのグループに対するクロステナンシ・グループ問合せを行い、プリンシパルをグローバル・スキーマおよびオプションのグローバル・ロールにマップします。
データベースが存在するリージョンと同じリージョンにユーザー・テナンシをサブスクライブする必要があります。たとえば、データベース・テナンシのデータベースがPHX
およびIAD
リージョンにある場合、ユーザー・テナンシをこれらのリージョンにサブスクライブする必要があります。これはホーム・リージョンではなく、ユーザー・テナンシの追加のサブスクライブ済リージョンのみです。
ポリシーの構成
クロステナンシ・データベース・アクセスを許可するには、ユーザー・テナンシとデータベース・リソース・テナンシの両方にポリシーを作成する必要があります。
- ソース・ユーザー・テナンシの構成
ユーザー・テナンシでクロステナンシ・アクセスを許可するには、2つのポリシーが必要です。 - ターゲット・データベース・リソース・テナンシの構成
データベース・テナンシには、ユーザー・テナンシからユーザーにアクセスできるようにする照合ポリシーと、ユーザー・テナンシ内のグループ情報を問い合せる独自のデータベースを許可する必要があります - クロステナンシ・アクセスのポリシーの例
例としては、クロステナンシ構成を絞り込むためのWHERE
句の使用、およびこのタイプの構成を実行するその他の方法があります。
ソース・ユーザー・テナンシの構成
ユーザー・テナンシでクロステナンシ・アクセスを許可するには、2つのポリシーが必要です。
親トピック: ポリシーの構成
ターゲット・データベース・リソース・テナンシの構成
データベース・テナンシには、ユーザー・テナンシからのユーザーへのアクセスを有効にする照合ポリシーと、ユーザー・テナンシ内のグループ情報を問い合せる独自のデータベースを許可するポリシーが必要です
any-user
makes it easy to understand the required policies, Oracle recommends that you use stronger constraints in addition to or instead of using any-user
. The any-user
option will allow any principal or resource to query user groups in the user_tenancy
. Ideally, you should limit this to just allowing the database resources (resource principals) to make the group queries. You can do this by adding a WHERE
clause to the policies or by adding a dynamic group that limits it to the members of the dynamic group. Defining every possible way to specify dynamic groups and policies is outside the scope of this topic. You can find more information from these sources:
親トピック: ポリシーの構成
クロステナンシ・アクセスのポリシーの例
たとえば、WHERE
句を使用してクロステナンシ構成を絞り込むことや、このタイプの構成を実行するその他の方法があります。
WHERE
句を追加して、クロステナンシ・グループ問合せの実行を許可するデータベース・リソースを制限できます。
ADMIT any-user of tenancy db_tenancy to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy where request.principal.type = 'dbsystem'
この許可ポリシーにより、db_tenancy
内の任意のベース・データベース・サービス(リソース・タイプ: dbsystem
)は、ユーザー・テナンシからユーザーのグループ情報を問い合せることができます。リソースタイプ名は次の表にあります。
ポリシーを作成する同様の方法は、Autonomous Databaseのリソース・タイプを動的グループに追加することです:
dynamic group: db_principals any {resource.type = ‘autonomousdatabase’}
この例では、any-user
のかわりに動的グループを使用します。
ADMIT dynamic group db_principals of tenancy db_tenancy to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy
resource.compartment.id
を使用して、コンパートメント内のすべてのリソース・プリンシパルを追加することもできます。ただし、これによって、他の非データベース・リソース・プリンシパルがクロステナンシ・グループ問合せを実行できる場合もあります。
親トピック: ポリシーの構成
別のテナンシのユーザーおよびグループへのデータベース・スキーマおよびロールのマッピング
このタイプのマッピングを実行する場合は、テナンシOCIDをマッピング情報に追加して、データベースがクロステナンシ・アクセスであることを認識できるようにする必要があります。
CREATE USER
文およびCREATE ROLE
文を使用するときは、完全コロンを使用してテナンシOCIDを区切ります。
クロステナンシ・アクセス用のデータベース・クライアントの構成
一部のデータベース・クライアントを直接構成できます。
データベース・テナンシは、OCI IAMからアクセス・トークンを直接取得するようにクライアントが構成されている場合、接続文字列またはsqlnet.ora
のいずれかで識別する必要があります。特定のパラメータ値(JDBC-thin、ODP.NET-core、Managed)について、クライアント固有のドキュメントを確認します。
OCIコマンドライン・インタフェースを使用したクロステナンシ・トークンのリクエスト
クロステナンシ・リクエストのdb-token
を取得するには、Oracle Cloud Infrastructure (OCI)コマンドライン・インタフェース・コマンドに--scope
パラメータを追加する必要があります。アクセスしているデータベースがユーザー・テナンシのホーム・リージョンとは異なるリージョンにある場合は、--regionパラメータを使用してOCI CLIコマンドにもリージョンを追加する必要があります。
oci get
コマンドのオプション・パラメータの使用方法の詳細は、「オプションのパラメータ」を参照してください。
テナンシ全体に対してスコープを設定することも、テナンシのコンパートメントまたはデータベースにスコープを設定することもできます。クロス・テナンシ・コンパートメントまたはデータベースをスコープ指定する場合、コンパートメントおよびデータベースOCIDsはOCI全体で一意であるため、テナンシ情報も追加する必要はありません。
特定のクライアントは、MSEIから直接トークンをリクエストできます。MSEI OAuth2
アクセス・トークンを取得するためのパラメータの設定に関するドキュメントを参照してください。