我無法理解 AWS IAM 策略條件中 Bool 和 BoolIfExists 之間的區別。有人可以解釋一下嗎?
例如:“條件”:{“BoolIfExists”:{“aws:MutliFactorAuthPresent”:假}}
"Condition" : {"Bool" : {"aws:MutliFactorAuthPresent" : false}}
uj5u.com熱心網友回復:
首先,不存在這樣的條件aws:MutliFactorAuthPresent。應該是aws:MultiFactorAuthPresent。其次,aws:MultiFactorAuthPresent是global key,所以它總是存在的。沒有理由使用IfExists它。
無論如何,您需要記住 IAM 條件鍵(全域條件除外)是特定于資源的。例如,ec2:InstanceType僅適用于 EC2 實體,而ec2:VolumeSize僅適用于 EBS 卷。
此外,一些 IAM 操作(例如ec2:runinstance)需要訪問多個資源,例如 ec2 實體和 ebs-volumes 等。
因此,當您使用對多個資源進行操作的操作(例如 )制作 IAM 陳述句ec2:runinstance并且您想要創建條件時,您可能經常會遇到不匹配的情況,因為并非您的所有條件鍵都適用于將要訪問的所有資源。
例如,條件鍵ec2:VolumeSize不適用于 EC2 實體,但適用于 EBS 卷。由于以下原因而失敗:
請求中不存在的鍵被視為不匹配。
所以你可以使用...IfExists 條件運算子來確保在這種情況下沒有失敗。
此類 IAM 陳述句的一個示例是:
{
"Sid": "RunInstance",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": "*",
"Condition": {
"StringLikeIfExists": {
"ec2:InstanceType": [
"t1.*",
"t2.*",
"m3.*"
]}}
}
沒有IfExists,就會出現不匹配,因為ec2:RunInstances需要訪問 EBS 卷,并且ec2:InstanceType密鑰不適用于卷。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/350301.html
