Amazon S3 中的存取控制 - Amazon Simple Storage Service

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

Amazon S3 中的存取控制

在 中 AWS,資源是您可以使用的實體。在 Amazon Simple Storage Service (S3) 中,「儲存貯體」和「物件」是原始 Amazon S3 資源。每個 S3 客戶可能都有內含物件的儲存貯體。當 S3 新增功能時,也會新增其他資源,但並非所有客戶都會使用這些功能特定的資源。如需 Amazon S3 資源的詳細資訊,請參閱S3 資源

根據預設,所有 Amazon S3 資源都是私有的。此外,根據預設,建立資源的 AWS 帳戶 根使用者 (資源擁有者) 及該帳戶中具有必要許可的 IAM 使用者,可以存取其所建立的資源。資源擁有者會決定還有誰可以存取資源,以及其他人可以對資源執行的動作。S3 具有各種存取管理工具,可供您用來授權其他人存取 S3 資源。

下列各節提供 S3 資源概觀、可用的 S3 存取管理工具,以及每個存取管理工具的最佳使用案例。這些章節中的清單旨在全面包含所有 S3 資源、存取管理工具和常見的存取管理使用案例。同時,這些章節設計成目錄,可引導您取得所需的技術詳細資訊。如果您已充分了解下列其中一些主題,則可以跳到適用於您的章節。

如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊,請參閱Amazon S3 API 操作所需的許可

主題

S3 資源

原始 Amazon S3 資源是儲存貯體及其包含的物件。當 S3 新增功能時,也會新增新資源。以下是 S3 資源及其個別功能的完整清單。

資源類型 Amazon S3 功能 描述

bucket

核心功能

儲存貯體是物件的容器。若要將物件儲存在 S3 中,請建立儲存貯體,然後將一或多個物件上傳至儲存貯體。如需詳細資訊,請參閱建立、設定和使用 Amazon S3 儲存貯體

object

物件可以是檔案和任何描述該檔案的中繼資料。當物件位於儲存貯體時,您可加以開啟、下載和移動。如需詳細資訊,請參閱在 Amazon S3 中使用物件

accesspoint

存取點

存取點為連接至儲存貯體的指定網路端點,您可以使用這些端點來執行 Amazon S3 物件操作,例如 GetObjectPutObject。每個存取點都有不同的許可、網路控制和自訂「存取點政策」,可結合附加至基礎儲存貯體的儲存貯體政策運作。您可以將任何存取點設定為僅接受來自虛擬私有雲端 (VPC) 的請求,或為每個存取點設定封鎖公開存取設定。如需詳細資訊,請參閱使用存取點管理對共用資料集的存取

objectlambdaaccesspoint

Object Lambda 存取點是同時與 Lambda 函數相關聯的儲存貯體存取點。透過 Object Lambda 存取點,您可將自己的程式碼新增至 Amazon S3 GETLISTHEAD 請求,以便在資料傳回應用程式時對其做出修改和處理。如需詳細資訊,請參閱建立 Object Lambda 存取點

multiregionaccesspoint

多區域存取點提供全域端點,可供應用程式用來滿足來自位於多個 AWS 區域之 Amazon S3 儲存貯體的請求。您可以使用多區域存取點,進而使用與單一區域中使用的相同架構來建置多區域應用程式,然後在全球任何地方執行這些應用程式。向多區域存取點全域端點提出的應用程式請求會自動透過 AWS 全域網路路由至最接近的 Amazon S3 儲存貯體,而不是透過擁塞的公有網際網路傳送請求。如需詳細資訊,請參閱使用多區域存取點管理多區域流量

job

S3 批次操作

作業是 S3 Batch Operations 功能的一項資源。您可以使用 S3 Batch Operations 對您指定的 Amazon S3 物件清單執行大規模的批次操作。Amazon S3 會追蹤批次操作的進度、傳送通知,並儲存所有動作的詳細完成報告,提供全受管、可稽核且無伺服器的體驗。如需詳細資訊,請參閱使用 Batch Operations 大量執行物件操作

storagelensconfiguration

S3 Storage Lens

S3 Storage Lens 組態會收集整個組織的儲存指標和跨帳戶的使用者資料。S3 Storage Lens 為管理員提供單一檢視,可檢視組織中跨數百個或甚至數千個帳戶的物件儲存用量和活動,並提供詳細資訊,以在多個彙總層級產生洞察。如需詳細資訊,請參閱使用 Amazon S3 Storage Lens 評估儲存活動和使用量

storagelensgroup

S3 Storage Lens 群組會根據物件中繼資料使用自訂篩選條件彙總指標。S3 Storage Lens 群組可協助您調查資料的特性,例如依存留期、最常見的檔案類型等項目分類的物件分佈。如需詳細資訊,請參閱使用 S3 Storage Lens 群組來篩選和彙總指標

accessgrantsinstance

S3 Access Grants

S3 存取授權執行個體是您為 S3 授權建立的容器。透過 S3 存取授權,您可以為帳戶中的 IAM 身分、其他帳戶 (跨帳戶) 中的 IAM 身分以及從公司目錄新增至 AWS IAM Identity Center 的目錄身分,建立對 Amazon S3 資料的授權。如需 S3 存取授權的詳細資訊,請參閱使用 S3 Access Grants 管理存取

