設定 IAM 政策以使用目錄儲存貯體的存取點 - Amazon Simple Storage Service

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

設定 IAM 政策以使用目錄儲存貯體的存取點

存取點支援 AWS Identity and Access Management (IAM) 資源政策,可讓您依資源、使用者或其他條件控制存取點的使用。若要讓應用程式或使用者透過存取點存取物件,存取點和基礎儲存貯體政策都必須允許請求。

重要

當透過儲存貯體名稱直接存取儲存貯體時,將存取點新增至目錄儲存貯體並不會變更儲存貯體的行為。針對儲存貯體的所有現有操作將繼續像以前一樣運作。您在存取點政策或存取點範圍中包含的限制僅適用於透過該存取點提出的請求。

使用 IAM 資源政策時,請務必先解決 的安全警告、錯誤、一般警告和建議, AWS Identity and Access Management Access Analyzer 再儲存政策。IAM Access Analyzer 會比對 IAM 政策文法最佳實務來執行政策檢查,以驗證您的政策。這些檢查會產生問題清單並提供建議,協助您撰寫具有功能性且符合安全最佳實務的政策。

若要進一步了解如何使用 IAM Access Analyzer 驗證政策,請參閱《IAM 使用者指南》中的 IAM Access Analyzer 政策驗證。若要檢視 IAM Access Analyzer 傳回的警告、錯誤和建議清單,請參閱 IAM Access Analyzer 政策檢查參考

目錄儲存貯體政策範例的存取點

下列存取點政策示範如何控制對目錄儲存貯體的請求。存取點政策需要儲存貯ARNs 或存取點 ARNs。政策不支援存取點別名。以下是存取點 ARN 的範例:

arn:aws:s3express:region:account-id:accesspoint/myaccesspoint--zoneID--xa-s3

您可以在存取點的詳細資訊中檢視存取點 ARN。如需詳細資訊,請參閱檢視目錄儲存貯體存取點的詳細資訊

注意

存取點政策中授予的權限只有在基礎儲存貯體也允許相同的存取時才有效。您可以透過兩種方式完成此操作:

  1. (建議)將存取控制委派給存取點中所述,將儲存貯體的存取控制委派給存取點。

  2. 將存取點政策中包含的相同權限新增至基礎儲存貯體的政策。

範例 1 – 將存取點限制為 VPC 網路原始伺服器的服務控制政策

下列服務控制政策需要使用虛擬私有雲端 (VPC) 網路原始伺服器建立所有新的存取點。制定此政策後,組織中的使用者就無法建立可從網際網路存取的任何存取點。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "s3express:CreateAccessPoint", "Resource": "*", "Condition": { "StringNotEquals": { "s3express:AccessPointNetworkOrigin": "VPC" } } } ] }
範例 2 – 存取點政策,以限制儲存貯體存取具有 VPC 網路來源的存取點

下列存取點政策會將儲存貯體 amzn-s3-demo-bucket--zoneID--x-s3 的所有存取權限制在具有 VPC 網路來源的存取點。

{ "Version": "2012-10-17", "Statement": [ { "Principal": "*", "Action": "s3express:CreateSession", "Effect": "Deny", "Resource": "arn:aws:s3express:region:111122223333:bucket/amzn-s3-demo-bucket--zoneID--x-s3", "Condition": { "StringNotEqualsIfExists": { "s3express:AccessPointNetworkOrigin": "VPC" } } } ] }

條件索引鍵

目錄儲存貯體的存取點具有條件索引鍵,您可以在 IAM 政策中用來控制對 資源的存取。下列條件金鑰僅代表 IAM 政策的一部分。如需完整政策範例,請參閱 目錄儲存貯體政策範例的存取點將存取控制委派給存取點授予跨帳戶存取點的許可

s3express:DataAccessPointArn

此範例顯示如何依存取點的 Amazon 資源名稱 (ARN) 篩選存取權,並符合區域區域中 AWS 帳戶 111122223333 的所有存取點:

"Condition" : { "StringLike": { "s3express:DataAccessPointArn": "arn:aws:s3express:region:111122223333:accesspoint/*" } }
s3express:DataAccessPointAccount

此範例顯示一個字串運算子,您可以使用它來比對存取點擁有者的帳戶 ID。下列範例會比對 AWS 帳戶 111122223333 擁有的所有存取點。

"Condition" : { "StringEquals": { "s3express:DataAccessPointAccount": "111122223333" } }
s3express:AccessPointNetworkOrigin

此範例顯示一個字串運算子,您可以使用它來比對網路來源,InternetVPC。下列範例僅會比對存取點與 VPC 來源。

"Condition" : { "StringEquals": { "s3express:AccessPointNetworkOrigin": "VPC" } }
s3express:Permissions

您可以使用 s3express:Permissions 來限制存取存取點範圍內的特定 API 操作。以下是支援的 API 操作:

  • PutObject

  • GetObject

  • DeleteObject

  • ListBucket ( 需要ListObjectsV2)

  • GetObjectAttributes

  • AbortMultipartUpload

  • ListBucketMultipartUploads

  • ListMultipartUploadParts

注意

使用多值條件索引鍵時,建議您搭配使用 ForAllValuesAllow陳述式和 ForAnyValueDeny陳述式。如需詳細資訊,請參閱《IAM 使用者指南》中的多值內容金鑰

如需搭配 Amazon S3 使用條件索引鍵的詳細資訊,請參閱服務授權參考中的 Amazon S3 的動作、資源和條件索引鍵

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

將存取控制委派給存取點

您可以將存取控制從儲存貯體政策委派給存取點政策。下列範例儲存貯體政策允許完整存取儲存貯體擁有者帳戶所擁有的所有存取點。套用政策後,所有對此儲存貯體的存取都會由存取點政策控制。我們建議您針對不需要直接存取儲存貯體的所有使用案例,以此方式設定儲存貯體。

範例 將存取控制委派給存取點的儲存貯體政策
{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS": "*" }, "Action" : "*", "Resource" : [ "Bucket ARN", "Condition": { "StringEquals" : { "s3express:DataAccessPointAccount" : "Bucket owner's account ID" } } }] }

授予跨帳戶存取點的許可

若要建立另一個帳戶所擁有之儲存貯體的存取點,您必須先指定儲存貯體名稱和帳戶擁有者 ID 來建立存取點。然後,儲存貯體擁有者必須更新儲存貯體政策,以授權來自存取點的請求。建立存取點類似於建立 DNS CNAME,其中存取點不會提供儲存貯體內容的存取權。所有儲存貯體存取權都由儲存貯體政策控制。下列範例儲存貯體政策允許儲存貯體上來自受信任 AWS 帳戶所擁有之存取點的 GETLIST 請求。

Bucket ARN 取代為儲存貯體的 ARN。

範例 將許可委派給另一個 的儲存貯體政策 AWS 帳戶
{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS": "*" }, "Action" : "s3express:CreateSession", "Resource" : [ "Bucket ARN" ], "Condition": { "StringEquals" : { "s3express:DataAccessPointAccount": "Access point owner's account ID" }, "ForAllValues:StringEquals": { "s3express:Permissions": [ "GetObject", "ListBucket" ] } } }] }