组织 ORGANIZATIONS-SCP常见问题:多个Statement元素

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

多个Statement元素

如下示例中的错误看起来可能是上一节中错误的变体,但是从语法上来看,它是一种不同类型的错误。如下示例中只有一个策略对象,如最外层的“{ }”括号对所表示,但是该策略对象中包含两个Statement元素。

一个SCP只能只包含一个Statement元素,Statement元素的值必须是对象,以“{ }”括号表示,其中包含一个Effect元素、一个Action元素、一个Resource元素和一个可选的Condition元素。如下示例中的策略对象包含了两个Statement元素,因此是错误的。

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

Statement元素的值必须是对象,但值对象可以是多个值对象组成的数组,因此可以通过将两个Statement元素合并为一个具有对象数组的元素来解决此问题,例如下方示例中,Statement元素的值是对象数组,数组中包含两个对象,每个对象都是Statement元素的正确值,数组中的每个对象之间用逗号隔开。

{
  "Version": "5.0",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:*:*"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Deny",
      "Action": [
        "vpc:*:*"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
support.huaweicloud.com/organizations_faq/org_06_0005.html