Sid属性在关键策略中有什么用?

Che*_*rry 11 amazon-web-services aws-cloudformation aws-kms

是一个文档:

Sid –(可选)Sid是语句标识符,您可以使用任意字符串来标识该语句。

这是否意味着Sid参数只是描述?

Kho*_* Vo 11

您可以使用 Sid 来引用长策略中的特定语句

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowAll",
            "Effect": "Allow",
            "Action": "*",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "DenyList",
            "Effect": "Deny",
            "Action": "s3:List*",
            "Resource": "arn:aws:s3:::*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

例如,在解释策略时,您可以说该AllowAll语句允许所有 S3 操作,但DenyList拒绝所有列表操作。想象一下,如果这些 Sids 不存在,您会如何称呼他们中的任何一个?

这可能是语义上的挑剔,但我不同意它“只是一个描述”,因为描述不必是唯一的。另外 Sid 不支持空格,所以它实际上只是一个 ID。

更新:引用AWS文档

某些 AWS 服务(例如,Amazon SQS 或 Amazon SNS)可能需要此元素并对其有唯一性要求。


Dun*_*dan 10

文档的另一部分中, AWS提供了有关Sid用途的一些其他信息:

Sid(声明ID)是一个可选的标识,提供了政策声明。您可以Sid为语句数组中的每个语句分配一个值。在允许您指定ID元素(例如SQS和SNS)的服务中,该Sid值只是策略文档ID的子ID。在IAM中,该Sid值在JSON策略中必须唯一。

是的,这只是一个描述。

  • 文档中的这部分确实没有太大帮助。它没有提到我们如何使用它,也没有给出任何有用的示例。它看起来绝对不像描述。 (3认同)
  • 您引用的部分说它是“可选标识符”。如果它只是一个描述,为什么它必须是唯一的? (2认同)
  • 它似乎不仅仅是一个描述 - 似乎不允许空格或通配符?所以它更多的是一个标识符,[根据我收集的信息](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html#access-analyzer-reference-策略检查错误不支持的 sid),并支持“[az, AZ, 0-9]” (2认同)
  • 并且每个策略必须是唯一的,因此您可以在策略中的语句中使用多个“sid”标识符,但不能在该策略中多次使用相同的“sid”。不过,您可以在不同的策略中重复相同的 sids。 (2认同)

小智 7

我认为“仅仅描述”不足以描述 Sid 的含义。

我认为更好的问题是:“我如何利用 Sid 来发挥我的优势?”

这是一个例子:

  • 如果您需要大海捞针,您可以使用 Sid 来处理您的保单。

示例:您有 1k 个策略,并且希望查找执行“S3DenyPublicReadACL”的策略。也许您将该策略存储在 s3 存储桶中,以便可以重复使用它。

解决方案:编写一个脚本/lambda,找到它并以自动方式重用它。