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

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

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 – 當使用者請求特定動作時,會產生什麼影響 — 可以是 AllowDeny

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

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

  • Condition – 政策生效時的 條件。您可以使用 AWS全範圍金鑰和 Amazon S3 特定金鑰來指定 Amazon S3 存取政策中的條件。如需詳細資訊,請參閱使用條件索引鍵的儲存貯體政策範例

下列儲存貯體政策範例顯示 EffectPrincipalActionResource元素。此政策允許 Akua、帳戶 中的使用者123456789012s3:GetBucketLocations3:GetObjects3:ListBucketAmazon S3 對amzn-s3-demo-bucket1儲存貯體的許可。

{ "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以及IAMJSON政策參考

許可委派

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

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

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

  • 您用來建立儲存貯體和上傳物件 AWS 帳戶 的 擁有這些資源。

  • 如果您使用 AWS Identity and Access Management (IAM) 使用者或角色登入資料上傳物件, AWS 帳戶 則該使用者或角色所屬的 會擁有該物件。

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

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

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

擁有者和請求身分驗證

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

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

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

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

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

重要

建議您不要使用 AWS 帳戶 根使用者憑證來提出已驗證的請求。相反地,請建立IAM角色並授予該角色完整存取權。我們稱擁有此角色的使用者為管理員使用者。您可以使用指派給管理員角色的憑證,而不是 AWS 帳戶 根使用者憑證,與建立儲存貯體、建立使用者和授予許可等任務互動和 AWS 執行任務。如需詳細資訊,請參閱 IAM 使用者指南 中的AWS 安全憑證安全最佳實務IAM