accessgrantslocation

「存取授權位置」是儲存貯體、儲存貯體內的字首,或是您在 S3 存取授權執行個體中註冊的物件。您必須先在 S3 存取授權執行個體中註冊位置,才能建立對該位置的授權。然後,透過 S3 Access Grants,您可以授予您帳戶中 IAM 身分、其他帳戶中 (跨帳戶) 的 IAM 身分,以及 AWS IAM Identity Center 從公司目錄新增至 之目錄身分的儲存貯體、字首或物件的存取權。如需 S3 存取授權的詳細資訊,請參閱使用 S3 Access Grants 管理存取

accessgrant

存取授權是 Amazon S3 資料的個別授權。使用 S3 Access Grants,您可以為帳戶中的 IAM 身分、其他帳戶中的 IAM 身分 (跨帳戶) 以及 AWS IAM Identity Center 從公司目錄新增至 的目錄身分,建立對 Amazon S3 資料的授予。如需 S3 存取授權的詳細資訊,請參閱使用 S3 Access Grants 管理存取

儲存貯體

有兩種類型的 Amazon S3 儲存貯體:「一般用途儲存貯體」和「目錄儲存貯體」

  • 一般用途儲存貯體是原始 S3 儲存貯體類型,建議用於大多數使用案例和存取模式。一般用途儲存貯體也允許跨所有儲存類別儲存的物件,但 S3 Express One Zone 除外。如需 S3 儲存類別的詳細資訊,請參閱了解和管理 Amazon S3 儲存類別

  • 目錄儲存貯體使用 S3 Express One Zone 儲存類別,如果您的應用程式對於效能很敏感,且受益於個位數毫秒的 PUTGET 延遲,則建議使用此類別。如需詳細資訊,請參閱使用目錄儲存貯體S3 Express One Zone使用 IAM 授權地區端點 API 操作

分類 S3 資源

Amazon S3 提供分類和組織 S3 資源的功能。分類資源不僅有助於組織資源,您也可以根據資源類別設定存取管理規則。特別是,字首和標記是兩個儲存組織功能,您可以在設定存取管理許可時使用。

注意

下列資訊適用於一般用途儲存貯體。目錄儲存貯體不支援標記,且具有字首限制。如需詳細資訊,請參閱使用 IAM 授權地區端點 API 操作

  • 字首 — Amazon S3 中的字首是物件金鑰名稱開頭的一串字元,用於組織儲存在 S3 儲存貯體中的物件。您可以使用分隔符號字元 (例如正斜線 /),來表示物件金鑰名稱內字首的結尾。例如,您可能有開頭為 engineering/ 字首的物件金鑰名稱,或開頭為 marketing/campaigns/ 字首的物件金鑰名稱。在字首結尾使用分隔符號 (例如正斜線字元 /) 可模擬資料夾和檔案命名慣例。不過,在 S3 中,字首是物件金鑰名稱的一部分。在一般用途 S3 儲存貯體中,沒有實際的資料夾階層。

    Amazon S3 支援使用物件的字首來組織和分組物件。您也可以依物件的字首來管理對物件的存取。例如,您可以限制只能存取名稱開頭為特定字首的物件。

    如需詳細資訊,請參閱使用字首整理物件。S3 主控台使用「資料夾」的概念,在一般用途儲存貯體中,資料夾基本上是物件金鑰名稱的前綴字首。如需詳細資訊,請參閱在 Amazon S3 主控台中使用資料夾整理物件

  • 標籤 — 每個標籤都是您指派給資源的金鑰/值對。例如,您可以使用標籤 topicCategory=engineering 標記一些資源。您可以使用標記來協助成本分配、分類和組織,以及存取控制。儲存貯體標記僅用於成本分配。您可以標記物件、S3 Storage Lens、作業和 S3 存取授權,以便組織或進行存取控制。在 S3 存取授權中,您也可以使用標記進行成本分配。在使用資源標籤控制資源存取的範例中,您只能共用具有特定標籤或標籤組合的物件。

    如需詳細資訊,請參閱《IAM 使用者指南》中的使用資源標籤控制對 AWS 資源的存取

身分

在 Amazon S3 中,資源擁有者是建立資源的身分,例如儲存貯體或物件。根據預設,只有建立資源的帳戶根使用者和該帳戶內具有必要許可的 IAM 身分才能存取 S3 資源。資源擁有者可以讓其他身分存取其 S3 資源。

未擁有資源的身分可以請求存取該資源。對資源的請求可能是已驗證或未驗證。已驗證的請求必須包含能驗證請求傳送者身分的簽章值,但未驗證的請求則不需要簽章。建議您僅將存取權授予已驗證的使用者。如需請求驗證詳細資訊,請參閱 Amazon S3 API 參考中的提出請求

重要

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

在 Amazon S3 中存取資料的身分可以是下列其中一項:

AWS 帳戶 owner

AWS 帳戶 建立 資源的 。例如,建立儲存貯體的帳戶。此帳戶會擁有資源。如需詳細資訊,請參閱AWS 帳戶根使用者

AWS 帳戶 擁有者相同帳戶中的 IAM 身分

