本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon S3 如何使用 IAM
在您用IAM來管理 Amazon S3 的存取權限之前,請先了解哪些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者指南》中的IAMJSON策略元素參考資料。
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
"}
如需提供 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 動作。
如需 S3 資源類型對 S3 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
s3:ListBucket
使用者執行 ListObjectsV2API操作和列出 S3 存儲桶中的對象。
{ "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 政策動作會要求您以下列格式使用Resource
元素的存取點ARN。
"Resource": "arn:aws:s3:
us-west-2
:123456789012
:accesspoint/example-access-point
"
下列存取點原則授
與具有帳戶Akua
的12345678901
s3:ListBucket
使用者執行 ListObjectsV2API透過名為的 S3 存取點進行操作
。此權限example-access-point
允許列出與相關聯值區中的物件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 操作的相容性。
物件操作
物件操作是根據物件資源類型起作用的 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:PutObject
權限。此權限
允許使用 PutObjectAPI操作將對象上傳到名為的 S3 存儲桶Akua
。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 存取點控制物件操作的存取時,您可以使用存取點政策。當您使用存取點政策時,物件操作的 S3 政策動作會要求您以下列格式使用Resource
元素的存取arn:aws:s3:
點ARN:對於使用存取點的物件作業,您必須在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
/*"
下列存取點原則會授
與擁有帳戶Akua
的使用者12345678901
s3:GetObject
權限。此權限
允許執行 GetObjectAPI透過值區中與存取點相關聯之所有物件Akua
上命名的存取點執行作業。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 操作的相容性。
存取點作業
存取點操作是在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
授與執行 GetAccessPointPolicyAPI在名為的 S3 存取點上的操作
。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定使用存取點的原則。
物件 Lambda 存取點作業
藉助 Amazon S3 Object Lambda,您可將自己的程式碼新增至 Amazon S3 GET
、LIST
和 HEAD
請求,以便在資料傳回應用程式時對其做出修改和處理。您可以透過物件 Lambda 存取點提出請求,該存取點的運作方式與透過其他存取點發出請求的運作方式相同。如需詳細資訊,請參閱使用 S3 Object Lambda 轉換物件。
如需如何設定物件 Lambda 存取點作業原則的詳細資訊,請參閱設IAM定物件 Lambda 存取點的政策。
多區域存取點作業
多區域存取點提供全域端點,應用程式可用來滿足來自多個 S3 儲存貯體的請求 AWS 區域。 您可以使用多區域存取點,使用與單一區域相同的架構來建置多區域應用程式,然後在世界任何地方執行這些應用程式。如需詳細資訊,請參閱Amazon S3 中的多區域存取點。
如需如何設定多區域存取點作業原則的相關資訊,請參閱多區域存取點政策範例。
Batch 工作作業
(Batch 作業) 工作作業是在工作資源類型上運作的 S3 作API業。例如,DescribeJob
和 CreateJob
。任務操作的 S3 政策動作只能用於以IAM身分識別為基礎的政策,而不能用於儲存貯體政策。此外,工單作業要求以IAM識別為基礎的原則中的Resource
元素必須是下列範例格式。job
ARN
"Resource": "arn:aws:s3:*:
123456789012
:job/*"
下列以IAM身分識別為基礎的政策授與在名為的 S3 Batch DescribeJobAPI操作任務上執行作業的s3:DescribeJob
權限。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 儲存鏡頭組態操作
如需如何設定 S3 儲存鏡頭組態操作的相關資訊,請參閱Amazon S3 Storage Lens 許可。
帳戶操作
帳戶操作是在帳戶層級運作的 S3 API 操作。例如,GetPublicAccessBlock
(對於帳戶)。帳戶不是由 Amazon S3 定義的資源類型。帳戶操作的 S3 政策動作只能用於以IAM身分識別為基礎的政策,而不能用於儲存貯體政策。此外,帳號作業需要以IAM身分為基礎的策略中的Resource
元素為。"*"
下列以IAM身分識別為基礎的策略授與執行帳戶層級的s3:GetAccountPublicAccessBlock
權限 GetPublicAccessBlockAPI操作和檢索帳戶級的公共訪問阻止設置。
{ "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
,因此主體必須具有存取這兩個資源的權限。若要在單一陳述式中指定多個資源,請ARNs以逗號分隔,如下列範例所示。example-resource-2
"Resource": [ "
example-resource-1
", "example-resource-2
"
Amazon S3 中的資源包括儲存貯體、物件、存取點或任務。在政策中,使用儲存貯體、物件、存取點或任務的 Amazon 資源名稱 (ARN) 來識別資源。
若要查看 Amazon S3 資源類型及其類型的完整清單ARNs,請參閱服務授權參考中由 Amazon S3 定義的資源。若要了解可以針對每個資源指定哪些動作,請參閱 Amazon S3 定義ARN的動作。
如需 S3 資源類型對 S3 API 操作的許可的詳細資訊,請參閱Amazon S3 API 操作所需的許可。
資源中的萬用字元 ARNs
您可以使用萬用字元做為資源的一部分ARN。您可以在任何ARN區段 (以冒號分隔的部分?
) 中使用萬用字元 (*
和)。星號 (*
) 代表零或更多字元的任何組合,而問號 (?
) 則代表任何單一字元。您可以在每個區段中使用多個*
或?
字元。不過,萬用字元不能跨越區段。
-
以下內容ARN使用的
relative-ID
部分中的*
萬用字元ARN來識別
值區中的所有物件。amzn-s3-demo-bucket
arn:aws:s3:::
amzn-s3-demo-bucket
/* -
以下ARN用
*
於指示所有 S3 存儲桶和對象。arn:aws:s3:::*
-
以下內容在
relative-ID
部分中ARN使用萬用字元*
和?
。這ARN可識別值區中的所有物件,例如
、安贊-S3-演示例 1 桶
、amzn-s3-demo-example2bucket
、等等。amzn-s3-demo-example3bucket
arn:aws:s3:::
amzn-s3-demo-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
運算來評估它們。如果您為單個條件鍵指定多個值, AWS 使用邏輯OR
運算評估條件。必須符合所有條件,才會授與陳述式的許可。
您也可以在指定條件時使用預留位置變數。例如,只有在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
表示) 擁有值區。帳戶 A 管理員想要限制 123456789012
,帳戶 A 中的使用者,以便 戴夫
只有當物件儲存在儲存區類別中時,才能將物件上戴夫
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
在每個PutObject
請求中包含帶有值的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) 是一種授權策略,可根據屬性定義權限。In (入) 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:
標籤。若要根據物件標籤控制物件的存取,您可以在 Condition 使用下列標籤的策略元素:
-
s3:ExistingObjectTag/
tag-key
-
s3:s3:RequestObjectTagKeys
-
s3:RequestObjectTag/
tag-key
如需有關使用物件標籤來控制存取的資訊,包括權限原則範例,請參閱標記與存取控制政策。
使用 Amazon S3 的臨時登入資料
支援臨時憑證:是
一些 AWS 服務 使用臨時憑據登錄時不起作用。有關其他信息,包括 AWS 服務 使用臨時憑證,請參閱 AWS 服務 在《IAM使用者指南》IAM中使用。
您正在使用臨時登入資料 (如果您登入 AWS Management Console 使用除了使用者名稱和密碼之外的任何方法。例如,當您訪問 AWS 使用貴公司的單一登入 (SSO) 連結,該程序會自動建立臨時登入資料。當您以使用者身分登入主控台,然後切換角色時,也會自動建立臨時憑證。如需有關切換角色的詳細資訊,請參閱《IAM使用者指南》中的〈切換到角色 (主控台)〉。
您可以使用手動建立臨時認證 AWS CLI 或 AWS API。然後,您可以使用這些臨時登入資料來存取 AWS. AWS 建議您動態產生臨時登入資料,而不是使用長期存取金鑰。如需詳細資訊,請參閱IAM。
Amazon S3 的轉發存取工作階段
支援轉寄存取工作階段 (FAS):是
當您使用使用IAM者或角色執行動作 AWS,您被視為校長。使用某些服務時,您可能會執行某個動作,進而在不同服務中啟動另一個動作。FAS使用主體呼叫 AWS 服務,與請求相結合 AWS 服務 向下游服務提出請求。FAS只有當服務收到需要與其他人互動的請求時才會發出請求 AWS 服務 或要完成的資源。在此情況下,您必須具有執行這兩個動作的許可。有關提出FAS請求時的策略詳細信息,請參閱轉發訪問會話。
FASAmazon S3 用於撥打電話 AWS KMS 用於對象進SSE行KMS加密時解密。如需詳細資訊,請參閱使用伺服器端加密 AWS KMS 按鍵 (SSE-KMS)。
S3 存取授權也會使用FAS。針對特定身分建立 S3 資料的存取權授與後,受權者會向 S3 Access Grants 請求臨時登入資料。S3 存取授權從取得要求者的臨時登入資料 AWS STS 並將憑據出貨給請求者。如需詳細資訊,請參閱透過 S3 Access Grants 請求存取 Amazon S3 資料。
Amazon S3 的服務角色
支援服務角色:是
服務角色是服務假定代表您執行動作的IAM角色。IAM管理員可以從中建立、修改和刪除服務角色IAM。如需詳細資訊,請參閱建立角色以委派權限給 AWS 服務 (在 IAM 使用者指南中)
警告
變更服務角色的許可可可可可能會中斷 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 |