[英]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_*"
}
}
} ]
}
有關信任策略示例,請參閱 AWS 博客文章如何將信任策略與 IAM 角色結合使用的通配符權限部分。
將 Lambda 角色 + 機密管理器資源策略與同一賬戶主體一起使用時出錯: ...no identity-based policy allows the secretsmanager:GetSecretValue action
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.