本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon S3 中的政策和許可
此頁面提供 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 中的安全最佳實務。