如何编写单条IAM策略实现API密钥标签的OR条件访问控制
问题描述
我拥有一个API密钥,希望仅当该密钥包含以下任一标签键值对时,允许开发者查看其密钥值:
# 满足任一标签即可允许访问 app: demo OR default:true
当前使用的IAM策略语句如下,它的评估逻辑是key1:value1 AND key2:value2——仅当API密钥同时具备两个对应标签时才允许访问,不符合我的需求:
- Effect: Allow Action: apigateway:GET Resource: arn:aws:apigateway:us-east-1::/apikeys/* Condition: StringEquals: aws:ResourceTag/app: - "${aws:PrincipalTag/app}" aws:ResourceTag/default: - "true"
请问如何用单条策略语句实现key1:value1 OR key2:value2的逻辑?
解决方案
要在单条IAM策略中实现OR逻辑,你需要使用IAM条件的Or运算符,将两个独立的StringEquals判断条件包裹起来。修改后的策略如下:
- Effect: Allow Action: apigateway:GET Resource: arn:aws:apigateway:us-east-1::/apikeys/* Condition: Or: - StringEquals: aws:ResourceTag/app: "${aws:PrincipalTag/app}" - StringEquals: aws:ResourceTag/default: "true"
该策略的评估规则为:
- 若API密钥的
app标签值与请求者的app主体标签值匹配,允许访问 - 若API密钥的
default标签值为true,允许访问
只要满足上述两个条件中的任意一个,就会授予apigateway:GET权限以查看API密钥。
内容的提问来源于stack exchange,提问作者jebaseelan ravi
相关产品推荐
相关产品推荐

