S3拒绝访问管理员

时间:2019-12-17 20:49:42

标签: amazon-web-services amazon-s3

对于一个AWS S3存储桶,除一个特定的IAM角色外,我想拒绝所有人访问。我创建了一个基于角色的策略以允许访问,并且有效。但是其他IAM用户也可以访问对象,我想防止这种情况。我尝试添加这样的存储桶策略,该策略将拒绝除该主体外的所有用户,然后允许该主体。但是此政策会阻止包括该角色在内的所有人访问。

我要阻止的其他IAM用户已附加到内置的AdminstratorAccess策略中。

{
    "Version": "2012-10-17",
    "Id": "PolicySecretBucket",
    "Statement": [
        {
            "Sid": "StmtDenyAll",
            "Effect": "Deny",
            "NotPrincipal": {
                "AWS": "arn:aws:iam::********:role/service-role/my-role"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my-bucket/*"
        },
        {
            "Sid": "StmtAllowLambdaBot",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::********:role/service-role/my-role"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]
}

2 个答案:

答案 0 :(得分:3)

这就是我要做的:

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

这是它的工作方式。

  • 用户将有一个IAM策略,该策略允许执行s3.*个操作
  • 我们将使用存储桶策略拒绝该存储桶MyExampleBucket的所有s3操作,除了角色用户ID(如果删除了角色,如果是删除角色,则为根帐户的用户ID)之外的任何用户ID。

获取角色的用户ID:

aws iam get-role --role-name ROLE-NAME

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

答案 1 :(得分:1)

拒绝访问特定存储桶实际上非常困难。

例如,管理员可能具有承担角色的权限,因此他们仍然可以访问存储桶。

您还需要查看所有策略,以确保只有授权人员才能使用iam:PassRole通过Amazon EC2实例承担角色

一种更安全的方法是将存储桶放入单独的AWS帐户。然后,仅向特定用户(而非角色)授予跨帐户访问权限。这样,默认设置是管理员具有零访问权限,然后您将访问权限授予所需的人员。绕过这种访问方式的方法很少。

相关问题