繁体   English   中英

适用于角色的AWS S3 IAM策略,用于根据实例标签或实例ID限制几个实例连接到S3存储桶

[英]AWS S3 IAM policy for role for restricting few instances to connect to S3 bucket based in instance tag or instance id

我已经有一个与所有实例相关联的AWS S3,以获取对所有S3存储桶的读取特权。 现在,我需要向角色授予写权限(放置对象)的策略,以便其中一些实例可以对S3中的某些文件夹具有写权限。 有什么方法可以通过实例标签(对我来说更好的选择)或实例ID来实现。

我尝试添加IAM策略,但是在设置条件时,我的实例未获得所需的特权。

我使用的IAM策略是:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1456567757624",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::testbucket/testfolder1/*",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:ec2:eu-west-1:<accountno>:instance/<instanceid1>"
        }
      }
    },
    {
      "Sid": "Stmt1456567757625",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::testbucket/testfolder2/*",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:ec2:eu-west-1:<accountno>:instance/<instanceid2>"
        }
      }
    }
  ]
}

这是一种替代方法,基于根据角色名称授予对S3资源的访问权限中给出的提示...

代替使用aws:SourceArn ,使用aws:userid

可用于策略变量请求信息文档中的表显示了aws:userid各种值,包括:

对于分配给Amazon EC2实例的 role-id:ec2-instance-id ,其设置为role-id:ec2-instance-id

因此,您可以使用用于启动Amazon EC2实例以允许访问的角色的Role IDInstance ID

例如,这个基于Role ID

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SID123",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringLike": {
                    "aws:userid": [
                        "AROAIIPEUJOUGITIU5BB6*"
                    ]
                }
            }
        }
    ]
}

当然,如果您要基于角色ID分配权限,则可以轻松地在角色本身内授予权限。

这是基于实例ID的

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SID123",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringLike": {
                    "aws:userid": [
                        "*:i-03c9a5f3fae4b630a"
                    ]
                }
            }
        }
    ]
}

实例ID将与该实例一起保留,但是如果启动了一个新实例,即使来自同一Amazon Machine Image(AMI),也将分配一个新实例ID。

IAM策略元素参考文档说:

aws:SourceArn –使用源的Amazon资源名称(ARN)检查请求的源。 (此值仅适用于某些服务。)

但是,文档没有说明哪些服务可以使用它。

有一些示例可用于SQS和SNS,Amazon S3存储桶的 sourceARN以及Lambda的sourceARN 但是,Amazon EC2似乎不支持它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM