amazon-web-services - AWS IAM 角色的条件
问题描述
我创建了一个具有以下条件的 IAM 角色。如果满足我的三个条件中的任何一个,我想授予访问权限。因为不可能遇到他们三个。这是正确的方法吗?
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "*",
"Condition": {
"StringEquals": {
"a": "b",
"c": "d",
"x": "y"
}
}
}
]
}
对此的任何提示将不胜感激,谢谢!
解决方案
本文档概述了工作原理:
如果您的策略具有多个条件运算符或附加到单个条件运算符的多个键,则使用逻辑 AND 评估条件。如果单个条件运算符包含一个键的多个值,则使用逻辑 OR 评估该条件运算符。所有条件都必须解析为 true 才能触发所需的 Allow 或 Deny 效果。
在您的示例中,您有一个条件运算符 -- 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"
}
}
}
]
}
推荐阅读
- angular - 将 formGroup 传递给 mat-step 的最干净的方法是什么?
- vue.js - 我无法从我的组件中改变我的商店模块
- android - Android Gradle 插件错误:无法解析变量
- autodesk-forge - 伪造查看器内存太大
- mule - Dataweave 脚本问题
- eclipse - 为什么当 Eclipse 关闭并稍后重新打开时,恢复 Eclipse / Content Assist 默认值不会持续存在?
- r - 如何将公式应用于 R 数据框列的一部分?
- swift - 如何在当前 vc 上获得 largeTitle,但在 vc 上获得小标题?
- android - 无法更改 webview 中元素的位置
- python - 如何将字典字典转换为矩阵?