簡體   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