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

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

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

テナンシをまたがったNoSQL表へのアクセス

このトピックでは、テナンシが他のテナンシのNoSQL表にアクセスできるようにするためのポリシーを記述する方法を説明します。

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

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

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

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

Endorse、AdmitおよびDefineステートメント

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

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

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

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

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

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

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

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

ノート:クロステナンシ・ポリシーは、他のポリシー・サブジェクトでも記述できます。ポリシー・サブジェクトの詳細は、Oracle Cloud Infrastructureドキュメントのポリシー構文を参照してください。

IAMグループのNoSQLAdminsグループがテナンシのすべてのNoSQL表に対してすべての操作を実行するように承認される広範なポリシー・ステートメントの例を次に示します:

Endorse group NoSQLAdmins to manage nosql-family in any-tenancy

テナンシ・アクセスの範囲を狭くするポリシーを記述するには、宛先管理者が宛先テナンシOCIDを指定する必要があります。次の例は、DestinationTenancyのNoSQL表のみを管理するためにIAMグループのNoSQLAdminsグループを承認するポリシー・ステートメントです:

Define tenancy DestinationTenancy as ocid1.tenancy.oc1..<destination_tenancy_OCID>
Endorse group NoSQLAdmins to manage nosql-family in tenancy DestinationTenancy

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

宛先管理者は、次のポリシー・ステートメントを作成します:

ソース・テナンシの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

次に、ソース・テナンシの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 compartment Develop

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

Oracle NoSQL Database Cloud Serviceのオーダーをアクティブ化すると、あなた(最初のユーザー)はデフォルトでAdministratorsグループに含まれます。管理者グループに含まれると、Oracle Cloud Infrastructureの完全な管理権限が付与されるため、Oracle NoSQL Database Cloud Service表などを管理できます。There’s no need to delegate this responsibility but, if you want to, you can give someone else privileges to create and manage Oracle NoSQL Database Cloud Service tables through the manage nosql-tables permission.

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専用のセキュリティ・ポリシー・ステートメントを作成する方法の詳細は、「Identity and Access Managementを使用したユーザー、グループおよびポリシーの設定」を参照してください。

表を管理するための一般的なポリシー・ステートメント

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'

関連トピック