我想讓使用者有權透過 Amazon Simple Storage Service (Amazon S3) 主控台存取儲存貯體或資料夾。但是,我不希望使用者看到帳戶中的其他儲存貯體,或看到儲存貯體中的其他資料夾。
簡短說明
變更使用者的 AWS Identity and Access Management (IAM) 許可,將使用者的 Amazon S3 主控台存取限制在特定儲存貯體或資料夾 (前綴):
1. 移除對 s3:ListAllMyBuckets 動作的存取權限。
2. 僅為您希望使用者存取的儲存貯體或資料夾新增 s3:ListBucket 存取權限。若要允許使用者從儲存貯體或資料夾上傳及下載物件,您還必須加入 s3:PutObject 和 s3: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:ListBucket、s3:PutObject 和 s3:GetObject 動作。
下列範例原則適用於授予對資料夾的存取權限。此原則允許使用者只在 DOC-EXAMPLE-BUCKET 的 folder2 中執行 s3:ListBucket、s3:ListBucketVersions、s3:PutObject、s3:GetObject 和 s3:GetObjectVersion 動作。只在儲存貯體具備版本控制,且您希望使用者存取先前版本的物件時,才使用 s3:ListBucketVersions、s3:GetObjectVersion 和 s3: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/
相關資訊
使用者原則範例