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版本。如果請求內容中缺少條件鍵,則政策可能會讓評估失敗。例如,當要求來自特定 IP 範圍或來自特定 IP 範圍時,使用下列條件區塊搭配...IfExists運算子來比對VPC。若其中一個鍵,或兩者都不包含在請求內容中,條件仍會傳回 true。只有在請求內容中包含指定鍵時,才會檢查值。如需當其他運算子沒有索引鍵時如何評估原則的詳細資訊,請參閱條件運算子

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

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

主體的屬性

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

AWS:PrincipalArn

使用此鍵可將發出請求的主體的 Amazon 資源名稱 (ARN) 與您在政策中指定的名稱進行比較。ARN對於IAM角色,請求前後關聯會ARN傳回角色ARN的,而不是擔任該角色的使用者。

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

    • IAM 角色

    • IAM 使用者

    • AWS STS 同盟使用者工作階段

    • AWS 帳戶 根使用者

  • 數據類型-ARN,字符串

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

  • 值類型 - 單一值

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

    • IAMrole — 請求前後關聯包含下列條件索引鍵值aws:PrincipalArn。請勿將假定的角色階段作業指定ARN為此條件索引鍵的值。如需有關擔任角色工作階段主體的詳細資訊,請參閱 角色工作階段主體

      arn:aws:iam::123456789012:role/role-name
    • IAMuser — 請求內容包含下列條件索引鍵值aws:PrincipalArn

      arn:aws:iam::123456789012:user/user-name
    • AWS STS 聯合使用者工作階段 — 請求內容包含下列條件索引鍵aws:PrincipalArn值。

      arn:aws:sts::123456789012:federated-user/user-name
    • AWS 帳戶 root 使用者 — 請求內容包含下列條件索引鍵值aws:PrincipalArn。當您指定 root 使用者ARN作為aws:PrincipalArn條件索引鍵的值時,它只會限制的 root 使用者的權限 AWS 帳戶。這與在以資源為基礎的策略的主體元素ARN中指定 root 使用者不同,後 AWS 帳戶者會將授權委派給. 如需有關在以資源為基礎之策略的主體元素ARN中指定 root 使用者的詳細資訊,請參閱AWS 帳戶 校長

      arn:aws:iam::123456789012:root

您可以將 root 使用者指定ARN為 AWS Organizations 服務控制策略aws:PrincipalArn中條件索引鍵的值 (SCPs)。SCPs是一種組織策略類型,用於管理組織中的權限,並僅影響組織中的成員帳戶。SCP限制成員帳戶中使用IAM者和角色的權限,包括成員帳號的 root 使用者。如需有關權限SCP影響的SCPs詳細資訊,請參閱《Organ izations 使用指南》中對權限的影響。

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:PrincipalOrg身份證

使用此索引鍵可將要求主參與者所屬組織的 AWS Organizations 識別碼與原則中指定的識別碼進行比較。

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

  • 數據類型-字符串

  • 值類型 - 單一值

此全域索引鍵可讓您替代列出組織中所有 AWS 帳戶IDs的所有帳戶。您可以使用此條件鍵來簡化在資源型政策中指定 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 服務,例如將日誌資料 AWS CloudTrail 傳送到 Amazon S3 儲存貯體。若要瞭解如何安全地授與 AWS 服務存取權,請參閱AWS:PrincipalIsAWSService

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

AWS:PrincipalTag/標籤鍵

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

  • 可用 — 如果主參與者正在使用具有附加標籤的使用IAM者,則此索引鍵會包含在請求前後關聯中。主參與者使用具有附加標籤或工作階段標籤的IAM角色會包含該主參與者。匿名請求不包含此鍵。

  • 數據類型-字符串

  • 值類型 - 單一值

