管理对 Oracle NoSQL Database Cloud Service 表的访问
了解如何编写策略以及查看可用于授权访问 Oracle NoSQL Database Cloud Service 表的典型策略语句。
本文包含以下主题:
跨租户访问 NoSQL 表
本主题介绍如何编写允许租户访问其他租户中的 NoSQL 表的策略。
如果您不熟悉策略,请参阅策略入门。
跨租户策略
您的组织可能希望与具有其自己的租户的其他组织共享资源。它可以是贵公司的另一个业务单位、贵公司的客户、向贵公司提供服务的公司等。在此类情况下,除了前面描述的所需用户和服务策略之外,还需要跨租户策略。
要访问和共享资源,两个租户的管理员都需要创建特殊策略语句,以显式说明可以访问和共享的资源。这些特殊语句使用词语 Define(定义)、 Endorse(背书)和 Admit(承认)。
背书、录取和定义语句
下面概述了跨租户语句中使用的特殊动词:
背书:说明您自己的租户中的某个组可以在其他租户中执行的一组常规功能。Endorse 语句始终属于租户,用户组跨越边界进入其他租户以使用该租户的资源。在示例中,您将此租户称为源。
入学:说明您希望从其他租户向组授予您自己的租户中的某种能力。入学声明属于向租户授予“入学”的租户。Admit 语句标识需要从源租户访问资源的用户组,并使用相应的背书语句进行标识。在示例中,您将此租户称为目标。
定义:为背书和入学策略语句的租户 OCID 分配别名。目标租户中还需要一个 Define 语句,以便为 Admit 语句的源 IAM 组 OCID 分配别名。
定义语句必须与背书或入学语句包含在同一策略实体中。背书和承认语句协同工作,但它们位于单独的策略中,每个租户一个。如果没有指定访问权限的相应语句,则特定“背书”或“入学”语句将不授予任何访问权限。您需要来自两个租户的协议。
注:除了策略语句之外,您还必须订阅区域才能跨区域共享资源。
源租户策略语句
源管理员会创建策略语句,对允许管理目标租户中资源的源 IAM 组进行背书。
注:还可以与其他策略主题一起编写跨租户策略。有关策略主题的更多详细信息,请参阅 Oracle Cloud Infrastructure 文档中的 Policy Syntax 。
下面是一个宽泛的策略语句示例,该语句支持 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
示例 - 允许组 Analytics 对区间设备中的 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'}
示例—允许组 Developer 读取、更新和删除区间开发中表“客户”的行,而不是其他行。
allow group Developer to manage nosql-rows in compartment Dev
where target.nosql-table.name = 'customer'