更新时间:2026-03-11 GMT+08:00
分享

创建SCP

本章为您介绍如何创建自定义SCP,SCP常用示例请参见:SCP配置示例

约束与限制

  • 自定义SCP策略中的Effect仅支持使用Deny,不支持使用Allow。
  • 自定义SCP策略中的关键字仅支持使用Action,不支持使用NotAction。
  • Action前缀仅支持使用已对接IAM5.0的云服务名称,例如Action="ram:*:*",不支持使用通配符,比如Action="*" 或 Action="*:*:*"。
  • 自定义SCP策略中的授权项必须包含3个字段并包含以下结构:

    "service-name:type-name:action-name"

  • 无法为组织管理员绑定SCP。

操作步骤

  1. 以组织管理员或管理账号的身份登录组织管理控制台
  2. 进入策略管理页,单击“服务控制策略”,进入SCP管理页。

    图1 进入SCP管理页

  3. 选择“正式运行模式”或“试运行模式”的策略,单击“创建”,进入SCP创建页面。

    图2 创建SCP

  4. 输入策略名称。新创建的策略名称不能与已有策略名称重复。

    (可选)输入策略描述。

  5. 在策略内容左侧可以直接编写JSON格式的策略内容。

    关于如何编写JSON格式的策略语句可参考SCP语法介绍SCP配置示例

    自定义策略版本号(Version)固定为5.0,不可修改。

  6. 将光标置于策略内容左侧的statement语句中,即可在策略内容右侧使用策略编辑器进行编辑自定义策略的操作、资源和条件。

    • 添加操作:单击号,选择或搜索要添加的服务及相应操作项,添加成功的操作项会自动显示在策略内容左侧的Action元素下。如图3所示。
      图3 添加操作
    • 添加资源:仅支持资源级授权的服务可添加。单击号,选择操作对应的服务,在选择资源类型,根据实际情况填写URN。如图4所示。
      图4 添加资源
    • 添加条件(可选):单击号,添加条件键和运算符,规定策略生效的条件。如图5所示。
      图5 添加条件

  7. (可选)单击“添加新语句”,可添加Statement元素的对象。

    Statement元素的值可以是多个对象组成的数组,表示不同的权限约束。

    图6 添加新语句

  8. (可选)为策略添加标签。在标签栏目下,单击“添加标签”,输入标签键和标签值。

    图7 为SCP添加标签

  9. 单击右下角“保存”后,系统会自动校验语法,如跳转到策略列表,则SCP创建成功;如系统提示策略内容有误,则请按照语法规范进行修改。

    • 在试运行模式下,通过实施策略可以模拟服务控制策略实际生效时对组织内所有成员账户可用权限的管控,并生成试运行日志以供分析。
    • 试运行模式下的策略对所有账号可操作权限无实际影响。

