AWS IAM 角色的条件
Posted
技术标签:
【中文标题】AWS IAM 角色的条件【英文标题】:Conditions for an AWS IAM Role 【发布时间】:2021-09-22 13:56:34 【问题描述】:我创建了一个具有以下条件的 IAM 角色。如果满足我的三个条件中的任何一个,我想授予访问权限。因为不可能遇到他们三个。这是正确的做法吗?
"Version": "2012-10-17",
"Statement": [
"Effect": "Allow",
"Principal":
"AWS": "*"
,
"Action": "*",
"Condition":
"StringEquals":
"a": "b",
"c": "d",
"x": "y"
]
对此的任何提示将不胜感激!
【问题讨论】:
docs.aws.amazon.com/IAM/latest/UserGuide/… 是文档 很抱歉,我也找到了那个,但我没有得到太多:( 【参考方案1】:This documentation 概述了工作原理:
如果您的策略有多个条件运算符或多个键 附加到单个条件运算符,条件被评估 使用逻辑 AND。如果单个条件运算符包含多个 一个键的值,该条件运算符使用 逻辑或。所有条件都必须解析为 true 才能触发所需的 允许或拒绝效果。
在您的示例中,您有一个条件运算符--StringEquals
。该条件运算符有多个键——a
、c
和 x
。因此,您当前的示例将使用逻辑 AND 进行评估,这听起来不像您想要的,因为它需要满足所有三个条件,而您说这永远不会发生。
要按照您的描述允许访问,我相信您需要做出 3 个单独的声明。每个语句将有一个条件运算符StringEquals
,并且该运算符将有一个键。然后,如果用户满足这 3 条语句中的任何条件,则用户将获得您想要的访问权限:
"Version": "2012-10-17",
"Statement": [
"Effect": "Allow",
"Principal":
"AWS": "*"
,
"Action": "*",
"Condition":
"StringEquals":
"a": "b"
,
"Effect": "Allow",
"Principal":
"AWS": "*"
,
"Action": "*",
"Condition":
"StringEquals":
"c": "d"
,
"Effect": "Allow",
"Principal":
"AWS": "*"
,
"Action": "*",
"Condition":
"StringEquals":
"x": "y"
]
【讨论】:
以上是关于AWS IAM 角色的条件的主要内容,如果未能解决你的问题,请参考以下文章
AWS CloudWatch Logs监控Apache日志文件
如何根据 IAM 角色 CloudFormation 模板中的参数提供不同的条件