Oracle NoSQL Database Cloud Service表へのアクセスの管理

ポリシーの記述と、Oracle NoSQL Database Cloud Service表へのアクセスを認可するために使用する一般的なポリシー・ステートメントの表示について学習します。

この記事には次のトピックが含まれます:

テナント全体のNoSQL表へのアクセス

このトピックでは、テナンシが他のテナント内のNoSQL表へのアクセスを許可するポリシーを記述する方法について説明します。

ポリシーを初めて使用する場合は、ポリシーの開始に関する項を参照してください。

クロステナンシ・ポリシー

組織は、独自のテナントを持つ別の組織とリソースを共有する場合があります。これは、会社内の別のビジネス・ユニット、会社の顧客、会社にサービスを提供する会社などの場合があります。このような場合、前述の必須ユーザーとサービス・ポリシーに加えてクロステナンシ・ポリシーが必要です。

リソースにアクセスして共有するには、両方のテナンの管理者は、アクセスと共有が可能なリソースを明示的に示す特別なポリシー・ステートメントを作成する必要があります。これらの特別なステートメントは、[定義][承認]および [許可]という言葉を使用します。

承認、許可および定義ステートメント

クロステナンシ・ステートメントで使用される特別な動詞の概要は次のとおりです:

承認:独自のテナンシ内のグループが他のテナント内で実行できる一般的な機能セットを示します。エンドース・ステートメントは、テナンシのリソースを使用する他のテナンシに対して境界を超えるユーザーのグループのテナンシに属します。例では、このテナントをソースと呼んでいます。

Admit:他のテナントからグループに付与する、自分のテナンシでの機能の種類を示します。Admitステートメントは、テナンシに「アドミタンス」を付与するテナントに属します。Admitステートメントは、ソース・テナントからのリソース・アクセスを必要とし、対応するエンドース・ステートメントで特定されるユーザーのグループを識別します。例では、このテナントを宛先と呼びます。

定義:エンドース・ポリシー・ステートメントおよび許可ポリシー・ステートメントのテナントOCIDに別名を割り当てます。許可ステートメントのソースIAMグループOCIDに別名を割り当てるには、宛先テナンシに定義ステートメントも必要です。

定義ステートメントは、承認と同じポリシー・エンティティまたは許可ステートメントに含める必要があります。エンドース・ステートメントとアドミット・ステートメントは連携して動作しますが、各テナンシの別々のポリシーに存在します。アクセス権を指定する対応ステートメントがない場合、特定の承認または許可ステートメントはアクセス権を与えません。両方のテナンシからの合意が必要です。

ノート:

ポリシー・ステートメントに加えて、リージョン間でリソースを共有するためにリージョンにサブスクライブする必要もあります。

ソース・テナント・ポリシー・ステートメント

ソース管理者は、宛先テナンシでリソースを管理できるソースIAMグループを承認するポリシー・ステートメントを作成します。

ノート:

クロステナンシ・ポリシーは、他のポリシー・サブジェクトとともに記述することもできます。ポリシーのサブジェクトの詳細は、Oracle Cloud Infrastructureドキュメントのポリシー構文を参照してください。
次の例は、IAMグループのNoSQLAdminsグループがテナンシ内のすべてのNoSQL表に対してすべての操作を実行することを承認する広範なポリシー・ステートメントを示しています:
Endorse group NoSQLAdmins to manage nosql-family in any-tenancy
テナント・アクセスの範囲を狭くするポリシーを記述するには、宛先管理者が宛先テナンシOCIDを指定する必要があります。次の例は、IAMグループのNoSQLAdminsグループがDestinationTenancyのNoSQL表のみを管理することを承認するポリシー・ステートメントを示しています:
Define tenancy DestinationTenancy as ocid1.tenancy.oc1..<destination_tenancy_OCID>
Endorse group NoSQLAdmins to manage nosql-family in tenancy DestinationTenancy

宛先テナンシのポリシー・ステートメント

宛先管理者は、次のポリシー・ステートメントを作成します:
  • ソース・テナントおよびテナンシのリソースにアクセスできるIAMグループを定義します。ソース管理者がこの情報を提供する必要があります。
  • テナントでアクセスを許可するNoSQL表にアクセスするために、定義済のソースを許可します。
