Sid 属性在关键策略中的用途是啥?

Posted

技术标签:

【中文标题】Sid 属性在关键策略中的用途是啥?【英文标题】:What is Sid attribute use for in key policies?Sid 属性在关键策略中的用途是什么? 【发布时间】:2018-05-10 22:17:07 【问题描述】:

Here 是一个文档:

Sid - (可选)Sid 是一个语句标识符,可以用来标识语句的任意字符串。

是不是说Sid参数只是描述?

【问题讨论】:

是的,这正是它的意思,它只是一个描述。 【参考方案1】:

在another part of the documentationAWS 中提供了一些关于 Sid 用途的额外信息:

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

所以是的,这只是一个描述。

【讨论】:

你引用的部分说它是一个“可选标识符”。如果它只是一个描述,为什么它必须是唯一的? 它似乎不仅仅是一个描述 - 似乎不允许使用空格或通配符?所以它更像是一个标识符,from what I gather,并支持[a-z, A-Z, 0-9] 并且每个策略必须是唯一的,因此您可以在策略中为语句使用多个 sid 标识符,但不能在该策略中多次使用相同的 sid。不过,您可以在不同的策略中重复相同的 sid。 文档中的那部分确实没有多大帮助。它没有提到我们如何使用它,也没有给出任何有用的例子。它绝对不像描述。【参考方案2】:

您可以使用 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:::*"
        
    ]

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

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

更新:引用AWS docs

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

【讨论】:

引用是指在 yaml 中引用还是用于描述目的? @user2770362 它可用于描述和自动化目的。我不确定您所说的“在 yaml 中引用”是什么意思,但如果您的意思是在编程上下文中,那么是的。例如,我认为循环遍历策略中的所有语句并选择具有特定名称的语句会很有用。 @KhoaVo 这真的应该是公认的答案...【参考方案3】:

我认为“只是一个描述”不足以描述 Sid 的含义。

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

这是一个例子:

您可以使用 Sid 来处理您的保单,以防万一您需要在干草堆中找针。

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

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

【讨论】:

这是一个正确的问题,文档未能提供有关其用例的任何信息。

以上是关于Sid 属性在关键策略中的用途是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate 生成策略和缓存策略

Oracle 中的SID是啥意思?有啥作用?

在策略中使用模板

InfluxDB 2.0 中的存储桶、度量和保留策略之间的逻辑联系是啥?

GCP 等效于 aws 策略中的“拒绝”权限

在 DAO 单元测试期间恢复数据的策略是啥?