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 Access Point,您可以將自己的程式碼新增至 Amazon S3 LISTGET、 和 HEAD請求,以在資料傳回應用程式時修改和處理資料。如需詳細資訊,請參閱建立 Object Lambda 存取點

multiregionaccesspoint

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

job

S3 批次操作

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

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

accessgrantslocation

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

accessgrant

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

儲存貯體

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

分類 S3 資源

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

注意

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

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

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

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

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

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

身分

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

沒有資源的身分可以請求存取該資源。資源的請求會經過身分驗證或未經驗證。已驗證的請求必須包含驗證請求寄件者的簽章值,但未驗證的請求不需要簽章。我們建議您僅將存取權授予已驗證的使用者。如需請求身分驗證的詳細資訊,請參閱在 Amazon S3 API參考提出請求

重要

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

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

AWS 帳戶 owner

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

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

為需要 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 Access Grants 將來自您公司目錄的使用者或角色授予 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,允許對名為 的儲存貯體中的物件s3:GetObject執行動作 (讀取許可)amzn-s3-demo-bucket1。透過將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) 政策的類型。身分型政策是一種 JSON格式化的政策,會連接至您 AWS 帳戶中IAM的使用者、群組或角色。您可以使用身分型政策來授予儲存貯體或物件的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 Access Grants 為公司身分目錄中的兩個身分建立對 Amazon S3 資料的存取授與,例如 Active Directory、 和 至 AWS Identity and Access Management (IAM) 身分。S3 Access Grants 可協助您大規模管理資料許可。此外,S3 Access Grants 會記錄最終使用者身分,以及用於存取 中 S3 資料的應用程式 AWS CloudTrail。這會為 S3 儲存貯體中對資料的所有存取提供最終使用者身分的詳細稽核歷史記錄。如需詳細資訊,請參閱使用 S3 Access Grants 管理存取

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

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

警告

Amazon S3 中的大多數現代使用案例不需要使用 ACLs。

以下是儲存貯體 的範例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>

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

物件擁有權有三個設定,您可以使用這兩個設定來控制上傳到儲存貯體的物件擁有權,並開啟 ACLs:

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

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

  • 物件寫入器 – 上傳物件 AWS 帳戶 的 擁有物件,擁有物件的完整控制權,並可透過 授予其他使用者存取權ACLs。

其他最佳實務

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

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

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

  • S3 物件鎖定 — S3 物件鎖定是另一個您可以實作的設定,以實現資料完整性。此功能可以實作 write-once-read-many(WORM) 模型來永久存放物件。如需有關物件鎖定的詳細資訊,請參閱「使用物件鎖定鎖定物件」。

  • 物件加密:Amazon S3 提供數個物件加密選項,可保護傳輸中和靜態的資料。伺服器端加密會先加密物件,然後再將其儲存在資料中心的磁碟上,然後在下載物件時將其解密。如果您驗證請求並具有存取許可,則存取加密或未加密物件的方式沒有差異。如需詳細資訊,請參閱使用伺服器端加密保護資料。根據預設,S3 會加密新上傳的物件。如需詳細資訊,請參閱對 Amazon S3 儲存貯體設定預設伺服器端加密行為。「用戶端加密」是在將資料傳送到 Amazon S3 之前加密資料的動作。如需詳細資訊,請參閱使用用戶端加密保護資料

  • 簽署方法 — Signature 第 4 版是將身分驗證資訊新增至 傳送之 AWS 請求的程序HTTP。為了安全起見,對 的大多數請求 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政策。IAM 如果您正在管理使用者對其他 AWS 資源以及 Amazon S3 資源的存取,政策也是不錯的選擇。如需詳細資訊,請參閱範例 1:為其使用者授予儲存貯體許可的儲存貯體擁有者

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

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

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

針對此使用案例,我們建議使用下列存取管理工具:

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

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

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

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

針對此使用案例,我們建議使用下列存取管理工具:

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

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

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

針對此使用案例,我們建議使用下列存取管理工具:

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

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

針對此使用案例,我們建議使用下列存取管理工具:

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

Amazon S3 的虛擬私有雲端 (VPC) 端點是 內的邏輯實體VPC,僅允許連線至 S3。針對此使用案例,我們建議使用下列存取管理工具:

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

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

使用 S3,您可以託管靜態網站,並允許任何人檢視網站的內容,該網站由 S3 儲存貯體託管。

針對此使用案例,我們建議使用下列存取管理工具:

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

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

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

    警告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

存取管理疑難排解

下列資源可協助您疑難排解 S3 存取管理的任何問題:

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

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

IAM 適用於 S3 的 Access Analyzer

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

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

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

IAM Amazon S3 主控台免費提供 Access Analyzer for S3。 Amazon 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 中為每個區域建立帳戶層級分析器。 Amazon S3

如需 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 中記錄和監控