Oracle Cloud Infrastructure GoldenGate 策略

要控制对 Oracle Cloud Infrastructure GoldenGate 的访问以及每个用户组具有的访问类型,您必须创建策略。

例如,您可以创建管理员组,其成员可以访问所有 OCI GoldenGate 资源。然后,您可以为参与 OCI GoldenGate 的其他人创建单独的组,并创建限制他们访问不同区间中的 OCI GoldenGate 资源的策略。

有关 Oracle Cloud Infrastructure 策略的完整列表,请参阅策略参考

创建策略

策略定义组成员可以执行哪些操作以及哪些区间。

使用 Oracle Cloud 控制台创建策略。在 Oracle Cloud 控制台导航菜单中,依次选择身份和安全身份,然后选择策略。策略使用以下语法编写:

allow group <identity-domain>/<group-name> to <verb> <resource-type> in <location> where <condition>

参数定义如下:

  • <identity-domain>:(可选)如果使用 OCI IAM 进行身份管理,则包括用户组的身份域。如果省略,则 OCI 使用默认域。
  • <group-name>:要为其授予权限的用户组的名称。
  • <verb>:为组提供对资源类型的特定级别的访问权限。当动词从 inspectreadusemanage 时,访问级别增加和授予的权限是累积的。

    单击此处的链接,可以了解有关 permissions 和 verbs 关系的更多信息。

  • <resource-type>:授予组处理权限的资源类型。有个人资源,例如 goldengate-deploymentsgoldengate-pipelinesgoldengate-connections,也有资源系列,例如 goldengate-family,其中包括前面提到的个人资源。

    有关更多信息,请参见 resource-types

  • <location>:将策略附加到区间或租户。您可以按名称或 OCID 指定单个区间或区间路径,也可以指定 tenancy 来覆盖整个租户。
  • <condition>:可选。此策略将适用的一个或多个条件。

单击此处的链接,可以了解有关策略语法的更多信息。

如何创建策略

要创建策略,请执行以下操作:
  1. 在 Oracle Cloud 导航菜单中,选择身份和安全,然后在“标识”下,单击策略
  2. 在“策略”页上,单击创建策略
  3. 在“创建策略”页上,输入策略名称和说明。
  4. 选择要在其中创建此策略的区间
  5. 策略构建器部分中,您可以:
    • 策略用例下拉和公用策略模板(例如允许用户管理 GoldenGate 资源的必需策略)中选择 GoldenGate 服务
    • 单击显示手动编辑器以按以下格式输入策略规则:
      allow <subject> to <verb> <resource-type> in <location> where <condition>

      条件是可选的。请参见 Details for Verbs + Resource-Type Combinations

    提示:

    有关详细信息,请参阅建议的最低策略
  6. 单击创建

有关策略的更多信息,请参见 How Policies workpolicy syntaxpolicy reference

建议的最低策略

提示:

要使用公用策略模板添加所有必需的策略,请执行以下操作:
  1. 对于策略用例,从下拉列表中选择 GoldenGate 服务
  2. 对于常用模板,从下拉列表中选择允许用户管理 GoldenGate 资源的必需策略

至少,您需要策略来:

  • 允许用户使用管理 GoldenGate 资源,以便他们可以处理部署和连接。例如:
    allow group <identity-domain>/<group-name> to manage goldengate-family in <location>
  • 允许用户管理网络资源,以便他们在创建 GoldenGate 资源时查看和选择区间和子网,以及创建和删除专用端点。例如:
    allow group <identity-domain>/<group-name> to manage virtual-network-family in <location>

    (可选)您可以结合使用细粒度策略来进一步保护网络资源。请参见 Policy Examples for Securing Network Resources

  • 创建动态组以根据定义的规则向资源授予权限,从而允许您的 GoldenGate 部署和/或管道访问租户中的资源。将 <dynamic-group-name> 替换为您选择的名称。您可以根据需要创建任意数量的动态组,例如,控制不同区间或租户中的部署权限。
    name: <dynamic-group-name>
    Matching rule: ALL {resource.type = 'goldengatedeployment', resource.compartment.id = '<location>'}

    提示:

    此列表后面的策略请参阅 <dynamic-group-name>。如果创建多个动态组,请确保在添加以下任何策略时引用正确的动态组名称。

  • 如果使用具有密码密钥的连接,则您分配给该连接的部署必须能够访问该连接的密码密钥。确保将策略添加到区间或租户:
    allow dynamic-group <identity-domain>/<dynamic-group-name> to read secret-bundles in <location>
  • 允许用户读取身份和访问管理 (Identity and Access Management,IAM) 用户和组以在启用了 IAM 的租户中验证:
    allow service goldengate to {idcs_user_viewer, domain_resources_viewer} in <location>
    allow dynamic-group <identity-domain>/<dynamic-group-name> to {idcs_user_viewer, domain_resources_viewer} in <location>
  • Oracle Vault,用于访问客户管理的加密密钥和密码密钥。例如:
    allow group <identity-domain>/<group-name> to manage secret-family in <location>
    allow group <identity-domain>/<group-name> to use keys in <location>
    allow group <identity-domain>/<group-name> to use vaults in <location>
    allow dynamic-group <identity-domain>/<dynamic-group-name> to use keys in <location>
    allow dynamic-group <identity-domain>/<dynamic-group-name> to use vaults in <location> 
    allow dynamic-group <identity-domain>/<dynamic-group-name> to read secret-bundles in <location>

