如何僅向使用者授予特定儲存貯體或資料夾的 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-BUCKETfolder2 中執行 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 年前