AWS 全域條件內容鍵 - AWS Identity and Access Management

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

AWS 全域條件內容鍵

主體向 AWS 發出請求時,AWS 會將請求資訊收集到請求內容。您可以使用 JSON 政策的 Condition 元素,來比較請求內容中的鍵和您在政策中指定的鍵值。請求信息由不同的來源提供,包括發出請求的主體,提出請求的資源以及有關請求本身的元數據。

全域條件金鑰可用於所有AWS服務。雖然這些條件索引鍵可用於所有原則,但並非每個要求內容中都可使用該金鑰。例如,只有當AWS服務主體直接呼叫資源時,aws:SourceAccount條件索引鍵才可用。若要深入瞭解要求內容中包含全域金鑰的情況,請參閱每個索引鍵的可用性資訊。

某些個別服務會建立自己的條件金鑰,這些金鑰可在其他服務的要求內容中使用。跨服務條件索引鍵是一種全域條件金鑰類型,其中包含與服務名稱相符的前置詞,例如ec2:lambda:,但可跨其他服務使用。

務特定的條件金鑰已定義為與個別AWS服務搭配使用。例如,Amazon S3 可讓您使用s3:VersionId條件金鑰撰寫政策,以限制對特定版本的 Amazon S3 物件的存取。此條件金鑰對於服務而言是唯一的,這表示僅適用於 Amazon S3 服務的請求。如需服務特定的條件金鑰,請參閱AWS服務的動作、資源和條件金鑰,然後選擇您要檢視其金鑰的服務。

注意

如果您使用僅在某些情況下可用的條件鍵,則可以使用條件運算子的IfExists版本。如果請求內容中缺少條件鍵,則政策可能會讓評估失敗。例如,搭配使用以下條件區塊與 ...IfExists 運算子,以在請求來自特定 IP 範圍或特定 VPC 時進行比對。若其中一個鍵,或兩者都不包含在請求內容中,條件仍會傳回 true。只有在請求內容中包含指定鍵時,才會檢查值。

"Condition": { "IpAddressIfExists": {"aws:SourceIp" : ["xxx"] }, "StringEqualsIfExists" : {"aws:SourceVpc" : ["yyy"]} }
重要

若要將您的條件與具有多個鍵值的請求內容進行比較,您必須使用 ForAllValuesForAnyValue 設定運算子。只能將集合運算子與多值條件鍵搭配使用。請勿將集合運算子與單一值條件鍵搭配使用。如需詳細資訊,請參閱 多值內容索引鍵

主體的屬性

使用下列條件索引鍵,將提出要求之主體的詳細資訊與您在原則中指定的主參與者特性進行比較。如需可提出要求的主參與者清單,請參閱指定主體

AWS:PrincipalArn

使用此鍵來將提出請求主體的 Amazon Resource Name (ARN) 與您在政策中所指定的 ARN 進行比較。針對 IAM 角色,請求內容會傳回角色的 ARN,而非取得角色使用者的 ARN。

  • 可用性 – 此鍵會包含在所有簽章請求的請求內容中。匿名請求不包含此鍵。您可以在此條件鍵中指定以下類型的主體:

    • IAM 角色

    • IAM 使用者

    • AWS STS 聯合身分使用者工作階段

    • AWS 帳戶 根使用者

  • 數據類型-ARN,字符串

    AWS建議您在比較 ARN 時使用 ARN 運算子而非字串運算子

  • 值類型 - 單一值

  • 範例值下列清單顯示針對您可在aws:PrincipalArn條件索引鍵中指定的不同主參與者類型所傳回的請求前後關聯值:

    • IAM 角色 – 請求內容包含條件鍵 aws:PrincipalArn 的下列值。請勿將擔任角色工作階段 ARN 指定為此條件鍵的值。如需有關擔任角色工作階段主體的詳細資訊,請參閱 角色工作階段主體

      arn:aws:iam::123456789012:role/role-name
    • IAM 使用者 – 請求內容包含條件鍵 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 帳戶 主體

      arn:aws:iam::123456789012:root

您可以將根使用者 ARN 指定為 AWS Organizations 服務控制政策 (SCP) 中條件鍵 aws:PrincipalArn 的值。SCP 是一種組織政策,用於管理您組織中的許可,並且僅會影響組織中的成員帳戶。SCP 會限制 IAM 使用者和成員帳戶中 IAM 使用者和角色的許可,包括成員帳戶的根使用者。如需 SCP 對許可的影響的詳細資訊,請參閱 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 帳戶根使用者。在政策中,這項條件鍵會確保申請者是在指定組織根或 AWS Organizations 中組織單位 (OU) 內的帳戶成員。AWS Organizations 路徑是 Organizations 實體結構的文字表示。如需有關使用和了解路徑的詳細資訊,請參閱 了解 AWS Organizations 實體路徑

  • 可用性 – 只有在主體是組織的成員時,請求內容中才會包含此鍵。匿名請求不包含此鍵。

  • 數據類型-字符串(列表)

  • 值類型 - 多重值

注意

組織 ID 是全域唯一,但 OU ID 和根 ID 只有在組織內是唯一。這表示沒有兩個組織共用相同的組織 ID。不過,另一個組織的 OU 或根可能與您的 ID 相同。我們建議您在指定 OU 或根時,一律包含組織 ID。

例如,以下條件會針對帳戶中的主體傳回 true。這些帳戶是直接連接到 ou-ab12-22222222 OU,但並非其子 OU。

"Condition" : { "ForAnyValue:StringEquals" : { "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/"] }}

以下條件會針對帳戶中的主體傳回 true。該帳戶是直接連接到 OU 或其任何的子 OU。當您包含萬用字元時,您必須使用 StringLike 條件運算子。

"Condition" : { "ForAnyValue:StringLike" : { "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/*"] }}

對於直接連接到任何子 OU 但不直接連接到父 OU 的帳戶中的主體,以下條件將傳回 true。先前的條件適用於 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:PrincipalOrg身份證

使用此鍵來將請求主體所屬 AWS Organizations 中的組織識別碼,與政策中所指定的識別碼進行比較。

  • 可用性 – 只有在主體是組織的成員時,請求內容中才會包含此鍵。匿名請求不包含此鍵。

  • 數據類型-字符串

  • 值類型 - 單一值