您可能还需要为以下服务添加策略,具体取决于您是否打算使用以下服务:

  • Oracle 数据库,适用于源和/或目标数据库。例如:
    allow group <identity-domain>/<group-name> to read database-family in <location>
    allow group <identity-domain>/<group-name> to read autonomous-database-family in <location>
  • Oracle 对象存储,用于存储手动 OCI GoldenGate 备份。例如:
    allow group <identity-domain>/<group-name> to manage objects in <location>
    allow dynamic-group <identity-domain>/<dynamic-group-name> to manage objects in <location>
    allow group <identity-domain>/<group-name> to inspect buckets in <location>
  • OCI 日志记录,用于访问日志组。例如:
    allow group <identity-domain>/<group-name> to read log-groups in <location>
    allow group <identity-domain>/<group-name> to read log-content in <location>
  • 负载平衡器,如果启用对部署控制台的公共访问:
    allow group <identity-domain>/<group-name> to manage load-balancers in <location>
    allow group <identity-domain>/<group-name> to manage public-ips in <location> 
     
    allow group <identity-domain>/<group-name> to manage network-security-groups in <location>
    allow group <identity-domain>/<group-name> to manage vcns in <location> where ANY {request.operation = 'CreateNetworkSecurityGroup', request.operation = 'DeleteNetworkSecurityGroup'}
    
  • 工作请求:
    allow group <identity-domain>/<group-name> to inspect work-requests in <location>

以下语句授予组管理工作区的标记名称空间和标记的权限:

allow group <identity-domain>/<group-name> to manage tag-namespaces in <location>

要添加定义的标记,您必须具有使用标记名称空间的权限。要了解有关标记的更多信息,请参阅资源标记

有关更多信息和其他示例策略,请参见 OCI GoldenGate Policies

保护网络资源的策略示例

您可以通过以下策略轻松允许用户访问区间内的网络资源:

allow group <group-name> to use virtual-network-family in compartment <compartment-name>

或者,可以使用以下策略在更细粒度的级别保护网络资源:

操作 对基本资源的必需访问
创建专用端点 对于专用端点区间:
  • 创建 VNIC (VNIC_CREATE)
  • 删除 VNIC (VNIC_DELETE)
  • 更新网络安全组中的成员 (NETWORK_SECURITY_GROUP_UPDATE_MEMBERS)
  • 关联网络安全组 (VNIC_ASSOCIATE_NETWORK_SECURITY_GROUP)

对于子网区间:

  • 附加子网 (SUBNET_ATTACH)
  • 分离子网 (SUBNET_DETACH)
更新专用端点 对于专用端点区间:
  • 更新 VNIC (VNIC_UPDATE)
  • 更新网络安全组中的成员 (NETWORK_SECURITY_GROUP_UPDATE_MEMBERS)
  • 关联网络安全组 (VNIC_ASSOCIATE_NETWORK_SECURITY_GROUP)
删除专用端点 对于专用端点区间:
  • 删除 VNIC (VNIC_DELETE)
  • 更新网络安全组中的成员 (NETWORK_SECURITY_GROUP_UPDATE_MEMBERS)

对于子网区间:

  • 分离子网 (SUBNET_DETACH)
更改专用端点区间 如果从一个区间移到另一区间,则原始区间中的所有权限也必须存在于新区间中。

资源类型

Oracle Cloud Infrastructure GoldenGate 提供了用于编写策略的聚合和单个资源类型。

汇总资源类型 单个资源类型
goldengate-family

goldengate-deployments

goldengate-deployment-backups

goldengate-deployment-upgrades

goldengate-connections

goldengate-connection-assignments

goldengate-pipeline

聚合 goldengate-family 资源类型涵盖的 API 还涵盖了每个资源类型的 API。例如:

allow group gg-admins to manage goldengate-family in compartment <compartment-name>

与编写以下策略相同:

