繁体   English   中英

使用特定的 AWS 角色模式限制对 AWS 资源的访问

[英]Restricting access to an AWS resource using a specific pattern of AWS roles

我希望我的 AWS 账户中具有特定模式的所有角色都能够访问 Secrets Manager 密钥。 我知道我可以为此使用Condition块和通配符匹配。

但是, Principal字段在资源策略中是必需的。

以下策略是否会将访问限制为仅匹配模式的角色?

{
  "Statement": [
    {
      "Action": [
        "secretsmanager:UpdateSecret",
        "secretsmanager:GetSecretValue"
      ],
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": "arn:aws:iam::12345678910:role/my_role_*"
        }
      },
      "Principal": { "AWS": "arn:aws:iam::12345678910:root" },
      "Effect": "Allow",
      "Resource": "arn:aws:secretsmanager:us-east-1:12345678910:secret:some-secret-1234",
      "Sid": "rp1"
    }
  ],
  "Version": "2012-10-17"
}

使用通配符 "All Principal": {"AWS": "*"} 同一账户账户主体 + 通配符条件的组合在角色 *trust* policies 1中起作用,但显然在 *resource* policies 2中不起作用。


IAM 文档说:

您可以将角色委托人指定为基于资源的策略中的委托人,或者创建使用aws:PrincipalArn条件键的广泛权限策略 [使用通配符委托人]。

因为条件包含帐号,所以 All Principal 并不比 Account Principal 更宽松。 此外,由于该策略始终与特定的秘密资源相关联,因此通配符"*"资源并不比秘密名称更宽松。 最后,虽然ArnLike条件并不总是等同StringLike ,但在这种情况下是相同的。

{
  "Version" : "2012-10-17",
  "Statement" : [ {
    "Effect" : "Allow",
    "Principal" : {  "AWS" : "*" },
    "Action" : [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue" ],
    "Resource" : "arn:aws:secretsmanager:us-east-1:12345678910:secret:some-secret-1234",
    "Condition" : {
      "ArnLike" : {
        "aws:PrincipalArn" : "arn:aws:iam::12345678910:role/my_role_*"
      }
    }
  } ]
}

  1. 有关信任策略示例,请参阅 AWS 博客文章如何将信任策略与 IAM 角色结合使用的通配符权限部分。

  2. 将 Lambda 角色 + 机密管理器资源策略与同一账户主体一起使用时出错: ...no identity-based policy allows the secretsmanager:GetSecretValue action

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM