组织 ORGANIZATIONS-SCP常见问题:多个策略对象

时间:2024-09-29 09:08:32

多个策略对象

一个SCP必须包含一个并且只能包含一个JSON对象,通过在两旁放置的大括号“{ }”来表示对象。虽然您可以插入额外的大括号“{ }”在JSON对象中嵌套其他对象,但是一个策略只能包含一个最外层的“{ }”括号对。以下为错误示例,因为它包含了两个JSON对象(两个最外层“{ }”括号对):

{
  "Version": "5.0",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:*:*"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
{
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "vpc:*:*"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

但是,您可以通过使用正确的策略语法来实现上面示例的意图,将两个数据块合并到单个Statement元素中,而不是包含两个完整的策略对象(每个都有自己的Statement元素)。Statement元素将两个对象组成的数组作为其值,示例如下:

{
  "Version": "5.0",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:*:*"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Deny",
      "Action": [
        "vpc:*:*"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

如上示例无法进一步压缩到带一个元素的Statement中,因为两个元素具有不同的作用(Effect)。通常情况下,您只能在每个语句中的Effect和Resource元素相同时组合语句。

support.huaweicloud.com/organizations_faq/org_06_0005.html