allow group gg-admins to manage goldengate-deployments in compartment <compartment-name>
allow group gg-admins to manage goldengate-connections in compartment <compartment-name>
allow group gg-admins to manage goldengate-connection-assignments in compartment <compartment-name>
allow group gg-admins to manage goldengate-deployment-upgrades in compartment <compartment-name>
allow group gg-admins to manage goldengate-deployment-backups in compartment <compartment-name>
allow group gg-admins to manage goldengate-pipeline in compartment <compartment-name>

支持的变量

向策略添加条件时,您可以使用 Oracle Cloud Infrastructure 一般变量或服务特定变量。

Oracle Cloud Infrastructure GoldenGate 支持所有常规变量。有关更多信息,请参见 general variables for all requests

动词 + 资源类型组合的详细信息

创建策略时可以使用各种 Oracle Cloud Infrastructure 动词和资源类型。

下表显示了 Oracle Cloud Infrastructure GoldenGate 的每个动词所涵盖的权限和 API 操作。从 inspectread、从 usemanage,访问级别是累加的。

Goldengate- 部署

金门连接

goldengate-connection-assignations

goldengate-deployment-backups

每个 API 操作所需的权限

下面是按逻辑顺序对 Oracle Cloud Infrastructure GoldenGate 执行的 API 操作的列表,按资源类型分组。

资源类型包括 goldengate-deploymentsgoldengate-connectionsgoldengate-deployment-backups

API 操作 权限
ListDeployments GOLDENGATE_DEPLOYMENT_INSPECT
CreateDeployment GOLDENGATE_DEPLOYMENT_CREATE
GetDeployment GOLDENGATE_DEPLOYMENT_READ
UpdateDeployment GOLDENGATE_DEPLOYMENT_UPDATE
DeleteDeployment GOLDENGATE_DEPLOYMENT_DELETE
StartDeployment GOLDENGATE_DEPLOYMENT_UPDATE
StopDeployment GOLDENGATE_DEPLOYMENT_UPDATE
RestoreDeployment GOLDENGATE_DEPLOYMENT_BACKUP_READ 和 GOLDENGATE_DEPLOYMENT_UPDATE
ChangeDeploymentCompartment GOLDENGATE_DEPLOYMENT_MOVE
UpgradeDeployment GOLDENGATE_DEPLOYMENT_UPDATE
ListConnections GOLDENGATE_CONNECTION_INSPECT
CreateConnection GOLDENGATE_CONNECTION_CREATE
GetConnection GOLDENGATE_CONNECTION_READ
UpdateConnection GOLDENGATE_CONNECTION_UPDATE
DeleteConnection GOLDENGATE_CONNECTION_DELETE
ChangeConnectionCompartment GOLDENGATE_CONNECTION_MOVE
ListConnectionAssignments GOLDENGATE_CONNECTION_ASSIGNMENT_INSPECT
CreateConnectionAssignment GOLDENGATE_CONNECTION_ASSIGNMENT_CREATE, GOLDENGATE_DEPLOYMENT_UPDATE, GOLDENGATE_CONNECTION_UPDATE
GetConnectionAssignment GOLDENGATE_CONNECTION_ASSIGNMENT_READ
DeleteConnectionAssignment GOLDENGATE_CONNECTION_ASSIGNMENT_DELETE, GOLDENGATE_DEPLOYMENT_UPDATE, GOLDENGATE_CONNECTION_UPDATE
ListDeploymentBackups GOLDENGATE_DEPLOYMENT_BACKUP_INSPECT
GetDeploymentBackup GOLDENGATE_DEPLOYMENT_BACKUP_READ
CreateDeploymentBackup GOLDENGATE_DEPLOYMENT_BACKUP_CREATE, GOLDENGATE_DEPLOYMENT_READ
UpdateDeploymentBackup GOLDENGATE_DEPLOYMENT_BACKUP_UPDATE
CancelDeploymentBackup GOLDENGATE_DEPLOYMENT_BACKUP_UPDATE
DeleteDeploymentBackup GOLDENGATE_DEPLOYMENT_BACKUP_DELETE
ChangeDeploymentBackupCompartment GOLDENGATE_DEPLOYMENT_BACKUP_MOVE
GetDeploymentUpgrade GOLDENGATE_DEPLOYMENT_UPGRADE_READ
ListDeploymentUpgrades GOLDENGATE_DEPLOYMENT_UPGRADE_INSPECT
GetWorkRequest GOLDENGATE_DEPLOYMENT_CREATE
ListWorkRequests GOLDENGATE_DEPLOYMENT_CREATE
ListWorkRequestErrors GOLDENGATE_DEPLOYMENT_CREATE
ListWorkRequestLogs GOLDENGATE_DEPLOYMENT_CREATE