开启策略试运行

  1. 进入策略管理页,单击“服务控制策略”,进入SCP管理页。

  2. 在“试运行模式”的策略页签中,单击“已中止策略试运行”按钮。

  3. 配置资源转储。

    选择OBS桶,将策略试运行日志存储至您指定的对象存储服务OBS桶中。

    • 配置当前账号下OBS桶:

      选择“您账号的桶”,然后在下拉列表中选择您账号下的OBS桶,用于将策略试运行日志存储至您指定的对象存储服务OBS桶中。如果您需要将策略试运行日志存储在OBS桶内的某个文件夹下,则在选择OBS桶后,还需输入“桶前缀”,该前缀指OBS桶内某个文件夹的名称。如您的账号下无OBS桶,则需先创建OBS桶,详见创建桶

    • 配置其他账号下OBS桶:

      选择“另一账号的桶”,并输入区域ID和桶名称,如果您需要将策略试运行日志存储在OBS桶内的某个文件夹下,则还需输入“桶前缀”,该前缀指OBS桶内某个文件夹的名称。需先使用其他账号对当前账号授予相关OBS桶的权限,具体操作请参见跨账号授权

    • 开启策略试运行时,如果指定了当前账号或其他账号下的OBS桶,Organizations会向目标OBS桶中写入一个名为OrganizationsWritabilityCheckFile的空文件,此文件仅用于验证是否能够成功写入OBS桶。
    • 开启策略试运行时,组织中的所有实体将默认绑定DryRunFullAccess。

  4. 进行自定义授权。

    创建Organizations云服务委托:您可自行在统一身份认证服务(IAM)中创建委托,并进行自定义授权,授权对象为云服务Organizations,但必须包含可以让策略试运行正常工作的权限(至少包含对象存储服务(OBS)的查询桶区域位置信息和上传对象的权限)。创建委托详见委托其他云服务管理资源

    {
      "Version": "5.0",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "obs:bucket:getBucketLocation",
            "obs:object:putObject"
          ]
        }
      ]
    }
    策略试运行日志转储至OBS加密桶授权配置
    • 使用SSE-OBS方式加密的OBS桶

      如果您需要将策略试运行日志存储于使用SSE-OBS方式加密的OBS桶,无需其他操作,只需选择对应OBS桶进行存储即可。

    • 使用SSE-KMS默认密钥方式加密的OBS桶

      如果您需要将策略试运行日志存储于使用SSE-KMS默认密钥方式加密的OBS桶,则需要在Organizations的委托中新增KMS的管理员权限(KMS Administrator)。

    • 使用SSE-KMS自定义密钥方式加密的OBS桶

      如果您需要将策略试运行日志存储于使用SSE-KMS自定义密钥方式加密的OBS桶,则需要在Organizations的委托中新增KMS的管理员权限(KMS Administrator)。

      另外,如果您选择将策略试运行日志存储至其他账号的使用SSE-KMS自定义密钥方式加密的OBS桶,则除了需要在Organizations的委托中新增KMS的管理员权限(KMS Administrator),还需要在所选的OBS桶加密采用的自定义KMS密钥中设置密钥的跨账号权限。详情请参见为自定义密钥创建授权

  5. 配置完成后,单击“确定”,策略试运行配置成功。

更新策略试运行

  1. 进入策略管理页,单击“服务控制策略”,进入SCP管理页。

  2. 在“试运行模式”的策略页签中,单击“更新”按钮。

  3. 在弹出的更新策略试运行配置窗口中,输入OBS桶和自定义授权等信息,单击“确定”,完成策略试运行更新,详情请参见配置OBS桶自定义授权

    若管理员更新了策略试运行配置中OBS桶信息或委托信息,最大生效时间为15分钟。

关闭策略试运行

  1. 进入策略管理页,单击“服务控制策略”,进入SCP管理页。

  2. 在“试运行模式”的策略页签中,单击“已启用策略试运行”按钮。
  3. 在弹出的关闭策略试运行窗口中,输入文字“确认”,单击“确定”,策略试运行关闭成功。

    策略试运行关闭后,试运行的“更新”功能随即停止,此时试运行模式中的策略不再生成试运行日志。

跨账号授权

跨账号授予OBS桶存储策略试运行日志的权限
  1. 用授权账号登录OBS服务控制台
  2. 参考自定义创建桶策略(JSON视图)对待授权账号授予相关OBS桶的权限。
  3. 桶策略的示例如下,配置该桶策略,将允许被授权账号的策略试运行将转储文件存放至本OBS桶的指定路径内,以下参数需要您根据实际使用场景手动替换:
    • ${account_id}:需要被授权的账号的账号ID(domain_id);
    • ${agency_name}:被授权的委托名称;
    • ${bucket_name}:用于存储文件的OBS桶的桶名;
    • ${folder_name}:用于存储文件的OBS桶内文件夹的名称。如果您未设置OBS桶内文件夹,则需删除“/${folder_name}”。
    {
      "Statement": [
        {
          "Sid": "org-bucket-policy",
          "Effect": "Allow",
          "Principal": {
            "ID": [
              "domain/${account_id}:agency/${agency_name}"
            ]
          },
          "Action": [
            "PutObject",
            "GetBucketLocation"
          ]
        }
      ]
    }

相关文档