此全域鍵提供了列出組織中所有 AWS 帳戶的所有帳戶 ID 的替代方法。您可以使用此條件鍵來簡化在資源型政策中指定 Principal 元素。您可以在條件元素中指定組織 ID。當您新增和移除帳戶時,包含 aws:PrincipalOrgID 鍵的政策會自動包含正確的帳戶,不需要手動更新。

例如,下列 Amazon S3 儲存貯體政策允許 o-xxxxxxxxxxx 組織中任何帳戶的成員將物件新增至 policy-ninja-dev 儲存貯體。

{ "Version": "2012-10-17", "Statement": { "Sid": "AllowPutObject", "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::policy-ninja-dev/*", "Condition": {"StringEquals": {"aws:PrincipalOrgID":"o-xxxxxxxxxxx"} } } }
注意

此全域條件也適用於 AWS 組織的管理帳戶。此政策可防止指定組織以外的所有主體存取 Amazon S3 儲存貯體。這包括與您的內部資源互動的任何 AWS 服務,例如將日誌資料傳送到 Amazon S3 儲存貯體的 AWS CloudTrail。若要了解如何安全地授予 AWS 服務存取權,請參閱 AWS:PrincipalIsAWSService

如需有關 AWS Organizations 的詳細資訊,請參閱《AWS Organizations 使用者指南》中的什麼是 AWS Organizations?

AWS:PrincipalTag/標籤鍵

使用此鍵來將連接至提出請求主體的標籤,與您在政策中所指定的標籤進行比較。若主體連接的標籤超過一個,請求內容會針對每個連接的標籤鍵包含一個 aws:PrincipalTag 鍵。

  • 可用性 – 若主體搭配連接標籤使用 IAM 使用者,此鍵會包含在請求內容中。其會針對主體,使用具備連接標籤或工作階段標籤的 IAM 角色包含在其中。匿名請求不包含此鍵。

  • 數據類型-字符串

  • 值類型 - 單一值

您可以將自訂屬性以鍵值對的形式新增至使用者或角色。如需有關 IAM 標籤的詳細資訊,請參閱 標記 IAM 資源。您可以使用 aws:PrincipalTag 對 AWS 主體進行控制存取

此範例會示範如何建立身分型政策,允許具有 department=hr 標籤的使用者管理 IAM 使用者、群組或角色。若要使用此政策,請將範例政策中的斜體預留位置文字取代為您自己的資訊。然後,遵循建立政策編輯政策中的指示進行操作。

{ "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:::DOC-EXAMPLE-BUCKET1/AWSLogs/AccountNumber/*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": "vpc-111bbb22" }, "BoolIfExists": { "aws:PrincipalIsAWSService": "false" } } } ] }

在下列影片中,進一步了解如何在政策中使用 aws:PrincipalIsAWSService 條件鍵。

AWS:PrincipalServiceName