次に、ソース・テナンシのIAMグループNoSQLAdminsがテナンシ内のすべてのNoSQL表に対してすべての操作を実行することを承認するポリシー・ステートメントの例を示します:
Define tenancy SourceTenancy as ocid1.tenancy.oc1..<source_tenancy_OCID>
Define group NoSQLAdmins as ocid1.group.oc1..<group_OCID>
Admit group NoSQLAdmins of tenancy SourceTenancy to manage nosql-family in tenancy
次の例は、開発コンパートメントのみのNoSQL表を管理するためにソース・テナンシのIAMグループNoSQLAdminsを承認するポリシー・ステートメントを示しています:
Define tenancy SourceTenancy as ocid1.tenancy.oc1..<source_tenancy_OCID>
Define group NoSQLAdmins as ocid1.group.oc1..<group_OCID>
Admit group NoSQLAdmins of tenancy SourceTenancy to manage nosql-family in compartment Develop

NoSQL表を管理する別のユーザー権限の付与

Oracle NoSQL Database Cloud Serviceのオーダーをアクティブ化すると、あなた(最初のユーザー)はデフォルトでAdministratorsグループに含まれます。Administratorsグループに含まれると、Oracle NoSQL Database Cloud Service表などを管理できるようにOracle Cloud Infrastructure完全な管理権限が付与されます。この責任を委任する必要はありませんが、必要に応じて、Oracle NoSQL Database Cloud Service表を作成および管理する権限を、manage nosql-tables権限を通じて他のユーザーに付与できます。

Oracle Cloud Infrastructureでは、IAMセキュリティ・ポリシーを使用して権限を付与します。最初にユーザーをグループに追加し、次に特定のコンパートメントまたはテナンシ(テナント内のすべてのコンパートメント)に対するmanage nosql-tables権限をグループに付与するセキュリティ・ポリシーを作成する必要があります。たとえば、次のようなポリシー・ステートメントを作成できます:

allow group MyAdminGroup to manage nosql-tables in tenancy
allow group MyAdminGroup to manage nosql-tables in compartment MyOracleNoSQL

Oracle NoSQL Database Cloud Service専用のセキュリティ・ポリシー・ステートメントを作成する方法の詳細は、アイデンティティおよびアクセス管理を使用したユーザー、グループおよびポリシーの設定を参照してください。

表を管理するための一般的なポリシー文

Oracle NoSQL Database Cloud Service表へのアクセスを認可するために使用する一般的なポリシー・ステートメントを次に示します。

テナンシのポリシーを作成する場合、ポリシー継承によってすべてのコンパートメントへのアクセス権をユーザーに付与します。または、個々のOracle NoSQL Database Cloud Service表またはコンパートメントへのアクセスを制限できます。

例- グループAdminsがOracle NoSQL Database Cloud Service表を完全に管理できるようにするには

allow group Administrators to manage nosql-tables in tenancy
allow group Administrators to manage nosql-rows in tenancy
allow group Administrators to manage nosql-indexes in tenancy

例- グループAdminsがコンパートメントDevのNoSQL表に対して操作を実行できるようにするには、ファミリ・リソース・タイプを使用します。

allow group Admins to manage nosql-family in compartment Dev

例- グループAnalyticsがコンパートメントDevのNoSQL表に対して読取り専用操作を実行できるようにするため

allow group Analytics to read nosql-rows in compartment Dev

例- DeveloperのJoeのみが、コンパートメントDevのNoSQL表の索引を作成、取得および削除できるようにするには

allow group Developer to manage nosql-indexes in compartment Dev 
where request.user.id = '<OCID of Joe>'

例- グループAdminsがNoSQL表の作成、削除および移動のみを許可し、コンパートメントDevでは変更できません。

allow group Admins to manage nosql-tables in compartment Dev 
where any {request.permission = 'NOSQL_TABLE_CREATE', 
           request.permission = 'NOSQL_TABLE_DROP', 
           request.permission = 'NOSQL_TABLE_MOVE'}

例- グループDeveloperはコンパートメントDevの表"customer"の行の読取り、更新および削除を実行できるが、他のグループはできないようにするには

allow group Developer to manage nosql-rows in compartment Dev 
where target.nosql-table.name = 'customer'