本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon S3 如何使用 IAM
在您用IAM來管理 Amazon S3 的存取權限之前,請先了解哪些IAM功能可與 Amazon S3 搭配使用。
IAM您可以搭配 Amazon S3 使用的功能 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
IAM 功能 | 支援 Amazon S3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
是 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
是 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
是 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
是 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
是 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
是 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
部分 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
是 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
是 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
是 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
部分 |
若要深入瞭解 Amazon S3 和其他 AWS 服務如何使用大多數IAM功能,請參閱IAM使用者指南IAM中的可使用AWS 服務。
Amazon S3 的基於身份的政策
支援以身分識別為基礎的原則:是
以身分識別為基礎的原則是您可以附加至身分識別 (例如使用者、使用IAM者群組或角色) 的JSON權限原則文件。這些政策可控制身分在何種條件下能對哪些資源執行哪些動作。若要瞭解如何建立以身分識別為基礎的策略,請參閱《IAM使用指南》中的〈建立IAM策略〉。
使用以IAM身分識別為基礎的策略,您可以指定允許或拒絕的動作和資源,以及允許或拒絕動作的條件。您無法在身分型政策中指定主體,因為這會套用至連接的使用者或角色。若要瞭解可在JSON策略中使用的所有元素,請參閱《使用IAM者指南》中的IAMJSON策略元素參考資料。
Amazon S3 的基於身分識別的政策範例
若要檢視 Amazon S3 身分識別型政策的範例,請參閱。Amazon S3 的基於身份的政策
Amazon S3 內基於資源的政策
支援以資源為基礎的政策:是
以資源為基礎的JSON策略是您附加至資源的政策文件。以資源為基礎的政策範例包括IAM角色信任政策和 Amazon S3 儲存貯體政策。在支援資源型政策的服務中,服務管理員可以使用它們來控制對特定資源的存取權限。對於附加政策的資源,政策會定義指定的主體可以對該資源執行的動作以及在何種條件下執行的動作。您必須在資源型政策中指定主體。主參與者可以包括帳戶、使用者、角色、同盟使用者或。 AWS services
若要啟用跨帳戶存取,您可以在以資源為基礎的策略中指定一個或多個帳戶中的一個或多個帳戶中的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
"}
如需提供 step-by-step 指示的詳細範例,請參閱範例 1:為其使用者授予儲存貯體許可的儲存貯體擁有者和範例 3:授予對其未擁有之物件的許可的儲存貯體擁有者。
注意
如果在您更新儲存貯體政策後刪除IAM身分,儲存貯體政策會在主體元素中顯示唯一識別碼,而不是顯示ARN。這IDs些唯一性絕不會重複使用,因此您可以安全地從所有原則陳述式中移除具有唯一識別碼的主參與者。如需有關唯一識別碼的詳細資訊,請參閱IAM使用指南中的IAM識別碼。
授予匿名許可
警告
授予 Amason S3 儲存貯體的匿名存取時請小心。當您授予匿名存取時,全球所有人皆可存取您的儲存貯體。我們鄭重建議您絕不要授予任何種類的 S3 儲存貯體匿名寫入存取。
若要將許可授予所有人 (又稱為匿名存取),請將萬用字元 ("*"
) 設為 Principal
值即可。例如,若將儲存貯體設定為網站,您會希望儲存貯體中所有物件都可公開存取。
"Principal":"*"
"Principal":{"AWS":"*"}
在"Principal": "*"
以資源為基礎的策略中使用可讓任何人(即使未登入)存取您的資源。Allow
AWS
在以資源為基礎的策略中使用"Principal" : { "AWS" : "*" }
可讓相同分割區中任何帳號中的任何 root 使用IAM者、使用者、假定角色工作階段或同盟使用者存取您的資源。Allow
對於匿名使用者,這兩種方法相同。如需詳細資訊,請參閱IAM使用指南中的所有主參與者。
您不能使用萬用字元來比對主參與者名稱的一部分或ARN。
重要
因為任何人都可以建立 AWS 帳戶,所以這兩種方法的安全性層級是相等的,即使它們的功能不同。
限制資源許可
您也可以使用資源策略來限制對IAM主參與者可以使用的資源的存取。使用 Deny
陳述式防止存取。
下列範例會在未使用安全的傳輸通訊協定時封鎖存取:
{"Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": <bucket ARN>, "Condition": { "Boolean": { "aws:SecureTransport" : "false"} } }
使用 "Principal": "*"
對所有人套用此限制,是此政策的最佳實務,而不是嘗試只使用此方法拒絕對特定帳戶或主體的存取。
需要通過訪問 CloudFront URLs
您可以要求您的使用者只能透過使用 CloudFront URLs而不是使用 Amazon S3 來存取您的 Amazon S3 內容URLs。若要這麼做,請建立 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
" } }
有關要求透過 S3 存取的詳細資訊 CloudFront URLs,請參閱 Amazon CloudFront 開發人員指南中的限制對 Amazon 簡單儲存服務來源的存取。如需使用 Amazon 的安全性和隱私權優勢的詳細資訊 CloudFront,請參閱設定安全存取和限制內容存取。
適用於 Amazon S3 的資源型政策範例
若要檢視 Amazon S3 儲存貯體的政策範例,請參閱Amazon S3 的存儲桶政策。
若要檢視存取點的原則範例,請參閱設IAM定使用存取點的原則。
Amazon S3 的政策動作
支援原則動作:是
管理員可以使用 AWS JSON策略來指定誰可以存取什麼內容。也就是說,哪個主體在什麼條件下可以對什麼資源執行哪些動作。
JSON策略Action
元素描述了您可以用來允許或拒絕策略中存取的動作。策略動作通常與關聯的 AWS API操作具有相同的名稱。有一些例外情況,例如沒有匹配API操作的僅限權限的操作。也有一些作業需要政策中的多個動作。這些額外的動作稱為相依動作。
政策會使用動作來授予執行相關聯動作的許可。
以下顯示 S3 API 操作和必要政策動作之間的不同類型的映射關係。
O ne-to-one 映射具有相同名稱。例如,若要使用此
PutBucketPolicy
API作業,則需要執行s3:PutBucketPolicy
原則動作。O ne-to-one 映射具有不同名稱。例如,若要使用此
ListObjectsV2
API作業,則需要執行s3:ListBucket
原則動作。O ne-to-many 映射。例如,若要使用此
HeadObject
API作業,s3:GetObject
則需要。此外,當您使用 S3 Object Lock 並想要取得物件的法律保留狀態或保留設定時,您還需要對應的s3:GetObjectLegalHold
或s3:GetObjectRetention
政策動作,才能使用該HeadObject
API作業。M any-to-one 映射。例如,若要使用
ListObjectsV2
或作HeadBucket
API業,則需要執行s3:ListBucket
原則動作。
若要查看在政策中使用的 Amazon S3 動作清單,請參閱服務授權參考中 Amazon S3 定義的動作。如需 Amazon S3 API 操作的完整清單,請參閱 Amazon 簡單儲存服務API參考中的 Amazon S3 API 動作。
Amazon S3 中的政策動作會在動作前使用下列前置詞:
s3
若要在單一陳述式中指定多個動作,請用逗號分隔。
"Action": [ "s3:
action1
", "s3:action2
" ]
儲存貯體操作
儲存貯體操作是在儲存貯體資源類型上運作的 S3 API 操作。例如:CreateBucket
、ListObjectsV2
和 PutBucketPolicy
。儲存貯體操作的 S3 政策動作要求儲存貯體政策或IAM身分型政策中的Resource
元素必須是 S3 儲存貯體類型 Amazon 資源名稱 (ARN) 識別碼,採用下列範例格式。
"Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
"
下列值區政策會授與使用者 Akua
與帳戶 12345678901
執行 ListObjectsV2 API 操作和列出 S3 存儲桶中的對象的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 Point 時,您必須將存取控制從儲存貯體委派給存取點,或將存取點政策中的相同權限新增至基礎儲存貯體的政策。如需詳細資訊,請參閱 設IAM定使用存取點的原則。在存取點政策中,儲存貯體操作的 S3 政策動作會要求您以下列格式使用 For Resource
元素。accesspoint
ARN
"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/
DOC-EXAMPLE-ACCESS-POINT
"
下列存取點原則會授與使用者 Akua
與帳戶 12345678901
透過 S3 存取點執行 ListObjectsV2 API 作業的s3:ListBucket
權限 DOC-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/DOC-EXAMPLE-ACCESS-POINT
" } ] }
注意
S3 存取點並非所有儲存貯體操作都支援。如需詳細資訊,請參閱 存取點與 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必須包含正斜線,如前面範例所示。
下列值區政策會授與使用者 Akua
與帳戶 12345678901
執行將物件上傳至 S3 儲存貯體的PutObjectAPI作業的s3:PutObject
權限。
{ "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 存取點控制物件操作的存取時,您可以使用存取點政策。當您使用存取點政策時,物件操作的 S3 政策動作會要求您使用 accesspoint
ARN for Resource
元素,格式如下:arn:aws:s3:region:account-id:accesspoint/access-point-name/object/resource
對於使用存取點的物件作業,您必須在Resource
元素中的整個存取點ARN之後加入/object/
值。請見下方範例。
"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/
DOC-EXAMPLE-ACCESS-POINT
/object/*"
"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/
DOC-EXAMPLE-ACCESS-POINT
/object/prefix
/*"
下列存取點原則會授與使用者 Akua
與帳戶 12345678901
透過存取點執行GetObjectAPI作業的權s3:GetObject
限 DOC-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/DOC-EXAMPLE-ACCESS-POINT
/object/*" } ] }
注意
S3 存取點並非支援所有物件操作。如需詳細資訊,請參閱 存取點與 S3 操作的相容性。
存取點作業
存取點操作是在accesspoint
資源類型上運作的 S3 API 操作。例如:CreateAccessPoint
、DeleteAccessPoint
和 GetAccessPointPolicy
。存取點操作的 S3 政策動作只能用IAM於身分型政策,而不能用於儲存貯體政策或存取點政策。存取點作業需要使用下列範例格式的Resource
元素。accesspoint
ARN
"Resource": "arn:aws:s3:us-west-2:
123456789012
:accesspoint/DOC-EXAMPLE-ACCESS-POINT
"
下列IAM身分型政策授予在 S3 存s3:GetAccessPointPolicy
取點上執行GetAccessPointPolicyAPI作業的權限 DOC-EXAMPLE-ACCESS-POINT
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Grant permission to retrieve the access point policy of access point
DOC-EXAMPLE-ACCESS-POINT
", "Effect": "Allow", "Action": [ "s3:GetAccessPointPolicy" ], "Resource": "arn:aws:s3:*:123456789012
:access point/DOC-EXAMPLE-ACCESS-POINT
" } ] }
當您使用存取點時,若要控制值區作業的存取,請參閱存取點原則中的儲存貯體作業;若要控制物件作業的存取,請參閱存取點原則中的物件作業。如需如何設定存取點原則的相關資訊,請參閱設IAM定使用存取點的原則。
物件 Lambda 存取點作業
藉助 Amazon S3 Object Lambda,您可將自己的程式碼新增至 Amazon S3 GET
、LIST
和 HEAD
請求,以便在資料傳回應用程式時對其做出修改和處理。您可以透過物件 Lambda 存取點提出請求,該存取點的運作方式與透過其他存取點發出請求相同。如需詳細資訊,請參閱 使用 S3 Object Lambda 轉換物件。
如需如何設定物件 Lambda 存取點作業原則的詳細資訊,請參閱設IAM定物件 Lambda 存取點的政策。
多區域存取點作業
多區域存取點提供了一個全域端點,應用程式可用來滿足來自多個 AWS 區域 S3 儲存貯體的請求。您可以使用多區域存取點,使用與單一區域相同的架構來建置多區域應用程式,然後在世界任何地方執行這些應用程式。如需詳細資訊,請參閱 Amazon S3 中的多區域存取點。
如需如何設定多區域存取點作業原則的相關資訊,請參閱多區域存取點政策範例。
Batch 工作作業
(Batch 作業) 工作作業是在工作資源類型上運作的 S3 作API業。例如,DescribeJob
和 CreateJob
。任務操作的 S3 政策動作只能用於以IAM身分識別為基礎的政策,而不能用於儲存貯體政策。此外,工單作業要求以IAM識別為基礎的原則中的Resource
元素必須是下列範例格式。job
ARN
"Resource": "arn:aws:s3:*:
123456789012
:job/*"
下列以IAM身分識別為基礎的政策授s3:DescribeJob
予對 S3 Batch DescribeJobAPI操作任務執行 Job 業的權限 DOC-EXAMPLE-JOB
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow describing the Batch operation job DOC-EXAMPLE-JOB", "Effect": "Allow", "Action": [ "s3:DescribeJob" ], "Resource": "arn:aws:s3:*:
123456789012
:job/DOC-EXAMPLE-JOB
" } ] }
S3 儲存鏡頭組態操作
如需如何設定 S3 儲存鏡頭組態操作的相關資訊,請參閱Amazon S3 Storage Lens 許可。
帳戶操作
帳戶操作是在帳戶層級運作的 S3 API 操作。例如,GetPublicAccessBlock
(對於帳戶)。帳戶不是由 Amazon S3 定義的資源類型。帳戶操作的 S3 政策動作只能用於以IAM身分識別為基礎的政策,而不能用於儲存貯體政策。此外,帳號作業需要以IAM身分為基礎的策略中的Resource
元素為。"*"
下列以IAM身分識別為基礎的策略授與執行帳戶層級GetPublicAccessBlockAPI作業和擷取帳戶層級公用s3:GetAccountPublicAccessBlock
存取封鎖設定的權限。
{ "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 資源名稱 (ARN) 指定資源。您可以針對支援特定資源類型的動作 (稱為資源層級許可) 來這麼做。
對於不支援資源層級許可的動作 (例如列出操作),請使用萬用字元 (*) 來表示陳述式適用於所有資源。
"Resource": "*"
某些 Amazon S3 API 動作支援多種資源。例如,s3:GetObject
存取 EXAMPLE-RESOURCE -1 和 EXAMPLE-RESOURCE -2,因此主體必須具有存取這兩個資源的權限。若要在單一陳述式中指定多個資源,請以ARNs逗號分隔。
"Resource": [ "EXAMPLE-RESOURCE-1", "EXAMPLE-RESOURCE-2"
Amazon S3 中的資源包括儲存貯體、物件、存取點或任務。在政策中,使用儲存貯體、物件、存取點或任務的 Amazon 資源名稱 (ARN) 來識別資源。
若要查看 Amazon S3 資源類型及其類型的完整清單ARNs,請參閱服務授權參考中由 Amazon S3 定義的資源。若要了解可以針對每個資源指定哪些動作,請參閱 Amazon S3 定義ARN的動作。
資源的萬用字元 ARNs
您可以使用萬用字元做為資源ARN的一部分。您可以在任何ARN區段 (以冒號分隔的部分?
) 中使用萬用字元 (*
和)。星號 (*
) 代表零或更多字元的任何組合,而問號 (?
) 則代表任何單一字元。您可以在各區段使用多個數個 *
或 ?
字元,但萬用字元不能跨區段。
-
以下內容
*
在的相對 ID 部分ARN使用萬用字元ARN來識別值區中的所有物件。examplebucket
arn:aws:s3:::examplebucket/*
-
以下ARN用
*
於指示所有 S3 存儲桶和對象。arn:aws:s3:::*
-
以下內容在
relative-ID
零件中ARN使用萬用字元*
和?
。它會識別儲存貯體中的所有物件,例如example1bucket
、example2bucket
、example3bucket
等等。arn:aws:s3:::example?bucket/*
資源的政策變數 ARNs
您可以在 Amazon S3 中使用政策變數ARNs。在政策評估期間,這些預先定義的變數會為其對應值所取代。假設您將儲存貯體組織為資料夾集合,每位使用者各一個資料夾。資料夾名稱與使用者名稱相同。若要授與使用者其資料夾的權限,您可以在資源中指定政策變數ARN:
arn:aws:s3:::bucket_name/developers/${aws:username}/
在執行階段,當評估原則時,資源${aws:username}
中的變數ARN會以提出要求之人員的使用者名稱取代。
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 全域條件索引鍵,請參閱《使用指南》中的AWS 全域條件內IAM容索引鍵。
每個 Amazon S3 條件金鑰都會API對應至可設定條件所允許的相同名稱請求標頭。Amazon S3 特定的條件索引鍵決定相同名稱請求標頭的行為。例如,s3:VersionId
用來授與權限條件式權限的條件索引鍵會定義您在 GET Object 要求中設定之versionId
查詢參數的行為。s3:GetObjectVersion
若要查看 Amazon S3 條件金鑰清單,請參閱服務授權參考中的 Amazon S3 條件金鑰。若要了解可以使用條件金鑰的動作和資源,請參閱 Amazon S3 定義的動作。
範例:限制物件上傳至具有特定儲存區類別的物件
假設帳戶 A (以帳戶 ID 123456789012 代表) 擁有一個儲存貯體。帳戶 A 系統管理員想要限制帳戶 A 中的使用者 Dave,以便 Dave 只能將物件上傳到隨儲存區類別一起儲存的STANDARD_IA
值區。若要限制物件上傳至特定儲存體方案,帳戶 A 管理員可以使用 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
條件索引鍵。這種情況要求用戶public-read
在每個PUT對象請求中包含帶有值的x-amz-acl
標頭。
Amazon S3 的政策範例
-
若要檢視 Amazon S3 身分識別型政策的範例,請參閱。Amazon S3 的基於身份的政策
-
若要檢視 Amazon S3 以資源為基礎的政策範例,請參閱Amazon S3 的存儲桶政策和設IAM定使用存取點的原則。
ACLs在 Amazon S3
支持ACLs:是
在 Amazon S3 中,存取控制清單 (ACLs) 控制 AWS 帳戶 具有存取資源權限的權限。ACLs類似於以資源為基礎的策略,雖然它們不使用JSON政策文件格式。
重要
Amazon S3 中的大多數現代使用案例不再需要使用ACLs。
如需在 Amazon S3 中使ACLs用控制存取權的相關資訊,請參閱管理存取 ACLs。
ABAC與 Amazon S3
支援 ABAC (策略中的標籤): 部分
以屬性為基礎的存取控制 (ABAC) 是一種授權策略,可根據屬性定義權限。在中 AWS,這些屬性稱為標籤。您可以將標籤附加至IAM實體 (使用者或角色) 和許多 AWS 資源。標記實體和資源是的第一步ABAC。然後,您可以設計ABAC策略,以便在主參與者的標籤與他們嘗試存取的資源上的標籤相符時允許作業。
ABAC在快速成長的環境中很有幫助,並且有助於原則管理變得繁瑣的情況。
如需根據標籤控制存取,請使用 aws:ResourceTag/
、key-name
aws:RequestTag/
或 key-name
aws:TagKeys
條件索引鍵,在政策的條件元素中,提供標籤資訊。
如果服務支援每個資源類型的全部三個條件金鑰,則對該服務而言,值為 Yes。如果服務僅支援某些資源類型的全部三個條件金鑰,則值為 Partial。
如需有關的詳細資訊ABAC,請參閱什麼是ABAC? 在《IAM使用者指南》中。若要檢視包含設定步驟的自學課程ABAC,請參閱《使用指南》中的〈使用以屬性為基礎的存取控制 (ABAC) IAM 〉。
若要檢視以身分識別為基礎的政策範例,以根據標籤限制對 S3 Batch 操作任務的存取,請參閱。使用任務標籤控制 S3 批次作業的許可
ABAC和物件標籤
在ABAC策略中,物件使用s3:
標籤而不是aws:
標籤。若要根據物件標籤控制物件的存取,您可以使用下列標籤在原則的條件元素中提供標籤資訊:
-
s3:ExistingObjectTag/
tag-key
-
s3:s3:RequestObjectTagKeys
-
s3:RequestObjectTag/
tag-key
如需有關使用物件標籤來控制存取的資訊,包括權限原則範例,請參閱標記與存取控制政策。
使用 Amazon S3 的臨時登入資料
支持臨時憑據:是
當您使用臨時憑據登錄時,某些 AWS services 不起作用。如需其他資訊,包括哪些 AWS services 與臨時登入資料搭配使用 AWS services ,請參閱《IAM使用指南》IAM中的使用方式。
如果您使用除了使用者名稱和密碼以外的任何方法登入,則您正在 AWS Management Console 使用臨時認證。例如,當您 AWS 使用公司的單一登入 (SSO) 連結存取時,該程序會自動建立臨時認證。當您以使用者身分登入主控台,然後切換角色時,也會自動建立臨時憑證。如需有關切換角色的詳細資訊,請參閱《IAM使用者指南》中的〈切換到角色 (主控台)〉。
您可以使用 AWS CLI 或手動建立臨時認證 AWS API。然後,您可以使用這些臨時登入資料來存取 AWS。 AWS 建議您動態產生臨時登入資料,而不是使用長期存取金鑰。如需詳細資訊,請參閱IAM。
Amazon S3 的轉發存取工作階段
支援轉寄存取工作階段 (FAS):是
當您使用使用IAM者或角色在中執行動作時 AWS,您會被視為主參與者。使用某些服務時,您可能會執行某個動作,進而在不同服務中啟動另一個動作。FAS會使用主參與者呼叫的權限 AWS service,並結合要求 AWS service 向下游服務發出要求。FAS只有當服務收到需要與其他 AWS services 資源互動才能完成的請求時,才會發出請求。在此情況下,您必須具有執行這兩個動作的許可。有關提出FAS請求時的策略詳細信息,請參閱轉發訪問會話。
FAS當使用 SSE-KMS 對物件進行加密時,Amazon S3 會用 AWS KMS 來進行呼叫來解密物件。如需詳細資訊,請參閱 搭配 AWS KMS 金鑰使用伺服器端加密 (SSE-KMS)。
S3 存取授權也會使用FAS。針對特定身分建立 S3 資料的存取權授與後,受權者會向 S3 Access Grants 請求臨時登入資料。S3 存取授權會從要求者取得暫時登入資料, AWS STS 並將認證分配給要求者。如需詳細資訊,請參閱 透過 S3 Access Grants 請求存取 Amazon S3 資料。
Amazon S3 的服務角色
支援服務角色:是
服務角色是服務假定代表您執行動作的IAM角色。IAM管理員可以從中建立、修改和刪除服務角色IAM。如需詳細資訊,請參閱《IAM使用指南》 AWS service中的建立角色以將權限委派給
警告
變更服務角色的許可可可可可能會中斷 Amazon S3 功能。只有在 Amazon S3 提供指導時才編輯服務角色。
Amazon S3 的服務連結角色
支援服務連結角色:部分
服務連結角色是連結至. AWS service服務可以擔任代表您執行動作的角色。服務連結角色會顯示在您的中, 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 |