使用此鍵將政策中的服務主體名稱,以及向您的資源提出請求的服務主體進行比較。您可以使用這個鍵來檢查這個呼叫是否由特定的服務主體進行比較。當服務主體直接向您的資源要求時,aws:PrincipalServiceName 鍵會包含服務主體的名稱。例如,AWS CloudTrail 服務主體名稱為 cloudtrail.amazonaws.com

  • Availability (可用性) – 當 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:::DOC-EXAMPLE-BUCKET1/AWSLogs/AccountNumber/*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": "vpc-111bbb22", "aws:PrincipalServiceName": "cloudtrail.amazonaws.com" } } } ] }

AWS:PrincipalServiceNamesList

此鍵提供屬於該服務的所有服務主體名稱清單。這是進階條件鍵。您可以用其來限制服務僅從特定區域存取您的資源。某些服務可能會建立區域服務主體,以指示特定區域內服務的特定執行個體。您可以將資源的存取限制為服務的特定執行個體。當服務主體直接向您的資源要求時,aws:PrincipalServiceNamesList 包含與服務區域執行個體相關聯的所有服務主體名稱的無序清單。

  • Availability (可用性) – 當 AWS 服務主體呼叫時,請求中即會出現此鍵。此鍵在任何其他情況下都不存在,包括以下情況:

    • 若服務使用服務角色服務連結角色來代表主體呼叫。

    • 服務使用 IAM 主體的憑證代表主體提出請求。

    • 如果呼叫是由 IAM 主體直接進行。

    • 如果呼叫由匿名請求者發出。

  • 數據類型-字符串(列表)

  • 值類型 - 多重值

aws:PrincipalServiceNamesList 是多重值條件鍵。多值鍵在請求內容中可以擁有多個值。使用此鍵時,您必須使用 ForAnyValueForAllValues 設定運算子搭配字串條件運算子。如需有關多重值條件鍵的詳細資訊,請參閱 多值內容索引鍵

AWS:PrincipalType

使用此鍵來將發出請求的主體類型與您在政策中所指定的主體類型進行比較。如需詳細資訊,請參閱 指定主體。如需 principal 鍵值的具體範例,請參閱 主體索引鍵值

  • 可用性 – 此鍵會包含在所有請求的請求內容中,包括匿名請求。

  • 數據類型-字符串

  • 值類型 - 單一值

aws:userid

使用此鍵來將申請者的主體識別碼與您在政策中所指定的 ID 進行比較。針對 IAM 使用者,請求內容值是使用者 ID。針對 IAM 角色,此值的格式可能會不同。如需針對不同主體資訊顯示方式的詳細資訊,請參閱 指定主體。如需 principal 鍵值的具體範例,請參閱 主體索引鍵值

  • 可用性 – 此鍵會包含在所有請求的請求內容中,包括匿名請求。

  • 數據類型-字符串

  • 值類型 - 單一值

aws:username

使用此鍵將申請者的使用者名稱與您在政策中所指定的使用者名稱進行比較。如需針對不同主體資訊顯示方式的詳細資訊,請參閱 指定主體。如需 principal 鍵值的具體範例,請參閱 主體索引鍵值

  • 可用性 – 此鍵一律會包含在 IAM 使用者的請求內容中。匿名請求和使用 AWS 帳戶根使用者 或 IAM 角色提出的請求不會包含此鍵。使用 IAM Identity Center 憑證提出的請求不會在內容中包含此鍵。

  • 數據類型-字符串

  • 值類型 - 單一值

角色工作階段的屬性

使用下列條件索引鍵來比較產生工作階段時角色工作階段的屬性。只有當具有角色工作階段或同盟使用者認證的主參與者提出要求時,才能使用這些條件索引鍵。這些條件索引鍵的值會內嵌在角色的工作階段 Token 中。

角色是一種主參與者類型。您也可以使用主體的屬性區段中的條件索引鍵,在角色發出要求時評估角色的屬性。

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 開發套件請求中不存在此鍵。

  • 資料類型日期

  • 值類型 - 單一值

若要了解哪些服務支援使用暫時憑證,請參閱AWS 與 IAM 搭配使用的服務

AWS:MultiFactorAuthAge

使用此鍵來將請求主體獲得授權使用 MFA 以來的秒數,與您在政策中所指定的數字進行比較。如需有關 MFA 的詳細資訊,請參閱 在中使用多因素身份驗證(MFA) AWS

  • 可用性 – 只有在進行呼叫的主體使用 MFA 進行身分驗證時,請求內容中才會包含此鍵。如果未使用 MFA,則此鍵不存在。

  • 據類型-數字

  • 值類型 - 單一值

AWS:MultiFactorAuthPresent

使用此鍵來檢查是否使用了多重要素驗證 (MFA) 來驗證發出請求的暫時安全憑證。

  • 可用性 – 只有在主體使用暫時憑證發出請求時,請求內容中才會包含此鍵。鍵不會出現在使用長期憑證發出的 AWS CLI、AWS API 或 AWS 開發套件請求中。

  • 資料類型布林

  • 值類型 - 單一值

暫時憑證會用來針對 IAM 角色、聯合身分使用者、具備 sts:GetSessionToken 暫時權杖的 IAM 使用者,以及 AWS Management Console 使用者進行身分驗證。IAM 使用者存取鍵為長期憑證,但在某些情況下,AWS會代表 IAM 使用者建立臨時憑證以執行作業。在這些情況下,aws:MultiFactorAuthPresent 鍵會出現在請求中,並設為 false 值。在兩種常見的情況下可能會發生此情況:

  • IAM 使用者在 AWS Management Console不知情的情況下使用臨時憑證。使用者會使用他們的使用者名稱和密碼 (長期憑證) 登入主控台。不過,主控台會在背景中代表使用者產生臨時憑證。

  • 如果 IAM 使用者呼叫 AWS 服務,則服務會重新使用該使用者的憑證,來向不同的服務提出另一個請求。例如,當呼叫 Athena 存取 Amazon S3 儲存貯體時,或使用 AWS CloudFormation 來建立 Amazon EC2 執行個體。針對後續的請求,AWS 會使用臨時憑證。

若要了解哪些服務支援使用暫時憑證,請參閱AWS 與 IAM 搭配使用的服務

aws:MultiFactorAuthPresent 鍵在使用長期憑證 (例如使用者存取金鑰對) 呼叫 API 或 CLI 命令時,便不會出現。因此,我們建議您在檢查此鍵時使用條件運算子的 ...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" } }

這個 DenyBoolIfExistsfalse 的組合會拒絕未使用 MFA 驗證的請求。特別地是,它會拒絕來自未包含 MFA 之暫時憑證的請求。它也會拒絕使用長期憑證 (例如,使用存取鍵進行的 AWS CLI 或 AWS API 操作) 提出的請求。*IfExists 運算子會檢查 aws:MultiFactorAuthPresent 鍵是否存在以及它是否可能存在,如其存在所指出。當您想要拒絕任何未使用 MFA 驗證的請求時,請使用此項目。這個項目較安全,但可能會中斷任何使用存取鍵來存取 AWS CLI 或 AWS API 的程式碼或指令碼。

替代組合

您也可以使用 BoolIfExists 運算子,以允許使用 MFA 進行身分驗證的請求,以及使用長期憑證提出的 AWS CLI 或 AWS API 請求。

"Effect" : "Allow", "Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "true" } }

此條件會比對鍵是否存在,或者鍵是否不存在。這個 AllowBoolIfExiststrue 的組合允許使用 MFA 驗證的請求,或允許無法使用 MFA 驗證的請求。這表示當申請者使用其長期存取鍵時,允許 AWS CLI、AWS API 和 AWS 開發套件操作。此組合不允許來自暫時憑證,且能夠包含 MFA 的請求但未這麼做的請求。

當您使用 IAM 主控台視覺化編輯器建立政策並選擇 MFA required (需要 MFA) 時,即會套用此組合。此設定需要 MFA 來存取主控台,但允許不使用 MFA 進行程式設計存取。

或者,您可以使用 Bool 運算子,僅在使用 MFA 驗證時允許程式設計和主控台請求。

"Effect" : "Allow", "Condition" : { "Bool" : { "aws:MultiFactorAuthPresent" : "true" } }

這個 AllowBooltrue 的組合只允許 MFA 驗證的請求。這僅適用於支援使用 MFA 的暫時憑證。此陳述式不允許存取使用長期存取鍵所提出的請求,或是使用暫時憑證但未使用 MFA 所提出的請求。

請不要使用與下列內容類似的政策建構來檢查是否存在 MFA 鍵:

##### WARNING: USE WITH CAUTION ##### "Effect" : "Allow", "Condition" : { "Null" : { "aws:MultiFactorAuthPresent" : "false" } }

這個 Allow 效果、Null 元素與 false 值的組合只允許可使用 MFA 驗證的請求,不論是否實際驗證請求都一樣。這會允許所有使用暫時憑證所提出的請求,並拒絕長期憑證的存取。請小心使用本範例,因為未測試是否實際使用 MFA 身分驗證。

AWS: EC2 InstanceSourceVpc

此鍵可識別要接收 Amazon EC2 IAM 角色憑證的 VPC。您可以在具有 aws:SourceVPC 全域鍵的政策中使用此鍵,以檢查是否從與接收憑證之 VPC (aws:Ec2InstanceSourceVpc) 相符的 VPC (aws:SourceVPC) 進行呼叫。

  • 可用性 – 每當請求者使用 Amazon EC2 角色憑證簽署請求時,請求內容中會包含此鍵。它可用於 IAM 政策、服務控制政策、VPC 端點政策和資源政策。

  • 數據類型-字符串

  • 值類型 - 單一值

此鍵可與 VPC 識別符值搭配使用,但是當與 aws:SourceVpc 內容鍵一起用作變數時最有用。只有在請求者使用 VPC 端點提出請求時,請求內容中才會包含 aws:SourceVpc 內容鍵。搭配使用 aws:Ec2InstanceSourceVpcaws: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 值,則會拒絕存取。政策聲明僅限於透過測試 ec2:SourceInstanceARN 條件鍵是否存在,作為 Amazon EC2 執行個體角色使用的角色。

政策使用 aws:ViaAWSService 來允許 AWS 在代表 Amazon EC2 執行個體角色提出請求時授權請求。例如,當您從 Amazon EC2 執行個體向加密的 Amazon S3 儲存貯體提出請求時,Amazon S3 會代表您呼叫 AWS KMS。對 AWS KMS 提出請求時,某些鍵不存在。

AWS: InstanceSourcePrivate

此鍵可識別接收 Amazon EC2 IAM 角色憑證之主要彈性網路介面的私有 IPv4 地址。您必須搭配使用此條件鍵與其配套鍵 aws:Ec2InstanceSourceVpc,以確保您擁有 VPC ID 和來源私有 IP 的全域唯一組合。搭配使用此鍵與 aws:Ec2InstanceSourceVpc,來確保從接收憑證的相同私有 IP 地址提出請求。

  • 可用性 – 每當請求者使用 Amazon EC2 角色憑證簽署請求時,請求內容中會包含此鍵。它可用於 IAM 政策、服務控制政策、VPC 端點政策和資源政策。

  • 資料類型IP 位址

  • 值類型 - 單一值

重要

此鍵不應該單獨在 Allow 陳述式中使用。私有 IP 地址根據定義不是全域唯一的。每次使用 aws:Ec2InstanceSourcePrivateIPv4 鍵指定可從中使用 Amazon EC2 執行個體憑證的 VPC 時,都應該使用 aws:Ec2InstanceSourceVpc 鍵。

注意

此條件鍵在 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 擔任角色 CLI 命令或 AWS STS AssumeRole API 操作擔任角色時,在設定來源身分後,請求中即會出現此鍵。

  • 數據類型-字符串

  • 值類型 - 單一值

您可以在政策中使用此鍵,以允許在擔任角色時設定來源身分的主體在 AWS 中執行動作。AWS CloudTrail 中會顯示角色指定來源身分的活動。這可讓系統管理員更容易判斷何者在 AWS 中執行具有角色的動作。

sts:RoleSessionName 不同,在設定來源身分之後,就無法變更值。這會出現在由角色所採取的所有動作的請求內容中。當您使用工作階段憑證來擔任另一個角色時,此值仍然存在於後續角色工作階段。從另一個角色取得及擔任角色稱為角色鏈結

當主體在使用任何 AWS STS 擔任角色 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 EC2 的 IAM 角色登入資料進行比較。執行個體中繼資料服務會依據任何指定請求 (PUTGET 標頭) 來區分 IMDSv1 及 IMDSv2 請求,這些對 IMDSv2 而言是唯一的內容,會出現在該請求中。

  • 可用性 — 每當 Amazon EC2 執行個體建立角色工作階段時,此金鑰都會包含在請求內容中。

  • 據類型-數字

  • 值類型 - 單一值

  • 範例值 — 1.0、2.0

您可以在每個執行個體上設定執行個體中繼資料服務 (IMDS),此類本機程式碼或使用者必須使用 IMDSv2。當您指定必須使用該 IMDSv2 時,IMDSv1 則無法繼續運作。

  • 執行個體中繼資料服務第 1 版 (IMDSv1) — 請求/回應方法

  • 執行個體中繼資料服務第 2 版 (IMDSv2) – 工作階段導向方法

如需如何設定執行個體使用 IMDSv2 的相關資訊,請參閱設定執行個體中繼資料選項。

在下列範例中,如果要求內容中的 ec2: RoleDelivery 值為 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:awn:EC:美國西部-2:11111111:執行個體/執行個體識別碼

如需政策範例,請參閱允許特定執行個體檢視其他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:::confidential-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:::confidential-bucket/*", "Condition": { "StringEquals": { "glue:CredentialIssuingService": "glue.amazonaws.com" } } }

拉姆達:SourceFunctionArn

使用此金鑰可識別 IAM 角色登入資料傳送至的 Lambda 函數 ARN。Lambda 服務會為來自函數執行環境的每個 AWS API 要求設定此金鑰。使用此鍵可驗證對AWS資源的呼叫是否來自特定 Lambda 函數的程式碼。Lambda 也會為來自執行環境之外的某些要求設定此金鑰,例如將記錄寫入 CloudWatch 和傳送追蹤至 X-Ray。

  • 可用性 — 每當叫用 Lambda 函數程式碼時,此金鑰都會包含在要求內容中。

  • 資料類型ARN

  • 值類型 - 單一值

  • 示例值-ARN:AWN:羊:美東-1:123456789012:功能:TestFunction

下列範例允許一個特定的 Lambda 函數s3:PutObject存取指定的值區。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleSourceFunctionArn", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "ArnEquals": { "lambda:SourceFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:source_lambda" } } } ] }

如需詳細資訊,請參閱開AWS Lambda發人員指南中的使用 Lambda 執行環境認證

SSM:SourceInstanceArn

使用此金鑰可識別要交付 IAM 角色登入資料的AWS Systems Manager代管執行個體 ARN。當請求來自具有 IAM 角色與 Amazon EC2 執行個體設定檔相關聯的受管執行個體時,不會出現此條件金鑰。

  • 可用性 — 每當角色認證傳送至AWS Systems Manager代管執行個體時,此金鑰都會包含在要求內容中。

  • 資料類型ARN

  • 值類型 - 單一值

  • 範例值 — Arn:awn:EC:美國西部-2:11111111:執行個體/執行個體識別碼

身份存儲:UserId

使用此金鑰可將已簽署請求中的 IAM 身分中心員工身分與政策中指定的身分進行比較。

  • 可用 — 當請求的呼叫者是 IAM 身分中心的使用者時,會包含此金鑰。

  • 數據類型-字符串

  • 值類型 - 單一值

  • 範例值

您可以使用AWS CLI、AWS API 或 AWS SDK 向 GetUserIdAPI 提出要求,在 IAM 身分中心找到使用者 UserId 的資訊。

網絡的屬性

您可以使用下列條件索引鍵,比較要求來源或透過您在原則中指定之網路內容傳遞之網路的詳細資料。

AWS:SourceIp

使用此鍵來將申請者的 IP 地址和您在政策中所指定的 IP 地址進行比較。aws:SourceIp 條件鍵僅可用於公有 IP 地址範圍。

  • 可用性 – 此鍵會包含在請求內容中,但當申請者使用 VPC 端點提出請求時則除外。

  • 資料類型IP 位址

  • 值類型 - 單一值

aws:SourceIp 條件鍵可用在政策中,只允許主體在指定的 IP 範圍內提出請求。

注意

aws:SourceIp 同時支援 IPv4 和 IPv6 IP 地址或者 IP 地址範圍。如需支援 IPv6 AWS 服務 的清單,請參閱《Amazon VPC 使用者指南》中的支援 IPv6 的 AWS 服務

例如,您可以將以下身分型政策連接至 IAM 角色。如果使用者從指定的 IPv4 地址範圍進行呼叫,則此政策允許使用者將物件放入 DOC-EXAMPLE-BUCKET3 Amazon S3 儲存貯體。此政策也允許使用 轉送存取工作階段 的 AWS 服務代表您執行此操作。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PrincipalPutObjectIfIpAddress", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET3/*", "Condition": { "IpAddress": { "aws:SourceIp": "203.0.113.0/24" } } } ] }

如果您需要限制來自同時支援 IPv4 和 IPv6 定址的網路存取,您可以在 IAM 政策條件中包含 IPv4 和 IPv6 地址或 IP 地址範圍。如果使用者從指定的 IPv4 或 IPv6 地址範圍進行呼叫,則以下身分型政策允許使用者將物件放入 DOC-EXAMPLE-BUCKET3 Amazon S3 儲存貯體。在 IAM 政策中包含 IPv6 地址範圍之前,請確認您使用的 AWS 服務 支援 IPv6。如需支援 IPv6 AWS 服務 的清單,請參閱《Amazon VPC 使用者指南》中的支援 IPv6 的 AWS 服務

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PrincipalPutObjectIfIpAddress", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-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

使用此金鑰可檢查要求是否透過 VPC 端點所連接的 VPC 傳遞。在政策中,您可以使用此鍵,只允許存取特定 VPC。如需詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南中的限制特定 VPC 的存取

  • 可用性 – 只有在申請者使用 VPC 端點提出請求時,請求內容中才會包含此鍵。

  • 數據類型-字符串

  • 值類型 - 單一值

AWS:SourceVpce

使用此鍵來將請求的 VPC 端點識別碼與您在政策中所指定的端點 ID 進行比較。在政策中,您可以使用此鍵來將存取限制在特定 VPC 端點。如需詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南中的限制特定 VPC 端點的存取

  • 可用性 – 只有在申請者使用 VPC 端點提出請求時,請求內容中才會包含此金鑰。

  • 數據類型-字符串

  • 值類型 - 單一值

AWS:VpcSourceIp

使用此鍵來將提出請求的 IP 地址與您在政策中所指定的 IP 地址進行比較。在政策中,只有在請求來自指定 IP 地址並且透過 VPC 端點時,此鍵才會相符。

  • 可用性 – 只有在請求是使用 VPC 端點提出時,請求內容中才會包含此鍵。

  • 資料類型IP 位址

  • 值類型 - 單一值

如需詳細資訊,請參閱 Amazon VPC 使用者指南中的使用 VPC 端點控制服務的存取

注意

aws:VpcSourceIp 同時支援 IPv4 和 IPv6 IP 地址或者 IP 地址範圍。如需支援 IPv6 AWS 服務 的清單,請參閱《Amazon VPC 使用者指南》中的支援 IPv6 的 AWS 服務

資源的屬性

您可以使用下列條件索引鍵,比較屬於要求目標之資源的詳細資訊與您在策略中指定的資源特性。

AWS:ResourceAccount

使用此鍵來比較請求的資源所有者的 AWS 帳戶 ID 與政策中的資源帳戶。然後,根據擁有該資源的帳戶來允許或拒絕對該資源的存取。

  • 可用性 – 此鍵一律會包含在大部分服務動作的請求內容中。下列動作不支援此鍵:

    • Amazon Elastic Block Store – 所有動作

    • Amazon EC2

      • ec2:AcceptTransitGatewayPeeringAttachment

      • ec2:AcceptVpcEndpointConnections

      • ec2:AcceptVpcPeeringConnection

      • ec2:CopyFpgaImage

      • 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— 如果該事件匯流排在 2023 年 3 月 2 日之前設定為跨帳戶 EventBridge 目標,則 EventBridgePutEvents呼叫另一個帳戶中的事件匯流排。如需詳細資訊,請參閱 Amazon EventBridge 使用者指南中的授予許可以允許來自其他AWS帳戶的事件

    • Amazon Route 53

      • route53:AssociateVpcWithHostedZone

      • route53:CreateVPCAssociationAuthorization

      • route53:DeleteVPCAssociationAuthorization

      • route53:DisassociateVPCFromHostedZone

      • route53:ListHostedZonesByVPC

    • Amazon WorkSpaces

      • workspaces:DescribeWorkspaceImages

  • 數據類型-字符串

  • 值類型 - 單一值

注意

如需上述不受支援動作的其他考量事項,請參閱資料周邊政策範例儲存庫。

此鍵等於已在請求中評估其資源之帳戶的 AWS 帳戶 ID。

對於您帳戶中的大部分資源,ARN 包含該資源的擁有者帳戶 ID。對於某些資源 (例如 Amazon S3 儲存貯體),資源 ARN 不包含帳戶 ID。以下兩個範例顯示在 ARN 中具有帳戶 ID 的資源與沒有帳戶 ID 的 Amazon S3 ARN 之間的差異:

  • arn:aws:iam::123456789012:role/AWSExampleRole – 在帳戶 123456789012 中建立和擁有的 IAM 角色。

  • arn:aws:s3:::DOC-EXAMPLE-BUCKET2 – 在帳戶 111122223333 中建立和擁有 Amazon S3 儲存貯體,不會顯示在 ARN 中。

使用 AWS 主控台或 API 或 CLI,查找所有資源和對應的 ARN。

您撰寫的政策會根據資源擁有者的帳戶 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 Organizations 路徑與政策中的路徑。在政策中,此條件鍵會確保資源屬於指定組織根帳戶或 AWS Organizations 中組織單位 (OU) 內的帳戶成員。AWS Organizations 路徑是 Organizations 實體結構的文字表示。如需有關使用和了解路徑的詳細資訊,請參閱 了解 AWS Organizations 實體路徑

  • 可用性 – 只有在擁有資源的帳戶是組織成員時,請求內容中才會包含此鍵。此全域條件鍵不支援下列動作:

    • Amazon Elastic Block Store – 所有動作

    • Amazon EC2

      • ec2:AcceptTransitGatewayPeeringAttachment

      • ec2:AcceptVpcEndpointConnections

      • ec2:AcceptVpcPeeringConnection

      • ec2:CopyFpgaImage

      • 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— 如果該事件匯流排在 2023 年 3 月 2 日之前設定為跨帳戶 EventBridge 目標,則 EventBridgePutEvents呼叫另一個帳戶中的事件匯流排。如需詳細資訊,請參閱 Amazon EventBridge 使用者指南中的授予許可以允許來自其他AWS帳戶的事件

    • Amazon Route 53

      • route53:AssociateVpcWithHostedZone

      • route53:CreateVPCAssociationAuthorization

      • route53:DeleteVPCAssociationAuthorization

      • route53:DisassociateVPCFromHostedZone

      • route53:ListHostedZonesByVPC

    • Amazon WorkSpaces

      • workspaces:DescribeWorkspaceImages

  • 數據類型-字符串(列表)

  • 值類型 - 多重值

注意

如需上述不受支援動作的其他考量事項,請參閱資料周邊政策範例儲存庫。

aws:ResourceOrgPaths 是多重值條件鍵。多值鍵在請求內容中可以擁有多個值。使用此鍵時,您必須使用 ForAnyValueForAllValues 設定運算子搭配字串條件運算子。如需有關多重值條件鍵的詳細資訊,請參閱 多值內容索引鍵

例如,下列條件會對屬於組織 o-a1b2c3d4e5 的資源傳回 True。當您包含萬用字元時,您必須使用 StringLike 條件運算子。

"Condition": { "ForAnyValue:StringLike": { "aws:ResourceOrgPaths":["o-a1b2c3d4e5/*"] } }

針對具有 OU ID ou-ab12-11111111 的資源,下列條件會傳回 True。該條件會比對連接至 OU ou-ab12-11111111 或任何子 OU 的帳戶所擁有的資源。

"Condition": { "ForAnyValue:StringLike" : { "aws:ResourceOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/*"] }}

下列條件會對直接連接至 OU ID ou-ab12-22222222 但未連接至子 OU 的帳戶所擁有的資源傳回 True。下列範例會使用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:ResourceOrg身份證

使用此鍵來比較請求的資源所屬的 AWS 組織中的組織識別碼與政策中指定的識別碼。

  • 可用性 – 只有在擁有資源的帳戶是組織成員時,請求內容中才會包含此鍵。此全域條件鍵不支援下列動作:

    • Amazon Elastic Block Store – 所有動作

    • Amazon EC2

      • ec2:AcceptTransitGatewayPeeringAttachment

      • ec2:AcceptVpcEndpointConnections

      • ec2:AcceptVpcPeeringConnection

      • ec2:CopyFpgaImage

      • 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— 如果該事件匯流排在 2023 年 3 月 2 日之前設定為跨帳戶 EventBridge 目標,則 EventBridgePutEvents呼叫另一個帳戶中的事件匯流排。如需詳細資訊,請參閱 Amazon EventBridge 使用者指南中的授予許可以允許來自其他AWS帳戶的事件

    • Amazon Route 53

      • route53:AssociateVpcWithHostedZone

      • route53:CreateVPCAssociationAuthorization

      • route53:DeleteVPCAssociationAuthorization

      • route53:DisassociateVPCFromHostedZone

      • route53:ListHostedZonesByVPC

    • Amazon WorkSpaces

      • workspaces:DescribeWorkspaceImages

  • 數據類型-字符串

  • 值類型 - 單一值

注意

如需上述不受支援動作的其他考量事項,請參閱資料周邊政策範例儲存庫。

此全域鍵會傳回指定請求的資源組織 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/標籤鍵

使用此鍵來將您在政策中所指定的標籤鍵值對與連接到資源的鍵值對進行比較。例如,您可以要求只在資源擁有連接標籤鍵 "Dept" 和值 "Marketing" 時才允許資源的存取。如需詳細資訊,請參閱 控制 AWS 資源的存取許可

  • 可用性 – 當所請求資源已連接標籤時,此鍵包含在請求內容中,或者包含在使用所連接標籤建立資源的請求中。只有在資源支援以標籤為基礎的授權時,才會傳回此鍵。每個標籤鍵值對都會有一個內容鍵。

  • 數據類型-字符串

  • 值類型 - 單一值

此內容鍵的格式為 "aws:ResourceTag/tag-key":"tag-value",其中 tag-keytag-value 是標籤鍵值組。標籤鍵與值皆不區分大小寫。這表示如果您在政策的條件元素中指定 "aws:ResourceTag/TagKey1": "Value1",則該條件會符合名為 TagKey1tagkey1 的資源標籤鍵 (但不會同時符合兩者)。

如需使用 aws:ResourceTag 鍵來控制 IAM 資源存取的範例,請參閱 控制 AWS 資源的存取許可

如需使用 aws:ResourceTag 鍵來控制其他 AWS 資源存取的範例,請參閱 使用標籤控制對 AWS 資源的存取權

如需有關使用屬性型存取控制 (ABAC) 之 aws:ResourceTag 條件鍵的教程,請參閱 IAM 教學課程:根據標籤定義存取 AWS 資源的許可

請求的屬性

使用下列條件索引鍵,將要求本身和要求內容的詳細資訊與您在原則中指定的要求特性進行比較。

AWS:CalledVia

使用此鍵可將政策中的服務與代表 IAM 主體 (使用者或角色) 提出請求的服務進行比較。主體向 AWS 服務提出請求時,該服務可能會使用主體的憑證,向其他服務提出後續請求。aws:CalledVia 鍵包含代表主體提出請求的鏈結中,每個服務的排序清單。

例如,您可以使用 AWS CloudFormation 從 Amazon DynamoDB 資料表讀取和寫入。然後,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

若要在任何服務使用主體憑證提出請求時,允許或拒絕存取,請使用 AWS: 透過 AWSService 條件鍵。該條件鍵支援 AWS 服務。

aws:CalledVia 鍵是多值鍵。但是,您無法在條件中使用此鍵強制排序。使用上面的例子,使用者 1 向 AWS CloudFormation 發出請求,其中 AWS CloudFormation 會呼叫 DynamoDB,而 DynamoDB 呼叫 AWS KMS。這是三個獨立的請求。最後對 AWS KMS 的呼叫由使用者 1 透過 AWS CloudFormation 再用 DynamoDB 執行。


                    使用 aws 的示例:CalledVia

在此情況下,請求環境中的 aws:CalledVia 鍵會依該排序包括 cloudformation.amazonaws.comdynamodb.amazonaws.com。如果您只在意呼叫是透過請求鏈結中的某處的 DynamoDB 進行,則可以在政策中使用此條件鍵。

例如,下列政策允許管理名為的 my-example-key 的 AWS KMS 鍵,但前提是 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:CalledViaFirstaws: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:CalledViaFirstaws:CalledViaLast 鍵即會出現在請求中。它們會指出在請求鏈中進行呼叫的第一個和最後一個服務。例如,假設 AWS CloudFormation 呼叫另一個名為 X Service 的服務,則該服務會呼叫 DynamoDB,而後會呼叫 AWS KMS。最後對 AWS KMS 的呼叫由 User 1 透過 AWS CloudFormation,接著用 X Service,再用 DynamoDB 執行。這最初透過 AWS CloudFormation 呼叫,最後透過 DynamoDB 呼叫。


                    使用 aws 的示例:CalledViaFirst 和 aws:CalledViaLast

AWS:CalledViaFirst

使用此鍵可將政策中的服務與代表 IAM 主體 (使用者或角色) 提出請求的第一個服務進行比較。如需詳細資訊,請參閱 aws:CalledVia

  • 可用性 – 服務使用 IAM 主體的憑證向不同服務提出至少一個其他請求時,此鍵即出現在請求中。若服務使用服務角色服務連結角色來代表主體呼叫,則此鍵不存在。若主體直接進行呼叫,此鍵亦不存在。

  • 數據類型-字符串

  • 值類型 - 單一值

AWS:CalledViaLast

使用此鍵可將政策中的服務與代表 IAM 主體 (使用者或角色) 提出請求的最後一個服務進行比較。如需詳細資訊,請參閱 aws:CalledVia

  • 可用性 – 服務使用 IAM 主體的憑證向不同服務提出至少一個其他請求時,此鍵即出現在請求中。若服務使用服務角色服務連結角色來代表主體呼叫,則此鍵不存在。若主體直接進行呼叫,此鍵亦不存在。

  • 數據類型-字符串

  • 值類型 - 單一值

AWS: 透過 AWSService

使用此鍵來檢查 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 物件時,會在 aws:referer 中使用來源網頁的 URL。當您在瀏覽器中輸入 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) 只會有單一端點。因為此端點實際位於美國東部 (維吉尼亞北部) 區域,所以一律會對 us-east-1 區域提出 IAM 呼叫。例如,如果您建立的政策拒絕存取所有服務 (如果請求的區域不是 us-west-2),則 IAM 呼叫一律會失敗。若要檢視如何解決此問題的範例,請參閱 NotAction 「拒絕」。

注意

aws:RequestedRegion 條件鍵可讓您控制哪個端點叫用的服務,但不控制操作的影響。有些服務具有跨區域影響。

例如,Amazon S3 具有延及其他區域的 API 操作。

  • 您可以在一個區域 (受 s3:PutBucketReplication 條件鍵影響) 中叫用aws:RequestedRegion,但其他區域會根據複寫組態設定而受到影響。

  • 您可以調用 s3:CreateBucket 以在其他區域建立儲存貯體,並使用 s3:LocationConstraint 條件鍵控制適用的區域。

您可以使用此內容鍵來限制對特定區域集內的 AWS 服務的存取。例如,下列政策可讓使用者在 AWS Management Console 中檢視所有 Amazon EC2 執行個體。不過,只允許他們對愛爾蘭 (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/標籤鍵

使用此鍵來將請求中傳遞的標籤鍵/值對與您在政策中所指定的標籤對進行比較。例如,您可以檢查請求是否包含標籤鍵 "Dept" 並且其具有值 "Accounting"。如需詳細資訊,請參閱 在 AWS 請求期間控制存取許可

  • 可用性 – 在請求中傳遞標籤鍵/值對時,鍵會包含在請求內容中。在請求中傳遞多個標籤時,每個標籤鍵值對都會有一個內容鍵。

  • 數據類型-字符串

  • 值類型 - 單一值

此內容鍵的格式為 "aws:RequestTag/tag-key":"tag-value",其中 tag-keytag-value 是標籤鍵值組。標籤鍵與值皆不區分大小寫。這表示如果您在政策的條件元素中指定 "aws:RequestTag/TagKey1": "Value1",則該條件會符合名為 TagKey1tagkey1 的要求標籤鍵 (但不會同時符合兩者)。

此範例顯示雖然鍵為單一值,但如果鍵不同,您仍然可以在請求中使用多個鍵/值對。

{ "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"])。

由於您可以在請求中包含多個標籤鍵值對,因此請求內容可能會是多值請求。在這種情況下,您必須使用 ForAllValuesForAnyValue 設定運算子。如需詳細資訊,請參閱 多值內容索引鍵

有些服務支援標記搭配資源操作,如建立、修改或刪除資源。若要允許標記和操作作為單一呼叫,您必須建立一個政策,同時包括標記動作和資源修改動作。然後,您可以使用 aws:TagKeys 條件鍵以強制執行在請求中使用特定的標籤鍵。例如,若要在某人建立 Amazon EC2 快照時限制標籤,您必須在政策中包含 ec2:CreateSnapshot 建立動作 ec2:CreateTags 標記動作。若要檢視適用於此案例 (使用 aws:TagKeys) 的政策,請參閱 Amazon EC2 Linux 執行個體使用者指南中的使用標籤建立快照

AWS:SecureTransport

使用此鍵來檢查請求是否使用 SSL 進行傳送。請求內容會傳回 truefalse。在政策中,您可以允許只有在請求使用 SSL 傳送時,才能進行特定動作。

  • 可用性 – 此金鑰一律會包含在請求內容中。

  • 資料類型布林

  • 值類型 - 單一值

AWS:SourceArn

使用此 service-to-service 索引鍵可將發出請求的資源的 Amazon 資源名稱 (ARN) 與您在政策中指定的 ARN 進行比較,但只有在請求是由AWS服務主體發出時才能進行比較。如果來源的 ARN 包括帳戶 ID 時,則不需要搭配 aws:SourceAccount 使用 aws:SourceArn

此鍵不適用提出請求的主體 ARN。請改用 AWS:PrincipalArn

  • 可用性 — 只有當AWS服務主體代表組態觸發要求的資源直接呼叫您的資源時,此索引鍵才會包含在 service-to-service 要求內容中。發出呼叫的服務會將原始資源的 ARN 傳遞給被呼叫的服務。

    
                            AWS:SourceArn

    下列服務整合不支援此全域條件鍵:

    發出呼叫的服務 (服務主體) 被呼叫的服務 (資源型政策) 描述
    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) 整合的所有服務都受支援。如需詳細資訊,請參閱發出呼叫的服務的文件。針對 AWS 服務 透過 KMS 金鑰授權所使用的鍵,在 KMS 金鑰政策中使用 aws:SourceArn 可能導致非預期行為。

  • 數據類型-ARN,字符串

    AWS建議您在比較 ARN 時使用 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 傳遞給被呼叫的服務。

    
                            AWS:SourceAccount

    下列服務整合不支援此全域條件鍵:

    發出呼叫的服務 (服務主體) 被呼叫的服務 (資源型政策) 描述
    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) 整合的所有服務都受支援。如需詳細資訊,請參閱發出呼叫的服務的文件。針對 AWS 服務 透過 KMS 金鑰授權所使用的鍵,在 KMS 金鑰政策中使用 aws:SourceAccount 可能導致非預期行為。

  • 數據類型-字符串

  • 值類型 - 單一值

您可以使用此條件鍵,來防止在服務之間的交易處理期間將 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 服務主體代表組織成員帳戶所擁有的資源直接呼叫您的資源時,此鍵才會包含在請求內容中。發出呼叫的服務會將原始資源的組織路徑傳遞給被呼叫的服務。

    
                            AWS:SourceOrgPaths

    下列服務整合不支援此全域條件鍵:

    發出呼叫的服務 (服務主體) 被呼叫的服務 (資源型政策) 描述
    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) 整合的所有服務都受支援。如需詳細資訊,請參閱發出呼叫的服務的文件。針對 AWS 服務 透過 KMS 金鑰授權所使用的鍵,在 KMS 金鑰政策中使用 aws:SourceOrgPaths 可能導致非預期行為。

  • 數據類型-字符串(列表)

  • 值類型 - 多重值

您可以使用此條件鍵,來防止在服務之間的交易處理期間將 AWS 服務作為混淆代理人使用。僅在資源型的政策中使用此鍵,其中 Principal 為 AWS 服務 主體。將此條件鍵的值設定為請求中資源的組織路徑。例如,當 Amazon S3 儲存貯體更新觸發 Amazon SNS 主題發布時,Amazon S3 服務會調用 sns:Publish API 操作。在允許 sns:Publish 操作的主題政策中,將條件鍵的值設定為 Amazon S3 儲存貯體的組織路徑。如需有關如何使用和何時建議使用此條件鍵的詳細資訊,請參閱您正在使用的 AWS 服務的相關文件。

aws:SourceOrgPaths 是多重值條件鍵。多值鍵在請求內容中可以擁有多個值。使用此鍵時,您必須使用 ForAnyValueForAllValues 設定運算子搭配字串條件運算子。如需有關多重值條件鍵的詳細資訊,請參閱 多值內容索引鍵

AWS:SourceOrg身份證

使用此索引鍵可將提出 service-to-service 要求之資源的組織識別碼與您在策略中指定的組織識別碼進行比較,但只有當請求是由AWS服務主體提出時才會進行比較。當您對 AWS Organizations 中的組織新增和移除帳戶時,包含 aws:SourceOrgID 鍵的政策會自動包含正確的帳戶,您無需手動更新政策。

  • 可用性 – 只有當 AWS 服務主體代表組織成員帳戶所擁有的資源直接呼叫您的資源時,此鍵才會包含在請求內容中。發出呼叫的服務會將原始資源的組織 ID 傳遞給被呼叫的服務。

    
                            AWS:SourceOrg身份證

    下列服務整合不支援此全域條件鍵:

    發出呼叫的服務 (服務主體) 被呼叫的服務 (資源型政策) 描述
    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) 整合的所有服務都受支援。如需詳細資訊,請參閱發出呼叫的服務的文件。針對 AWS 服務 透過 KMS 金鑰授權所使用的鍵,在 KMS 金鑰政策中使用 aws:SourceOrgID 可能導致非預期行為。

  • 數據類型-字符串

  • 值類型 - 單一值

您可以使用此條件鍵,來防止在服務之間的交易處理期間將 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 為基礎的聯合條件金鑰Web 身分聯合的跨服務條件金鑰。當使用 SAML 進行聯合的使用者在其他服務中執行 AWS 操作時,便可使用這些鍵。