AWS IAM:为基于身份的策略添加“例外”
Posted
技术标签:
【中文标题】AWS IAM:为基于身份的策略添加“例外”【英文标题】:AWS IAM: Adding "exeption" for identity-based policy 【发布时间】:2020-10-21 15:55:09 【问题描述】:在AWS documentation 之后,我向我的组 admin 附加了一项策略,以强制该组的权限仅适用于启用了 MFA 的用户
"Version": "2012-10-17",
"Statement": [
"Sid": "BlockMostAccessUnlessSignedInWithMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:DeleteVirtualMFADevice",
"iam:ListVirtualMFADevices",
"iam:DeactivateMFADevice",
"iam:EnableMFADevice",
"iam:ListMFADevices",
"iam:ResyncMFADevice",
"iam:GetAccountSummary",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition":
"Bool":
"aws:MultiFactorAuthPresent": "false"
]
我的问题是我有一个机器人(我们称之为 arn:aws:iam::12345678:user/my-bot),它是 admin 的一部分组并且它没有启用 MFA。到目前为止我想到了这两个选项
-
将我的机器人放在不存在 EnforceMFA 策略的不同组中(重复代码)
不知何故为机器人启用 MFA(虽然我不喜欢那个选项)
有没有一种方法可以在我的 EnforceMFA 策略中添加一个例外/条件,即“对于这个特定用户,不要应用此拒绝”)
提前致谢
【问题讨论】:
【参考方案1】:您可以为您的机器人用户创建一个标签并添加另一个条件,标记您的服务帐户以识别它。
"Condition":
"Bool":
"aws:MultiFactorAuthPresent": "false"
,
"StringNotEqual":
"iam:ResourceTag/type": "bot"
另外创建一个拒绝更改用户标签的策略。
如果您只想排除特定用户,您可以使用aws:PrincipalArn
全局条件您的策略对除指定用户之外的所有用户应用拒绝:https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html
与 StringNotEqual 结合使用即可!
【讨论】:
感谢您的回答。你知道我是否可以做类似的事情,但使用用户的 id/name 而不是分配给用户的标签? 我在回答中包含了一个解决方案 抱歉误解了你的问题。再次编辑答案;) 感谢您的留言。我最终要做的是,尽管我仍在测试它是否是一个有效的解决方案:"Condition": "Bool": "aws:MultiFactorAuthPresent" : "false" , "StringNotEquals" : "aws:username" : "my-bot"
也是一种有效的方法。 PrincipalArn
更通用。以上是关于AWS IAM:为基于身份的策略添加“例外”的主要内容,如果未能解决你的问题,请参考以下文章
具有 Cognito 联合身份的 AWS AppSync IAM 授权
如何在 IAM 角色的信任策略中检查自定义 OpenID 声明?