為需要 S3 存取權的新團隊成員設定帳戶時, AWS 帳戶 擁有者可以使用 AWS Identity and Access Management (IAM) 來建立使用者群組角色。然後, AWS 帳戶 擁有者可以與這些 IAM 身分共用資源。帳戶擁有者也可以指定要授予 IAM 身分的許可,以允許或拒絕可在共用資源上執行的動作。

IAM 身分提供更多功能,包括能夠要求使用者在存取共用資源之前輸入憑證。透過使用 IAM 身分,您可以實作 IAM 多重要素驗證 (MFA) 形式,以支援強大的身分基礎。IAM 最佳實務是為存取管理建立角色,而不是將許可授予每個使用者。您可以為個別使用者指派適當的角色。如需更多詳細資訊,請參閱 IAM 中的安全最佳實務

其他 AWS 帳戶擁有者及其 IAM 身分 (跨帳戶存取)

AWS 帳戶 擁有者也可以讓其他 AWS 帳戶擁有者或屬於另一個 AWS 帳戶的 IAM 身分存取資源。

注意

許可委派 — 如果 AWS 帳戶 擁有資源,可以將這些許可授予另一個 AWS 帳戶。然後,該帳戶可以將這些許可或其中一部分委派給同一個帳戶中的使用者。這稱為「許可委派」。但從另一個帳戶收到許可的帳戶,無法將這些許可「跨帳戶」委派給另一個 AWS 帳戶。

匿名使用者 (公開存取)

AWS 帳戶 擁有者可以公開資源。在技術上公開資源可與「匿名使用者」共用資源。除非您變更此設定,否則在 2023 年 4 月之後建立的儲存貯體預設會封鎖所有公開存取。建議您將儲存貯體設定為封鎖公開存取,並只將存取權授予已驗證的使用者。如需封鎖公開存取的詳細資訊,請參閱 封鎖對 Amazon S3 儲存體的公開存取權

AWS 服務

資源擁有者可以授予 Amazon S3 資源的其他服務 AWS 存取權。例如,您可以授予 AWS CloudTrail 服務將日誌檔案寫入儲存貯體的s3:PutObject許可。如需詳細資訊,請參閱提供 AWS 服務的存取權

公司目錄身分

資源擁有者可以使用 S3 存取授權,授權來自您公司目錄的使用者或角色存取 S3 資源。如需將公司目錄新增至 的詳細資訊 AWS IAM Identity Center,請參閱什麼是 IAM Identity Center?

儲存貯體或資源擁有者

您用來建立儲存貯體和上傳物件 AWS 帳戶 的 擁有這些資源。儲存貯體擁有者可將跨帳戶許可授予其他 AWS 帳戶 (或其他帳戶中的使用者),允許其上傳物件。

當儲存貯體擁有者允許另一個帳戶將物件上傳至儲存貯體時,儲存貯體擁有者預設會擁有上傳至其儲存貯體的所有物件。不過,如果同時關閉了儲存貯體擁有者強制執行儲存貯體擁有者偏好的儲存貯體設定, AWS 帳戶 上傳物件的 會擁有這些物件,而且儲存貯體擁有者沒有另一個帳戶所擁有物件的許可,但以下情況除外:

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

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

存取管理工具

Amazon S3 提供了各種安全性功能和工具。以下是這些功能和工具的完整清單。您不需要所有這些存取管理工具,但必須使用其中一或多個來授予 Amazon S3 資源的存取權。適當應用這些工具可協助確保只有預定使用者才能存取您的資源。

最常用的存取管理工具是「存取政策」。存取政策可以是連接至 AWS 資源的資源型政策,例如儲存貯體的儲存貯體政策。存取政策也可以是連接至 AWS Identity and Access Management (IAM) 身分 (例如 IAM 使用者、群組或角色) 的「身分型政策」。撰寫存取政策,授予 AWS 帳戶 和 IAM 使用者、群組和角色許可,以對資源執行操作。例如,您可以將PUT Object許可授予另一個帳戶, AWS 帳戶 讓另一個帳戶可以將物件上傳到您的儲存貯體。

存取政策描述誰可以存取什麼內容。當 Amazon S3 收到請求時,必須評估所有存取政策,以決定要授權或拒絕請求。如需 Amazon S3 如何評估這些政策的詳細資訊,請參閱 Amazon S3 如何授權要求

以下是 Amazon S3 中可用的存取管理工具。

Amazon S3 儲存貯體政策是連接至特定儲存貯體的 JSON 格式 AWS Identity and Access Management (IAM) 資源型政策。使用儲存貯體政策來授予儲存貯體及其中物件的其他 AWS 帳戶 或 IAM 身分許可。許多 S3 存取管理使用案例可以透過使用儲存貯體政策來實現。透過儲存貯體策略,您可以個人化儲存貯體存取權,以協助確保只有您核准的身分才能存取資源,以及在其中執行動作。如需詳細資訊,請參閱Amazon S3 的儲存貯體政策

以下為儲存貯體政策的範例。您可以使用 JSON 檔案來表達儲存貯體政策。此範例政策會授予 IAM 角色對儲存貯體中所有物件的讀取許可。其中包含一個名為 BucketLevelReadPermissions 的陳述式,其允許了對名為 amzn-s3-demo-bucket1 之儲存貯體中的物件進行 s3:GetObject 動作 (讀取許可)。透過將 IAM 角色指定為 Principal,此政策即可將存取權授予具有此角色的任何 IAM 使用者。若要使用此範例政策,請以您自己的資訊取代 user input placeholders

