管理对 Oracle NoSQL Database Cloud Service 表的访问

了解如何编写策略和查看可用于授权访问 Oracle NoSQL Database Cloud Service 表的典型策略语句。

本文章包含以下主题:

访问跨租户的 NoSQL 表

本主题介绍如何编写允许租户访问其他租户中的 NoSQL 表的策略。

如果您不熟悉策略,请参阅策略入门

跨租户策略

您的组织可能希望与其他具有自己的租户的组织共享资源。它可以是公司的另一个业务单位、公司的客户、向公司提供服务的公司等。在此类情况下,除了前面所述的必需用户和服务策略外,您还需要跨租户策略。

要访问和共享资源,两个租户的管理员都需要创建特殊策略语句来显式指定可访问和共享的资源。这些特殊语句使用单词定义背书入学

背书、入学和定义对帐单

下面概述了跨租户语句中使用的特殊动词:

背书:说明您自己的租户中的组可以在其他租户中执行的一般功能集。“背书”语句始终属于租户,其中用户组跨越边界进入其他租户以使用该租户的资源。在示例中,您将此租户称为源。

入学:说明您自己的租户中要从其他租户授予组的那种能力。“入学”语句属于向租户授予“入学”的租户。“入学”语句标识需要从源租户访问资源并使用相应的“背书”语句标识的用户组。在示例中,您将此租户称为目标。

定义:为租户 OCID 分配“背书”和“入学”策略语句的别名。在目标租户中,还需要使用 Define 语句为 Admit 语句的源 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
下面是一个策略语句示例,这些策略语句支持源租户中的 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"(管理员)组中。通过加入 Administrators 组,您可以在 Oracle Cloud Infrastructure 中获得全部管理权限,以便管理 Oracle NoSQL Database Cloud Service 表等。无需委派此责任,但如果需要,您可以通过 manage nosql-tables 权限为其他人授予创建和管理 Oracle NoSQL Database Cloud Service 表的权限。

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 表或区间的访问。

示例 - 允许组管理员完全管理任何 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

示例 - 要允许组管理员对区间开发中的 NoSQL 表执行任何操作,请使用系列资源类型。

allow group Admins to manage nosql-family in compartment Dev

示例 - 允许组分析对区间开发中的 NoSQL 表执行只读操作

allow group Analytics to read nosql-rows in compartment Dev

示例 - 仅允许 Developer 中的 Joe 在区间开发中创建、获取和删除 NoSQL 表的索引

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

示例 - 允许组管理员仅创建、删除和移动 NoSQL 表,但不允许在区间开发中进行更改。

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'}

示例 - 允许组开发人员读取、更新和删除区间开发中表“客户”的行,但不允许删除其他行。

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