機械翻訳について

IAM統合を使用したデータベース・クロステナンシへのアクセス

あるテナンシのユーザーおよびグループは、両方のテナンシのポリシーで許可されている場合、別のテナンシのDBaaSデータベース・インスタンスにアクセスできます。

DBaaSインスタンスへのIAMユーザーのクロステナンシ・アクセスについて

Oracle Cloud Infrastructure (OCI) DBaaSインスタンスへのクロステナンシ・アクセスは、単一のテナンシのシナリオに似ていますが、マッピングおよびトークン・リクエストにテナンシ情報が必要であり、このクロステナンシ・データベース・リソース・アクセスを許可するために両方のテナンシでポリシーが必要である点を除きます。

次の図は、OCI DBaaSインスタンスへのクロステナンシ・アクセスのプロセスを示しています。

図3-1 OCI DBaaSインスタンスへのクロステナンシ・アクセス

図3-1の説明が続きます
「図3-1 OCI DBaaSインスタンスへのクロステナンシ・アクセス」の説明

クロステナンシ・プロセスは次のとおりです:

  1. ポリシーは、両方のテナンシでクロス・テナンシへのアクセスをエンドースおよび許可するために必要です。
  2. IAMプリンシパル(ユーザーまたはアプリケーション)は、クロステナンシ・リソースのdb-tokenをリクエストします。
  3. db-tokenが返され、別のテナンシのデータベースへのアクセスに使用されます
  4. データベースは、ユーザーのグループに対するクロステナンシ・グループ問合せを行い、プリンシパルをグローバル・スキーマおよびオプションのグローバル・ロールにマップします。

データベースが存在するリージョンと同じリージョンにユーザー・テナンシをサブスクライブする必要があります。 たとえば、データベース・テナンシのデータベースがPHXおよびIADリージョンにある場合、ユーザー・テナンシをこれらのリージョンにサブスクライブする必要があります。 これはホーム・リージョンではなく、ユーザー・テナンシの追加のサブスクライブ済リージョンです。

ポリシーの構成

クロステナンシ・データベース・アクセスを許可するには、ユーザー・テナンシとデータベース・リソース・テナンシの両方にポリシーを作成する必要があります。

ソース・ユーザー・テナンシの構成

ユーザー・テナンシでクロステナンシ・アクセスを許可するには、2つのポリシーが必要です。

最初のポリシーは、ユーザー・テナンシ・グループが別のテナンシ内のデータベースにアクセスできるようにすることです。 2番目のポリシーにより、データベース・テナンシのデータベースは、ユーザー・テナンシのグループ情報を問い合せることができます。
  1. OCIコンソールで、「アイデンティティ&セキュリティ」を選択します。
  2. 「アイデンティティ」にある「ポリシー」 を選択します
  3. 「ポリシーの作成」をクリックし、ポリシー・ビルダーで「手動エディタの表示」を選択します。
  4. DEFINE文を使用して、実際のポリシーを読みやすくします。
    たとえば:
    DEFINE tenancy database_tenancy as ocid1.tenancy.OCID
  5. テナンシdatabase_tenancyでdatabase_connectionsを使用するようにテナンシ・グループdomainA/xt_db_usersをエンドースします。
    これにより、domainAxt_db_usersグループのユーザーは、テナンシdatabase_tenancyの任意のデータベースにアクセスできます。
    ENDORSE group domainA/xt_db_users to use database-connections in tenancy database_tenancy
  6. ADMIT文を使用して、データベース・テナンシ内の任意のデータベースで、ユーザー・テナンシ内の特定のIAMユーザーのグループ情報を問い合せることを許可する許可ポリシーを作成します。
    ADMIT any-user of tenancy database_tenancy to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy

ターゲット・データベースのリソース・テナンシの構成

