已限制IAM用户查看密钥,如何限制联合用户查看AWS Secrets Manager密钥?
限制联合用户访问指定Secrets Manager密钥的方法
首先优化你现有的IAM用户策略:当前策略的Resource设为*会限制所有密钥,你需要改成指定密钥的ARN(比如arn:aws:secretsmanager:us-east-1:123831926524:secret:your-target-secret-xxxx),这样才能精准限制单密钥,避免影响其他资源。
针对联合用户(通常通过IAM角色完成身份联合),可以通过以下两种方式实现访问限制:
方式1:直接允许特定IAM角色的联合用户访问
联合用户登录后会扮演指定IAM角色,你可以将该角色的ARN加入NotPrincipal列表,这样只有指定IAM用户、root和该角色的联合用户能访问目标密钥:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "NotPrincipal": { "AWS": [ "arn:aws:iam::123831926524:user/指定IAM用户名", "arn:aws:iam::123831926524:root", "arn:aws:iam::123831926524:role/允许访问的联合用户角色名" ] }, "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:区域ID:123831926524:secret:你的目标密钥ARN" }] }
方式2:基于联合用户身份属性精细控制
如果需要根据联合用户的身份提供商(IdP)属性(如SAML签发者、用户组)或会话标签限制访问,可以使用Condition条件:
比如仅允许来自特定SAML IdP的联合用户访问:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "NotPrincipal": { "AWS": [ "arn:aws:iam::123831926524:user/指定IAM用户名", "arn:aws:iam::123831926524:root" ] }, "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:区域ID:123831926524:secret:你的目标密钥ARN", "Condition": { "StringNotEquals": { "saml:issuer": "https://你的IdP签发地址" } } }] }
或者仅允许带有指定会话标签的联合用户访问:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "NotPrincipal": { "AWS": [ "arn:aws:iam::123831926524:user/指定IAM用户名", "arn:aws:iam::123831926524:root" ] }, "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:区域ID:123831926524:secret:你的目标密钥ARN", "Condition": { "StringNotEquals": { "aws:PrincipalTag/AccessGroup": "SecretAccess" } } }] }
注意事项
- 联合用户的身份主体格式通常为
arn:aws:sts::123831926524:assumed-role/角色名/会话名,但在NotPrincipal中直接使用角色ARN即可覆盖所有扮演该角色的会话。 - 务必确保策略中的
Resource是目标密钥的精确ARN,避免误限制其他资源。 - Deny策略优先级高于Allow策略,只要匹配Deny条件的用户都会被拒绝访问。
内容的提问来源于stack exchange,提问作者Alex Pătroi
相关产品推荐
相关产品推荐

