本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS 全域條件內容索引鍵
當委託人向 提出請求時 AWS, 會將請求資訊 AWS 收集到請求內容 中。您可以使用JSON政策的 Condition
元素,將請求內容中的金鑰與您在政策中指定的金鑰值進行比較。請求資訊由不同的來源提供,包括提出請求的委託人、請求的來源,以及請求本身的中繼資料。
全域條件金鑰可用於所有 AWS 服務。雖然這些條件索引鍵可用於所有政策,但不是每個請求內容都提供此索引鍵。例如,只有當 AWS 服務主體 直接呼叫您的 資源時,才能使用aws:SourceAccount
條件金鑰。若要進一步了解請求內容中包含全域金鑰的情況,請參閱每個金鑰的可用性資訊。
有些個別服務會建立自己的條件索引鍵,可在其他服務的請求內容中使用。跨服務條件索引鍵是一種全域條件索引鍵,其中包含符合服務名稱的字首,例如 ec2:
或 lambda:
,但可在其他 服務中使用。
定義服務特定條件金鑰,以搭配個別 AWS 服務使用。例如,Amazon S3 可讓您使用s3:VersionId
條件索引鍵撰寫政策,以限制對特定版本 Amazon S3 物件的存取。此條件索引鍵對 服務是唯一的,這表示它僅適用於 Amazon S3 服務的請求。如需服務特定的條件金鑰,請參閱 AWS 服務的動作、資源和條件金鑰,然後選擇您要檢視其金鑰的服務。
注意
如果您使用只能在某些情況下使用的條件金鑰,則可以使用條件運算子的IfExists版本。如果請求內容中缺少條件鍵,則政策可能會讓評估失敗。例如,當請求來自特定 IP 範圍或特定 時,請將下列條件區塊與...IfExists
運算子搭配使用以進行比對VPC。若其中一個鍵,或兩者都不包含在請求內容中,條件仍會傳回 true
。只有在請求內容中包含指定鍵時,才會檢查值。如需其他運算子不存在金鑰時如何評估政策的詳細資訊,請參閱條件運算子 。
"Condition": {
"IpAddressIfExists": {"aws:SourceIp" : ["xxx"] },
"StringEqualsIfExists" : {"aws:SourceVpc" : ["yyy"]}
}
重要
若要將您的條件與具有多個鍵值的請求內容進行比較,您必須使用 ForAllValues
或 ForAnyValue
設定運算子。只能將集合運算子與多值條件鍵搭配使用。請勿將集合運算子與單一值條件鍵搭配使用。如需詳細資訊,請參閱多值內容索引鍵。
主體的屬性 | 角色工作階段的屬性 | 網路的屬性 | 資源的屬性 | 請求的屬性 |
---|---|---|---|---|
敏感條件金鑰
下列條件索引鍵被視為敏感,因為其值是由機器產生。在這些條件金鑰中使用萬用字元沒有任何有效的使用案例,即使具有萬用字元的金鑰值子字串也一樣。這是因為萬用字元可能會將條件索引鍵與任何值相符,這可能會造成安全風險。
主體的屬性
使用下列條件索引鍵,將提出請求的委託人詳細資訊與您在政策中指定的委託人屬性進行比較。如需可以提出請求的主體清單,請參閱 如何指定主體。
內容
aws:PrincipalArn
使用此金鑰來比較提出請求的主體的 Amazon Resource Name (ARN) ARN 與您在政策中指定的 。對於IAM角色,請求內容會傳回角色ARN的 ,而不是擔任角色的使用者ARN的 。
-
可用性 – 此鍵會包含在所有簽章請求的請求內容中。匿名請求不包含此鍵。您可以在此條件鍵中指定以下類型的主體:
-
IAM 角色
-
IAM 使用者
-
AWS STS 聯合使用者工作階段
-
AWS 帳戶 根使用者
-
-
資料類型 – ARN、字串
-
值類型 - 單一值
-
範例值 下列清單顯示您可以針對
aws:PrincipalArn
條件索引鍵中指定的不同類型的主體傳回的請求內容值:-
IAM 角色 – 請求內容包含條件索引鍵 的下列值
aws:PrincipalArn
。請勿將擔任的角色工作階段指定ARN為此條件索引鍵的值。如需有關擔任角色工作階段主體的詳細資訊,請參閱 角色工作階段主體。arn:aws:iam::123456789012:role/role-name
-
IAM user – 請求內容包含條件索引鍵 的下列值
aws:PrincipalArn
。arn:aws:iam::123456789012:user/
user-name
-
AWS STS 聯合使用者工作階段 – 請求內容包含條件索引鍵 的下列值
aws:PrincipalArn
。arn:aws:sts::123456789012:federated-user/
user-name
-
AWS 帳戶 根使用者 – 請求內容包含條件索引鍵 的下列值
aws:PrincipalArn
。當您將根使用者指定ARN為aws:PrincipalArn
條件索引鍵的值時,它會限制僅限 根使用者的許可 AWS 帳戶。這與在資源型政策的主體元素ARN中指定根使用者不同,該政策將授權委派給 AWS 帳戶。如需在資源型政策的主體元素ARN中指定根使用者的詳細資訊,請參閱 AWS 帳戶 principals。arn:aws:iam::123456789012:root
-
您可以在 AWS Organizations 服務控制政策 () aws:PrincipalArn
中將根使用者指定ARN為條件索引鍵的值SCPs。SCPs 是用於管理組織中許可的組織政策類型,僅影響組織中的成員帳戶。SCP 限制成員帳戶中IAM的使用者和角色許可,包括成員帳戶的根使用者。如需 SCPs對許可的影響的詳細資訊,請參閱 Organizations 使用者指南 中的SCP對許可的影響。
aws:PrincipalAccount
使用此鍵來將請求主體所屬的帳戶與您在政策中指定的帳戶識別碼進行比較。對於匿名請求,請求內容會返回 anonymous
。
-
可用性 – 此金鑰會包含在所有請求的請求內容中,包括匿名請求。
-
資料類型 – 字串
-
值類型 - 單一值
以下範例中,除了帳號為 123456789012
的主體之外,一律拒絕存取。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessFromPrincipalNotInSpecificAccount", "Action": "
service
:*", "Effect": "Deny", "Resource": [ "arn:aws:service:region:accountID:resource
" ], "Condition": { "StringNotEquals": { "aws:PrincipalAccount": [ "123456789012" ] } } } ] }
aws:PrincipalOrgPaths
使用此金鑰來比較提出請求的主體與政策中路徑的 AWS Organizations 路徑。該主體可以是IAM使用者、IAM角色、聯合使用者或 AWS 帳戶根使用者。在政策中,此條件金鑰可確保請求者是 中指定組織根或組織單位 (OUs) 內的帳戶成員 AWS Organizations。 AWS Organizations 路徑是 Organizations 實體結構的文字表示法。如需有關使用和了解路徑的詳細資訊,請參閱 了解 AWS Organizations 實體路徑。
-
可用性 – 只有在主體是組織的成員時,請求內容中才會包含此鍵。匿名請求不包含此鍵。
-
資料類型 – 字串 (清單)
-
值類型 - 多重值
注意
組織IDs是全域唯一的,但 OU IDs和根僅在組織中IDs是唯一的。這表示沒有兩個組織共用相同的組織 ID。不過,另一個組織的 OU 或根可能與您的 ID 相同。我們建議您在指定 OU 或根時,一律包含組織 ID。
例如,下列條件true
會傳回直接連接至 ou-ab12-22222222
OU 之帳戶中的主體,而不是其子 OUs。
"Condition" : { "ForAnyValue:StringEquals" : { "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/"] }}
下列條件true
會傳回直接連接至 OU 或其任何子 之帳戶中的主體OUs。當您包含萬用字元時,您必須使用 StringLike
條件運算子。
"Condition" : { "ForAnyValue:StringLike" : { "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/*"] }}
下列條件true
會傳回 帳戶中直接連接到任何子 的主體OUs,但不會直接連接到父 OU。先前的條件適用於 OU 或任何子系。以下條件僅適用於子系 (以及這些子系的任何子系)。
"Condition" : { "ForAnyValue:StringLike" : { "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/ou-*"] }}
以下條件會允許存取 o-a1b2c3d4e5
組織中的任何主體,無論其父 OU 為何。
"Condition" : { "ForAnyValue:StringLike" : { "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/*"] }}
aws:PrincipalOrgPaths
是多重值條件鍵。多重值金鑰在請求內容中可以擁有多個值。當您搭配 ForAnyValue
條件運算子使用多個值時,主體的路徑必須符合政策列出的其中一個路徑。如需有關多重值條件鍵的詳細資訊,請參閱 多值內容索引鍵。
"Condition": { "ForAnyValue:StringLike": { "aws:PrincipalOrgPaths": [ "o-a1b2c3d4e5/r-ab12/ou-ab12-33333333/*", "o-a1b2c3d4e5/r-ab12/ou-ab12-22222222/*" ] } }
aws:PrincipalOrgID
使用此金鑰來比較 AWS Organizations 請求主體所屬組織的識別符與政策中指定的識別符。
-
可用性 – 只有在主體是組織的成員時,請求內容中才會包含此鍵。匿名請求不包含此鍵。
-
資料類型 – 字串
-
值類型 - 單一值
此全域金鑰是列出組織中所有帳戶IDs之 AWS 帳戶的替代方案。您可以使用此條件鍵來簡化在資源型政策中指定 Principal
元素。您可以在條件元素中指定組織 ID。當您新增和移除帳戶時,包含 aws:PrincipalOrgID
鍵的政策會自動包含正確的帳戶,不需要手動更新。
例如,下列 Amazon S3 儲存貯體政策允許 o-xxxxxxxxxxx
組織中任何帳戶的成員將物件新增至 amzn-s3-demo-bucket
儲存貯體。
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowPutObject", "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": {"StringEquals": {"aws:PrincipalOrgID":"o-xxxxxxxxxxx"} } } }
注意
此全域條件也適用於 AWS 組織的管理帳戶。此政策可防止指定組織以外的所有主體存取 Amazon S3 儲存貯體。這包括與您的內部資源互動的任何 AWS 服務,例如將日誌資料 AWS CloudTrail 傳送至 Amazon S3 儲存貯體。若要了解如何安全地授予 AWS 服務的存取權,請參閱 aws:PrincipalIsAWSService。
如需 的詳細資訊 AWS Organizations,請參閱 使用者指南 中的什麼是 AWS Organizations?。 AWS Organizations
aws:PrincipalTag/tag-key
使用此鍵來將連接至提出請求主體的標籤,與您在政策中所指定的標籤進行比較。若主體連接的標籤超過一個,請求內容會針對每個連接的標籤鍵包含一個 aws:PrincipalTag
鍵。
您可以將自訂屬性以鍵值對的形式新增至使用者或角色。如需IAM標籤的詳細資訊,請參閱 AWS Identity and Access Management 資源標籤。您可以使用 aws:PrincipalTag
對 AWS
主體進行控制存取。
此範例示範如何建立身分型政策,讓具有department=hr
標籤的使用者管理IAM使用者、群組或角色。若要使用此政策,請取代 italicized placeholder text
範例政策中包含您自己的資訊。然後,遵循建立政策或編輯政策中的指示進行操作。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalTag/
department
": "hr
" } } } ] }
aws:PrincipalIsAWSService
使用此金鑰來檢查 AWS 服務主體 是否直接呼叫您的資源。例如: AWS CloudTrail 使用服務主體 cloudtrail.amazonaws.com
將日誌寫入至 Amazon S3 儲存貯體。當服務使用服務主體對您的資源執行直接動作時,請求內容鍵會設定為 true (真)。如果服務使用IAM委託人的憑證代表委託人提出請求,內容金鑰會設定為 false。如果服務使用服務角色或服務連結角色代表委託人撥打電話,也會設定為 false。
-
可用性 – 此金鑰存在於使用 AWS 憑證的所有已簽署API請求的請求內容中。匿名請求不包含此鍵。
-
資料類型 – 布林值
-
值類型 - 單一值
您可以使用此條件金鑰來限制對信任身分和預期網路位置的存取,同時安全地授予對 AWS 服務的存取。
在下列 Amazon S3 儲存貯體政策範例中,除非請求來自vpc-111bbb22
或來自服務主體,例如 ,否則對儲存貯體的存取會受到限制 CloudTrail。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Expected-network+service-principal", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket1
/AWS Logs/AccountNumber
/*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": "vpc-111bbb22" }, "BoolIfExists": { "aws:PrincipalIsAWSService": "false" } } } ] }
在下列影片中,進一步了解如何在政策中使用 aws:PrincipalIsAWSService
條件鍵。
aws:PrincipalServiceName
使用此鍵將政策中的服務主體名稱,以及向您的資源提出請求的服務主體進行比較。您可以使用這個鍵來檢查這個呼叫是否由特定的服務主體進行比較。當服務主體直接向您的資源要求時,aws:PrincipalServiceName
鍵會包含服務主體的名稱。例如, AWS CloudTrail 服務主體名稱為 cloudtrail.amazonaws.com
。
-
可用性 – 當 AWS 服務主體進行呼叫時,此金鑰會出現在請求中。此鍵在任何其他情況下都不存在,包括以下情況:
-
如果服務使用服務角色或服務連結角色來代表委託人撥打電話。
-
如果服務使用IAM委託人的憑證代表委託人提出請求。
-
如果直接由IAM委託人進行呼叫。
-
如果呼叫由匿名請求者發出。
-
-
資料類型 – 字串
-
值類型 - 單一值
您可以使用此條件金鑰來限制對信任身分和預期網路位置的存取,同時安全地授予 AWS 對服務的存取。
在下列 Amazon S3 儲存貯體政策範例中,除非請求來自vpc-111bbb22
或來自服務主體,例如 ,否則對儲存貯體的存取會受到限制 CloudTrail。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "expected-network+service-principal", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket1
/AWS Logs/AccountNumber
/*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": "vpc-111bbb22", "aws:PrincipalServiceName": "cloudtrail.amazonaws.com" } } } ] }
aws:PrincipalServiceNamesList
此鍵提供屬於該服務的所有服務主體名稱清單。這是進階條件鍵。您可以用其來限制服務僅從特定區域存取您的資源。某些服務可能會建立區域服務主體,以指示特定區域內服務的特定執行個體。您可以將資源的存取限制為服務的特定執行個體。當服務主體直接向您的資源要求時,aws:PrincipalServiceNamesList
包含與服務區域執行個體相關聯的所有服務主體名稱的無序清單。
-
可用性 – 當 AWS 服務主體進行呼叫時,此金鑰會出現在請求中。此鍵在任何其他情況下都不存在,包括以下情況:
-
如果服務使用服務角色或服務連結角色來代表委託人撥打電話。
-
如果服務使用IAM委託人的憑證代表委託人提出請求。
-
如果直接由IAM委託人進行呼叫。
-
如果呼叫由匿名請求者發出。
-
-
資料類型 – 字串 (清單)
-
值類型 - 多重值
aws:PrincipalServiceNamesList
是多重值條件鍵。多值鍵在請求內容中可以擁有多個值。使用此鍵時,您必須使用 ForAnyValue
或 ForAllValues
設定運算子搭配字串條件運算子。如需有關多重值條件鍵的詳細資訊,請參閱 多值內容索引鍵。
aws:PrincipalType
使用此鍵來將發出請求的主體類型與您在政策中所指定的主體類型進行比較。如需詳細資訊,請參閱 如何指定主體。如需 principal
鍵值的具體範例,請參閱 主體索引鍵值。
-
可用性 – 此鍵會包含在所有請求的請求內容中,包括匿名請求。
-
資料類型 – 字串
-
值類型 - 單一值
aws:userid
使用此鍵來將申請者的主體識別碼與您在政策中所指定的 ID 進行比較。對於IAM使用者,請求內容值是使用者 ID。對於IAM角色,此值格式可能會有所不同。如需針對不同主體資訊顯示方式的詳細資訊,請參閱 如何指定主體。如需 principal
鍵值的具體範例,請參閱 主體索引鍵值。
-
可用性 – 此鍵會包含在所有請求的請求內容中,包括匿名請求。
-
資料類型 – 字串
-
值類型 - 單一值
aws:username
使用此鍵將申請者的使用者名稱與您在政策中所指定的使用者名稱進行比較。如需針對不同主體資訊顯示方式的詳細資訊,請參閱 如何指定主體。如需 principal
鍵值的具體範例,請參閱 主體索引鍵值。
-
可用性 – 此金鑰一律包含在IAM使用者的請求內容中。使用 AWS 帳戶根使用者 或 IAM角色提出的匿名請求和請求不包含此金鑰。使用 IAM Identity Center 憑證提出的請求不會在內容中包含此金鑰。
-
資料類型 – 字串
-
值類型 - 單一值
角色工作階段的屬性
使用下列條件索引鍵來比較產生工作階段時角色工作階段的屬性。這些條件金鑰只有在主體使用角色工作階段或聯合使用者憑證提出請求時才能使用。這些條件索引鍵的值會內嵌在角色的工作階段權杖中。
角色是一種主體。您也可以使用 主體的屬性區段中的條件索引鍵,在角色提出請求時評估角色的屬性。
內容
- aws:FederatedProvider
- aws:TokenIssueTime
- aws:MultiFactorAuthAge
- aws:MultiFactorAuthPresent
- aws:ChatbotSourceArn
- aws:Ec2InstanceSourceVpc
- aws:Ec2InstanceSourcePrivateIPv4
- aws:SourceIdentity
- ec2:RoleDelivery
- ec2:SourceInstanceArn
- 膠水:RoleAssumedBy
- 膠水:CredentialIssuingService
- lambda:SourceFunctionArn
- ssm:SourceInstanceArn
- identitystore:UserId
aws:FederatedProvider
使用此鍵來將主體的發行身分提供者 (IdP) 與您在政策中所指定的 IdP 進行比較。這表示使用 AssumeRoleWithWebIdentity
AWS STS 操作擔任IAM角色。使用產生角色工作階段的暫時憑證提出要求時,要求內容會識別驗證原始聯合身分的 IdP。
-
可用性:如果主體是角色工作階段主體,且該工作階段是使用
AssumeRoleWithWebIdentity
擔任角色時發出,則會出現此鍵。 -
資料類型 – 字串
-
值類型 - 單一值
例如,如果使用者透過 Amazon Cognito 進行身分驗證,則要求內容包含值 cognito-identity.amazonaws.com
。同樣,如果使用者透過 Login with Amazon 進行身分驗證,則要求內容包含值 www.amazon.com
。
您可以使用任何單一值條件鍵作為變數。下列以資源為基礎的政策範例使用 aws:FederatedProvider
金鑰作為資源 ARN 中的政策變數。此政策允許使用 IdP 進行身分驗證的任何主體從 Amazon S3 儲存貯體中取得物件,並使用特定於發行身分提供者的路徑。
aws:TokenIssueTime
使用此鍵來將發行暫時性安全憑證的日期和時間與您在政策中所指定的日期和時間進行比較。
-
可用性 – 只有在主體使用暫時憑證發出請求時,請求內容中才會包含此鍵。金鑰不存在於 AWS CLI AWS API、 或使用 AWS SDK存取金鑰提出的請求。
-
資料類型 – 日期
-
值類型 - 單一值
若要了解哪些服務支援使用暫時憑證,請參閱AWS 使用 的服務 IAM。
aws:MultiFactorAuthAge
使用此金鑰來比較請求主體使用 獲得授權以來的秒數,MFA以及您在政策中指定的數字。如需 的詳細資訊MFA,請參閱 AWS 多因素身份驗證 IAM。
重要
此條件金鑰不適用於聯合身分或使用存取金鑰來簽署 AWS CLI AWS API、 或 AWS SDK 請求的請求。若要進一步了解如何使用臨時安全憑證將MFA保護新增至API操作,請參閱 使用安全API存取 MFA。
若要檢查MFA是否用於驗證聯合身分,您可以將身分提供者的身分驗證方法 AWS 作為工作階段標籤傳遞至 IAM 。如需詳細資訊,請參閱 在 中傳遞工作階段標籤 AWS STS。若要MFA強制執行 IAM Identity Center 身分,您可以啟用存取控制的屬性,以使用身分提供者的身分驗證方法將SAML聲明宣告傳遞給 IAM Identity Center。
aws:MultiFactorAuthPresent
使用此金鑰來檢查是否已使用多因素身分驗證 (MFA) 來驗證發出請求的臨時安全憑證。
重要
此條件金鑰不適用於聯合身分或使用存取金鑰來簽署 AWS CLI AWS API、 或 AWS SDK 請求的請求。若要進一步了解如何使用臨時安全憑證將MFA保護新增至API操作,請參閱 使用安全API存取 MFA。
若要檢查MFA是否用於驗證聯合身分,您可以將身分提供者的身分驗證方法 AWS 作為工作階段標籤傳遞至 IAM 。如需詳細資訊,請參閱 在 中傳遞工作階段標籤 AWS STS。若要MFA強制執行 IAM Identity Center 身分,您可以啟用存取控制的屬性,以使用身分提供者的身分驗證方法將SAML宣告宣告宣告傳遞至 IAM Identity Center。
-
可用性 – 只有在主體使用暫時憑證發出請求時,請求內容中才會包含此鍵。具有 MFA 條件的政策可以連接到:
-
IAM 使用者或群組
-
資源,例如 Amazon S3 儲存貯體、Amazon SQS佇列或 Amazon SNS主題
-
使用者可以IAM擔任的角色的信任政策
-
-
資料類型 – 布林值
-
值類型 - 單一值
臨時憑證用於驗證IAM角色和IAM使用者,以及來自 AssumeRole或 的臨時權杖GetSessionToken和 使用者 AWS Management Console。
IAM 使用者存取金鑰是長期憑證,但在某些情況下, 會代表IAM使用者 AWS 建立臨時憑證以執行操作。在這些情況下,aws:MultiFactorAuthPresent
鍵會出現在請求中,並設為 false
值。在兩種常見的情況下可能會發生此情況:
-
IAM 中的使用者 AWS Management Console 在不知情的情況下使用臨時憑證。使用者會使用他們的使用者名稱和密碼 (長期憑證) 登入主控台。不過,主控台會在背景中代表使用者產生臨時憑證。
-
如果IAM使用者呼叫 AWS 服務,服務會重複使用使用者的憑證,對不同的服務提出另一個請求。例如,呼叫 Athena 存取 Amazon S3 儲存貯體時,或使用 AWS CloudFormation 建立 Amazon EC2執行個體時。對於後續請求, AWS 會使用臨時憑證。
若要了解哪些服務支援使用暫時憑證,請參閱AWS 使用 的服務 IAM。
當使用長期憑證呼叫 API或 CLI命令時,金鑰aws:MultiFactorAuthPresent
不存在,例如使用者存取金鑰對。因此,我們建議您在檢查此鍵時使用條件運算子的 ...IfExists
版本。
請務必了解,下列Condition
元素不是使用 檢查請求是否驗證的可靠方法MFA。
##### WARNING: NOT RECOMMENDED #####
"Effect" : "Deny",
"Condition" : { "Bool" : { "aws:MultiFactorAuthPresent" : "false" } }
此Deny
效果、Bool
元素和false
值的組合會拒絕可使用 進行身分驗證MFA,但不會拒絕的請求。這僅適用於支援使用 的臨時憑證MFA。此陳述式不會拒絕存取使用長期憑證提出的請求,也不會拒絕存取使用 進行身分驗證的請求MFA。請謹慎使用此範例,因為其邏輯很複雜,而且不會測試是否實際使用 MFA身分驗證。
此外,請不要使用 Deny
效果、Null
元素與 true
的組合,因為其行為相同,而邏輯更為複雜。
建議的組合
我們建議您使用 BoolIfExists 運算子來檢查請求是否使用 進行身分驗證MFA。
"Effect" : "Deny", "Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "false" } }
此 Deny
、 BoolIfExists
和 false
的組合會拒絕未使用 進行身分驗證的請求MFA。具體而言,它會拒絕不包含 的臨時憑證請求MFA。它也會拒絕使用長期憑證提出的請求,例如使用存取金鑰執行 AWS CLI AWS API的操作。*IfExists
運算子會檢查 aws:MultiFactorAuthPresent
鍵是否存在以及它是否可能存在,如其存在所指出。當您想要拒絕任何未使用 進行身分驗證的請求時,請使用此選項MFA。這更安全,但可能會破壞使用存取金鑰來存取 或 的任何程式碼 AWS CLI 或 AWS 指令碼API。
替代組合
您也可以使用 BoolIfExists 運算子來允許 已MFA驗證的請求,以及 AWS API使用長期憑證提出的 AWS CLI 請求。
"Effect" : "Allow", "Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "true" } }
此條件會比對鍵是否存在,或者鍵是否不存在。此 Allow
、 BoolIfExists
和 的組合true
允許使用 進行身分驗證的請求MFA,或使用 無法進行身分驗證的請求MFA。這表示請求者使用其長期存取金鑰時,允許 AWS CLI AWS API、 和 AWS SDK 操作。此組合不允許來自臨時憑證的請求,這些憑證可以,但不包含 MFA。
當您使用IAM主控台視覺編輯器建立政策並選擇MFA所需的 時,就會套用此組合。此設定MFA需要主控台存取,但允許不使用 的程式設計存取MFA。
或者,您可以使用 Bool
運算子,僅在使用 驗證時允許程式設計和主控台請求MFA。
"Effect" : "Allow",
"Condition" : { "Bool" : { "aws:MultiFactorAuthPresent" : "true" } }
此 Allow
、 Bool
和 的組合true
僅允許 身分MFA驗證的請求。這僅適用於支援使用 的臨時憑證MFA。此陳述式不允許存取使用長期存取金鑰提出的請求,或使用臨時憑證提出的請求,而不需要 MFA。
請勿使用類似下列的政策建構來檢查MFA金鑰是否存在:
##### WARNING: USE WITH CAUTION #####
"Effect" : "Allow",
"Condition" : { "Null" : { "aws:MultiFactorAuthPresent" : "false" } }
此Allow
效果、Null
元素和false
值的組合僅允許使用 進行身分驗證的請求MFA,無論請求是否實際進行身分驗證。這會允許所有使用暫時憑證所提出的請求,並拒絕長期憑證的存取。請謹慎使用此範例,因為它不會測試是否實際使用 MFA身分驗證。
aws:ChatbotSourceArn
使用此金鑰,將主體ARN設定的來源聊天組態與您在頻道組態關聯IAM角色政策中ARN指定的聊天組態進行比較。您可以根據 啟動的擔任角色工作階段來授權請求 AWS Chatbot。
-
可用性 – 每當擔任角色工作階段時, AWS Chatbot 服務都會將此金鑰包含在請求內容中。金鑰值是聊天組態 ARN,例如當您從聊天頻道 執行 AWS CLI 命令時。
-
資料類型 – ARN
-
值類型 - 單一值
-
範例值 –
arn:aws::chatbot::123456789021:chat-configuration/slack-channel/private_channel
下列政策拒絕 Amazon S3 對來自 Slack 頻道的所有請求的指定儲存貯體提出請求。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleS3Deny", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:aws::s3:::amzn-s3-demo-bucket/*", "Condition": { "StringLike": { "aws:ChatbotSourceArn": "arn:aws::chatbot::*:chat-configuration/slack-channel/*" } } } ] }
aws:Ec2InstanceSourceVpc
此金鑰識別 Amazon EC2IAM角色憑證交付至VPC的 。您可以在政策中將此金鑰與aws:SourceVPC全域金鑰搭配使用,以檢查是否從符合憑證交付至 VPC VPC(aws:SourceVPC
) 的 () 進行呼叫aws:Ec2InstanceSourceVpc
。
-
可用性 – 每當請求者使用 Amazon EC2角色憑證簽署請求時,此金鑰都會包含在請求內容中。它可用於IAM政策、服務控制政策、VPC端點政策和資源政策。
-
資料類型 – 字串
-
值類型 - 單一值
此金鑰可與VPC識別符值搭配使用,但在用作與aws:SourceVpc
內容金鑰結合的變數時最有用。只有在請求者使用VPC端點提出請求時,aws:SourceVpc
內容索引鍵才會包含在請求內容中。搭配使用 aws:Ec2InstanceSourceVpc
與 aws:SourceVpc
可讓您更廣泛地使用 aws:Ec2InstanceSourceVpc
,因為其會比較通常一起變更的值。
注意
此條件索引鍵不適用於 EC2-Classic。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireSameVPC", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:SourceVpc": "${aws:Ec2InstanceSourceVpc}" }, "Null": { "ec2:SourceInstanceARN": "false" }, "BoolIfExists": { "aws:ViaAWSService": "false" } } } ] }
在上面的範例中,如果 aws:SourceVpc
值不等於 aws:Ec2InstanceSourceVpc
值,則會拒絕存取。政策陳述式僅限於用作 Amazon EC2執行個體角色的角色,方法是測試ec2:SourceInstanceARN
條件金鑰是否存在。
此政策aws:ViaAWSService
使用 AWS 來允許在代表 Amazon EC2執行個體角色提出請求時授權請求。例如,當您從 Amazon EC2執行個體向加密的 Amazon S3 儲存貯體提出請求時,Amazon S3 AWS KMS 會代表您呼叫 。向 提出請求時,部分金鑰不存在 AWS KMS。
aws:Ec2InstanceSourcePrivateIPv4
此金鑰識別 Amazon EC2IAM角色憑證交付的主要彈性網路介面的私有IPv4地址。您必須將此條件金鑰與其搭配金鑰搭配使用aws:Ec2InstanceSourceVpc
,以確保您擁有 VPC ID 和來源私有 IP 的全域唯一組合。搭配使用此鍵與 aws:Ec2InstanceSourceVpc
,來確保從接收憑證的相同私有 IP 地址提出請求。
-
可用性 – 每當請求者使用 Amazon EC2角色憑證簽署請求時,此金鑰都會包含在請求內容中。它可用於IAM政策、服務控制政策、VPC端點政策和資源政策。
-
資料類型 – IP 地址
-
值類型 - 單一值
重要
此鍵不應該單獨在 Allow
陳述式中使用。私有 IP 地址根據定義不是全域唯一的。每次使用 aws:Ec2InstanceSourceVpc
金鑰來指定可從中使用您的 VPC Amazon EC2執行個體憑證時,您應該使用 aws:Ec2InstanceSourcePrivateIPv4
金鑰。
注意
此條件索引鍵不適用於 EC2-Classic。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:Ec2InstanceSourceVpc": "${aws:SourceVpc}" }, "Null": { "ec2:SourceInstanceARN": "false" }, "BoolIfExists": { "aws:ViaAWSService": "false" } } }, { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:Ec2InstanceSourcePrivateIPv4": "${aws:VpcSourceIp}" }, "Null": { "ec2:SourceInstanceARN": "false" }, "BoolIfExists": { "aws:ViaAWSService": "false" } } } ] }
aws:SourceIdentity
使用此鍵來將主體所設定的來源身分與您在政策中所指定的來源身分進行比較。
-
可用性 – 當使用任何 AWS STS assume-role CLI命令或 AWS STS
AssumeRole
API操作擔任角色時,設定來源身分後,此金鑰會包含在請求內容中。 -
資料類型 – 字串
-
值類型 - 單一值
您可以在政策中使用此金鑰,允許在擔任角色時設定來源身分的 AWS 主體在 中執行動作。AWS CloudTrail 中會顯示角色指定來源身分的活動。這可讓管理員更輕鬆地判斷在 中執行角色的對象或對象 AWS。
與 sts:RoleSessionName 不同,在設定來源身分之後,就無法變更值。這會出現在由角色所採取的所有動作的請求內容中。當您使用工作階段憑證來擔任另一個角色時,此值仍然存在於後續角色工作階段。從另一個角色取得及擔任角色稱為角色鏈結。
當委託人最初設定來源身分,同時使用任何 AWS STS assume-role CLI命令或 AWS STS AssumeRole
API操作擔任角色時, sts:SourceIdentity 金鑰會出現在請求中。針對具有來源身分集的角色工作階段所採取的任何動作,aws:SourceIdentity
鍵會出現在請求中。
下列在帳戶 111122223333
中的 CriticalRole
角色信任政策包含針對 aws:SourceIdentity
的條件,可防止沒有設定為 Saanvi 或 Diego 的來源身分的主體擔任角色。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AssumeRoleIfSourceIdentity", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:role/CriticalRole"}, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Condition": { "StringLike": { "aws:SourceIdentity": ["Saanvi","Diego"] } } } ] }
若要進一步了解有關使用來源身分的詳細資訊,請參閱 監控並控制使用擔任角色所採取的動作。
ec2:RoleDelivery
使用此金鑰來比較已簽署請求中的執行個體中繼資料服務版本與 Amazon IAM的角色憑證EC2。執行個體中繼資料服務會根據該IMDSv2請求IMDSv2中是否存在 或 獨有的PUT
GET
標頭,來區分 IMDSv1和 請求。
-
可用性 – 每當角色工作階段是由 Amazon EC2執行個體建立時,此金鑰都會包含在請求內容中。
-
資料類型 – 數字
-
值類型 - 單一值
-
範例值 – 1.0、2.0
您可以在每個執行個體上設定執行個體中繼資料服務 (IMDS),以便本機程式碼或使用者必須使用 IMDSv2。當您指定 IMDSv2 必須使用時, IMDSv1 將無法再運作。
-
執行個體中繼資料服務第 1 版 (IMDSv1) – 請求/回應方法
-
Instance Metadata Service 第 2 版 (IMDSv2) – 工作階段導向方法
如需如何設定執行個體以使用 的詳細資訊IMDSv2,請參閱設定執行個體中繼資料選項 。
在下列範例中,如果請求內容中的 ec2:RoleDelivery value 為 1.0 (IMDSv1),則會拒絕存取。通常可以套用此政策陳述式,因為如果請求不是由 Amazon EC2角色憑證簽署,則不會有任何影響。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireAllEc2RolesToUseV2", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NumericLessThan": { "ec2:RoleDelivery": "2.0" } } } ] }
如需詳細資訊,請參閱使用執行個體中繼資料 的範例政策。
ec2:SourceInstanceArn
使用此金鑰來比較產生角色工作階段ARN的執行個體。
-
可用性 – 每當角色工作階段是由 Amazon EC2執行個體建立時,此金鑰都會包含在請求內容中。
-
資料類型 – ARN
-
值類型 - 單一值
-
範例值 – arn:aws::ec2:us-west-2:111111111111:instance/instance-id
如需政策範例,請參閱允許特定執行個體檢視其他服務 AWS 中的資源。
膠水:RoleAssumedBy
AWS Glue 服務會 AWS API為每個請求設定此條件索引鍵,其中 AWS Glue 代表客戶使用服務角色提出請求 (不是透過任務或開發人員端點,而是直接透過 AWS Glue 服務)。使用此金鑰來驗證對 AWS 資源的呼叫是否來自 AWS Glue 服務。
-
可用性 – 當代表客戶使用服務角色 AWS Glue 提出請求時,此金鑰會包含在請求內容中。
-
資料類型 – 字串
-
值類型 - 單一值
-
範例值 – 此金鑰一律設定為
glue.amazonaws.com
。
下列範例新增條件,允許 AWS Glue 服務從 Amazon S3 儲存貯體取得物件。
{ "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "glue:RoleAssumedBy": "glue.amazonaws.com" } } }
膠水:CredentialIssuingService
AWS Glue 服務會使用來自任務或開發人員端點的服務角色,為每個 AWS API請求設定此金鑰。使用此金鑰來驗證對 AWS 資源的呼叫是否來自 AWS Glue 任務或開發人員端點。
-
可用性 – 當 AWS Glue 提出來自任務或開發人員端點的請求時,此金鑰會包含在請求內容中。
-
資料類型 – 字串
-
值類型 - 單一值
-
範例值 – 此金鑰一律設定為
glue.amazonaws.com
。
下列範例會新增附加至 AWS Glue 任務所使用IAM角色的條件。這可確保根據角色工作階段是否用於 AWS Glue 任務執行期環境,允許/拒絕特定動作。
{ "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "glue:CredentialIssuingService": "glue.amazonaws.com" } } }
lambda:SourceFunctionArn
使用此金鑰來識別IAM角色憑證交付至ARN的 Lambda 函數。Lambda 服務會針對來自函數執行環境的每個 AWS API請求設定此金鑰。使用此金鑰來驗證對 AWS 資源的呼叫是否來自特定 Lambda 函數的程式碼。Lambda 也會針對來自執行環境外部的某些請求設定此金鑰,例如將日誌寫入 X-Ray, CloudWatch 並將追蹤傳送至 X-Ray。
-
可用性 – 每當叫用 Lambda 函數程式碼時,此金鑰都會包含在請求內容中。
-
資料類型 – ARN
-
值類型 - 單一值
-
範例值 – arn:aws::lambda:us-east-1:123456789012:函數:TestFunction
下列範例允許一個特定 Lambda 函數s3:PutObject
存取指定的儲存貯體。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleSourceFunctionArn", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "ArnEquals": { "lambda:SourceFunctionArn": "arn:aws::lambda:us-east-1:123456789012:function:source_lambda" } } } ] }
如需詳細資訊,請參閱 AWS Lambda 開發人員指南 中的使用 Lambda 執行環境憑證。
ssm:SourceInstanceArn
使用此金鑰來識別ARNIAM角色憑證交付的 AWS Systems Manager 受管執行個體。當請求來自具有與 Amazon 執行個體設定檔相關聯IAM角色的受管EC2執行個體時,此條件金鑰不存在。
-
可用性 – 每當角色憑證交付至 AWS Systems Manager 受管執行個體時,此金鑰都會包含在請求內容中。
-
資料類型 – ARN
-
值類型 - 單一值
-
範例值 – arn:aws::ec2:us-west-2:111111111111:instance/instance-id
identitystore:UserId
使用此金鑰來比較已簽署請求中的 IAM Identity Center 人力資源身分與政策中指定的身分。
-
可用性 – 當請求的呼叫者是 IAM Identity Center 中的使用者時,此金鑰會包含在內。
-
資料類型 – 字串
-
值類型 - 單一值
-
範例值 – 94482488-3041-7026-18f3-be45837cd0e4
您可以使用 AWS CLI、 或 向 提出請求 AWS API,以便在 IAM Identity Center GetUserId API 中找到 UserId 使用者的 AWS SDK。
網路的屬性
使用下列條件索引鍵,將來自或傳遞請求的網路詳細資訊與您在政策中指定的網路屬性進行比較。
aws:SourceIp
使用此鍵來將申請者的 IP 地址和您在政策中所指定的 IP 地址進行比較。aws:SourceIp
條件鍵僅可用於公有 IP 地址範圍。
-
可用性 – 此金鑰包含在請求內容中,除非請求者使用VPC端點提出請求。
-
資料類型 – IP 地址
-
值類型 - 單一值
aws:SourceIp
條件鍵可用在政策中,只允許主體在指定的 IP 範圍內提出請求。
注意
aws:SourceIp
同時支援 IPv4和 IP IPv6地址或 IP 地址範圍。如需 AWS 服務 該支援 的清單IPv6,請參閱 Amazon VPC使用者指南 中的AWS 服務 該支援IPv6。
例如,您可以將下列身分型政策連接至IAM角色。此政策可讓使用者在從指定IPv4地址範圍撥打電話時,將物件放入 amzn-s3-demo-bucket3
Amazon S3 儲存貯體。此政策也允許 AWS 服務使用 轉送存取工作階段 代表您執行此操作。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PrincipalPutObjectIfIpAddress", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket3/*", "Condition": { "IpAddress": { "aws:SourceIp": "
203.0.113.0/24
" } } } ] }
如果您需要限制同時支援 IPv4和 IPv6定址的網路存取,您可以在IAM政策條件中包含 IPv4和 IPv6 IP 地址或範圍。如果使用者從指定IPv4或IPv6地址範圍撥打電話,則下列身分型政策將允許使用者將物件放入 amzn-s3-demo-bucket3
Amazon S3 儲存貯體。在IAM政策中包含IPv6地址範圍之前,請確認 AWS 服務 您正在使用的 支援 IPv6。如需 AWS 服務 該支援 的清單IPv6,請參閱 Amazon VPC使用者指南 中的AWS 服務 該支援IPv6。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PrincipalPutObjectIfIpAddress", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket3/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "
203.0.113.0/24
", "2001:DB8:1234:5678::/64
" ] } } } ] }
如果請求來自使用 Amazon VPC端點的主機,則金鑰aws:SourceIp
無法使用。您應該改用 VPC特定的金鑰,例如 aws:VpcSourceIp。如需使用VPC端點的詳細資訊,請參閱 AWS PrivateLink 指南 中的VPC端點和VPC端點服務的身分和存取管理。
aws:SourceVpc
使用此金鑰來檢查請求是否通過VPCVPC端點連接的 。在政策中,您可以使用此金鑰僅允許存取特定 VPC。如需詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南 中的限制對特定 的存取VPC。
-
可用性 – 只有在請求者使用VPC端點提出請求時,請求內容才會包含此金鑰。
-
資料類型 – 字串
-
值類型 - 單一值
在政策中,您可以使用此金鑰來允許或限制對特定 的存取VPC。
例如,您可以將下列以身分為基礎的政策連接至IAM角色,以拒絕 PutObject
Amazon S3 amzn-s3-demo-bucket3
儲存貯體,除非請求是從指定的 VPC ID 提出 AWS 服務 ,或使用轉送存取工作階段 (FAS) 代表該角色提出請求。與 不同aws:SourceIp,您必須使用 aws:ViaAWSService或 aws:CalledVia 來允許FAS請求,因為初始請求VPC的來源未保留。
注意
此政策不允許任何動作。將此政策與允許特定動作的其他政策結合使用。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PutObjectIfNotVPCID", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket3/*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": "vpc-1234567890abcdef0" }, "Bool": { "aws:ViaAWSService": "false" } } } ] }
如需如何在資源型政策中套用此金鑰的範例,請參閱 Amazon Simple Storage Service 使用者指南 中的限制對特定 的存取VPC。
aws:SourceVpce
使用此金鑰來比較請求的VPC端點識別符與您在政策中指定的端點 ID。
-
可用性 – 只有在請求者使用VPC端點提出請求時,請求內容才會包含此金鑰。
-
資料類型 – 字串
-
值類型 - 單一值
在政策中,您可以使用此金鑰限制對特定VPC端點的存取。如需詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南 中的限制對特定 的存取VPC。與使用 類似aws:SourceVpc,您必須使用 aws:ViaAWSService或 aws:CalledVia 來允許 AWS 服務 使用轉送存取工作階段 (FAS) 提出的請求。這是因為初始請求的來源VPC端點未保留。
aws:VpcSourceIp
使用此鍵來將提出請求的 IP 地址與您在政策中所指定的 IP 地址進行比較。在政策中,只有在請求來自指定的 IP 地址,且經過VPC端點時,金鑰才會相符。
-
可用性 – 只有在使用VPC端點提出請求時,請求內容才會包含此金鑰。
-
資料類型 – IP 地址
-
值類型 - 單一值
如需詳細資訊,請參閱 Amazon VPC使用者指南 中的使用VPC端點政策控制對端點的存取。與使用 類似aws:SourceVpc,您必須使用 aws:ViaAWSService或 aws:CalledVia 來允許 AWS 服務 使用轉送存取工作階段 (FAS) 提出的請求。這是因為使用VPC端點提出的初始請求的來源 IP 不會保留在FAS請求中。
注意
aws:VpcSourceIp
同時支援 IPv4和 IP IPv6 地址或 IP 地址範圍。如需 AWS 服務 該支援 的清單IPv6,請參閱 Amazon VPC使用者指南 中的AWS 服務 該支援IPv6。
aws:VpcSourceIp
條件金鑰應一律與 aws:SourceVpc
或aws:SourceVpce
條件金鑰搭配使用。否則,來自非預期VPC的API呼叫可能會使用政策CIDR允許的相同或重疊 IP。這可能是因為CIDRs兩個不相關的 IP VPCs可能相同或重疊。反之, VPCIDs或 VPC 端點IDs應該用於政策,因為它們具有全域唯一識別碼。這些唯一識別碼可確保不會發生非預期的結果。
資源的屬性
使用下列條件索引鍵,將作為請求目標的資源詳細資訊與您在政策中指定的資源屬性進行比較。
aws:ResourceAccount
使用此鍵來比較請求的資源所有者的 AWS 帳戶 ID 與政策中的資源帳戶。然後,根據擁有該資源的帳戶來允許或拒絕對該資源的存取。
-
可用性 – 此鍵一律會包含在大部分服務動作的請求內容中。下列動作不支援此鍵:
-
AWS Audit Manager
-
auditmanager:UpdateAssessmentFrameworkShare
-
-
Amazon Detective
-
detective:AcceptInvitation
-
-
Amazon Elastic Block Store – 所有動作
-
Amazon EC2
-
ec2:AcceptTransitGatewayPeeringAttachment
-
ec2:AcceptVpcEndpointConnections
-
ec2:AcceptVpcPeeringConnection
-
ec2:CopyImage
-
ec2:CopySnapshot
-
ec2:CreateTransitGatewayPeeringAttachment
-
ec2:CreateVolume
-
ec2:CreateVpcEndpoint
-
ec2:CreateVpcPeeringConnection
-
ec2:DeleteTransitGatewayPeeringAttachment
-
ec2:DeleteVpcPeeringConnection
-
ec2:RejectTransitGatewayPeeringAttachment
-
ec2:RejectVpcEndpointConnections
-
ec2:RejectVpcPeeringConnection
-
-
Amazon EventBridge
-
events:PutEvents
– EventBridge 如果事件匯流排在 2023 年 3 月 2 日之前設定為跨帳戶 EventBridge 目標,則 會在另一個帳戶中的事件匯流排上PutEvents
呼叫 。如需詳細資訊,請參閱 Amazon EventBridge 使用者指南 中的授予許可以允許來自其他 AWS 帳戶的事件。
-
-
Amazon GuardDuty
-
guardduty:AcceptAdministratorInvitation
-
-
Amazon Macie
-
macie2:AcceptInvitation
-
-
Amazon OpenSearch Service
-
es:AcceptInboundConnection
-
-
Amazon Route 53
-
route53:AssociateVpcWithHostedZone
-
route53:CreateVPCAssociationAuthorization
-
route53:DeleteVPCAssociationAuthorization
-
route53:DisassociateVPCFromHostedZone
-
route53:ListHostedZonesByVPC
-
-
AWS Security Hub
-
securityhub:AcceptAdministratorInvitation
-
-
-
資料類型 – 字串
-
值類型 - 單一值
注意
如需上述不受支援動作的其他考量事項,請參閱資料周邊政策範例
此金鑰等於具有請求中評估之資源的帳戶 AWS 帳戶 ID。
對於您帳戶中的大多數資源, ARN包含該資源的擁有者帳戶 ID。對於某些資源,例如 Amazon S3 儲存貯體,資源ARN不包含帳戶 ID。下列兩個範例顯示 中具有帳戶 ID 的資源ARN與ARN沒有帳戶 ID 的 Amazon S3 之間的差異:
-
arn:aws:iam::123456789012:role/AWSExampleRole
– 帳戶 123456789012 中建立和擁有IAM的角色。 -
arn:aws:s3:::amzn-s3-demo-bucket2
– Amazon S3 儲存貯體在帳戶 中建立和擁有111122223333
,未顯示在 中ARN。
使用 AWS 主控台、 或 API或 CLI來尋找您的所有資源和對應的 ARNs。
您撰寫的政策會根據資源擁有者的帳戶 ID 拒絕資源許可。例如,如果指定資源不屬於指定帳戶,下列身分型政策會拒絕存取這些資源。
若要使用此政策,請將斜體預留位置文字取代為您的帳戶資訊。
重要
此政策不允許任何動作。相反,它使用 Deny
效果,明確拒絕存取陳述式中列出的不屬於所列帳戶的所有資源。將此政策與允許存取特定資源的其他政策結合使用。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyInteractionWithResourcesNotInSpecificAccount", "Action": "
service
:*", "Effect": "Deny", "Resource": [ "arn:aws:service
:region
:account
:*
" ], "Condition": { "StringNotEquals": { "aws:ResourceAccount": [ "account
" ] } } } ] }
除非指定的 AWS 帳戶 擁有資源,否則此政策會拒絕存取特定 AWS 服務的所有資源。
注意
有些 AWS 服務 需要存取託管在其他 中的 AWS 擁有資源 AWS 帳戶。在身分型政策中使用 aws:ResourceAccount
,可能會影響您的身分存取這些資源。
某些 AWS 服務,例如 AWS Data Exchange,依賴存取 外部的資源 AWS 帳戶 進行正常操作。如果在政策中使用元素 aws:ResourceAccount
,請包含其他陳述式來建立這些服務的豁免。範例政策 AWS:拒絕存取您帳戶外部的 Amazon S3 資源,除非 AWS Data Exchange 示範如何在定義服務所擁有資源的例外狀況時,根據資源帳戶拒絕存取。
使用此政策範例作為建立您自己的自訂政策的範本。如需詳細資訊,請參閱您的服務文件。
aws:ResourceOrgPaths
使用此金鑰,將存取資源 AWS 的組織路徑與政策中的路徑進行比較。在政策中,此條件索引鍵可確保資源屬於 AWS Organizations 中指定組織根或組織單位 (OUs) 內的帳戶成員。 AWS Organizations 路徑是 Organizations 實體結構的文字表示法。如需有關使用和了解路徑的詳細資訊,請參閱 了解 AWS Organizations 實體路徑。
-
可用性 – 只有在擁有資源的帳戶是組織成員時,請求內容中才會包含此鍵。此全域條件鍵不支援下列動作:
-
AWS Audit Manager
-
auditmanager:UpdateAssessmentFrameworkShare
-
-
Amazon Detective
-
detective:AcceptInvitation
-
-
Amazon Elastic Block Store – 所有動作
-
Amazon EC2
-
ec2:AcceptTransitGatewayPeeringAttachment
-
ec2:AcceptVpcEndpointConnections
-
ec2:AcceptVpcPeeringConnection
-
ec2:CopyImage
-
ec2:CopySnapshot
-
ec2:CreateTransitGatewayPeeringAttachment
-
ec2:CreateVolume
-
ec2:CreateVpcEndpoint
-
ec2:CreateVpcPeeringConnection
-
ec2:DeleteTransitGatewayPeeringAttachment
-
ec2:DeleteVpcPeeringConnection
-
ec2:RejectTransitGatewayPeeringAttachment
-
ec2:RejectVpcEndpointConnections
-
ec2:RejectVpcPeeringConnection
-
-
Amazon EventBridge
-
events:PutEvents
– EventBridge 如果事件匯流排在 2023 年 3 月 2 日之前設定為跨帳戶 EventBridge 目標,則 會在另一個帳戶中的事件匯流排上PutEvents
呼叫 。如需詳細資訊,請參閱 Amazon EventBridge 使用者指南 中的授予許可,以允許來自其他 AWS 帳戶的事件。
-
-
Amazon GuardDuty
-
guardduty:AcceptAdministratorInvitation
-
-
Amazon Macie
-
macie2:AcceptInvitation
-
-
Amazon OpenSearch Service
-
es:AcceptInboundConnection
-
-
Amazon Route 53
-
route53:AssociateVpcWithHostedZone
-
route53:CreateVPCAssociationAuthorization
-
route53:DeleteVPCAssociationAuthorization
-
route53:DisassociateVPCFromHostedZone
-
route53:ListHostedZonesByVPC
-
-
AWS Security Hub
-
securityhub:AcceptAdministratorInvitation
-
-
-
資料類型 – 字串 (清單)
-
值類型 - 多重值
注意
如需上述不受支援動作的其他考量事項,請參閱資料周邊政策範例
aws:ResourceOrgPaths
是多重值條件鍵。多值鍵在請求內容中可以擁有多個值。使用此鍵時,您必須使用 ForAnyValue
或 ForAllValues
設定運算子搭配字串條件運算子。如需有關多重值條件鍵的詳細資訊,請參閱 多值內容索引鍵。
例如,下列條件會對屬於組織 o-a1b2c3d4e5
的資源傳回 True
。當您包含萬用字元時,必須使用StringLike條件運算子。
"Condition": { "ForAnyValue:StringLike": { "aws:ResourceOrgPaths":["o-a1b2c3d4e5/*"] } }
針對具有 OU ID ou-ab12-11111111
的資源,下列條件會傳回 True
。它將符合連接到 OU ou-ab12-11111111 或任何子 的帳戶擁有的資源OUs。
"Condition": { "ForAnyValue:StringLike" : { "aws:ResourceOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/*"] }}
下列條件True
會傳回直接連接到 OU ID 的帳戶所擁有的資源ou-ab12-22222222
,但不會傳回子 OUs。下列範例使用 StringEquals 條件運算子來指定 OU ID 的完全相符要求,而不是萬用字元相符。
"Condition": { "ForAnyValue:StringEquals" : { "aws:ResourceOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/"] }}
注意
有些 AWS 服務 需要存取託管在其他 中的 AWS 擁有資源 AWS 帳戶。在身分型政策中使用 aws:ResourceOrgPaths
,可能會影響您的身分存取這些資源。
某些 AWS 服務,例如 AWS Data Exchange,依賴存取 外部的資源 AWS 帳戶 進行正常操作。如果在政策中使用 aws:ResourceOrgPaths
鍵,請包含其他陳述式來建立這些服務的豁免。範例政策 AWS:拒絕存取您帳戶外部的 Amazon S3 資源,除非 AWS Data Exchange 示範如何在定義服務所擁有資源的例外狀況時,根據資源帳戶拒絕存取。您可以建立類似的政策,使用 aws:ResourceOrgPaths
鍵來限制組織單位 (OU) 內資源的存取,同時考量服務擁有的資源。
使用此政策範例作為建立您自己的自訂政策的範本。如需詳細資訊,請參閱您的服務文件。
aws:ResourceOrgID
使用此金鑰,將請求資源所屬之 AWS Organizations 中組織的識別碼與政策中指定的識別碼進行比較。
-
可用性 – 只有在擁有資源的帳戶是組織成員時,請求內容中才會包含此鍵。此全域條件鍵不支援下列動作:
-
AWS Audit Manager
-
auditmanager:UpdateAssessmentFrameworkShare
-
-
Amazon Detective
-
detective:AcceptInvitation
-
-
Amazon Elastic Block Store – 所有動作
-
Amazon EC2
-
ec2:AcceptTransitGatewayPeeringAttachment
-
ec2:AcceptVpcEndpointConnections
-
ec2:AcceptVpcPeeringConnection
-
ec2:CopyImage
-
ec2:CopySnapshot
-
ec2:CreateTransitGatewayPeeringAttachment
-
ec2:CreateVolume
-
ec2:CreateVpcEndpoint
-
ec2:CreateVpcPeeringConnection
-
ec2:DeleteTransitGatewayPeeringAttachment
-
ec2:DeleteVpcPeeringConnection
-
ec2:RejectTransitGatewayPeeringAttachment
-
ec2:RejectVpcEndpointConnections
-
ec2:RejectVpcPeeringConnection
-
-
Amazon EventBridge
-
events:PutEvents
– EventBridge 如果事件匯流排在 2023 年 3 月 2 日之前設定為跨帳戶 EventBridge 目標,則 會在另一個帳戶中的事件匯流排上PutEvents
呼叫 。如需詳細資訊,請參閱 Amazon EventBridge 使用者指南 中的授予許可以允許來自其他 AWS 帳戶的事件。
-
-
Amazon GuardDuty
-
guardduty:AcceptAdministratorInvitation
-
-
Amazon Macie
-
macie2:AcceptInvitation
-
-
Amazon OpenSearch Service
-
es:AcceptInboundConnection
-
-
Amazon Route 53
-
route53:AssociateVpcWithHostedZone
-
route53:CreateVPCAssociationAuthorization
-
route53:DeleteVPCAssociationAuthorization
-
route53:DisassociateVPCFromHostedZone
-
route53:ListHostedZonesByVPC
-
-
AWS Security Hub
-
securityhub:AcceptAdministratorInvitation
-
-
-
資料類型 – 字串
-
值類型 - 單一值
注意
如需上述不受支援動作的其他考量事項,請參閱資料周邊政策範例
此全域鍵會傳回指定請求的資源組織 ID。它可讓您建立規則,這些規則適用於身分型政策的 Resource
元素中指定的組織中的所有資源。您可以在條件元素中指定組織 ID。當您新增和移除帳戶時,包含 aws:ResourceOrgID
鍵的政策會自動包含正確的帳戶,您無需手動更新它。
例如,下列政策可避免主體將物件新增至 policy-genius-dev
資源,除非 Amazon S3 資源屬於與提出請求的主體相同的組織。
重要
此政策不允許任何動作。相反,它使用 Deny
效果,明確拒絕存取陳述式中列出的不屬於所列帳戶的所有資源。將此政策與允許存取特定資源的其他政策結合使用。
{ "Version": "2012-10-17", "Statement": { "Sid": "DenyPutObjectToS3ResourcesOutsideMyOrganization", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:
partition
:s3:::policy-genius-dev/*", "Condition": { "StringNotEquals": { "aws:ResourceOrgID": "${aws:PrincipalOrgID}" } } } }
注意
有些 AWS 服務 需要存取託管在其他 中的 AWS 擁有資源 AWS 帳戶。在身分型政策中使用 aws:ResourceOrgID
,可能會影響您的身分存取這些資源。
某些 AWS 服務,例如 AWS Data Exchange,依賴存取 外部的資源 AWS 帳戶 進行正常操作。如果在政策中使用 aws:ResourceOrgID
鍵,請包含其他陳述式來建立這些服務的豁免。範例政策 AWS:拒絕存取您帳戶外部的 Amazon S3 資源,除非 AWS Data Exchange 示範如何在定義服務所擁有資源的例外狀況時,根據資源帳戶拒絕存取。您可以建立類似的政策,使用 aws:ResourceOrgID
鍵來限制組織內資源的存取,同時考量服務擁有的資源。
使用此政策範例作為建立您自己的自訂政策的範本。如需詳細資訊,請參閱您的服務文件。
在下列影片中,進一步了解如何在政策中使用 aws:ResourceOrgID
條件鍵。
aws:ResourceTag/tag-key
使用此鍵來將您在政策中所指定的標籤鍵值對與連接到資源的鍵值對進行比較。例如,您可以要求只在資源擁有連接標籤鍵 "Dept"
和值 "Marketing"
時才允許資源的存取。如需詳細資訊,請參閱控制 AWS
資源的存取許可。
-
可用性 – 當所請求資源已連接標籤時,此鍵包含在請求內容中,或者包含在使用所連接標籤建立資源的請求中。只有在資源支援以標籤為基礎的授權時,才會傳回此鍵。每個標籤鍵值對都會有一個內容鍵。
-
資料類型 – 字串
-
值類型 - 單一值
此內容索引鍵已格式化,"aws:ResourceTag/
其中 tag-key
":"tag-value
"tag-key
以及 tag-value
是標籤索引鍵和值對。標籤鍵與值皆不區分大小寫。這表示如果您在政策的條件元素中指定 "aws:ResourceTag/TagKey1": "Value1"
,則該條件會符合名為 TagKey1
或 tagkey1
的資源標籤鍵 (但不會同時符合兩者)。
如需使用 aws:ResourceTag
金鑰控制 IAM 資源存取的範例,請參閱 控制 AWS
資源的存取許可。
如需使用 aws:ResourceTag
金鑰控制對其他 AWS 資源之存取的範例,請參閱 使用標籤控制 AWS 資源的存取。
如需使用屬性型存取控制aws:ResourceTag
條件金鑰的教學課程 (ABAC),請參閱 IAM教學課程:根據標籤定義存取 AWS 資源的權限。
請求的屬性
使用下列條件索引鍵,將請求本身和請求內容的詳細資訊與您在政策中指定的請求屬性進行比較。
內容
aws:CalledVia
使用此金鑰來比較政策中的服務與代表IAM委託人 (使用者或角色) 提出請求的服務。當委託人向 AWS 服務提出請求時,該服務可能會使用委託人的憑證向其他服務提出後續請求。aws:CalledVia
鍵包含代表主體提出請求的鏈結中,每個服務的排序清單。
例如,您可以使用 從 Amazon DynamoDB 資料表 AWS CloudFormation 讀取和寫入。然後DynamoDB 會使用 AWS Key Management Service (AWS KMS) 提供的加密。
-
可用性 – 當支援 的服務
aws:CalledVia
使用IAM主體的憑證向另一個 服務提出請求時,此金鑰會出現在請求中。如果服務使用服務角色或服務連結角色代表委託人撥打電話,則不會出現此金鑰。若主體直接進行呼叫,此鍵亦不存在。 -
資料類型 – 字串 (清單)
-
值類型 - 多重值
若要在政策中使用aws:CalledVia
條件金鑰,您必須提供服務主體,以允許或拒絕 AWS 服務請求。 AWS 支援搭配 使用以下服務主體aws:CalledVia
。
服務主體 |
---|
aoss.amazonaws.com |
athena.amazonaws.com |
backup.amazonaws.com |
cloud9.amazonaws.com |
cloudformation.amazonaws.com |
databrew.amazonaws.com |
dataexchange.amazonaws.com |
dynamodb.amazonaws.com |
imagebuilder.amazonaws.com |
kms.amazonaws.com |
mgn.amazonaws.com |
nimble.amazonaws.com |
omics.amazonaws.com |
ram.amazonaws.com |
robomaker.amazonaws.com |
servicecatalog-appregistry.amazonaws.com |
sqlworkbench.amazonaws.com |
ssm-guiconnect.amazonaws.com |
若要在任何服務使用主體憑證提出請求時,允許或拒絕存取,請使用 aws:ViaAWSService
條件鍵。該條件索引鍵支援 AWS 服務。
aws:CalledVia
鍵是多值鍵。但是,您無法在條件中使用此鍵強制排序。使用上面的例子,使用者 1 向 AWS CloudFormation發出請求,其中 AWS CloudFormation會呼叫 DynamoDB,而 DynamoDB 呼叫 AWS KMS。這是三個獨立的請求。使用者 1 透過 AWS CloudFormation 和 DynamoDB 對 AWS KMS 執行最終呼叫。
在此情況下,請求環境中的 aws:CalledVia
鍵會依該排序包括 cloudformation.amazonaws.com
和 dynamodb.amazonaws.com
。如果您只在意呼叫是透過請求鏈結中的某處的 DynamoDB 進行,則可以在政策中使用此條件鍵。
例如,下列政策允許管理名為 的 AWS KMS 金鑰my-example-key
,但前提是 DynamoDB 是請求服務的其中一個。ForAnyValue:StringEquals
條件運算子確保 DynamoDB 為呼叫服務之一。若主體直接呼叫 AWS KMS
,則條件會傳回 false
,且此政策不允許該請求。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "KmsActionsIfCalledViaDynamodb", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey", "kms:DescribeKey" ], "Resource": "arn:aws:kms:
region
:111122223333
:key/my-example-key
", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": ["dynamodb.amazonaws.com"] } } } ] }
如果您想強制執行鏈結中進行第一個或最後一個呼叫的服務,可以使用 aws:CalledViaFirst
和 aws:CalledViaLast
鍵。例如,下列政策允許管理 my-example-key
中名為 的金鑰 AWS KMS。只有在鏈中包含多個請求時,才允許這些 AWS KMS 操作。第一個請求必須透過 AWS CloudFormation 執行,而最後一個須透過 DynamoDB 進行。如果其他服務在鏈結中間發出請求,則仍允許該操作。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "KmsActionsIfCalledViaChain", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey", "kms:DescribeKey" ], "Resource": "arn:aws:kms:
region
:111122223333
:key/my-example-key
", "Condition": { "StringEquals": { "aws:CalledViaFirst": "cloudformation.amazonaws.com", "aws:CalledViaLast": "dynamodb.amazonaws.com" } } } ] }
當服務使用IAM委託人的憑證呼叫另一項服務時, aws:CalledViaFirst
和 aws:CalledViaLast
金鑰會出現在請求中。它們會指出在請求鏈中進行呼叫的第一個和最後一個服務。例如,假設 AWS CloudFormation 呼叫另一個名為 的服務X Service
,該服務呼叫 DynamoDB ,然後呼叫 AWS KMS。對 的最終呼叫 AWS KMS 是透過 User 1
AWS CloudFormation、 X Service
和 DynamoDB 執行。它最初透過 呼叫 AWS CloudFormation ,最後透過 DynamoDB 呼叫。
aws:CalledViaFirst
使用此金鑰來比較政策中的服務與代表IAM委託人 (使用者或角色) 提出請求的第一個服務。如需詳細資訊,請參閱aws:CalledVia
。
-
可用性 – 當服務使用IAM主體的憑證向不同的服務提出至少一項其他請求時,此金鑰會出現在請求中。如果服務使用服務角色或服務連結角色代表委託人撥打電話,則不會出現此金鑰。若主體直接進行呼叫,此鍵亦不存在。
-
資料類型 – 字串
-
值類型 - 單一值
aws:CalledViaLast
使用此金鑰來比較政策中的服務與代表IAM委託人 (使用者或角色) 提出請求的最後一個服務。如需詳細資訊,請參閱aws:CalledVia
。
-
可用性 – 當服務使用IAM主體的憑證對不同的服務提出至少一項其他請求時,此金鑰會出現在請求中。如果服務使用服務角色或服務連結角色代表委託人撥打電話,則不會出現此金鑰。若主體直接進行呼叫,此鍵亦不存在。
-
資料類型 – 字串
-
值類型 - 單一值
aws:ViaAWSService
使用此金鑰來檢查 是否使用轉送存取工作階段 (FAS) 代表您向其他 服務 AWS 服務 提出請求。
當服務使用轉送存取工作階段代表原始IAM主體提出請求true
時,請求內容金鑰會傳回。false
如果服務使用服務角色或服務連結角色代表委託人撥打電話,內容索引鍵會傳回。主體直接進行呼叫時,請求環境鍵也會傳回 false
。
-
可用性 – 此金鑰一律會包含在請求內容中。
-
資料類型 – 布林值
-
值類型 - 單一值
aws:CurrentTime
使用此鍵來將請求的日期和時間及您在政策中所指定的日期與時間進行比較。如要檢視使用此條件鍵的範例政策,請參閱 AWS:允許根據日期和時間進行存取。
-
可用性 – 此金鑰一律會包含在請求內容中。
-
資料類型 – 日期
-
值類型 - 單一值
aws:EpochTime
使用此鍵來將請求的日期和時間 (epoch 或 Unix 時間) 與您在政策中所指定的日期與時間進行比較。此鍵也接受自 1970 年 1 月 1 日以來的秒數。
aws:Referer
使用此鍵來將在用戶端瀏覽器中推薦請求的人員,與您在政策中所指定的推薦者進行比較。aws:referer
請求內容值由呼叫者在HTTP標頭中提供。當您選取網頁上的連結時,Referer
標頭會包含在 Web 瀏覽器請求中。Referer
標頭包含選取連結URL的網頁的 。
-
可用性 – 只有透過從瀏覽器URL中的網頁連結叫用對 AWS 資源的請求時,請求內容才會包含此金鑰。程式設計請求不會包含此鍵,因為它不會使用瀏覽器連結來存取 AWS 資源。
-
資料類型 – 字串
-
值類型 - 單一值
例如,您可以使用 URL或使用直接API調用直接存取 Amazon S3 物件。如需詳細資訊,請參閱直接使用 Web 瀏覽器 的 Amazon S3 API操作。當您從網頁中存在URL的 存取 Amazon S3 物件時,來源網頁URL的 會在 中使用aws:referer
。當您URL在瀏覽器中輸入 來存取 Amazon S3 物件時, aws:referer
不存在。當您API直接叫用 時, aws:referer
也不會出現。您可以使用政策中的 aws:referer
條件鍵來允許特定參照者提出的請求,例如公司網域中網頁上的連結。
警告
應該小心使用此鍵。包含公開已知推薦者標頭值相當危險。未授權方可以使用修改的或自訂瀏覽器來提供他們選擇的任何 aws:referer
值。因此, aws:referer
不應用於防止未經授權方提出直接 AWS 請求。它僅用於允許客戶保護其數位內容 (例如存放在 Amazon S3 中的內容),使其不被未經授權的第三方網站參考。
aws:RequestedRegion
使用此金鑰來比較請求中呼叫 AWS 的區域與您在政策中指定的區域。您可以使用此全域條件鍵來控制可接受請求的區域。若要檢視每個服務的 AWS 區域,請參閱 中的服務端點和配額Amazon Web Services 一般參考。
-
可用性 – 此鍵一律會包含在請求內容中。
-
資料類型 – 字串
-
值類型 - 單一值
有些全域服務,例如 IAM,具有單一端點。由於此端點實際位於美國東部 (維吉尼亞北部) 區域,因此一律會IAM呼叫 us-east-1 區域。例如,如果您建立的政策在請求的區域不是 us-west-2 時拒絕存取所有 服務,則IAM呼叫一律會失敗。若要檢視如何解決此問題的範例,請參閱 NotAction 與拒絕 。
注意
aws:RequestedRegion
條件鍵可讓您控制哪個端點叫用的服務,但不控制操作的影響。有些服務具有跨區域影響。
例如,Amazon S3 具有跨區域擴展API的操作。
-
您可以在一個區域 (受
s3:PutBucketReplication
條件鍵影響) 中叫用aws:RequestedRegion
,但其他區域會根據複寫組態設定而受到影響。 -
您可以調用
s3:CreateBucket
以在其他區域建立儲存貯體,並使用s3:LocationConstraint
條件鍵控制適用的區域。
您可以使用此內容金鑰來限制對指定區域集中 AWS 服務的存取。例如,下列政策允許使用者檢視 中的所有 Amazon EC2執行個體 AWS Management Console。不過,只允許他們對愛爾蘭 (eu-west-1)、倫敦 (eu-west-2) 或巴黎 (eu-west-3) 的執行個體進行變更。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "InstanceConsoleReadOnly", "Effect": "Allow", "Action": [ "ec2:Describe*", "ec2:Export*", "ec2:Get*", "ec2:Search*" ], "Resource": "*" }, { "Sid": "InstanceWriteRegionRestricted", "Effect": "Allow", "Action": [ "ec2:Associate*", "ec2:Import*", "ec2:Modify*", "ec2:Monitor*", "ec2:Reset*", "ec2:Run*", "ec2:Start*", "ec2:Stop*", "ec2:Terminate*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "eu-west-1", "eu-west-2", "eu-west-3" ] } } } ] }
aws:RequestTag/tag-key
使用此鍵來將請求中傳遞的標籤鍵/值對與您在政策中所指定的標籤對進行比較。例如,您可以檢查請求是否包含標籤鍵 "Dept"
並且其具有值 "Accounting"
。如需詳細資訊,請參閱在 AWS
請求期間控制存取許可。
-
可用性 – 在請求中傳遞標籤鍵/值對時,鍵會包含在請求內容中。在請求中傳遞多個標籤時,每個標籤鍵值對都會有一個內容鍵。
-
資料類型 – 字串
-
值類型 - 單一值
此內容索引鍵已格式化,"aws:RequestTag/
其中 tag-key
":"tag-value
"tag-key
以及 tag-value
是標籤索引鍵和值對。標籤鍵與值皆不區分大小寫。這表示如果您在政策的條件元素中指定 "aws:RequestTag/TagKey1": "Value1"
,則該條件會符合名為 TagKey1
或 tagkey1
的要求標籤鍵 (但不會同時符合兩者)。
此範例顯示雖然鍵為單一值,但如果鍵不同,您仍然可以在請求中使用多個鍵/值對。
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:::instance/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": [ "preprod", "production" ], "aws:RequestTag/team": [ "engineering" ] } } } }
aws:TagKeys
使用此鍵來將請求中的標籤鍵與您在政策中所指定的鍵進行比較。當使用政策來控制使用標籤的存取時,建議您使用 aws:TagKeys
條件鍵來定義允許的標籤鍵。如需範例政策和詳細資訊,請參閱 根據標籤索引鍵控制存取權限。
-
可用性 – 如果操作支援在請求中傳遞標籤,則此鍵會包含在請求內容中。
-
資料類型 – 字串 (清單)
-
值類型 - 多重值
此內容索引鍵的格式為 "aws:TagKeys":"
tag-key
"tag-key
是沒有值的標籤索引鍵清單 (例如 ["Dept","Cost-Center"]
)。
由於您可以在請求中包含多個標籤鍵值對,因此請求內容可能會是多值請求。在這種情況下,您必須使用 ForAllValues
或 ForAnyValue
設定運算子。如需詳細資訊,請參閱多值內容索引鍵。
有些服務支援標記搭配資源操作,如建立、修改或刪除資源。若要允許標記和操作作為單一呼叫,您必須建立一個政策,同時包括標記動作和資源修改動作。然後,您可以使用 aws:TagKeys
條件鍵以強制執行在請求中使用特定的標籤鍵。例如,若要在建立 Amazon EC2快照時限制標籤,您必須在政策中包含ec2:CreateSnapshot
建立動作和ec2:CreateTags
標記動作。若要檢視此案例的政策,aws:TagKeys
請參閱 Amazon EC2使用者指南 中的使用標籤建立快照。
aws:SecureTransport
使用此金鑰來檢查請求是否使用 傳送TLS。請求內容會傳回 true
或 false
。在政策中,只有在使用 傳送請求時,您才能允許特定動作TLS。
-
可用性 – 此鍵一律會包含在請求內容中。
-
資料類型 – 布林值
-
值類型 - 單一值
aws:SourceArn
使用此金鑰來比較提出 service-to-service請求之資源的 Amazon Resource Name (ARN) 與您在政策中ARN指定的 ,但僅限於服務主體提出 AWS 請求時。當來源的 ARN包含帳戶 ID 時,不需要aws:SourceAccount
搭配 使用 aws:SourceArn
。
此金鑰不適用於提出請求ARN的委託人的 。請改用 aws:PrincipalArn
。
-
可用性 – 只有在直接由 AWS 服務主體代表組態觸發 service-to-service請求的資源呼叫時,請求內容才會包含此金鑰。呼叫服務會將原始資源ARN的 傳遞給呼叫的服務。
下列服務整合不支援此全域條件鍵:
發出呼叫的服務 (服務主體) 被呼叫的服務 (資源型政策) 描述 logdelivery.elb.amazonaws.com Amazon S3 儲存貯體 在 Amazon S3 儲存貯體中啟用 Elastic Load Balancing 存取記錄 logdelivery.elasticloadbalancing.amazonaws.com Amazon S3 儲存貯體 在 Amazon S3 儲存貯體中啟用 Elastic Load Balancing 存取記錄 注意
並非所有服務整合都支援 AWS Security Token Service (AWS STS) 和 AWS Key Management Service (AWS KMS)。如需詳細資訊,請參閱發出呼叫的服務的文件。在KMS金鑰政策
aws:SourceArn
中, AWS 服務 透過金鑰授予使用 所使用的KMS金鑰政策,可能會導致非預期的行為。 -
資料類型 – ARN、字串
-
值類型 - 單一值
您可以使用此條件金鑰,以防止服務在 AWS 服務之間的交易期間用作混淆代理。僅在資源型政策中使用此金鑰,其中 Principal
是 AWS 服務 主體。將此條件索引鍵的值設定為請求中資源ARN的 。例如,當 Amazon S3 儲存貯體更新觸發 Amazon SNS主題發佈時,Amazon S3 服務會叫用 sns:Publish
API操作。在允許sns:Publish
操作的主題政策中,將條件索引鍵的值設定為 Amazon S3 儲存貯體ARN的 。如需有關如何及何時建議此條件金鑰的資訊,請參閱您正在使用之 AWS 服務的文件。
aws:SourceAccount
使用此金鑰來比較提出 service-to-service請求之資源的帳戶 ID 與您在政策中指定的帳戶 ID,但僅限於 AWS 服務主體提出請求時。
-
可用性 – 只有在直接由 AWS 服務主體代表組態觸發 service-to-service請求的資源呼叫時,請求內容才會包含此金鑰。發出呼叫服務會將原始資源的帳戶 ID 傳遞給被呼叫的服務。
下列服務整合不支援此全域條件鍵:
發出呼叫的服務 (服務主體) 被呼叫的服務 (資源型政策) 描述 logdelivery.elb.amazonaws.com Amazon S3 儲存貯體 在 Amazon S3 儲存貯體中啟用 Elastic Load Balancing 存取記錄 logdelivery.elasticloadbalancing.amazonaws.com Amazon S3 儲存貯體 在 Amazon S3 儲存貯體中啟用 Elastic Load Balancing 存取記錄 注意
並非所有服務整合都支援 AWS Security Token Service (AWS STS) 和 AWS Key Management Service (AWS KMS)。如需詳細資訊,請參閱發出呼叫的服務的文件。在KMS金鑰政策
aws:SourceAccount
中使用 AWS 服務 透過金鑰授予 使用的KMS金鑰政策,可能會導致非預期的行為。 -
資料類型 – 字串
-
值類型 - 單一值
您可以使用此條件金鑰,以防止服務在 AWS 服務之間的交易期間用作混淆代理。僅在資源型政策中使用此金鑰,其中 Principal
是 AWS 服務 主體。將此條件鍵的值設定為請求中資源的帳戶 ID。例如,當 Amazon S3 儲存貯體更新觸發 Amazon SNS主題發佈時,Amazon S3 服務會叫用 sns:Publish
API操作。在允許 sns:Publish
操作的主題政策中,將條件鍵的值設定為 Amazon S3 儲存貯體的帳戶 ID。如需有關如何及何時建議此條件金鑰的資訊,請參閱您正在使用 AWS 之服務的文件。
aws:SourceOrgPaths
使用此金鑰來比較提出 service-to-service請求之資源的 AWS Organizations 路徑與您在政策中指定的組織路徑,但僅限於 AWS 服務主體提出請求時。 Organizations 路徑是 Organizations 實體結構的文字表示。如需有關使用和了解路徑的詳細資訊,請參閱了解 AWS Organizations 實體路徑。
-
可用性 – 只有當 AWS 服務主體代表組織成員帳戶所擁有的資源直接呼叫您的資源時,此鍵才會包含在請求內容中。發出呼叫的服務會將原始資源的組織路徑傳遞給被呼叫的服務。
下列服務整合不支援此全域條件鍵:
發出呼叫的服務 (服務主體) 被呼叫的服務 (資源型政策) 描述 logdelivery.elb.amazonaws.com Amazon S3 儲存貯體 在 Amazon S3 儲存貯體中啟用 Elastic Load Balancing 存取記錄 logdelivery.elasticloadbalancing.amazonaws.com Amazon S3 儲存貯體 在 Amazon S3 儲存貯體中啟用 Elastic Load Balancing 存取記錄 所有服務主體 Amazon Lex 機器人 允許 AWS 服務 使用 Amazon Lex 機器人 注意
並非所有服務整合都支援 AWS Security Token Service (AWS STS) 和 AWS Key Management Service (AWS KMS)。如需詳細資訊,請參閱發出呼叫的服務的文件。在KMS金鑰政策
aws:SourceOrgPaths
中使用 AWS 服務 透過金鑰授予 使用的KMS金鑰政策,可能會導致非預期的行為。 -
資料類型 – 字串 (清單)
-
值類型 - 多重值
您可以使用此條件金鑰,以防止服務在 AWS 服務之間的交易期間用作混淆代理。僅在資源型政策中使用此金鑰,其中 Principal
是 AWS 服務 主體。將此條件鍵的值設定為請求中資源的組織路徑。例如,當 Amazon S3 儲存貯體更新觸發 Amazon SNS主題發佈時,Amazon S3 服務會叫用 sns:Publish
API操作。在允許 sns:Publish
操作的主題政策中,將條件鍵的值設定為 Amazon S3 儲存貯體的組織路徑。如需有關如何及何時建議此條件金鑰的資訊,請參閱您正在使用之 AWS 服務的文件。
aws:SourceOrgPaths
是多重值條件鍵。多值鍵在請求內容中可以擁有多個值。使用此鍵時,您必須使用 ForAnyValue
或 ForAllValues
設定運算子搭配字串條件運算子。如需有關多重值條件鍵的詳細資訊,請參閱 多值內容索引鍵。
aws:SourceOrgID
使用此金鑰來比較提出 service-to-service請求之資源的組織 ID 與您在政策中指定的組織 ID,但僅限於 AWS 服務主體提出請求時。當您對 AWS Organizations中的組織新增和移除帳戶時,包含 aws:SourceOrgID
鍵的政策會自動包含正確的帳戶,您無需手動更新政策。
-
可用性 – 只有當 AWS 服務主體代表組織成員帳戶所擁有的資源直接呼叫您的資源時,此鍵才會包含在請求內容中。發出呼叫的服務會將原始資源的組織 ID 傳遞給被呼叫的服務。
下列服務整合不支援此全域條件鍵:
發出呼叫的服務 (服務主體) 被呼叫的服務 (資源型政策) 描述 logdelivery.elb.amazonaws.com Amazon S3 儲存貯體 在 Amazon S3 儲存貯體中啟用 Elastic Load Balancing 存取記錄 logdelivery.elasticloadbalancing.amazonaws.com Amazon S3 儲存貯體 在 Amazon S3 儲存貯體中啟用 Elastic Load Balancing 存取記錄 所有服務主體 Amazon Lex 機器人 允許 AWS 服務 使用 Amazon Lex 機器人 注意
不支援與 AWS Security Token Service (AWS STS) 和 AWS Key Management Service (AWS KMS) 進行的所有服務整合。如需詳細資訊,請參閱發出呼叫的服務的文件。在KMS金鑰政策
aws:SourceOrgID
中, AWS 服務 透過金鑰授與使用 所使用的KMS金鑰政策,可能會導致非預期的行為。 -
資料類型 – 字串
-
值類型 - 單一值
您可以使用此條件金鑰,以防止服務在 AWS 服務之間的交易期間用作混淆代理。僅在資源型政策中使用此金鑰,其中 Principal
是 AWS 服務 主體。將此條件鍵的值設定為請求中資源的組織 ID。例如,當 Amazon S3 儲存貯體更新觸發 Amazon SNS主題發佈時,Amazon S3 服務會叫用 sns:Publish
API操作。在允許 sns:Publish
操作的主題政策中,將條件鍵的值設定為 Amazon S3 儲存貯體的組織 ID。如需有關如何及何時建議此條件金鑰的資訊,請參閱您正在使用之 AWS 服務的文件。
aws:UserAgent
使用此鍵來將申請者的用戶端應用程式與您在政策中指定的應用程式進行比較。
-
可用性 – 此鍵一律會包含在請求內容中。
-
資料類型 – 字串
-
值類型 - 單一值
警告
應該小心使用此鍵。由於該aws:UserAgent
值由呼叫者在HTTP標頭中提供,未經授權的各方可以使用修改或自訂瀏覽器來提供他們選擇的任何aws:UserAgent
值。因此, aws:UserAgent
不應用於防止未經授權方提出直接 AWS 請求。您可以使用它僅允許特定用戶端應用程式,而且只在測試政策之後才能使用。
其他跨服務條件鍵
AWS STS 支援SAML聯合 的 型聯合條件金鑰和跨服務條件金鑰。 OIDC 當使用 聯合的使用者在其他 服務中SAML執行 AWS 操作時,即可使用這些金鑰。