IAM統合を使用したデータベース・クロステナンシへのアクセス
あるテナンシのユーザーおよびグループは、両方のテナンシのポリシーで許可されている場合、別のテナンシのDBaaSデータベース・インスタンスにアクセスできます。
- 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インスタンスへのクロステナンシ・アクセス

「図3-1 OCI DBaaSインスタンスへのクロステナンシ・アクセス」の説明
クロステナンシ・プロセスは次のとおりです:
- ポリシーは、両方のテナンシでクロス・テナンシへのアクセスをエンドースおよび許可するために必要です。
- IAMプリンシパル(ユーザーまたはアプリケーション)は、クロステナンシ・リソースのdb-tokenをリクエストします。
db-token
が返され、別のテナンシのデータベースへのアクセスに使用されます- データベースは、ユーザーのグループに対するクロステナンシ・グループ問合せを行い、プリンシパルをグローバル・スキーマおよびオプションのグローバル・ロールにマップします。
データベースが存在するリージョンと同じリージョンにユーザー・テナンシをサブスクライブする必要があります。 たとえば、データベース・テナンシのデータベースがPHX
およびIAD
リージョンにある場合、ユーザー・テナンシをこれらのリージョンにサブスクライブする必要があります。 これはホーム・リージョンではなく、ユーザー・テナンシの追加のサブスクライブ済リージョンです。
ポリシーの構成
クロステナンシ・データベース・アクセスを許可するには、ユーザー・テナンシとデータベース・リソース・テナンシの両方にポリシーを作成する必要があります。
- ソース・ユーザー・テナンシの構成
ユーザー・テナンシでクロステナンシ・アクセスを許可するには、2つのポリシーが必要です。 - ターゲット・データベースのリソース・テナンシの構成
データベース・テナンシには、ユーザー・テナンシからのユーザーへのアクセスを有効にする照合ポリシーと、ユーザー・テナンシ内のグループ情報を問い合せる独自のデータベースを許可するポリシーが必要です - クロステナンシ・アクセスのポリシーの例
たとえば、WHERE
句を使用してクロステナンシ構成を絞り込むことや、このタイプの構成を実行するその他のメソッドがあります。
ソース・ユーザー・テナンシの構成
ユーザー・テナンシでクロステナンシ・アクセスを許可するには、2つのポリシーが必要です。
親トピック: ポリシーの構成
ターゲット・データベースのリソース・テナンシの構成
データベース・テナンシには、ユーザー・テナンシからのユーザーへのアクセスを有効にする照合ポリシーと、ユーザー・テナンシ内のグループ情報を問い合せる独自のデータベースを許可するポリシーが必要です
any-user
を使用すると、必要なポリシーを簡単に理解できますが、Oracleでは、any-user
に加えて、またはany-user
を使用するかわりに、より強力な制約を使用することをお薦めします。 any-user
オプションを使用すると、すべてのプリンシパルまたはリソースがuser_tenancy
のユーザー・グループを問い合せることができます。 理想的には、これを制限して、データベース・リソース(リソース・プリンシパル)がグループ問合せを実行できるようにする必要があります。 これを行うには、ポリシーにWHERE
句を追加するか、動的グループのメンバーに制限する動的グループを追加します。 動的グループおよびポリシーを指定する可能なすべての方法の定義は、このトピックの範囲外です。 詳細は、次のソースを参照してください:
親トピック: ポリシーの構成
クロステナンシ・アクセスのポリシーの例
たとえば、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
)。ユーザー・テナンシからユーザーのグループ情報を問い合せます。 リソース・タイプ名は次の表にあります。
同じリソース・タイプを動的グループに配置すると、同様の方法を実行できます:
dynamic group: db_principals
any {resource.type = 'dbsystem', resource.type = 'vmcluster', resource.type = 'cloudvmcluster'}
前述の例の動的グループには、Oracle Base Database Service (dbsystem
)、Oracle Exadata Cloud@Customer (vmcluster
)およびOracle Exadata Database Service (cloudvmcluster
)のデータベース・インスタンスが含まれます。
この例では、any-user
のかわりに動的グループを使用します:
ADMIT dynamic group db_principals of tenancy db_tenancy to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy
resource.compartment.id
を使用して、コンパートメント内のすべてのリソース・プリンシパルを追加することもできます。 ただし、これによって、他の非データベース・リソース・プリンシパルがクロステナンシ・グループ問合せを実行できる場合もあります。 次の表に、様々なリソース・タイプとDBaaSプラットフォーム名のマッピングを示します:
DBaaSプラットフォーム名 | リソース・タイプ名 |
---|---|
ADB-S |
|
ADB-D (OPC) |
|
Base DBS |
|
ExaCS |
|
ExaCC |
|
* 古いADBDインスタンスは、引き続きautonomousexainfrastructure
リソース・タイプを使用している可能性があります。
親トピック: ポリシーの構成
別のテナンシのユーザーおよびグループへのデータベース・スキーマおよびロールのマッピング
このタイプのマッピングを実行する場合は、テナンシ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
アクセス・トークンを取得するためのパラメータの設定に関するドキュメントを参照してください。