如何仅向用户授予在 Amazon S3 控制台中访问特定桶或文件夹的权限?

2 分钟阅读
0

我想向用户授予在 Amazon Simple Storage Service (Amazon S3) 控制台中访问某个桶或文件夹(前缀)的权限。但是,我不希望该用户看到账户中的其他桶或桶中的其他文件夹。

简短描述

更改用户的 AWS Identity and Access Management (IAM) 权限,以限制用户在 Amazon S3 控制台中访问特定桶或文件夹(前缀)的权限:

1.删除 s3:ListAllMyBuckets 操作权限。

2.仅为您希望用户访问的桶或文件夹添加 s3:ListBucket 权限。要允许用户从桶或文件夹上传和下载对象,您还必须包括 s3:PutObjects3:GetObject

解决方法

1.打开 IAM 控制台

2.选择您想要限制访问权限的 IAM 用户或角色。

3.在 IAM 用户或角色的权限选项卡中,展开每个策略以查看其 JSON 策略文档。

4.在 JSON 策略文档中,搜索向用户授予 s3:ListAllMyBuckets 操作权限或 s3:* 操作(所有 S3 操作)权限的策略。

5.修改策略以删除 s3:ListAllMyBuckets 操作权限。

注意:如果附加的用户策略允许对“*”资源进行 s3:*完全管理员访问,则该策略包含 s3:ListAllMyBuckets 权限。请删除“*”资源。然后,使用以下示例策略之一。

6.仅为您希望用户从控制台访问的桶或文件夹添加 s3:ListBucket 权限。

以下为用于访问 S3 桶的示例策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
    }
  ]
}

该策略允许用户仅对 DOC-EXAMPLE-BUCKET 执行 s3:ListBuckets3:PutObjects3:GetObject 操作。

以下为授予对文件夹的访问权限的示例策略。该策略允许用户仅对 DOC-EXAMPLE-BUCKET 中的 ffolder2 执行 s3:ListBuckets3:ListBucketVersionss3:PutObjects3:GetObjects3:GetObjectVersion 操作。只有在桶具有版本控制并且您希望用户能够访问对象的先前版本时,才能使用 s3:ListBucketVersionss3:GetObjectVersions3:GetBucketVersioning

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowUsersToAccessFolder2Only",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/folder1/folder2/*"
      ]
    },
    {
      "Sid": "AllowListOfBucketOnlyOnPrefix",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:ListBucketVersions"
      ],
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
      ],
      "Condition": {
        "StringLike": {
          "s3:prefix": [
            "folder1/folder2/*"
          ]
        }
      }
    },
    {
      "Sid": "AllowListVersionOnObjectDetails",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketVersioning"
      ],
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
      ]
    }
  ]
}

7.向用户提供指向 S3 桶或文件夹的直接控制台链接。

警告: 更改这些权限后,用户在访问 Amazon S3 主控制台时会遇到“访问被拒绝”错误。用户必须使用直接控制台链接来访问桶或文件夹。

以下链接是指向 S3 桶的直接控制台链接的示例:

https://s3.console.aws.amazon.com/s3/buckets/DOC-EXAMPLE-BUCKET/

以下链接是指向文件夹的直接控制台链接的示例:

https://s3.console.aws.amazon.com/s3/buckets/DOC-EXAMPLE-BUCKET/folder1/folder2/

相关信息

用户策略示例

AWS 官方
AWS 官方已更新 1 年前