{ "Version":"2012-10-17", "Statement": [ { "Sid":"BucketLevelReadPermissions", "Effect":"Allow", "Principal": { "AWS": "arn:aws:iam::123456789101:role/s3-role" }, "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::amzn-s3-demo-bucket1/*"] }] }
注意

建立政策時,請避免在 Principal 元素中使用萬用字元 (*),因為使用萬用字元可讓任何人存取您的 Amazon S3 資源。反之,請明確列出允許存取儲存貯體的使用者或群組,或使用政策中的條件子句列出必須符合的條件。此外,您可以在適用時將特定許可授予使用者或群組,而不是針對使用者或群組的動作包含萬用字元。

身分型或 IAM 使用者政策是一種 AWS Identity and Access Management (IAM) 政策。身分型政策是連接至您 AWS 帳戶中 IAM 使用者、群組或角色的 JSON 格式政策。您可以使用身分型政策,授權 IAM 身分存取您的儲存貯體或物件。您可以在帳戶中建立 IAM 使用者、群組及角色,然後將存取政策與其相連。然後,您可以授予 AWS 資源 (包括 Amazon S3 資源) 的存取權。如需詳細資訊,請參閱Amazon S3 的身分型政策

以下是身分型政策範例。此範例政策允許相關聯的 IAM 角色,對儲存貯體及其中所含物件執行六個不同的 Amazon S3 動作 (許可)。如果您將此政策連接至帳戶中的 IAM 角色,並將該角色指派給其中一些 IAM 使用者,則具有此角色的使用者將能夠對政策中指定的資源 (儲存貯體) 執行這些動作。若要使用此範例政策,請以您自己的資訊取代 user input placeholders

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AssignARoleActions", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*", "arn:aws:s3:::amzn-s3-demo-bucket1" ] }, { "Sid": "AssignARoleActions2", "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" } ] }

您可以使用 S3 存取授權,將您 Amazon S3 資料的存取權同時授予公司身分目錄 (例如 Active Directory) 中的身分和 AWS Identity and Access Management (IAM) 身分。S3 存取授權可協助您大規模管理資料許可。此外,S3 存取授權會記錄最終使用者身分,以及用於存取 AWS CloudTrail中 S3 資料的應用程式。這會提供深入到最終使用者身分對您 S3 儲存貯體中資料之所有存取的詳細稽核歷史記錄。如需詳細資訊,請參閱使用 S3 Access Grants 管理存取

Amazon S3 Access Points 為使用 S3 上共用資料集的應用程式,簡化了大規模管理資料存取的過程。存取點是連接至儲存貯體的具名網路端點。您可以使用存取點大規模執行 S3 物件操作,例如上傳和擷取物件。一個儲存貯體最多可連接 10,000 個存取點,而且您可以為每個存取點強制執行不同的許可和網路控制,讓您對 S3 物件的存取進行詳細的控制。S3 存取點可與同一個帳戶或其他受信任帳戶中的儲存貯體建立關聯。存取點政策是資源型政策,會與基礎儲存貯體政策一起評估。如需詳細資訊,請參閱使用存取點管理對共用資料集的存取

ACL 為一個清單,其中指出被授予者及獲授予之許可。ACL 會將基本的讀取或寫入許可授予其他 AWS 帳戶。ACL 使用 Amazon S3 專屬的 XML 結構描述。ACL 是一種 AWS Identity and Access Management (IAM) 政策。物件 ACL 用於管理對物件的存取,而儲存貯體 ACL 用於管理對儲存貯體的存取。使用儲存貯體政策時,整個儲存貯體會有一個政策,但要對每個物件指定物件 ACL。建議您將 ACL 保持關閉狀態,除非在異常情況下必須個別控制每個物件的存取。如需使用 ACL 的詳細資訊,請參閱 控制物件的擁有權並停用儲存貯體的 ACL

警告

Amazon S3 中的大多數新式使用案例不需要使用 ACL。

下列為儲存貯體 ACL 的範例。ACL 中的授權,顯示了儲存貯體擁有者具備完整的控制許可。

<?xml version="1.0" encoding="UTF-8"?> <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>Owner-Canonical-User-ID</ID> <DisplayName>owner-display-name</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Canonical User"> <ID>Owner-Canonical-User-ID</ID> <DisplayName>display-name</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>

若要管理對物件的存取,您必須是物件的擁有者。您可以使用物件擁有權儲存貯體設定來控制上傳至儲存貯體的物件的擁有權。此外,使用物件擁有權可開啟 ACL。根據預設,物件擁有權會設定為 儲存貯體擁有者強制執行 設定,並關閉所有 ACL。關閉 ACL 時,儲存貯體擁有者會擁有儲存貯體中的所有物件,並獨佔管理對資料的存取。若要管理存取權,儲存貯體擁有者會使用政策或其他存取管理工具,但不包括 ACL。如需詳細資訊,請參閱控制物件的擁有權並停用儲存貯體的 ACL

物件擁有權有三項設定,可讓您用來控制上傳至儲存貯體之物件的擁有權,以及開啟 ACL:

