本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
此頁面提供 Amazon S3 中儲存貯體和使用者政策的概觀,並說明 AWS Identity and Access Management (IAM) 政策的基本元素。您可透過以下每個所列元素的連結,取得該元素的詳細資訊以及使用範例。
如需 Amazon S3 動作、資源和條件索引鍵的完整清單,請參閱服務授權參考中的 Amazon S3 的動作、資源和條件索引鍵。
如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊,請參閱Amazon S3 API 操作所需的許可。
就其最基本意義而言,政策包含下列元素:
-
Resource – 要套用政策的 Amazon S3 儲存貯體、物件、存取點或作業。使用儲存貯體、物件、存取點或任務的 Amazon Resource Name (ARN) 識別資源。
儲存貯體層級操作的範例:
"Resource": "arn:aws:s3:::
bucket_name
"物件層級操作的範例:
-
"Resource": "arn:aws:s3:::
代表儲存貯體中的所有物件。bucket_name/*
" -
"Resource": "arn:aws:s3:::
代表儲存貯體中具有特定字首的物件。bucket_name/prefix/*
"
如需詳細資訊,請參閱Amazon S3 的政策資源。
-
-
Actions – 針對每個資源,Amazon S3 支援一組操作。您可使用動作關鍵字,來識別允許 (或拒絕) 資源操作。
例如,
s3:ListBucket
許可允許使用者使用 Amazon S3 ListObjectsV2 操作 (s3:ListBucket
許可是動作名稱未直接映射到操作名稱的情況)。如需有關使用 Amazon S3 動作的詳細資訊,請參閱 Amazon S3 的政策動作。如需 Amazon S3 動作的完整清單,請參閱 Amazon Simple Storage Service API 參考中的動作。 -
Effect – 當使用者請求特定動作時會產生什麼效果,可能是
Allow
或Deny
。如果您未明確授予存取 (允許) 資源,則隱含地拒絕存取。您也可以明確拒絕存取資源。您可以這樣做以確保使用者無法存取資源,即使不同的原則授予存取權限也一樣。如需詳細資訊,請參閱 IAM 使用者指南中的 IAM JSON 政策元素︰效果。
-
Principal – 允許存取陳述式中動作與資源的帳戶或使用者。在儲存貯體政策中,委託人是身為此許可收件人的使用者、帳戶、服務或其他實體。如需詳細資訊,請參閱儲存貯體政策的主體。
-
Condition – 政策何時生效的條件。您可以使用 AWS全局金鑰和 Amazon S3 特定金鑰,在 Amazon S3 存取政策中指定條件。如需詳細資訊,請參閱使用條件索引鍵的儲存貯體政策範例。
下列範例儲存貯體政策顯示 Effect
、Principal
、Action
和 Resource
元素。此政策允許帳戶
中的使用者 123456789012
具有 Akua
儲存貯體的 amzn-s3-demo-bucket1
s3:GetObject
、s3:GetBucketLocation
和 s3:ListBucket
Amazon S3 許可。
{ "Version": "2012-10-17", "Id": "ExamplePolicy01", "Statement": [ { "Sid": "ExampleStatement01", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/Akua
" }, "Action": [ "s3:GetObject", "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1
/*", "arn:aws:s3:::amzn-s3-demo-bucket1
" ] } ] }
如需完整的政策語言資訊,請參閱《IAM 使用者指南》中的 IAM 中的政策和許可以及 IAM JSON 政策參考。
許可委派
如果 AWS 帳戶 擁有資源,則可以將這些許可授予另一個 AWS 帳戶。該帳戶則可以將這些許可或其中的一些許可,委派給帳戶中的使用者。這稱為「許可委派」。但從另一個帳戶收到許可的帳戶,無法將許可跨帳戶委派給另一個 AWS 帳戶。
Amazon S3 儲存貯體和物件擁有權
儲存貯體與物件都是 Amazon S3 資源。依預設,只有資源擁有者可以存取這些資源。資源擁有者是指 AWS 帳戶 建立資源的 。例如:
-
您用來建立儲存貯體和上傳物件 AWS 帳戶 的 擁有這些資源。
-
如果您使用 AWS Identity and Access Management (IAM) 使用者或角色登入資料上傳物件, AWS 帳戶 則該使用者或角色所屬的 會擁有該物件。
-
儲存貯體擁有者可將跨帳戶許可授予其他 AWS 帳戶 (或其他帳戶中的使用者),允許其上傳物件。在此情況下,上傳物件的 AWS 帳戶 便擁有那些物件。儲存貯體擁有者沒有其他帳戶所擁有物件的許可,但以下例外:
-
儲存貯體擁有者支付帳單。儲存貯體擁有者可拒絕對任何物件之存取,或刪除儲存貯體中的任何物件,而無須考慮其擁有者為何。
-
儲存貯體擁有者可封存任何物件或是還原封存的物件,而無須考慮擁有者為誰。封存指的是指用於存放物件的儲存體方案。如需詳細資訊,請參閱管理物件的生命週期。
-
擁有者和請求身分驗證
對儲存貯體的所有請求可能是已驗證或未驗證。已驗證的請求,必須包含能驗證要求傳送者身分的簽章值,未驗證的請求則沒有。如需請求驗證詳細資訊,請參閱 Amazon S3 API 參考中的提出請求。
儲存貯體擁有者可以允許未驗證的請求。例如,當儲存貯體具有公有儲存貯體政策,或儲存貯體 ACL 明確授予 WRITE
或 FULL_CONTROL
存取權給 All
Users
群組或匿名使用者時,就允許未驗證的 PutObject 請求。如需公有儲存貯體政策和公開存取控制清單 (ACL) 的詳細資訊,請參閱「「公有」的意義」。
所有未驗證的請求是由匿名使用者提出。此使用者在 ACL 中是以特定的正式使用者 ID 65a011a29cdf8ec533ec3d1ccaae921c
呈現。如果物件是透過未驗證的請求上傳至儲存貯體,則匿名使用者會擁有該物件。預設的 ACL 會授與 FULL_CONTROL
給匿名使用者作為物件的擁有者。因此,Amazon S3 會允許未驗證的請求擷取物件或修改其 ACL。
為了防止物件遭到匿名使用者修改,建議您不要實作會允許對您的儲存貯體進行匿名寫入的政策,或是使用會允許匿名使用者對您的儲存貯體的寫入存取權的 ACL。您可以使用 Amazon S3 封鎖公開存取來強制此建議的行為。
如需封鎖公開存取的詳細資訊,請參閱 封鎖對 Amazon S3 儲存體的公開存取權。如需 ACL 的詳細資訊,請參閱「存取控制清單 (ACL) 概觀」。
重要
建議您不要使用 AWS 帳戶 根使用者憑證來提出已驗證的請求。而是建立 IAM 角色,然後授予該角色完整的存取。我們稱擁有此角色的使用者為管理員使用者。您可以使用指派給管理員角色的登入資料,而不是 AWS 帳戶 根使用者登入資料,來與 互動 AWS 和執行任務,例如建立儲存貯體、建立使用者和授予許可。如需詳細資訊,請參閱《IAM 使用者指南》中的AWS 安全憑證和 IAM 中的安全最佳實務。