Sha*_*shi 7 amazon-web-services amazon-iam
我无法理解AWS IAM 策略条件Bool
之间的差异。BoolIfExists
有人可以解释一下吗?
前任:
"Condition" : {"BoolIfExists" : {"aws:MutliFactorAuthPresent" : false}}
"Condition" : {"Bool" : {"aws:MutliFactorAuthPresent" : false}}
Run Code Online (Sandbox Code Playgroud)
Mar*_*cin -1
首先,不存在这样的条件aws:MutliFactorAuthPresent
。它应该是aws:MultiFactorAuthPresent
。其次,aws:MultiFactorAuthPresent
是全局密钥,因此它始终存在。没有理由使用IfExists
它。
无论如何,您需要记住 IAM 条件键(全局键除外)是特定于资源的。例如,ec2:InstanceType
仅适用于 EC2 实例,而ec2:VolumeSize
仅适用于 EBS 卷。
此外,某些 IAM 操作(例如ec2:runinstance
)需要访问多个资源,例如 ec2 实例和 ebs-volumes 等。
因此,当您使用对多个资源进行操作的 IAM 语句(例如 )时ec2:runinstance
,并且您想要设置条件,您可能经常会遇到不匹配的情况,因为并非所有条件键都适用于将访问的所有资源。
例如,条件键ec2:VolumeSize
不适用于 EC2 实例,但适用于 EBS 卷。由于以下原因,此操作失败:
请求中不存在的密钥被视为不匹配。
因此,您可以使用...IfExists 条件运算符来确保在这种情况下不会失败。
{
"Sid": "RunInstance",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": "*",
"Condition": {
"StringLikeIfExists": {
"ec2:InstanceType": [
"t1.*",
"t2.*",
"m3.*"
]}}
}
Run Code Online (Sandbox Code Playgroud)
如果没有IfExists
,将会出现不匹配,因为ec2:RunInstances
需要访问 EBS 卷,并且ec2:InstanceType
密钥不适用于这些卷。
归档时间: |
|
查看次数: |
4149 次 |
最近记录: |