ACL 已關閉
  • 儲存貯體擁有者強制執行 (預設) - ACL 已關閉,而且儲存貯體擁有者會自動擁有並完全控制儲存貯體中的每個物件。ACL 不會影響 S3 儲存貯體中資料的許可。儲存貯體單獨使用政策來定義存取控制。

ACL 已開啟
  • 儲存貯體擁有者偏好 – 儲存貯體擁有者擁有並完全控制其他帳戶使用 bucket-owner-full-control 標準 ACL 寫入儲存貯體的新物件。

  • Object writer (物件寫入者) – 上傳物件的 AWS 帳戶 ,上傳的物件可擁有物件、完全控制該物件,並且可以透過 ACL 授權其他使用者存取該物件。

其他最佳實務

請考慮使用下列儲存貯體設定和工具來協助保護傳輸中的資料和靜態資料,這兩者對於維護資料的完整性和可存取性至關重要:

  • 封鎖公開存取 — 請勿關閉預設儲存貯體層級設定「封鎖公開存取」。此設定預設會封鎖對資料的公開存取。如需封鎖公開存取的詳細資訊,請參閱 封鎖對 Amazon S3 儲存體的公開存取權

  • S3 版本控制 — 基於資料完整性,您可以實作 S3 版本控制儲存貯體設定,這些設定會在您進行更新時設定物件版本,而不是加以覆寫。如有需要,您可以使用 S3 版本控制來保留、擷取和還原先前的版本。如需 S3 版本控制的詳細資訊,請參閱「使用 S3 版本控制保留多個版本的物件」。

  • S3 物件鎖定 — S3 物件鎖定是您可以實作來實現資料完整性的另一項設定。此功能可以實作單寫多讀 (WORM) 模型,將物件原封不動地儲存。如需有關物件鎖定的詳細資訊,請參閱「使用物件鎖定來鎖定物件」。

  • 物件加密 — Amazon S3 提供多種物件加密選項,可保護傳輸中的資料和靜態資料。「伺服器端加密」會先加密您的物件,再將該物件儲存至其資料中心內的磁碟,接著在下載物件時予以解密。如果您驗證請求並具備存取許可,存取加密物件或未加密物件的方式並無不同。如需詳細資訊,請參閱使用伺服器端加密保護資料。S3 預設會加密新上傳的物件。如需詳細資訊,請參閱對 Amazon S3 儲存貯體設定預設伺服器端加密行為。「用戶端加密」是在將資料傳送到 Amazon S3 之前加密資料的動作。如需詳細資訊,請參閱使用用戶端加密保護資料

  • 簽署方法 — Signature 第 4 版是將身分驗證資訊新增至 HTTP 傳送之 AWS 請求的程序。為了安全起見,對 的大多數請求 AWS 都必須使用存取金鑰簽署,該金鑰包含存取金鑰 ID 和私密存取金鑰。這兩種金鑰通常稱為您的安全憑證。如需詳細資訊,請參閱驗證請求AWS (簽章第 4 版)簽章第 4 版簽署程序

動作

如需 S3 許可和條件索引鍵的完整清單,請參閱服務授權參考中的 Amazon S3 的動作、資源和條件索引鍵

如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊,請參閱Amazon S3 API 操作所需的許可

動作

Amazon S3 的 AWS Identity and Access Management (IAM) 動作是可以在 S3 儲存貯體或物件上執行的可能動作。您可以授權身分執行這些動作,以便對 S3 資源採取動作。S3 動作範例包括用於讀取儲存貯體中物件的 s3:GetObject,以及用於將物件寫入儲存貯體的 s3:PutObject

條件索引鍵

除了動作之外,IAM 條件索引鍵可限制只有在符合條件時才會授予存取權。條件索引鍵為選用。

注意

您可以在資源型存取政策 (例如儲存貯體政策) 或身分型政策中指定下列項目:

  • 政策陳述式 Action 元素中的動作或動作陣列。

  • 在政策陳述式的 Effect 元素中,您可以指定 Allow 來授權列出的動作,也可以指定 Deny 來封鎖列出的動作。為了進一步維護最低權限的實務,存取政策 Effect 元素中的 Deny 陳述式應盡可能廣泛,且 Allow 陳述式應盡可能縮小。若要為政策條件陳述式包含的身分實作選擇加入最佳實務,搭配 s3:* 動作發揮的 Deny 效果會是另一個好方式。

  • 政策陳述式 Condition 元素中的條件索引鍵。

存取管理使用案例

Amazon S3 為資源擁有者提供各種授予存取權的工具。您使用的 S3 存取管理工具取決於您要共用的 S3 資源、您要授予存取權的身分,以及您要允許或拒絕的動作。您可能想要使用一項或一組 S3 存取管理工具來管理對 S3 資源的存取。

在大多數情況下,您可以使用存取政策來管理許可。存取政策可以是連接至資源 (例如儲存貯體或其他 Amazon S3 資源 (S3 資源)) 的資源型政策。存取政策也可以是身分型政策,其會連接到您帳戶中的 AWS Identity and Access Management (IAM) 使用者、群組或角色。您可能會發現儲存貯體政策更適合您的使用案例。如需詳細資訊,請參閱Amazon S3 的儲存貯體政策。或者,使用 AWS Identity and Access Management (IAM),您可以在 中建立 IAM 使用者、群組和角色, AWS 帳戶 並透過身分型政策管理其對儲存貯體和物件的存取。如需詳細資訊,請參閱Amazon S3 的身分型政策