您可以將自訂屬性以鍵值對的形式新增至使用者或角色。如需IAM標籤的更多資訊,請參閱標記 IAM 資源。您可以使用 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:::DOC-EXAMPLE-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:::DOC-EXAMPLE-BUCKET1/AWS Logs/AccountNumber/*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": "vpc-111bbb22", "aws:PrincipalServiceName": "cloudtrail.amazonaws.com" } } } ] }

AWS:PrincipalServiceNamesList

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

  • 可用性 — 當 AWS 服務主體進行呼叫時,此金鑰會出現在要求中。此鍵在任何其他情況下都不存在,包括以下情況:

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

    • 如果服務使用IAM主體的認證代表主體提出要求。

    • 如果通話是由IAM主體直接進行的。

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

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

  • 值類型 - 多重值

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

AWS:PrincipalType

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

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

  • 數據類型-字符串

  • 值類型 - 單一值

aws:userid

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

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

  • 數據類型-字符串

  • 值類型 - 單一值

aws:username

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

  • 可用 — 此金鑰一律會包含在IAM使用者的要求前後關聯中。使用 AWS 帳戶根使用者 或IAM角色發出的匿名要求和要求不包含此金鑰。使用IAM身分識別中心認證提出的要求不會在內容中包含此金鑰。

  • 數據類型-字符串

  • 值類型 - 單一值

角色工作階段的屬性

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

  • 資料類型日期

  • 值類型 - 單一值

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

AWS:MultiFactorAuthAge

您可以使用此索引鍵,比較自使MFA用授權要求主體以來的秒數,以及您在原則中指定的數字。如需有關 MFA 的詳細資訊,請參閱 在中使用多因素身份驗證(MFA) AWS

重要

對於聯合身分識別或使用存取金鑰進行簽署或要求所發出的要 AWS SDK求 AWS CLI AWS API,此條件金鑰不存在。若要深入瞭解如何使用臨時安全登入資料為API作業新增MFA保護,請參閱設定受 MFA 保護的 API 存取

若要檢查MFA是否用於驗證IAM同盟身分識別,您可以將驗證方法從身分識別提供者傳遞給作 AWS 為工作階段標記。如需詳細資訊,請參閱 傳遞工作階段標籤 AWS STS。若要強制執MFA行 IAM Identity Center 身分識別,您可以啟用存取控制的屬性,以便透過驗證方法將SAML宣告宣告從您的身分識別提供者傳遞至 IAM Identity Center。

  • 可用 — 只有當主體使用暫時安全登入資料來提出要求時,此金鑰才會包含在要求前後關聯中。具有MFA條件的策略可以附加到:

    • IAM 使用者或群組

    • Amazon S3 存儲桶,Amazon SQS 隊列或 Amazon SNS 主題之類的資源

    • 使用者可以承擔之IAM角色的信任原則

  • 據類型-數字

  • 值類型 - 單一值

AWS:MultiFactorAuthPresent

使用此金鑰可檢查是否使用多重要素驗證 (MFA) 來驗證提出要求的暫時安全登入資料

重要

對於聯合身分識別或使用存取金鑰進行簽署或要求所發出的要 AWS SDK求 AWS CLI AWS API,此條件金鑰不存在。若要深入瞭解如何使用臨時安全登入資料為API作業新增MFA保護,請參閱設定受 MFA 保護的 API 存取

若要檢查MFA是否用於驗證IAM同盟身分識別,您可以將驗證方法從身分識別提供者傳遞給作 AWS 為工作階段標記。如需詳細資訊,請參閱 傳遞工作階段標籤 AWS STS。若要強制執MFA行 IAM Identity Center 身分識別,您可以啟用存取控制的屬性,以便透過驗證方法將SAML宣告宣告從您的身分識別提供者傳遞至 IAM Identity Center。

  • 可用性 – 只有在主體使用暫時憑證發出請求時,請求內容中才會包含此鍵。具有MFA條件的策略可以附加到:

    • IAM 使用者或群組

    • Amazon S3 存儲桶,Amazon SQS 隊列或 Amazon SNS 主題之類的資源

    • 使用者可以承擔之IAM角色的信任原則

  • 資料類型布林

  • 值類型 - 單一值

臨時認證用於使用來自AssumeRoleGetSessionToken和的使用IAM者的臨時權杖來驗證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-auth。

此外,請不要使用 Deny 效果、Null 元素與 true 的組合,因為其行為相同,而邏輯更為複雜。

建議的組合

我們建議您使用BoolIfExists運算子來檢查要求是否使用驗證MFA。

"Effect" : "Deny", "Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "false" } }

這種DenyBoolIfExists、和的組合會false拒絕未使用MFA驗證的要求。具體而言,它會拒絕來自不包含MFA的臨時登入資料的要求。它也會拒絕使用長期認證 (例如使用存取金鑰進行的 AWS API作業) 所 AWS CLI 提出的要求。*IfExists 運算子會檢查 aws:MultiFactorAuthPresent 鍵是否存在以及它是否可能存在,如其存在所指出。當您想要拒絕任何未使用驗證的請求時,請使用此選項MFA。這比較安全,但可能會破壞任何使用存取金鑰存取或的程式碼 AWS CLI 或指令碼 AWS API。

替代組合

您也可以使用BoolIfExists運算子來允許使用長期認MFA證進行驗證的 AWS API要求和/ AWS CLI 或要求。

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

此條件會比對鍵是否存在,或者鍵是否不存在。這種AllowBoolIfExists、和的組合true允許使用驗證的要求或無法使MFA用驗證的要求MFA。這表示 AWS CLI當請求者使用其長期存取金鑰時,允許 AWS API、和 AWS SDK作業。此組合不允許來自可以但不包含的臨時登入資料的要求MFA。

當您使用IAM主控台視覺化編輯器建立原則並選擇 [MFA必要] 時,就會套用此組合。此設定需要存MFA取主控台,但允許以程式設計方式存取,而不MFA需要。

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

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

AllowBool和的這種組合只true允許經MFA過驗證的要求。這僅適用於支援使用的臨時登入資料MFA。此陳述式不允許存取使用長期存取金鑰所發出的要求,也不允許存取使用暫存登入資料未使用的要求MFA。

使用類似下列的原則建構來檢查MFA金鑰是否存在:

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

這種Allow效果、Null元素和false值的組合只允許可以使用驗證的要求MFA,而不論要求是否實際經過驗證。這會允許所有使用暫時憑證所提出的請求,並拒絕長期憑證的存取。請謹慎使用此範例,因為它不會測試是否實際使用 MFA-auth。

AWS: EC2 InstanceSourceVpc

此金鑰可識別VPC要將 Amazon EC2 IAM 角色登入資料傳送到哪個目的地。您可以在具有aws:SourceVPC全域金鑰的原則中使用此金鑰,以檢查呼叫是否從 VPC (aws:SourceVPC) 發出與認證傳送至 (aws:Ec2InstanceSourceVpc) 的VPC位置相符。

  • 可用性 — 每當請求者使用 Amazon EC2 角色登入資料簽署請求時,此金鑰都會包含在請求內容中。它可用於IAM策略、服務控制策略、VPC端點策略和資源策略。

  • 數據類型-字符串

  • 值類型 - 單一值

此索引鍵可與VPC識別碼值搭配使用,但是當做與aws:SourceVpc上下文索引鍵結合的變數使用時最有用。只有當請求者使aws:SourceVpc用VPC端點發出請求時,上下文鍵才會包含在請求上下文中。搭配使用 aws:Ec2InstanceSourceVpcaws:SourceVpc 可讓您更廣泛地使用 aws:Ec2InstanceSourceVpc,因為其會比較通常一起變更的值。

注意

這個條件鍵在 EC2-經典中不可用。

{ "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: EC2 InstanceSourcePrivate IPv4

此金鑰可識別要交付 Amazon EC2 IAM 角色登入資料之主要 elastic network interface 的私有IPv4位址。您必須aws:Ec2InstanceSourceVpc將此條件金鑰與其隨附金鑰搭配使用,才能確保您擁有全域唯一的 VPC ID 和來源私有 IP 組合。搭配使用此鍵與 aws:Ec2InstanceSourceVpc,來確保從接收憑證的相同私有 IP 地址提出請求。

  • 可用性 — 每當請求者使用 Amazon EC2 角色登入資料簽署請求時,此金鑰都會包含在請求內容中。它可用於IAM策略、服務控制策略、VPC端點策略和資源策略。

  • 資料類型IP 位址

  • 值類型 - 單一值

重要

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

注意

這個條件鍵在 EC2-經典中不可用。

{ "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 AssumeRoleAPI作業假設角色時,在設定來源識別之後,此索引鍵會包含在要求前後關聯中。

  • 數據類型-字符串

  • 值類型 - 單一值

您可以在原則中使用此機碼,允許主參與 AWS 者在擔任角色時設定來源識別的動作。AWS CloudTrail 中會顯示角色指定來源身分的活動。這可讓系統管理員更容易判斷使用中的角色執行動作的人員或哪些動作 AWS。

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

當主體最初設定來源識別,同時使用任何 AWS STS assume-role CLI 命令或 AWS STS AssumeRoleAPI作業假設角色時,索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求中是否存在任何指定要求 (PUTGET標頭) 來IMDSv2區分要求IMDSv1和要求。

  • 可用性 — 每當 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

使用此金鑰ARN可識別要傳送IAM角色登入資料的 Lambda 函數。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角色ARN認證的 AWS Systems Manager 代管執行個體。如果請求來自具有與 Amazon EC2 執行個體設定檔相關聯的IAM角色的受管執行個體,則不會出現此條件金鑰。

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

  • 資料類型ARN

  • 值類型 - 單一值

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

身份存儲:UserId

使用此金鑰可將IAM已簽署請求中的 Identity Center 員工身分識別與原則中指定的身分進行比較。

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

  • 數據類型-字符串

  • 值類型 - 單一值

  • 範例值

您可以在IAM身分識別中心中尋找使用者 UserId 的使用者,方法是GetUserIdAPI使用 AWS CLI AWS API、或 AWS SDK。

網絡的屬性

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

AWS:SourceIp

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

  • 可用 — 此金鑰會包含在要求內容中,但請求者使用VPC端點發出要求時除外。

  • 資料類型IP 位址

  • 值類型 - 單一值

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

注意

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

例如,您可以將下列以身分識別為基礎的原則附加至角色。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原則條件中包含 IP 位IPv6址的IPv4和位址或範圍。如果使用者從指定範圍IPv4或IPv6地址範圍進行呼叫,下列身分型政策將允許使用者將物件放入 DOC-EXAMPLE-BUCKET3 Amazon S3 儲存貯體。在您的IAM原則中包含IPv6位址範圍之前,請確認 AWS 服務 您正在使用支援IPv6。如需 AWS 服務 該支援的清單IPv6,請參閱AWS 服務 Amazon VPC 使用者指南IPv6中的支援

{ "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 簡單儲存服務使用者指南VPC中的限制存取特定內容。

  • 可用 — 只有當請求者使用VPC端點發出請求時,此金鑰才會包含在要求內容中。

  • 數據類型-字符串

  • 值類型 - 單一值

AWS:SourceVpce

使用此金鑰可將要求的VPC端點識別碼與您在策略中指定的端點識別碼進行比較。在策略中,您可以使用此金鑰來限制對特定VPC端點的存取。如需詳細資訊,請參閱 Amazon 簡單儲存服務使用者指南中的限制對特定VPC端點的存

  • 可用 — 只有當請求者使用VPC端點發出請求時,此金鑰才會包含在要求內容中。

  • 數據類型-字符串

  • 值類型 - 單一值

AWS:VpcSourceIp

使用此鍵來將提出請求的 IP 地址與您在政策中所指定的 IP 地址進行比較。在策略中,只有當請求源自指定的 IP 地址並通過VPC端點時,才匹配密鑰。

  • 可用 — 只有在使用VPC端點發出請求時,此金鑰才會包含在要求內容中。

  • 資料類型IP 位址

  • 值類型 - 單一值

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

注意

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

資源的屬性

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

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

    • Amazon GuardDuty

      • guardduty:AcceptAdministratorInvitation

    • Amazon Macie

      • macie2:AcceptInvitation

    • Amazon OpenSearch 服務

      • es:AcceptInboundConnection

      • es:CreateOutboundConnection

    • 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沒有帳戶 ID 的 Amazon S3 之間的差異:ARN

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

  • arn:aws:s3:::DOC-EXAMPLE-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

使用此索引鍵可將存取資源的「Organ AWS izations」路徑與策略中的路徑進行比較。在策略中,此條件金鑰可確保資源屬於組織中 AWS 指定組織根目錄或組織單位 (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— 如果該事件匯流排在 2023 年 3 月 2 日之前設定為跨帳戶 EventBridge 目標,則 EventBridgePutEvents呼叫另一個帳戶中的事件匯流排。如需詳細資訊,請參閱 Amazon EventBridge 使用者指南中的授予許可以允許來自其他 AWS 帳戶的事件

    • Amazon GuardDuty

      • guardduty:AcceptAdministratorInvitation

    • Amazon Macie

      • macie2:AcceptInvitation

    • Amazon OpenSearch 服務

      • es:AcceptInboundConnection

      • es:CreateOutboundConnection

    • Amazon Route 53

      • route53:AssociateVpcWithHostedZone

      • route53:CreateVPCAssociationAuthorization

      • route53:DeleteVPCAssociationAuthorization

      • route53:DisassociateVPCFromHostedZone

      • route53:ListHostedZonesByVPC

    • AWS Security Hub

      • securityhub:AcceptAdministratorInvitation

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

  • 值類型 - 多重值

注意

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

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

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

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

針對具有 OU ID ou-ab12-11111111 的資源,下列條件會傳回 True。它會比對附加至 OU ou-ab12-111111 或任何子系的帳戶所擁有的資源。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:ResourceOrg身份證

使用此索引鍵可將要求資源所屬組織中 AWS 組織的識別碼與策略中指定的識別碼進行比較。

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

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

    • Amazon GuardDuty

      • guardduty:AcceptAdministratorInvitation

    • Amazon Macie

      • macie2:AcceptInvitation

    • Amazon OpenSearch 服務

      • es:AcceptInboundConnection

      • es:CreateOutboundConnection

    • 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/標籤鍵

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

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

  • 數據類型-字符串

  • 值類型 - 單一值

此上下文鍵的格式化"aws:ResourceTag/tag-key":"tag-value"位置 tag-key 以及 tag-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
ssm-guiconnect.amazonaws.com

若要在任何服務使用主體憑證提出請求時,允許或拒絕存取,請使用 AWS: V iaAWSService 條件鍵。該條件鍵支持 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 進行,則可以在政策中使用此條件鍵。

例如,下列原則允許管理名為的 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: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: V iaAWSService

使用此金鑰可檢查 AWS 服務是否代表您向其他服務發出要求。

true當服務使用主體的認證代表IAM主體發出要求時,請求內容索引鍵就會傳回。若服務使用服務角色服務連結角色來代表主體呼叫,則環境鍵即傳回 false。主體直接進行呼叫時,請求環境鍵也會傳回 false

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

  • 資料類型布林

  • 值類型 - 單一值

您可以使用此條件鍵,根據請求是否由服務提出,允許或拒絕存取。

AWS:CurrentTime

使用此鍵來將請求的日期和時間及您在政策中所指定的日期與時間進行比較。如要檢視使用此條件鍵的範例政策,請參閱 AWS:允許根據日期和時間進行存取

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

  • 資料類型日期

  • 值類型 - 單一值

AWS:EpochTime

使用此鍵來將請求的日期和時間 (epoch 或 Unix 時間) 與您在政策中所指定的日期與時間進行比較。此鍵也接受自 1970 年 1 月 1 日以來的秒數。

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

  • 據類型-日期數字

  • 值類型 - 單一值

aws:Referer

使用此鍵來將在用戶端瀏覽器中推薦請求的人員,與您在政策中所指定的推薦者進行比較。aws:referer請求上下文值由HTTP頭中的調用者提供。當您選取網頁上的連結時,Referer 標頭會包含在 Web 瀏覽器請求中。標Referer頭包含已選取連結的網頁。URL

  • 可用性 — 只有當透過從瀏覽器中的網頁連結呼叫 AWS 資源的要求時,此索引鍵才會包含URL在要求前後關聯中。程式設計請求不會包含此鍵,因為它不會使用瀏覽器連結來存取 AWS 資源。

  • 數據類型-字符串

  • 值類型 - 單一值

例如,您可以使用URL或使用直接API叫用直接存取 Amazon S3 物件。如需詳細資訊,請參閱使用網頁瀏覽器直接使用 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) 具有單一端點。由於此端點實際位於美國東部 (維吉尼亞北部) 區域,因此一律會對 us-east-1 區域進行IAM呼叫。例如,如果您建立的政策拒絕存取所有服務,如果要求的 [區域] 不是 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/標籤鍵

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

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

  • 數據類型-字符串

  • 值類型 - 單一值

此上下文鍵的格式化"aws:RequestTag/tag-key":"tag-value"位置 tag-key 以及 tag-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者指南中的使用標籤建立快照

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鑰授權使用的金鑰aws:SourceArn在金KMS鑰原則中使用可能會導致非預期的行為。

  • 數據類型-ARN,字符串

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

  • 值類型 - 單一值

您可以使用此條件金鑰來防止在 AWS 服務之間的交易期間將服務用作混淆的副手。僅在以資源為基礎的策略中使用此機碼,其中Principal為 AWS 服務 主體。將此條件鍵的值設置ARN為請求中的資源。例如,當 Amazon S3 儲存貯體更新觸發 Amazon SNS 主題發佈時,Amazon S3 服務會叫用該sns:PublishAPI操作。在允許sns:Publish操作的主題政策中,將條件金鑰的值設定為 Amazon S3 儲存貯體ARN的值。如需建議使用此條件金鑰的方式和時機的詳細資訊,請參閱您使用之 AWS 服務的說明文件。

AWS:SourceAccount

使用此索引鍵可將提出 service-to-service要求之資源的帳號 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鑰授權使用的金鑰aws:SourceAccount在金KMS鑰原則中使用可能會導致非預期的行為。

  • 數據類型-字符串

  • 值類型 - 單一值

您可以使用此條件金鑰來防止在 AWS 服務之間的交易期間將服務用作混淆的副手。僅在以資源為基礎的策略中使用此機碼,其中Principal為 AWS 服務 主體。將此條件鍵的值設定為請求中資源的帳戶 ID。例如,當 Amazon S3 儲存貯體更新觸發 Amazon SNS 主題發佈時,Amazon S3 服務會叫用該sns:PublishAPI操作。在允許 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鑰授權使用的金鑰aws:SourceOrgPaths在金KMS鑰原則中使用可能會導致非預期的行為。

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

  • 值類型 - 多重值

您可以使用此條件金鑰來防止在 AWS 服務之間的交易期間將服務用作混淆的副手。僅在以資源為基礎的策略中使用此機碼,其中Principal為 AWS 服務 主體。將此條件鍵的值設定為請求中資源的組織路徑。例如,當 Amazon S3 儲存貯體更新觸發 Amazon SNS 主題發佈時,Amazon S3 服務會叫用該sns:PublishAPI操作。在允許 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鑰授權使用的金鑰aws:SourceOrgID在金KMS鑰原則中使用可能會導致非預期的行為。

  • 數據類型-字符串

  • 值類型 - 單一值

您可以使用此條件金鑰來防止在 AWS 服務之間的交易期間將服務用作混淆的副手。僅在以資源為基礎的策略中使用此機碼,其中Principal為 AWS 服務 主體。將此條件鍵的值設定為請求中資源的組織 ID。例如,當 Amazon S3 儲存貯體更新觸發 Amazon SNS 主題發佈時,Amazon S3 服務會叫用該sns:PublishAPI操作。在允許 sns:Publish 操作的主題政策中,將條件鍵的值設定為 Amazon S3 儲存貯體的組織 ID。如需建議使用此條件金鑰的方式和時機的詳細資訊,請參閱您使用之 AWS 服務的說明文件。

AWS:UserAgent

使用此鍵來將申請者的用戶端應用程式與您在政策中指定的應用程式進行比較。

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

  • 數據類型-字符串

  • 值類型 - 單一值

警告

應該小心使用此鍵。由於該aws:UserAgent值是由調用者在HTTP標題中提供的,因此未經授權的各方可以使用修改或自定義瀏覽器來提供他們選擇的任何aws:UserAgent值。因此,不aws:UserAgent應用於防止未經授權的人士提出直接 AWS 要求。您可以使用它僅允許特定用戶端應用程式,而且只在測試政策之後才能使用。

其他跨服務條件鍵

AWS STS 支援聯SAML合的OIDC聯合條件金鑰和跨服務條件金鑰。當使用聯盟的使用者在其他服務中SAML執行 AWS 作業時,就可以使用這些金鑰。