データベース・テナンシには、ユーザー・テナンシからのユーザーへのアクセスを有効にする照合ポリシーと、ユーザー・テナンシ内のグループ情報を問い合せる独自のデータベースを許可するポリシーが必要です

  1. OCIコンソールで、「アイデンティティ&セキュリティ」を選択します。
  2. 「アイデンティティ」にある「ポリシー」 を選択します
  3. 「ポリシーの作成」をクリックし、ポリシー・ビルダーで「手動エディタの表示」を選択します。
  4. DEFINEを使用すると、ポリシーのトラブルシューティングおよび読取りが容易になります。
    DEFINE tenancy user_tenancy as ocid1.tenancy.OCID
    DEFINE group xt_db_users as ocid1.group.defg
    
  5. ADMITを使用して、ユーザー・テナンシのエンドース・ポリシーと一致する許可ポリシーをテナンシに作成します。
    user_tenancyのユーザーがこのテナンシ内のデータベースにアクセスできるように、許可ポリシーはユーザー・テナンシのENDORSEポリシーと一致する必要があります。
    ADMIT group xt_db_users of tenancy user_tenancy to use database-connections in tenancy
  6. ユーザー・テナンシで作成された許可ポリシーと一致するエンドース・ポリシーを作成します。
    エンドース・ポリシーにより、データベース・テナンシのデータベースがuser_tenancyからグループ情報を問い合せることができます。
    ENDORSE any-user to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy user_tenancy
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_tenancydbsystem)。ユーザー・テナンシからユーザーのグループ情報を問い合せます。 リソース・タイプ名は次の表にあります。

同じリソース・タイプを動的グループに配置すると、同様の方法を実行できます:

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

autonomousdatabase

ADB-D (OPC)

cloudautonomousvmcluster*

Base DBS

dbsystem

ExaCS

cloudvmcluster

ExaCC

vmcluster

* 古いADBDインスタンスは、引き続きautonomousexainfrastructureリソース・タイプを使用している可能性があります。

別のテナンシのユーザーおよびグループへのデータベース・スキーマおよびロールのマッピング

このタイプのマッピングを実行する場合は、テナンシOCIDをマッピング情報に追加して、データベースがクロステナンシ・アクセスであることを認識できるようにする必要があります。

SQL*PlusでCREATE USER文およびCREATE ROLE文を使用する場合、完全なコロンを使用してテナンシOCIDを区切ります。
  • CREATE USER文を使用してマッピングを実行するには:
    次の例は、デフォルトおよび非デフォルト・ドメインのプリンシパルおよびグループとの排他スキーマおよび共有スキーマ・マッピングを示しています。 デフォルト・ドメインを使用する場合、ドメイン名を含める必要はありません。
    CREATE USER schema1 IDENTIFIED GLOBALLY 
    AS 'IAM_PRINCIPAL_NAME=ocid1.tenancy.OCID:example_domain/peter.fitch@oracle.com';
    
    CREATE USER schema2 IDENTIFIED GLOBALLY 
    AS 'IAM_PRINCIPAL_NAME=ocid1.tenancy.OCID:peter.fitch@oracle.com';
    
    CREATE USER qa_db_user_group IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.OCID:example_domain/xt_db_users';
    
    CREATE USER qa_sales_user_group IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.OCID:sales_users';
    
    CREATE USER xt_ip_user IDENTIFIED GLOBALLY 
    AS 'IAM_PRINCIPAL_OCID=ocid1.instance.region1.sea.OCID';
    GRANT CREATE SESSION TO xt_ip_user;
    
    CREATE USER xt_iam_dg IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.region1.OCID:sales_principals';
    GRANT CREATE SESSION TO xt_iam_dg;
  • CREATE ROLE文を使用してマッピングを実行するには:
    次の例は、デフォルト・ドメインおよびデフォルト以外のドメイン内のグループとのグローバルなロール・マッピングを示しています。 デフォルト・ドメインを使用する場合、ドメイン名を含める必要はありません。
    CREATE ROLE globalrole1 IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.abcdef:example_domain/xt_db_users';
    
    CREATE ROLE globalrole2 IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.abcdef:sales_users';

クロステナンシ・アクセス用のデータベース・クライアントの構成

一部のデータベース・クライアントを直接構成できます。

データベース・テナンシは、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アクセス・トークンを取得するためのパラメータの設定に関するドキュメントを参照してください。