為了協助您瀏覽這些存取管理選項,以下是每項 Amazon S3 存取管理工具的常見 S3 客戶使用案例和建議。

所有存取管理工具都可以滿足此基本使用案例。建議在此使用案例中使用下列存取管理工具:

  • 儲存貯體政策 – 如果您想要授予一個儲存貯體或少量儲存貯體的存取權,或者如果每個儲存貯體的儲存貯體存取許可都很類似,請使用儲存貯體政策。使用儲存貯體政策時,您可以管理個別儲存貯體的每個政策。如需詳細資訊,請參閱Amazon S3 的儲存貯體政策

  • 身分型政策 – 如果您擁有非常大量的儲存貯體,每個儲存貯體各有不同的存取許可,而且只有幾個要管理的使用者角色,則可以為使用者、群組或角色使用 IAM 政策。如果您管理使用者對其他 AWS 資源以及 Amazon S3 資源的存取,IAM 政策也是不錯的選擇。如需詳細資訊,請參閱範例 1:為其使用者授予儲存貯體許可的儲存貯體擁有者

  • S3 存取授權 – 您可以使用 S3 存取授權來授予對 S3 儲存貯體、字首或物件的存取。S3 存取授權可讓您大規模指定不同的物件層級許可,而儲存貯體政策的大小則限制為 20 KB。如需詳細資訊,請參閱開始使用 S3 Access Grants

  • 存取點 – 您可以使用存取點,這是連接至儲存貯體的具名網路端點。一個儲存貯體最多可連接 10,000 個存取點,而且您可以為每個存取點強制執行不同的許可和網路控制,讓您對 S3 物件的存取進行詳細的控制。如需詳細資訊,請參閱使用存取點管理對共用資料集的存取

若要將許可授予另一個 AWS 帳戶,您必須使用儲存貯體政策或下列建議的存取管理工具之一。您無法在此使用案例中使用身分型存取政策。如需授予跨帳戶存取權的詳細資訊,請參閱如何提供 Amazon S3 儲存貯體中物件的跨帳戶存取權

建議在此使用案例中使用下列存取管理工具:

  • 儲存貯體政策 – 使用儲存貯體政策時,您可以管理個別儲存貯體的每個政策。如需詳細資訊,請參閱Amazon S3 的儲存貯體政策

  • S3 存取授權 – 您可以使用 S3 存取授權來授予對 S3 儲存貯體、字首或物件的跨帳戶許可。您可以使用 S3 存取授權來大規模指定不同的物件層級許可,而儲存貯體政策的大小則限制為 20 KB。如需詳細資訊,請參閱開始使用 S3 Access Grants

  • 存取點 – 您可以使用存取點,這是連接至儲存貯體的具名網路端點。一個儲存貯體最多可連接 10,000 個存取點,而且您可以為每個存取點強制執行不同的許可和網路控制,讓您對 S3 物件的存取進行詳細的控制。如需詳細資訊,請參閱使用存取點管理對共用資料集的存取

例如,您可以在儲存貯體政策中,授予對儲存貯體中共用特定金鑰名稱字首或具有特定標籤之物件的存取。您可以授予以金鑰名稱字首 logs/ 開頭的物件讀取許可。不過,如果您的存取許可會因物件而異,則使用儲存貯體政策授予個別物件的許可不一定實用,尤其因為儲存貯體政策的大小限制為 20 KB。

建議在此使用案例中使用下列存取管理工具:

  • S3 存取授權 – 您可以使用 S3 存取授權來管理物件層級或字首層級許可。不同於儲存貯體政策,您可以使用 S3 存取授權來大規模指定不同的物件層級許可。儲存貯體政策的大小限制為 20 KB。如需詳細資訊,請參閱開始使用 S3 Access Grants

  • 存取點 – 您可以使用存取點來管理物件層級或字首層級許可。存取點是連接至儲存貯體的具名網路端點。一個儲存貯體最多可連接 10,000 個存取點,而且您可以為每個存取點強制執行不同的許可和網路控制,讓您對 S3 物件的存取進行詳細的控制。如需詳細資訊,請參閱使用存取點管理對共用資料集的存取

  • ACL – 不建議使用存取控制清單 (ACL),尤其因為 ACL 限制為每個物件 100 個授權。不過,如果您選擇開啟 ACL,請在儲存貯體設定中,將 物件擁有權 設定為 儲存貯體擁有者偏好使用ACL 已啟用。使用此設定時,儲存貯體擁有者會自動擁有使用 bucket-owner-full-control 標準 ACL 寫入的新物件,而不是物件寫入者。然後,您可以使用物件 ACL 這項 XML 格式的存取政策,來授權其他使用者存取物件。如需詳細資訊,請參閱存取控制清單 (ACL) 概觀

建議在此使用案例中使用下列存取管理工具:

  • 儲存貯體政策 – 使用儲存貯體政策時,您可以管理個別儲存貯體的每個政策。如需詳細資訊,請參閱Amazon S3 的儲存貯體政策

  • 存取點 – 存取點是連接至儲存貯體的具名網路端點。一個儲存貯體最多可連接 10,000 個存取點,而且您可以為每個存取點強制執行不同的許可和網路控制,讓您對 S3 物件的存取進行詳細的控制。如需詳細資訊,請參閱使用存取點管理對共用資料集的存取

