AWS IAM访问s3

时间:2017-11-21 12:28:33

标签: amazon-s3

我有一个S3存储桶,我需要拒绝所有用户访问,并允许访问特定的IAM角色。

我遵循AWS提供的文档。我可以为用户做,但当我为角色做,这不起作用。有人可以帮忙吗?

https://aws.amazon.com/blogs/security/how-to-restrict-amazon-s3-bucket-access-to-a-specific-iam-role/

我在S3存储桶策略中尝试了以下代码。它会导致所有用户的访问拒绝,包括lambda角色。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::relambda",
                "arn:aws:s3:::relambda/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "aws:roleId": [
                        "KDCNKWDCKQWCLQKC:*",
                        "5371235537537"
                    ]
                }
            }
        }

    ]
}

3 个答案:

答案 0 :(得分:1)

Principal中没有任何内容。

请参阅/使用以下政策。

IAM用户具有以AIDA开头的唯一ID,您可以将其用于此目的。要查找此唯一ID:

安装AWS CLI后,打开命令提示符或shell。 运行命令:aws iam get-user --user-name USER-NAME 在输出中,查找userId字符串,该字符串将以AIDAEXAMPLEID开头。 确定userId字符串后,可以将其放在“aws:userId”条件数组中,如以下示例所示。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::MyExampleBucket",
        "arn:aws:s3:::MyExampleBucket/*"
      ],
      "Condition": {
        "StringNotLike": {
          "aws:userId": [
            "AROAEXAMPLEID:*",
            "AIDAEXAMPLEID",
            "111111111111"
          ]
        }
      }
    }
  ]
}

答案 1 :(得分:0)

这应该拒绝对所有人的访问,除了使用NotPrincipal键的角色。

{
  "Id": "DenyRoleAccess",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyAllRole",
      "Action": [
        "s3:*"
      ],
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::BUCKET-NAME",
        "arn:aws:s3:::BUCKET-NAME/*"
      ],
      "NotPrincipal": {
        "AWS": [
          "arn:aws:iam::AWS-ACCOUNT-ID:role/ROLE-NAME"
        ]
      }
    }
  ]
}

答案 2 :(得分:-1)

您的要求似乎是:

  • 默认拒绝访问
  • 允许访问特定的IAM角色

幸运的是,所有Amazon S3存储桶的默认设置是默认拒绝访问,因此会自动满足这一要求!

要允许访问特定角色,请使用 Bucket Policy ,如下所示:

Windows.UI.Color

您还可以使用其他设置将其限制为使用角色的特定EC2实例。