本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon S3 如何搭配 IAM 運作
在您使用 IAM 管理對 Amazon S3 的存取權之前,請了解哪些 IAM 功能可以與 Amazon S3 搭配使用。
IAM 功能 | 支援 Amazon S3 |
---|---|
是 |
|
是 |
|
是 |
|
是 |
|
是 |
|
是 |
|
部分 |
|
是 |
|
是 |
|
是 |
|
部分 |
若要全面了解 Amazon S3 和其他 AWS 服務如何與大多數 IAM 功能搭配使用,請參閱《AWS IAM 使用者指南》中的與 IAM 搭配使用的 服務。
如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊,請參閱Amazon S3 API 操作所需的許可。
Amazon S3 的身分型政策
支援身分型政策:是
身分型政策是可以附加到身分 (例如 IAM 使用者、使用者群組或角色) 的 JSON 許可政策文件。這些政策可控制身分在何種條件下能對哪些資源執行哪些動作。如需了解如何建立身分型政策,請參閱《IAM 使用者指南》中的透過客戶管理政策定義自訂 IAM 許可。
使用 IAM 身分型政策,您可以指定允許或拒絕的動作和資源,以及在何種條件下允許或拒絕動作。您無法在身分型政策中指定主體,因為這會套用至連接的使用者或角色。如要了解您在 JSON 政策中使用的所有元素,請參閱《IAM 使用者指南》中的 IAM JSON 政策元素參考。
Amazon S3 的身分型政策範例
若要檢視 Amazon S3 身分型政策的範例,請參閱Amazon S3 的身分型政策。
Amazon S3 中的資源型政策
支援資源型政策:是
資源型政策是附加到資源的 JSON 政策文件。資源型政策的最常見範例是 IAM 角色信任政策和 Amazon S3 儲存貯體政策。在支援資源型政策的服務中,服務管理員可以使用它們來控制對特定資源的存取權限。對於附加政策的資源,政策會定義指定的主體可以對該資源執行的動作以及在何種條件下執行的動作。您必須在資源型政策中指定主體。委託人可以包括帳戶、使用者、角色、聯合身分使用者或 AWS 服務。
如需啟用跨帳戶存取權,您可以指定在其他帳戶內的所有帳戶或 IAM 實體,做為資源型政策的主體。新增跨帳戶主體至資源型政策,只是建立信任關係的一半。當委託人和資源位於不同位置時 AWS 帳戶,信任帳戶中的 IAM 管理員也必須授予委託人實體 (使用者或角色) 存取資源的許可。其透過將身分型政策連接到實體來授與許可。不過,如果資源型政策會為相同帳戶中的主體授予存取,這時就不需要額外的身分型政策。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM 中的快帳戶資源存取。
Amazon S3 服務支援「儲存貯體政策」、「存取點政策」和「存取授權」:
-
儲存貯體政策是連接至 Amazon S3 儲存貯體的資源型政策。儲存貯體政策定義哪些主體可以對儲存貯體執行動作。
-
存取點政策是資源型政策,會與基礎儲存貯體政策一起評估。
-
存取授權是簡化的模型,可透過字首、儲存貯體或物件定義 Amazon S3 中資料的存取許可。如需 S3 存取授權的資訊,請參閱使用 S3 Access Grants 管理存取。
儲存貯體政策的主體
Principal
元素指定允許或拒絕存取資源的使用者、帳戶、服務或其他實體。以下為指定 Principal
的範例。如需詳細資訊,請參閱《IAM 使用者指南》中的委託人。
授予 許可 AWS 帳戶
若要將許可授予 AWS 帳戶,請使用下列格式識別帳戶。
"AWS":"
account-ARN
"
範例如下。
"Principal":{"AWS":"arn:aws:iam::
AccountIDWithoutHyphens
:root"}
"Principal":{"AWS":["arn:aws:iam::
AccountID1WithoutHyphens
:root","arn:aws:iam::AccountID2WithoutHyphens
:root"]}
將許可授予 IAM 使用者
若要將許可授予您帳戶內的 IAM 使用者,您必須提供 "AWS":"
名稱/值對。user-ARN
"
"Principal":{"AWS":"arn:aws:iam::
account-number-without-hyphens
:user/username
"}
如需提供逐步說明的詳細範例,請參閱 範例 1:為其使用者授予儲存貯體許可的儲存貯體擁有者 和 範例 3:授予對其未擁有之物件的許可的儲存貯體擁有者。
注意
若您在更新儲存貯體政策後刪除 IAM 身分,儲存貯體政策會在主體中顯示唯一識別符,而非 ARN。這些唯一 ID 不會重複使用,因此您可以安全地從所有政策陳述式中移除具有唯一識別符的主體。如需唯一識別符的詳細資訊,請參閱《IAM 使用者指南》中的 IAM 識別符。
授予匿名許可
警告
授予 Amason S3 儲存貯體的匿名存取時請小心。當您授予匿名存取時,全球所有人皆可存取您的儲存貯體。我們鄭重建議您絕不要授予任何種類的 S3 儲存貯體匿名寫入存取。
若要將許可授予所有人 (又稱為匿名存取),請將萬用字元 ("*"
) 設為 Principal
值即可。例如,若將儲存貯體設定為網站,您會希望儲存貯體中所有物件都可公開存取。
"Principal":"*"
"Principal":{"AWS":"*"}
在資源型政策中使用 "Principal": "*"
搭配 Allow
效果,可讓任何人存取您的資源 AWS,即使他們未登入。
將 "Principal" : { "AWS" : "*" }
與資源型政策中的 Allow
效用搭配使用,即可允許位於同一分割區的任何帳戶中的任何根使用者、IAM 使用者、擔任角色工作階段或聯合身分使用者存取您的資源。
對於匿名使用者,這兩種方法相同。如需詳細資訊,請參閱《IAM 使用者指南》中的 所有主體。
您不能使用萬用字元來比對部分主體名稱或 ARN。
重要
在 AWS 存取控制政策中,委託人「*」和 {AWS」:「*」} 的行為完全相同。
限制資源許可
您也可以使用資源政策,針對可另提供給 IAM 主體使用的資源限制其存取權限。使用 Deny
陳述式防止存取。
下列範例會在未使用安全的傳輸通訊協定時封鎖存取:
{"Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": <bucket ARN>, "Condition": { "Boolean": { "aws:SecureTransport" : "false"} } }
使用 "Principal": "*"
對所有人套用此限制,是此政策的最佳實務,而不是嘗試只使用此方法拒絕對特定帳戶或主體的存取。
要求透過 CloudFront URL 來存取
您可以要求使用者只使用 CloudFront URL 來存取您的 Amazon S3 內容,而不是使用 Amazon S3 URL。若要這樣做,請建立 CloudFront 原始存取控制 (OAC)。然後,變更 S3 資料的許可。在您的儲存貯體政策中,您可以將 CloudFront 設定為主體,如下所示:
"Principal":{"Service":"cloudfront.amazonaws.com"}
使用政策中的 Condition
元素,僅當請求代表包含 S3 原始伺服器的 CloudFront 分佈時,才允許 CloudFront 存取儲存貯體。
"Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::
111122223333
:distribution/CloudFront-distribution-ID
" } }
如需透過 CloudFront URL 要求 S3 存取的詳細資訊,請參閱《Amazon CloudFront 開發人員指南》中的限制對 Amazon Simple Storage Service 來源的存取。如需使用 Amazon CloudFront 的安全和隱私權優勢詳細資訊,請參閱設定安全存取和限制對內容的存取。
Amazon S3 的資源型政策範例
若要檢視 Amazon S3 儲存貯體的政策範例,請參閱Amazon S3 的儲存貯體政策。
若要檢視存取點的政策範例,請參閱設定 IAM 政策,以使用一般用途儲存貯體的存取點。
Amazon S3 的政策動作
支援政策動作:是
管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說,哪個主體在什麼条件下可以對什麼資源執行哪些動作。
JSON 政策的 Action
元素描述您可以用來允許或拒絕政策中存取的動作。政策動作通常具有與相關聯 AWS API 操作相同的名稱。有一些例外狀況,例如沒有相符的 API 操作的僅限許可動作。也有一些作業需要政策中的多個動作。這些額外的動作稱為相依動作。
政策會使用動作來授予執行相關聯動作的許可。
以下顯示 S3 API 操作與所需政策動作之間的不同映射關係類型。
具有相同名稱的一對一映射。例如,若要使用
PutBucketPolicy
API 操作,需要s3:PutBucketPolicy
政策動作。具有不同名稱的一對一映射。例如,若要使用
ListObjectsV2
API 操作,需要s3:ListBucket
政策動作。一對多映射。例如,若要使用
HeadObject
API 操作,需要s3:GetObject
。此外,當您使用 S3 物件鎖定並想要取得物件的法務保存狀態或保留設定時,也需要對應的s3:GetObjectLegalHold
或s3:GetObjectRetention
政策動作,才能使用HeadObject
API 操作。多對一映射。例如,若要使用
ListObjectsV2
或HeadBucket
API 操作,需要s3:ListBucket
政策動作。
若要查看政策中可用的 Amazon S3 動作清單,請參閱服務授權參考中的 Amazon S3 定義的動作。如需 Amazon S3 API 操作的完整清單,請參閱 Amazon Simple Storage Service API 參考中的 Amazon S3 API 動作。
如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊,請參閱Amazon S3 API 操作所需的許可。
Amazon S3 中的政策動作會在動作之前使用下列字首:
s3
若要在單一陳述式中指定多個動作,請用逗號分隔。
"Action": [ "s3:
action1
", "s3:action2
" ]
儲存貯體操作
儲存貯體操作是在儲存貯體資源類型上執行的 S3 API 操作。例如:CreateBucket
、ListObjectsV2
和 PutBucketPolicy
。儲存貯體操作的 S3 政策動作要求儲存貯體政策或 IAM 身分型政策中的 Resource
元素必須是具有下列範例格式的 S3 儲存貯體類型 Amazon Resource Name (ARN) 識別碼。
"Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
"
下列儲存貯體政策授予帳戶
的使用者 12345678901
執行 ListObjectsV2 API 操作和列出 S3 儲存貯體中物件的 Akua
s3:ListBucket
許可。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Akua to list objects in the bucket", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
12345678901
:user/Akua" }, "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
" } ] }
一般用途儲存貯體存取點政策中的儲存貯體操作
只有在基礎儲存貯體允許相同的許可時,在存取點中授予的一般用途儲存貯體政策許可才有效。當您使用 S3 Access Points 時,您必須將存取控制從儲存貯體委派給存取點,或在存取點政策中將相同的許可新增至基礎儲存貯體的政策。如需詳細資訊,請參閱設定 IAM 政策,以使用一般用途儲存貯體的存取點。在存取點政策中,儲存貯體操作的 S3 政策動作要求您針對 Resource
元素使用具有下列格式的存取點 ARN。
"Resource": "arn:aws:s3:
us-west-2
:123456789012
:accesspoint/example-access-point
"
下列存取點政策授予帳戶
的使用者 12345678901
透過名為 Akua
的 S3 存取點執行 ListObjectsV2 API 操作的 example-access-point
s3:ListBucket
許可。此許可允許
列出與 Akua
相關聯之儲存貯體中的物件。example-access-point
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow
Akua
to list objects in the bucket through access point", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901
:user/Akua
" }, "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:us-west-2
:123456789012
:accesspoint/example-access-point
" } ] }
注意
一般用途儲存貯體的存取點不支援所有儲存貯體操作。如需詳細資訊,請參閱一般用途儲存貯體與 S3 操作的相容性存取點。
目錄儲存貯體存取點政策中的儲存貯體操作
只有在基礎儲存貯體允許相同的許可時,在存取點中為目錄儲存貯體政策授予的許可才有效。當您使用 S3 Access Points 時,您必須將存取控制從儲存貯體委派給存取點,或在存取點政策中將相同的許可新增至基礎儲存貯體的政策。如需詳細資訊,請參閱設定 IAM 政策以使用目錄儲存貯體的存取點。在存取點政策中,儲存貯體操作的 S3 政策動作要求您針對 Resource
元素使用具有下列格式的存取點 ARN。
"Resource": "arn:aws:s3:
us-west-2
:123456789012
:accesspoint/example-access-point--usw2-az1--xa-s3
"
下列存取點政策授予
帳戶使用者透過名為 的存取點執行 ListObjectsV2 API 操作的Akua
12345678901
s3:ListBucket
許可
。此許可允許 example-access-point--usw2-az1--xa-s3
列出與 Akua
相關聯之儲存貯體中的物件。example-access-point--usw2-az1--xa-s3
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow
Akua
to list objects in the bucket through access point", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901
:user/Akua
" }, "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3express:us-west-2
:123456789012
:accesspoint/example-access-point--usw2-az1--xa-s3
" } ] }
注意
目錄儲存貯體的存取點不支援所有儲存貯體操作。如需詳細資訊,請參閱目錄儲存貯體存取點的物件操作。
物件操作
物件操作是對物件資源類型採取動作的 S3 API 操作。例如:GetObject
、PutObject
和 DeleteObject
。物件操作的 S3 政策動作要求政策中的 Resource
元素必須是具有下列範例格式的 S3 物件 ARN。
"Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/*"
"Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/prefix
/*"
注意
物件 ARN 必須在儲存貯體名稱後面包含正斜線,如先前範例所示。
下列儲存貯體政策會將 s3:PutObject
許可授予帳戶
的使用者 12345678901
。此許可允許 Akua
使用 PutObject API 操作,將物件上傳至名為 Akua
的 S3 儲存貯體。amzn-s3-demo-bucket
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow
Akua
to upload objects", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901
:user/Akua
" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/*" } ] }
存取點政策中的物件操作
當您使用 S3 Access Points 控制對物件操作的存取時,您可以使用存取點政策。當您使用存取點政策時,物件操作的 S3 政策動作要求您針對 Resource
元素使用具有下列格式的存取點 ARN:arn:aws:s3:
。對於使用存取點的物件操作,您必須在 region
:account-id
:accesspoint/access-point-name
/object/resource
Resource
元素中包含整個存取點 ARN 後面的 /object/
值。請見下方範例。
"Resource": "arn:aws:s3:
us-west-2
:123456789012
:accesspoint/example-access-point
/object/*"
"Resource": "arn:aws:s3:
us-west-2
:123456789012
:accesspoint/example-access-point
/object/prefix
/*"
下列存取點政策會將 s3:GetObject
許可授予帳戶
的使用者 12345678901
。此許可允許 Akua
透過名為 Akua
的存取點,對與存取點相關聯之儲存貯體中的所有物件執行 GetObject API 操作。example-access-point
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow
Akua
to get objects through access point", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901
:user/Akua
" }, "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:us-west-2
:123456789012
:accesspoint/example-access-point
/object/*" } ] }
注意
存取點不支援所有物件操作。如需詳細資訊,請參閱一般用途儲存貯體與 S3 操作的相容性存取點。
目錄儲存貯體存取點政策中的物件操作
當您使用目錄儲存貯體的存取點來控制物件操作的存取時,您可以使用存取點政策。當您使用存取點政策時,物件操作的 S3 政策動作要求您針對 Resource
元素使用具有下列格式的存取點 ARN:arn:aws:s3:
。對於使用存取點的物件操作,您必須在 region
:account-id
:accesspoint/access-point-name
/object/resource
Resource
元素中包含整個存取點 ARN 後面的 /object/
值。請見下方範例。
"Resource": "arn:aws:s3express:
us-west-2
:123456789012
:accesspoint/example-access-point--usw2-az1--xa-s3
/object/*"
"Resource": "arn:aws:s3express:
us-west-2
:123456789012
:accesspoint/example-access-point--usw2-az1--xa-s3
/object/prefix
/*"
下列存取點政策會將 s3:GetObject
許可授予帳戶
的使用者 12345678901
。此許可允許 Akua
透過名為 Akua
的存取點,對與存取點相關聯之儲存貯體中的所有物件執行 GetObject API 操作。example-access-point--usw2-az1--xa-s3
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow
Akua
to get objects through access point", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901
:user/Akua
" }, "Action": "s3express:CreateSession","s3:GetObject" "Resource": "arn:aws:s3:us-west-2
:123456789012
:accesspoint/example-access-point--usw2-az1--xa-s3
/object/*" } ] }
注意
目錄儲存貯體的存取點不支援所有物件操作。如需詳細資訊,請參閱目錄儲存貯體存取點的物件操作。
一般用途儲存貯體操作的存取點
存取點操作是在 accesspoint
資源類型上執行的 S3 API 操作。例如:CreateAccessPoint
、DeleteAccessPoint
和 GetAccessPointPolicy
。存取點操作的 S3 政策動作只能用於 IAM 身分型政策,不能用於儲存貯體政策或存取點政策。存取點操作要求 Resource
元素必須是具有下列格式的存取點 ARN。
"Resource": "arn:aws:s3:
us-west-2
:123456789012
:accesspoint/example-access-point
"
下列 IAM 身分型政策授予 s3:GetAccessPointPolicy
在名為
的 S3 存取點上執行 GetAccessPointPolicy API 操作的許可。example-access-point
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Grant permission to retrieve the access point policy of access point
example-access-point
", "Effect": "Allow", "Action": [ "s3:GetAccessPointPolicy" ], "Resource": "arn:aws:s3:*:123456789012
:accesspoint/example-access-point
" } ] }
當您使用存取點來控制對儲存貯體操作的存取時,請參閱一般用途儲存貯體存取點政策中的儲存貯體操作;若要控制對物件操作的存取,請參閱存取點政策中的物件操作。如需如何設定存取點政策的詳細資訊,請參閱設定 IAM 政策,以使用一般用途儲存貯體的存取點。
目錄儲存貯體操作的存取點
目錄儲存貯體操作的存取點是對accesspoint
資源類型操作的 S3 API 操作。例如:CreateAccessPoint
、DeleteAccessPoint
和 GetAccessPointPolicy
。存取點操作的 S3 政策動作只能用於 IAM 身分型政策,不能用於儲存貯體政策或存取點政策。目錄儲存貯體操作的存取點需要 Resource
元素作為存取點 ARN,格式如下。
"Resource": "arn:aws:s3:
us-west-2
:123456789012
:accesspoint/example-access-point--usw2-az1--xa-s3
"
下列 IAM 身分型政策授予s3express:GetAccessPointPolicy
許可,在名為 的存取點上執行 GetAccessPointPolicy API 操作
。example-access-point--usw2-az1--xa-s3
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Grant permission to retrieve the access point policy of access point
example-access-point--usw2-az1--xa-s3
", "Effect": "Allow", "Action": [ "s3express:CreateSession","s3express:GetAccessPointPolicy" ], "Resource": "arn:aws:s3:*:123456789012
:accesspoint/example-access-point--usw2-az1--xa-s3
" } ] }
下列 IAM 身分型政策授予 s3express:CreateAccessPoint
許可,以建立目錄儲存貯體的存取點。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Grant CreateAccessPoint.", "Principal": "*", "Action": "s3express:CreateSession", "s3express:CreateAccessPoint""Effect": "Allow", "Resource": "*" } ] }
下列 IAM 身分型政策會授予 s3express:PutAccessPointScope
許可,為目錄儲存貯體的存取點建立存取點範圍。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Grant PutAccessPointScope", "Principal": "*", "Action": "s3express:CreateSession", "s3express:CreateAccessPoint", "S3Express:PutAccessPointScope""Effect": "Allow", "Resource": "*", } ] }
當您使用目錄儲存貯體的存取點來控制對儲存貯體操作的存取時,請參閱 目錄儲存貯體存取點政策中的儲存貯體操作;若要控制對物件操作的存取,請參閱 目錄儲存貯體存取點政策中的物件操作。如需如何設定目錄儲存貯體政策存取點的詳細資訊,請參閱 設定 IAM 政策以使用目錄儲存貯體的存取點。
Object Lambda 存取點操作
藉助 Amazon S3 Object Lambda,您可將自己的程式碼新增至 Amazon S3 GET
、LIST
和 HEAD
請求,以便在資料傳回應用程式時對其做出修改和處理。您可以透過 Object Lambda 存取點提出請求,其運作方式與透過其他存取點提出請求相同。如需詳細資訊,請參閱使用 S3 Object Lambda 轉換物件。
如需如何為 Object Lambda 存取點操作設定政策的詳細資訊,請參閱設定 Object Lambda 存取點的 IAM 政策。
多區域存取點操作
多區域存取點提供全域端點,可供應用程式用來滿足來自位於多個 AWS 區域之 S3 儲存貯體的請求。您可以使用多區域存取點,進而使用與單一區域中使用的相同架構來建置多區域應用程式,然後在全球任何地方執行這些應用程式。如需詳細資訊,請參閱使用多區域存取點管理多區域流量。
如需如何為多區域存取點操作設定政策的詳細資訊,請參閱多區域存取點政策範例。
批次作業操作
(批次操作) 作業操作是在作業資源類型上執行的 S3 API 操作。例如,DescribeJob
和 CreateJob
。作業操作的 S3 政策動作只能用於 IAM 身分型政策,不能用於儲存貯體政策。此外,作業操作要求 IAM 身分型政策中的 Resource
元素必須是具有下列範例格式的 job
ARN。
"Resource": "arn:aws:s3:*:
123456789012
:job/*"
下列 IAM 身分型政策授予 s3:DescribeJob
對名為
的 S3 Batch Operations 作業執行 DescribeJob API 操作的許可。example-job
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow describing the Batch operation job
example-job
", "Effect": "Allow", "Action": [ "s3:DescribeJob" ], "Resource": "arn:aws:s3:*:123456789012
:job/example-job
" } ] }
S3 Storage Lens 組態操作
如需如何設定 S3 Storage Lens 組態操作的詳細資訊,請參閱設定 Amazon S3 Storage Lens 許可。
帳戶操作
帳戶操作是在帳戶層級執行的 S3 API 操作。例如,GetPublicAccessBlock
(針對帳戶)。帳戶不是 Amazon S3 定義的資源類型。帳戶操作的 S3 政策動作只能用於 IAM 身分型政策,不能用於儲存貯體政策。此外,帳戶操作要求 IAM 身分型政策中的 Resource
元素必須是 "*"
。
下列 IAM 身分型政策授予 s3:GetAccountPublicAccessBlock
執行帳戶層級 GetPublicAccessBlock API 操作並擷取帳戶層級「封鎖公開存取」設定的許可。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"Allow retrieving the account-level Public Access Block settings", "Effect":"Allow", "Action":[ "s3:GetAccountPublicAccessBlock" ], "Resource":[ "*" ] } ] }
Amazon S3 的政策範例
-
若要檢視 Amazon S3 身分型政策的範例,請參閱Amazon S3 的身分型政策。
-
若要檢視 Amazon S3 資源型政策的範例,請參閱Amazon S3 的儲存貯體政策和設定 IAM 政策,以使用一般用途儲存貯體的存取點。
Amazon S3 的政策資源
支援政策資源:是
管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說,哪個主體在什麼條件下可以對什麼資源執行哪些動作。
Resource
JSON 政策元素可指定要套用動作的物件。陳述式必須包含 Resource
或 NotResource
元素。最佳實務是使用其 Amazon Resource Name (ARN) 來指定資源。您可以針對支援特定資源類型的動作 (稱為資源層級許可) 來這麼做。
對於不支援資源層級許可的動作 (例如列出操作),請使用萬用字元 (*) 來表示陳述式適用於所有資源。
"Resource": "*"
某些 Amazon S3 API 動作支援多個資源。例如,s3:GetObject
存取
和 example-resource-1
,因此主體必須具有存取這兩個資源的許可。若要在單一陳述式中指定多個資源,請以逗號分隔 ARN,如下列範例所示。example-resource-2
"Resource": [ "
example-resource-1
", "example-resource-2
"
Amazon S3 中的資源可以是儲存貯體、物件、存取點或作業。在政策中,您可以使用儲存貯體、物件、存取點或作業的 Amazon Resource Name (ARN) 識別資源。
若要查看 Amazon S3 資源類型及其 ARN 的完整清單,請參閱服務授權參考中的 Amazon S3 定義的資源。若要了解您可以使用哪些動作指定每個資源的 ARN,請參閱 Amazon S3 定義的動作。
如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊,請參閱Amazon S3 API 操作所需的許可。
資源 ARN 中的萬用字元
資源 ARN 中可以使用萬用字元。您可以在任何 ARN 區段 (以冒號分隔的部分) 中使用萬用字元 (*
和 ?
)。星號 (*
) 代表零或更多字元的任何組合,而問號 (?
) 則代表任何單一字元。您可以在每個區段中使用多個 *
或 ?
字元。不過,萬用字元不能跨區段。
-
下列 ARN 在 ARN 的
relative-ID
部分中使用*
萬用字元,以識別
儲存貯體中的所有物件。amzn-s3-demo-bucket
arn:aws:s3:::
amzn-s3-demo-bucket
/* -
下列 ARN 使用
*
來表示所有 S3 儲存貯體和物件。arn:aws:s3:::*
-
下列 ARN 在
relative-ID
部分中同時使用萬用字元*
和?
。此 ARN 會識別儲存貯體中的所有物件,例如
、amzn-s3-demo-example1bucket
、amzn-s3-demo-example2bucket
等。amzn-s3-demo-example3bucket
arn:aws:s3:::
amzn-s3-demo-example
?bucket
/*
資源 ARN 的政策變數
Amazon S3 ARN 中可以使用政策變數。在政策評估期間,這些預先定義的變數會取代為其對應值。假設您將儲存貯體組織為資料夾集合,每位使用者各一個資料夾。資料夾名稱與使用者名稱相同。若要授予使用者其資料夾許可,您可在資源 ARN 中指定政策變數:
arn:aws:s3:::
bucket_name
/developers
/${aws:username}/
在執行時期評估政策時,資源 ARN 中的變數 ${aws:username}
會取代為提出請求之人員的使用者名稱。
Amazon S3 的政策範例
-
若要檢視 Amazon S3 身分型政策的範例,請參閱Amazon S3 的身分型政策。
-
若要檢視 Amazon S3 資源型政策的範例,請參閱Amazon S3 的儲存貯體政策和設定 IAM 政策,以使用一般用途儲存貯體的存取點。
Amazon S3 的政策條件索引鍵
支援服務特定政策條件金鑰:是
管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說,哪個主體在什麼條件下可以對什麼資源執行哪些動作。
Condition
元素 (或 Condition
區塊) 可讓您指定使陳述式生效的條件。Condition
元素是選用項目。您可以建立使用條件運算子的條件運算式 (例如等於或小於),來比對政策中的條件和請求中的值。
若您在陳述式中指定多個 Condition
元素,或是在單一 Condition
元素中指定多個索引鍵, AWS 會使用邏輯 AND
操作評估他們。如果您為單一條件索引鍵指定多個值, 會使用邏輯OR
操作 AWS 評估條件。必須符合所有條件,才會授與陳述式的許可。
您也可以在指定條件時使用預留位置變數。例如,您可以只在使用者使用其 IAM 使用者名稱標記時,將存取資源的許可授予該 IAM 使用者。如需更多資訊,請參閱 IAM 使用者指南中的 IAM 政策元素:變數和標籤。
AWS 支援全域條件金鑰和服務特定的條件金鑰。若要查看所有 AWS 全域條件索引鍵,請參閱《IAM 使用者指南》中的AWS 全域條件內容索引鍵。
每個 Amazon S3 條件索引鍵都會映射到可設定條件之 API 允許的同名要求標頭。Amazon S3 特定的條件索引鍵決定相同名稱請求標頭的行為。例如,用來授予 s3:GetObjectVersion
許可之條件式許可的條件索引鍵 s3:VersionId
,會定義您在 GET Object 請求中設定的 versionId
查詢參數行為。
若要查看 Amazon S3 條件索引鍵的清單,請參閱服務授權參考中的 Amazon S3 的條件索引鍵。若要了解您可以搭配哪些動作和資源使用條件索引鍵,請參閱 Amazon S3 定義的動作。
範例:僅限上傳具有特定儲存類別的物件
假設帳戶 A (以帳戶 ID
代表) 擁有一個儲存貯體。帳戶管理員希望限制帳戶 A 的使用者 123456789012
,只有在物件儲存在 Dave
STANDARD_IA
儲存類別時,
才能將物件上傳至儲存貯體。若要限制物件上傳至特定儲存體方案,帳戶 A 管理員可以使用 Dave
s3:x-amz-storage-class
條件金鑰,如下列儲存貯體政策範例所示。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/Dave
" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1
/*", "Condition": { "StringEquals": { "s3:x-amz-storage-class": [ "STANDARD_IA" ] } } } ] }
在範例中,Condition
區塊指定的 StringEquals
條件會套用到指定的金鑰/值對 "s3:x-amz-acl":["public-read"]
。您可使用一組預先定義的金鑰來表達條件。此範例使用 s3:x-amz-acl
條件索引鍵。此條件需要使用者在每個 PutObject
請求中包含值為 public-read
的 x-amz-acl
標頭。
Amazon S3 的政策範例
-
若要檢視 Amazon S3 身分型政策的範例,請參閱Amazon S3 的身分型政策。
-
若要檢視 Amazon S3 資源型政策的範例,請參閱Amazon S3 的儲存貯體政策和設定 IAM 政策,以使用一般用途儲存貯體的存取點。
Amazon S3 中的 ACL
支援 ACL:是
在 Amazon S3 中,存取控制清單 ACLs) 會控制哪些 AWS 帳戶 具有存取資源的許可。ACL 類似於資源型政策,但它們不使用 JSON 政策文件格式。
重要
Amazon S3 中的大多數新式使用案例不再需要使用 ACL。
如需如何在 Amazon S3 中使用 ACL 控制存取權的資訊,請參閱使用 ACL 管理存取。
搭配使用 ABAC 與 Amazon S3
支援 ABAC (政策中的標籤):部分
屬性型存取控制 (ABAC) 是一種授權策略,可根據屬性來定義許可。在 中 AWS,這些屬性稱為標籤。您可以將標籤連接至 IAM 實體 (使用者或角色) 和許多 AWS 資源。為實體和資源加上標籤是 ABAC 的第一步。您接著要設計 ABAC 政策,允許在主體的標籤與其嘗試存取的資源標籤相符時操作。
ABAC 在成長快速的環境中相當有幫助,並能在政策管理變得繁瑣時提供協助。
如需根據標籤控制存取,請使用 aws:ResourceTag/
、key-name
aws:RequestTag/
或 key-name
aws:TagKeys
條件索引鍵,在政策的條件元素中,提供標籤資訊。
如果服務支援每個資源類型的全部三個條件金鑰,則對該服務而言,值為 Yes。如果服務僅支援某些資源類型的全部三個條件金鑰,則值為 Partial。
如需 ABAC 的詳細資訊,請參閱《IAM 使用者指南》中的使用 ABAC 授權定義許可。如要查看含有設定 ABAC 步驟的教學課程,請參閱 IAM 使用者指南中的使用屬性型存取控制 (ABAC)。
若要檢視身分型政策範例,以根據標籤限制對 S3 Batch Operations 作業的存取,請參閱使用作業標籤控制 Batch Operations 的許可。
ABAC 和物件標籤
在 ABAC 政策中,物件使用 s3:
標籤,而不是 aws:
標籤。若要根據物件標籤控制對物件的存取,您可以使用下列標籤在政策的 Condition 元素中提供標籤資訊:
-
s3:ExistingObjectTag/
tag-key
-
s3:RequestObjectTagKeys
-
s3:RequestObjectTag/
tag-key
如需使用物件標籤控制存取的資訊,包括範例許可政策,請參閱標記與存取控制政策。
搭配 Amazon S3 使用臨時憑證
支援臨時憑證:是
當您使用臨時登入資料登入時,有些 AWS 服務 無法運作。如需詳細資訊,包括使用哪些臨時登入 AWS 服務 資料,請參閱《AWS 服務 IAM 使用者指南》中的使用 IAM 的 。
如果您 AWS Management Console 使用使用者名稱和密碼以外的任何方法登入 ,則表示您使用的是暫時登入資料。例如,當您 AWS 使用公司的單一登入 (SSO) 連結存取 時,該程序會自動建立臨時登入資料。當您以使用者身分登入主控台,然後切換角色時,也會自動建立臨時憑證。如需切換角色的詳細資訊,請參閱《IAM 使用者指南》中的從使用者切換至 IAM 角色 (主控台)。
您可以使用 AWS CLI 或 AWS API 手動建立臨時登入資料。然後,您可以使用這些臨時登入資料來存取 AWS。 AWS 建議您動態產生臨時登入資料,而不是使用長期存取金鑰。如需詳細資訊,請參閱 IAM 中的暫時性安全憑證。
Amazon S3 的轉送存取工作階段
支援轉寄存取工作階段 (FAS):是
當您使用 IAM 使用者或角色在 中執行動作時 AWS,您會被視為委託人。使用某些服務時,您可能會執行某個動作,進而在不同服務中啟動另一個動作。FAS 使用呼叫 的委託人許可 AWS 服務,結合 AWS 服務 請求向下游服務提出請求。FAS 請求只有在服務收到需要與其他 AWS 服務 或 資源互動才能完成的請求時才會提出。在此情況下,您必須具有執行這兩個動作的許可。如需提出 FAS 請求時的政策詳細資訊,請參閱轉發存取工作階段。
使用 SSE-KMS 加密物件時,Amazon S3 會使用 FAS 呼叫 來 AWS KMS 解密物件。如需詳細資訊,請參閱搭配 AWS KMS 金鑰使用伺服器端加密 (SSE-KMS)。
S3 存取授權也會使用 FAS。在您為特定身分建立對 S3 資料的存取授權之後,承授者會向 S3 存取授權請求臨時憑證。S3 Access Grants 會從 取得申請者的臨時憑證, AWS STS 並將憑證提供給申請者。如需詳細資訊,請參閱透過 S3 Access Grants 請求存取 Amazon S3 資料。
Amazon S3 的服務角色
支援服務角色:是
服務角色是服務擔任的 IAM 角色,可代您執行動作。IAM 管理員可以從 IAM 內建立、修改和刪除服務角色。如需詳細資訊,請參閱《IAM 使用者指南》中的建立角色以委派許可權給 AWS 服務。
警告
變更服務角色的許可可能會中斷 Amazon S3 功能。只有在 Amazon S3 提供指引時,才能編輯服務角色。
Amazon S3 的服務連結角色
支援服務連結角色:部分
服務連結角色是連結至 的一種服務角色 AWS 服務。服務可以擔任代表您執行動作的角色。服務連結角色會出現在您的 中 AWS 帳戶 ,並由服務擁有。IAM 管理員可以檢視,但不能編輯服務連結角色的許可。
Amazon S3 支援 Amazon S3 Storage Lens 的服務連結角色。如需建立或管理 Amazon S3 服務連結角色的詳細資訊,請參閱讓 Amazon S3 Storage Lens 使用服務連結角色。
Amazon S3 服務即主體
政策中的服務名稱 | S3 功能 | 其他資訊 |
---|---|---|
|
S3 複寫 |
|
|
S3 事件通知 |
|
|
S3 庫存 |
|
|
S3 Access Grants |
|
|
S3 批次操作 |
|
|
S3 伺服器存取記錄 |
|
|
S3 Storage Lens |