Terraform AWS 存储桶策略文档,ARN 已更改



我遇到了一个奇怪的问题,ARN 在某个时候被更改了。 存储桶策略和 KMS 密钥策略都会发生这种情况。

在策略文档中,我在外部账户中指定角色 ARN:

...
principals {
type        = "AWS"
identifiers = var.list_of_arns
}
...

地形规划输出看起来正常:

Principal = {
AWS = [
"arn:aws:iam::account-id:role/role1",
"arn:aws:iam::account-id:role/role2",
]
}

但是,创建的实际资源是不同的。

{
"Statement": [
...
"Principal": {
"AWS": [
"SOMESTRINGOF21CHARS",
"OTHERSTRINGOF21CHARS"
]
}
..
}

为什么会这样?

谢谢

看起来terraform/aws正在用等效的ID替换用户友好的ARN。从 AWS 文档中:

当 IAM 创建用户、组、角色、策略、实例配置文件或 服务器证书,它为每个实体分配一个唯一的 ID,看起来 喜欢这个:

AIDAJQABLZS4A3QDU576Q

在大多数情况下,您在使用 IAM 实体。这样,您就不需要知道 特定实体。但是,在以下情况下,唯一 ID 有时很有用 使用友好名称是不切实际的。

一个示例与在您的 AWS 账户中重复使用友好名称有关。 在帐户中,用户、组或策略的友好名称必须 独一无二。例如,您可以创建一个名为 David 的 IAM 用户。你 公司使用 Amazon S3,并有一个存储桶,其中包含每个文件夹的文件夹 员工。存储桶具有基于资源的策略(存储桶策略( 这允许用户仅访问存储桶中自己的文件夹。假设 名为 David 的员工离开您的公司,而您删除了 对应的 IAM 用户。但后来另一位名叫大卫的员工开始了 然后创建一个名为 David 的新 IAM 用户。如果存储桶策略 指定大卫 IAM 用户,该策略允许新的大卫 访问前大卫留下的信息。

但是,即使您创建新的 IAM ,每个 IAM 用户都有一个唯一的 ID 重复使用之前删除的友好名称的用户。在 例如,旧的 IAM 用户 David 和新的 IAM 用户 David 具有 不同的唯一 ID。您可以为 Amazon S3 创建资源策略 按唯一 ID (而不仅仅是用户名(授予访问权限的存储桶。 这样做可以减少无意中授予访问权限的可能性 员工不应该拥有的信息。

当策略中引用的 AWS 委托人不再存在或在创建委托人之前创建策略时,我看到会发生这种情况。

最新更新