建議在此使用案例中使用下列存取管理工具:

  • 存取點 – 存取點是連接至儲存貯體的具名網路端點。一個儲存貯體最多可連接 10,000 個存取點,而且您可以為每個存取點強制執行不同的許可和網路控制,讓您對 S3 物件的存取進行詳細的控制。每個存取點都會強制執行自訂的存取點政策,該政策可結合附加至基礎儲存貯體的儲存貯體政策運作。如需詳細資訊,請參閱使用存取點管理對共用資料集的存取

適用於 Amazon S3 的虛擬私有雲端 (VPC) 端點是 VPC 中唯一允許連線到 Amazon S3 的邏輯實體。建議在此使用案例中使用下列存取管理工具:

  • VPC 設定中的儲存貯體 – 您可以使用儲存貯體政策來控制誰可以存取您的儲存貯體,以及其可以存取哪些 VPC 端點。如需詳細資訊,請參閱使用儲存貯體政策控制來自 VPC 端點的存取

  • 存取點 – 如果您選擇設定存取點,您可以使用存取點政策。您可以將任何存取點設定為僅接受來自 Virtual Private Cloud (VPC) 的請求,以限制只能透過私人網路存取 Amazon S3 資料。您也可以為每個存取點設定自訂封鎖公開存取設定。如需詳細資訊,請參閱使用存取點管理對共用資料集的存取

透過 S3,您可以託管靜態網站,並允許任何人檢視網站的內容 (該網站是從 S3 儲存貯體託管)。

建議在此使用案例中使用下列存取管理工具:

  • Amazon CloudFront – 此解決方案可讓您託管要對外公開的 Amazon S3 靜態網站,同時繼續封鎖對儲存貯體內容的所有公開存取。如果您想要將所有四項 S3 封鎖公開存取設定保持啟用狀態,並託管 S3 靜態網站,可以使用 Amazon CloudFront 原始存取控制 (OAC)。Amazon CloudFront 提供建立安全靜態網站所需的功能。此外,不使用此解決方案的 Amazon S3 靜態網站只能支援 HTTP 端點。CloudFront 使用 Amazon S3 的耐久性儲存體,同時提供額外的安全標頭,例如 HTTPS。HTTPS 透過加密一般 HTTP 請求並防止常見的網路攻擊來增加安全性。

    如需詳細資訊,請參閱《Amazon CloudFront 開發人員指南》中的安全靜態網站入門

  • 讓 Amazon S3 儲存貯體可公開存取 – 您可以設定儲存貯體作為公開存取的靜態網站。

    警告

    我們不建議這個方法。反之,建議您使用 Amazon S3 靜態網站作為 Amazon CloudFront 的一部分。如需詳細資訊,請參閱上一個選項,或參閱開始使用安全靜態網站

    若要建立不含 Amazon CloudFront 的 Amazon S3 靜態網站,您必須先關閉所有封鎖公開存取設定。為靜態網站撰寫儲存貯體政策時,請確定您只允許 s3:GetObject 動作,而不允許 ListObjectPutObject 許可。這有助於確保使用者無法檢視儲存貯體中的所有物件或新增自己的內容。如需詳細資訊,請參閱設定網站存取許可

建立新的 Amazon S3 儲存貯體時,預設會啟用 封鎖公開存取 設定。如需封鎖公開存取的詳細資訊,請參閱 封鎖對 Amazon S3 儲存體的公開存取權

不建議允許對您的儲存貯體進行公開存取。不過,如果您必須針對特定使用案例這麼做,我們為此使用案例建議了下列存取管理工具:

  • 停用封鎖公開存取設定 – 儲存貯體擁有者可以允許對儲存貯體提出未經驗證的請求。則例如,當儲存貯體具有公有儲存貯體政策或儲存貯體 ACL 授予公開存取權時,則允許未經驗證的 PUT Object 請求。所有未經驗證的請求都是由其他任意 AWS 使用者提出,或甚至是未經驗證的匿名使用者。此使用者在 ACL 中是以特定的正式使用者 ID 65a011a29cdf8ec533ec3d1ccaae921c 呈現。如果物件上傳至 WRITEFULL_CONTROL,則這會特別將存取權授予所有使用者群組或匿名使用者。如需公有儲存貯體政策和公開存取控制清單 (ACL) 的詳細資訊,請參閱「「公有」的意義」。

儲存貯體政策和身分型政策都有 20 KB 的大小限制。如果您的存取許可要求很複雜,您可能會超過此大小限制。

建議在此使用案例中使用下列存取管理工具:

  • 存取點 – 如果適用於您的使用案例,請使用存取點。使用存取點時,每個儲存貯體都有多個具名網路端點,每個端點都有自己的存取點政策,可搭配基礎儲存貯體政策使用。不過,存取點只能對物件採取動作,不能對儲存貯體採取動作,也不支援跨區域複寫。如需詳細資訊,請參閱使用存取點管理對共用資料集的存取

  • S3 存取授權 – 使用 S3 存取授權,其支援非常大量的授權,可授予儲存貯體、字首或物件的存取權。如需詳細資訊,請參閱開始使用 S3 Access Grants

