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。该条件运算符有多个键——acx。因此,您当前的示例将使用逻辑 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日志文件

AWS IAM:如何使用全局条件键创建条件

从 CLI 脚本中批量删除 IAM 角色

如何根据 IAM 角色 CloudFormation 模板中的参数提供不同的条件

AWS IAM-如何禁止用户通过控制台进行更改,但允许通过CLI更改API

从 AWS 组织导出所有 IAM 用户、角色和策略