Amazon S3 中的政策和許可 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon S3 中的政策和許可

本頁提供 Amazon S3 中儲存貯體和使用者政策的概觀,並說明 AWS Identity and Access Management (IAM) 政策的基本元素。您可透過以下每個所列元素的連結,取得該元素的詳細資訊以及使用範例。

如需 Amazon S3 動作、資源和條件的完整清單,請參閱服務授權參考適用於 Amazon S3 的動作、資源和條件金鑰

就其最基本意義而言,政策包含下列元素:

  • Resource— 政策適用的 Amazon S3 儲存貯體、物件、存取點或任務。使用儲存貯體、物件、存取點或任務的 Amazon 資源名稱 (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 簡單儲存服務API參考中的動作

  • Effect-當用戶請求特定操作時會產生什麼影響-這可以是或AllowDeny

    如果您未明確授予存取 (允許) 資源,則隱含地拒絕存取。您也可以明確拒絕存取資源。您可以這樣做以確保使用者無法存取資源,即使不同的原則授予存取權限也一樣。如需詳細資訊,請參閱《IAM使用指南》中的「IAMJSON策略元素:效果」。

  • Principal— 允許存取陳述式中動作和資源的帳戶或使用者。在儲存貯體政策中,委託人是身為此許可收件人的使用者、帳戶、服務或其他實體。如需詳細資訊,請參閱 值區政策的主體

  • Condition— 政策生效時的條件。您可以使用 AWS全金鑰和 Amazon S3 特定金鑰,在 Amazon S3 存取政策中指定條件。如需詳細資訊,請參閱 使用條件鍵值區政策範例

下列值區政策範例顯示EffectPrincipalAction、和Resource元素。此政策允許Akua帳戶中的使用者 123456789012 s3:GetObjects3:GetBucketLocation,以及儲存貯體上的 s3:ListBucket amzn-s3-demo-bucket1 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使用指南》中的《IAMJSON策略IAM和權限》以及《策略參考

許可委派

如果 AWS 帳戶 擁有資源,它可以將這些權限授與另一個資源 AWS 帳戶。該帳戶則可以將這些許可或其中的一些許可,委派給帳戶中的使用者。這稱為權限委派。但是從另一個帳戶接收權限的帳戶無法將權限跨帳戶委派給另一個 AWS 帳戶帳戶。

Amazon S3 儲存貯體和物件擁有權

儲存貯體與物件都是 Amazon S3 資源。依預設,只有資源擁有者可以存取這些資源。資源擁有者指的 AWS 帳戶 是建立資源的。例如:

  • 您用來建立值區和上傳物件的資源擁有這些資源。 AWS 帳戶

  • 如果您使用 AWS Identity and Access Management (IAM) 使用者或角色認證上載物件,則 AWS 帳戶 該使用者或角色所屬的擁有物件。

  • 儲存貯體擁有者可將跨帳戶許可授予其他 AWS 帳戶 (或其他帳戶中的使用者),允許其上傳物件。在此情況下,上傳物件的 AWS 帳戶 便擁有那些物件。值區擁有者對其他帳戶所擁有的物件沒有權限,但下列情況例外:

    • 儲存貯體擁有者支付帳單。儲存貯體擁有者可拒絕對任何物件之存取,或刪除儲存貯體中的任何物件,而無須考慮其擁有者為何。

    • 儲存貯體擁有者可封存任何物件或是還原封存的物件,而無須考慮擁有者為誰。封存指的是指用於存放物件的儲存體方案。如需詳細資訊,請參閱 管理儲存生命週期

擁有者和請求身分驗證

對儲存貯體的所有請求可能是已驗證或未驗證。已驗證的請求,必須包含能驗證要求傳送者身分的簽章值,未驗證的請求則沒有。如需請求身分驗證的詳細資訊,請參閱「提出要求」。

儲存貯體擁有者可以允許未驗證的請求。例如,當值區具有公用值區政策,或者當值區特別ACL授予WRITEFULL_CONTROL存取All Users群組或匿名使用者時,便會允許未驗證的PutObject要求。如需有關公用值區政策和公用存取控制清單 (ACLs) 的詳細資訊,請參閱「公有」的意義

所有未驗證的請求是由匿名使用者提出。此使用者會以特定ACLs的規範使用者 ID 來表示。65a011a29cdf8ec533ec3d1ccaae921c如果物件是透過未驗證的請求上傳至儲存貯體,則匿名使用者會擁有該物件。預設物件會ACL授與FULL_CONTROL匿名使用者做為物件的擁有者。因此,Amazon S3 允許未經驗證的請求擷取物件或修改物件。ACL

為了防止匿名使用者修改物件,建議您不要實作值區政策,以允許匿名公開寫入值區,或使用允ACLs許匿名使用者寫入值區的存取權。您可以使用 Amazon S3 封鎖公開存取來強制此建議的行為。

如需封鎖公開存取的詳細資訊,請參閱 封鎖對 Amazon S3 儲存體的公開存取權。如需有關 ACLs 的詳細資訊,請參閱 存取控制清單 (ACL) 概觀

重要

我們建議您不要使用 AWS 帳戶 root 使用者認證來發出驗證的要求。請改為建立IAM角色並授與該角色完整存取權。我們稱擁有此角色的使用者為管理員使用者。您可以使用指派給系統管理員角色的認證 (而非 AWS 帳戶 root 使用者認證) 與其互動 AWS 並執行工作,例如建立值區、建立使用者以及授與權限。如需詳細資訊,請參閱AWS IAM使用者指南中IAM的安全性登入資料和安全性最佳作法。