您可以新增公司目錄,而不是透過 AWS Identity and Access Management (IAM) 管理使用者、群組和角色 AWS IAM Identity Center。如需詳細資訊,請參閱什麼是 IAM Identity Center

將公司目錄新增至 後 AWS IAM Identity Center,建議您使用下列存取管理工具,授予公司目錄身分存取 S3 資源的權限:

  • S3 存取授權 – 使用 S3 存取授權,其支援將存取權授予您公司目錄中的使用者或角色。如需詳細資訊,請參閱開始使用 S3 Access Grants

建議在此使用案例中使用下列存取管理工具:

  • 儲存貯體 ACL – 儲存貯體 ACL 的唯一建議使用案例是將許可授予特定 AWS 服務,例如 Amazon CloudFront awslogsdelivery 帳戶。當您建立或更新分佈並開啟 CloudFront 記錄時,CloudFront 會更新儲存貯體 ACL 以為 awslogsdelivery 帳戶提供向儲存貯體寫入日誌的 FULL_CONTROL 許可。如需詳細資訊,請參閱《Amazon CloudFront 開發人員指南》中的設定標準日誌記錄和存取日誌檔案所需的許可。如果儲存日誌的儲存貯體使用「儲存貯體擁有者強制執行」的 S3 物件擁有權設定來關閉 ACL,則 CloudFront 無法將日誌寫入儲存貯體。如需詳細資訊,請參閱控制物件的擁有權並停用儲存貯體的 ACL

您可以使用儲存貯體政策、存取點或 S3 存取授權,授予其他帳戶存取權,以將物件上傳至您的儲存貯體。如果您已授予儲存貯體的跨帳戶存取權,您可以確保上傳至儲存貯體的任何物件仍在您的完全控制下。

建議在此使用案例中使用下列存取管理工具:

  • 物件擁有權 – 將儲存貯體層級設定 物件擁有權 保留為預設的 儲存貯體擁有者強制執行 設定。

存取管理故障診斷

下列資源可協助您對 S3 存取管理的任何問題進行故障診斷:

針對拒絕存取 (403 禁止) 錯誤進行疑難排解

如果您遇到存取拒絕問題,請檢查帳戶層級和儲存貯體層級設定。此外,請檢查您用來授予存取權的存取管理功能,以確保政策、設定或組態正確無誤。如需 Amazon S3 中導致拒絕存取 (403 禁止) 錯誤之常見原因的詳細資訊,請參閱 對 Amazon S3 中的存取遭拒 (403 Forbidden) 錯誤進行故障診斷

IAM Access Analyzer for S3

如果您不想公開提供您的任何資源,或想要限制對資源的公開存取,您可以使用 IAM Access Analyzer for S3。在 Amazon S3 主控台上,使用 IAM Access Analyzer for S3,檢閱以儲存貯體存取控制清單 (ACL)、儲存貯體政策或存取點政策來授予公開或共用存取的所有儲存貯體。IAM Access Analyzer for S3 會提醒您,儲存貯體設定為允許存取網際網路或其他 上的任何人 AWS 帳戶,包括組織 AWS 帳戶 外部。針對每個公開或共用儲存貯體,您會收到報告公開或共用存取來源和層級的發現項目。

在 IAM Access Analyzer for S3 中,只要一個動作,就可以封鎖對儲存貯體的所有公開存取。除非您需要公開存取以支援特定使用案例,否則建議您封鎖對儲存貯體的所有公開存取。在封鎖所有公開存取之前,請確定您的應用程式在沒有公開存取的情況下可繼續正常運作。如需詳細資訊,請參閱封鎖對 Amazon S3 儲存體的公開存取權

您還可以檢閱儲存貯體層級許可設定,以設定詳細的存取層級。對於需要公開或共用存取的特定和經驗證使用案例,您可以將對儲存貯體的發現項目存檔,以確認並記錄您要讓儲存貯體保持公開或共用。您可以隨時再次瀏覽和修改這些儲存貯體組態。您也可以將發現項目下載為 CSV 報告,供稽核之用。

您無需額外付費,即可在 Amazon S3 主控台上使用 IAM Access Analyzer for S3。IAM Access Analyzer for S3 採用 AWS Identity and Access Management (IAM) IAM Access Analyzer 技術。若要在 Amazon S3 主控台上使用 IAM Access Analyzer for S3,您必須造訪 IAM 主控台,並在 IAM Access Analyzer 中為每個區域建立帳戶層級分析器。

如需 IAM Access Analyzer for S3 的詳細資訊,請參閱 使用 IAM Access Analyzer for S3 檢閱儲存貯體存取權

日誌記錄和監控

監控是維護 Amazon S3 解決方案可靠性、可用性和效能的重要組成部分,以便您更輕鬆地偵錯存取失敗。記錄可以提供使用者收到的任何錯誤,以及何時提出請求和提出哪些請求的洞見。 AWS 提供多種工具來監控您的 Amazon S3 資源,例如:

  • AWS CloudTrail

  • Amazon S3 存取日誌

  • AWS Trusted Advisor

  • Amazon CloudWatch

如需詳細資訊,請參閱在 Amazon S3 中記錄和監控