

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

# IAM JSON 政策參考
<a name="reference_policies"></a>

本節介紹 IAM 中 JSON 政策的元素、變數和評估邏輯的詳細語法、描述和範例。如需一般詳細資訊，請參閱[JSON 政策概觀](access_policies.md#access_policies-json)。

本參考包括下列章節。
+  [IAM JSON 政策元素參考](reference_policies_elements.md) — 進一步了解有關在建立政策時可以使用的元素。查看其他政策範例和了解條件，支援的資料類型以及它們在各種服務中的使用方式。
+ [政策評估邏輯](reference_policies_evaluation-logic.md) — 本節說明 AWS 請求、驗證方式，以及 AWS 如何使用政策來判斷對 資源的存取。
+ [IAM JSON 政策語言的文法](reference_policies_grammar.md) — 本節介紹用來在 IAM 中建立政策的語言的正式語法。
+ [AWS 任務函數的 受管政策](access_policies_job-functions.md) — 本節列出了直接對應到 IT 產業中常見任務功能的所有 AWS 受管政策。使用這些政策來授予執行特定任務角色中的某人所預期的任務所需的許可權。這些政策將許多服務的許可合整合到單一政策中。
+ [AWS 全域條件內容索引鍵](reference_policies_condition-keys.md) — 本節包含可用於限制 IAM 政策中許可的所有 AWS 全域條件金鑰清單。
+ [IAM 和 AWS STS 條件內容索引鍵](reference_policies_iam-condition-keys.md) — 本節包含可用於限制 IAM 政策中許可的所有 IAM 和 AWS STS 條件金鑰清單。
+ [AWS 服務的動作、資源和條件金鑰](reference_policies_actions-resources-contextkeys.html) — 本節提供您可以在 IAM 政策中用作許可的所有 AWS API 操作的清單。它還包括可用來進一步強化請求的服務專用的條件索引鍵。

# IAM JSON 政策元素參考
<a name="reference_policies_elements"></a>

JSON 政策文件由元素組成。這些元素按照在政策中使用的大致順序列出。元素的順序不會有影響，例如，`Resource` 元素可排在 `Action` 元素之前。您不需要指定政策中的任何 `Condition` 元素。如需進一步了解 JSON 政策文件的一般結構和目的，請參閱 [JSON 政策概觀](access_policies.md#access_policies-json)。

部分 JSON 政策元素會相互排斥。這表示您不能建立同時使用兩個元素的政策。例如，您不能在同一政策陳述式中同時使用 `Action` 與 `NotAction`。相互排斥的其他組合包括 `Principal`/`NotPrincipal` 以及 `Resource`/`NotResource`。

政策中所包含的具體內容因服務而異，取決於服務所提供的動作、內含的資源類型等。當您針對特定服務編寫政策時，參考該服務的範例將會有所幫助。若需要支援 IAM 之所有服務的清單，以及探討這些服務的 IAM 和政策的文件連結，請參閱 [AWS 使用 IAM 的 服務](reference_aws-services-that-work-with-iam.md)。

 當您建立或編輯 JSON 政策時，IAM 可以執行政策驗證以協助您建立有效的政策。IAM 會識別 JSON 語法錯誤，而 IAM Access Analyzer 會提供額外的政策檢查及建議，協助您進一步改良政策。若要進一步了解政策驗證的資訊，請參閱 [IAM 政策驗證](access_policies_policy-validator.md)。若要進一步了解 IAM Access Analyzer 政策檢查和可動作的建議，請參閱 [IAM Access Analyzer 政策驗證](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。

**Topics**
+ [Version](reference_policies_elements_version.md)
+ [Id](reference_policies_elements_id.md)
+ [Statement](reference_policies_elements_statement.md)
+ [Sid](reference_policies_elements_sid.md)
+ [Effect](reference_policies_elements_effect.md)
+ [Principal](reference_policies_elements_principal.md)
+ [NotPrincipal](reference_policies_elements_notprincipal.md)
+ [Action](reference_policies_elements_action.md)
+ [NotAction](reference_policies_elements_notaction.md)
+ [Resource](reference_policies_elements_resource.md)
+ [NotResource](reference_policies_elements_notresource.md)
+ [Condition](reference_policies_elements_condition.md)
+ [變數和標籤](reference_policies_variables.md)
+ [支援的資料類型](reference_policies_elements_datatypes.md)

# IAM JSON 政策元素：Version
<a name="reference_policies_elements_version"></a>

**消除歧義注意事項**  
此 `Version` JSON 政策元素與「政策版本」**不同。`Version` 政策元素是在政策內使用，並定義政策語言的版本。另一方面，政策版本會在您在 IAM 中變更客戶受管政策時建立。變更的政策不會覆寫現有的政策。IAM 反而會建立新版本的受管政策。如果您在搜尋有關受管政策可用的多版本支援的詳細資訊，請參閱[版本控制 IAM 政策](access_policies_managed-versioning.md)。

`Version` 政策元素指定用於處理政策的語言語法規則。若要使用所有可用的政策功能，請在所有政策的 `Statement` 元素**之外**包含下列 `Version` 元素。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    }
  ]
}
```

------

IAM 支援下列 `Version` 元素值：
+ `2012-10-17`. 這是政策語言的目前版本，您應該一律包含 `Version` 元素，並將其設定為 `2012-10-17`。否則，您無法使用此版本所引進的功能 (例如[政策變數](reference_policies_variables.md))。
+ `2008-10-17`. 這是舊版本的政策語言。您可以在較舊的現有政策上看到此版本。對於任何新的政策，或您更新任何現有政策時，請不要使用此版本。較新的功能 (例如政策變數) 將無法使用您的政策。例如，`${aws:username}` 這類變數無法辨識為變數，而是視為政策中的文字字串。

# IAM JSON 政策元素：Id
<a name="reference_policies_elements_id"></a>

`Id` 元素指定政策的選用識別符。該 ID 在不同的服務中的使用各有不同。以資源為基礎的政策中允許使用 ID，但是以身分為基礎的政策不允許使用 ID。

對於可讓您設定 `ID` 元素的服務，我們建議您對該值使用 UUID (GUID)，或者將 UUID 做為 ID 的一部分合併以確保唯一性。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "cd3ad3d9-2776-4ef1-a904-4c229d1642ee",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    }
  ]
}
```

------

**注意**  
某些 AWS 服務 （例如 Amazon SQS 或 Amazon SNS) 可能需要此元素，並對其具有唯一性要求。如需有關編寫政策的服務特定資訊，請參閱您正在使用的服務文件。

# IAM JSON 政策元素：Statement
<a name="reference_policies_elements_statement"></a>

`Statement` 元素是政策的主要元素。此元素為必要。`Statement` 元素可包含單一陳述式，或是個別陳述式的陣列。每個個別的陳述式區塊都必須用大括號 \$1 \$1 括起。針對多個陳述式，陣列必須用方括號 [ ] 括起。

```
"Statement": [{...},{...},{...}]
```

以下範例顯示政策，其中包含在單一 `Statement` 元素中的一系列三個陳述式 (政策可讓您存取 Amazon S3 主控台中您自己的「主資料夾」)。政策包含 `aws:username` 變數，這會在政策評估期間以請求的使用者名稱取代。如需詳細資訊，請參閱[簡介](reference_policies_variables.md#policy-vars-intro)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {"StringLike": {"s3:prefix": [
        "",
        "home/",
        "home/${aws:username}/"
      ]}}
    },
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}",
        "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}/*"
      ]
    }
  ]
}
```

------

# IAM JSON 政策元素：Sid
<a name="reference_policies_elements_sid"></a>

您可以提供 `Sid` (陳述式 ID) 作為政策陳述式的可選識別符。您可以將 `Sid` 值指派給陳述式陣列中的每個陳述式。您可以使用 `Sid` 值做為政策陳述式的描述。在允許您指定 `ID` 元素的服務 (例如 SQS 和 SNS) 中，`Sid` 值只是政策文件 ID 的子 ID。在 IAM 中，`Sid` 值在 JSON 政策中必須是唯一的。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExampleStatementID",
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    }
  ]
}
```

------

`Sid` 元素支援 ASCII 大寫字母 (A-Z)、小寫字母 (A-Z) 和數字 (0-9)。

IAM 未在 IAM API 中公開 `Sid`。您無法根據此 ID 擷取特定陳述式。

**注意**  
某些 AWS 服務 （例如 Amazon SQS 或 Amazon SNS) 可能需要此元素，並對其具有唯一性要求。如需有關編寫政策的服務特定資訊，請參閱您正在使用的服務文件。

# IAM JSON 政策元素：Effect
<a name="reference_policies_elements_effect"></a>

`Effect` 元素是必要的，且指定陳述式會導致允許或明確拒絕。`Effect` 的有效值為 `Allow` 和 `Deny`。`Effect` 值會區分大小寫。

```
"Effect":"Allow"
```

在預設情況下，拒絕存取資源。若要允許存取資源，您必須將 `Effect` 元素設定為 `Allow`。若要覆寫允許 (例如，以強制方式覆寫允許)，您必須將 `Effect` 元素設定為 `Deny`。如需詳細資訊，請參閱[政策評估邏輯](reference_policies_evaluation-logic.md)。

# AWS JSON 政策元素： Principal
<a name="reference_policies_elements_principal"></a>

使用資源型 JSON 政策中的 `Principal` 元素來指定允許或拒絕存取資源的主體。

您可以在[資源型政策](access_policies_identity-vs-resource.md)中使用 `Principal` 元素。許多服務支援資源型政策，包括 IAM。IAM 資源型政策類型是角色信任政策。在 IAM 角色中，使用角色信任政策中的 `Principal` 元素來指定誰可擔任該角色。對於跨帳戶存取，您必須指定信任帳戶的 12 位數識別碼。若要了解在您信任區域 (受信任組織或帳戶) 外帳戶中的主體是否具有擔任您角色的許可，請參閱[什麼是 IAM Access Analyzer？](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html)。

**注意**  
在您建立角色後，您可以變更帳戶為「\$1」，以允許每個人擔任該角色。若執行此操作，我們強烈建議您限制誰可以透過其他方式存取角色，例如 `Condition` 元素會限制只能存取特定 IP 地址。切勿讓任何人都能存取您的角色！

支援資源型政策的其他資源範例包括 Amazon S3 儲存貯體或 AWS KMS key。

您不能使用身分型政策中的 `Principal` 元素。身分型政策是指您連接到 IAM 身分 (使用者、群組或角色) 的許可政策。在這些情況中，主體由政策連接的身分隱含識別。

**Topics**
+ [如何指定主體](#Principal_specifying)
+ [AWS 帳戶 主體](#principal-accounts)
+ [IAM 角色主體](#principal-roles)
+ [角色工作階段主體](#principal-role-session)
+ [OIDC 聯合身分主體](#principal-federated-web-identity)
+ [SAML 聯合身分主體](#principal-saml)
+ [IAM 使用者主體](#principal-users)
+ [IAM Identity Center 主體](#principal-identity-users)
+ [AWS STS 聯合身分使用者主體](#sts-session-principals)
+ [AWS 服務主體](#principal-services)
+ [AWS 選擇加入區域中的服務主體](#principal-services-in-opt-in-regions)
+ [所有主體](#principal-anonymous)
+ [其他資訊](#Principal_more-info)

## 如何指定主體
<a name="Principal_specifying"></a>

您可以在資源型政策的 `Principal` 元素中指定主體，或在支援主體的條件金鑰中指定。

您可以在政策中指定以下任何主體：
+ AWS 帳戶 和根使用者
+ IAM 角色
+ 角色工作階段 
+ IAM 使用者
+ 聯合身分使用者主體
+ AWS 服務
+ 所有主體

您無法將使用者群組識別為政策 (例如資源型政策) 中的主體，因為群組與許可 (而非驗證) 相關，並且主體是經過驗證的 IAM 實體。

您可以使用陣列在以下幾節中為每個主體類型指定一個以上的主體類型。陣列可以使用一個或多個值。當您在元素中指定多個主體時，便會授予每個主體許可。這是邏輯 `OR`，而不是邏輯 `AND`，因為您一次只會驗證為一位主體。如果包含多個值，請使用方括號 (`[` 和 `]`)，並以逗號分隔陣列的每個項目。下列範例政策會定義 123456789012 帳戶或 555555555555 帳戶的許可。

```
"Principal" : { 
"AWS": [ 
  "123456789012",
  "555555555555" 
  ]
}
```

**注意**  
您不能使用萬用字元來符合部分主體名稱或 ARN。

## AWS 帳戶 主體
<a name="principal-accounts"></a>

您可以在資源型政策的 `Principal`元素或支援主體的條件索引鍵中指定 AWS 帳戶 識別符。這會委派帳戶的授權。當您允許存取其他帳戶時，該帳戶中的管理員必須接著授予該帳戶中身分 (IAM 使用者或角色) 的存取權。當您指定 時 AWS 帳戶，您可以使用帳戶 ARN (arn：aws：iam：：*account-ID*：root)，或由帳戶 ID 後面加上 `"AWS":`字首的縮短表單。

例如，指定帳戶 ID `123456789012`，您就可以使用以下其中一種方法來指定 `Principal` 元素中的帳戶：

```
"Principal": { "AWS": "arn:aws:iam::123456789012:root" }
```

```
"Principal": { "AWS": "123456789012" }
```

帳戶 ARN 和簡化帳戶 ID 的行為方式相同。兩者都會委派帳戶的許可。使用 `Principal` 元素中的帳戶 ARN 不會將許可限制為帳戶的根使用者。

**注意**  
當您儲存包含簡化帳戶 ID 的資源型政策時，服務可能會將其轉換為主體 ARN。如此並不會變更政策的功能。

有些 AWS 服務支援指定帳戶委託人的其他選項。例如，Amazon S3 可讓您使用以下格式指定[正式使用者 ID](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingCanonicalId)：

```
"Principal": { "CanonicalUser": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be" }
```

您也可以使用 陣列 AWS 帳戶，將多個 （或正式使用者 ID) 指定為委託人。例如，您可以使用全部三種方法在儲存貯體政策中指定主體。

```
"Principal": { 
  "AWS": [
    "arn:aws:iam::123456789012:root",
    "999999999999"
  ],
  "CanonicalUser": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"
}
```

## IAM 角色主體
<a name="principal-roles"></a>

您可以在資源型政策的 `Principal` 元素中指定 IAM 角色主體 ARN，或在支援主體的條件金鑰中指定。IAM 角色是身分。在 IAM 中，身分是您可以指派許可的資源。角色信任另一個已驗證的身分來擔任該角色。這包括 AWS 中的主體或來自外部身分提供者 (IdP) 的使用者。當主體或身分擔任角色時，他們會收到具有擔任角色許可的暫時安全憑證。當他們使用這些工作階段登入資料在 中執行操作時 AWS，就會成為*角色工作階段主體*。

當您在資源型政策中指定角色主體時，主體的有效許可會受限於限制角色許可的任何政策類型。其中包括工作階段政策和許可界限。如需有關如何評估角色工作階段的有效許可的詳細資訊，請參閱 [政策評估邏輯](reference_policies_evaluation-logic.md)。

若要在 `Principal` 元素中指定角色 ARN，請使用以下格式：

```
"Principal": { "AWS": "arn:aws:iam::AWS-account-ID:role/role-name" }
```

**重要**  
如果角色信任政策中 `Principal` 元素包含指向特定 IAM 角色的 ARN，則該 ARN 會在儲存政策時轉換為角色的唯一主體 ID。如果有人希望藉由刪除並重新建立角色來提升特權，這麼做可有助於減輕此類風險。您通常不會在主控台中看到此 ID，因為在顯示信任政策時，IAM 會反向轉換回角色 ARN。不過，如果您刪除角色，則關係會中斷。即使重新建立角色，您的政策都不再適用，因為新角色有不符合信任政策中所儲存的主體 ID 的新主體 ID。發生這種情況時，委託人 ID 會顯示在以資源為基礎的政策中，因為 AWS 無法再將其對應回有效的 ARN。結果是，如果您刪除並重新建立了信任政策的 `Principal` 元素所引用的角色，您必須編輯政策中的角色來以正確 ARN 替換主體 ID。當您儲存政策時，ARN 再次轉換為角色的新主體 ID。如需詳細資訊，請參閱[了解 AWS處理政策中已刪除的 IAM 角色](https://repost.aws/articles/ARSqFcxvd7R9u-gcFD9nmA5g/understanding-aws-s-handling-of-deleted-iam-roles-in-policies)。

或者，您可以指定角色主體作為資源型政策中的主體，或使用 `aws:PrincipalArn` 條件金鑰[建立廣泛許可政策](#principal-anonymous)。當您使用此索引鍵時，角色工作階段主體會根據擔任的角色 ARN 授予許可，而不是根據所產生之工作階段的 ARN 授予許可。由於 AWS 不會將條件金鑰 ARNs 轉換為 IDs，因此如果您刪除角色，然後使用相同名稱建立新角色，則授予角色 ARN 的許可會保留。在資源型政策的 `Principal` 元素中，使用 `aws:PrincipalArn` 條件金鑰及萬用字元 (\$1) 授予的許可，不受身分型政策類型 (例如許可界限或工作階段政策) 的限制，除非身分型政策包含明確拒絕。

## 角色工作階段主體
<a name="principal-role-session"></a>

您可以在資源型政策的 `Principal` 元素中指定角色工作階段，或在支援主體的條件金鑰中指定。當主體或身分擔任角色時，他們會收到具有擔任的角色許可的暫時安全憑證。當他們使用這些工作階段登入資料在 中執行操作時 AWS，就會成為*角色工作階段主體*。

您用於角色工作階段主體的格式取決於用來擔任角色 AWS STS 的操作。

**重要**  
AWS 建議您盡可能在政策中使用 [IAM 角色主體](#principal-roles)，而不是角色工作階段主體。視需要使用`Condition`陳述式和條件索引鍵進一步縮小存取範圍。

若要在 `Principal`元素中指定角色工作階段主體 ARN，請使用下列格式：

```
"Principal": { "AWS": "arn:aws:sts::AWS-account-ID:assumed-role/role-name/role-session-name" }
```

此外，系統管理員可以設計程序來控制如何發出角色工作階段。例如，他們可以為使用者提供一鍵式解決方案，以建立可預測的工作階段名稱。如果您的系統管理員執行這項操作，則可以在政策或條件金鑰中使用角色工作階段主體。否則，您可以在 `aws:PrincipalArn` 條件金鑰中將角色 ARN 指定為主體。將角色指定為主體的方式可以變更產生工作階段的有效許可。如需詳細資訊，請參閱[IAM 角色主體](#principal-roles)。

## OIDC 聯合身分主體
<a name="principal-federated-web-identity"></a>

OIDC 聯合委託人是使用 JSON Web 字符 (JWT) 從 OIDC 相容 IDP 呼叫 AWS STS `AssumeRoleWithWebIdentity` API 時所使用的委託人，也稱為 OpenID 提供者 (OP)，以請求臨時 AWS 憑證。OIDC 聯合委託人可以代表您 AWS 帳戶中的 OIDC IDP，或 4 個內建身分提供者：Login with Amazon、Facebook、 Google和 [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html)。

從其 OIDC IDP 發出 JWT 的使用者、工作負載或系統可以使用 `AssumeRoleWithWebIdentity` JWT 呼叫 ，為設定為信任發出 JWT 的 OIDC IDP 的 IAM 角色請求臨時 AWS 安全登入資料。只要符合 [AWS STS列出的需求](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html#manage-oidc-provider-prerequisites)，JWT 可以是 ID 權杖、存取權杖或透過任何其他方法提供的 JWT 權杖。如需詳細資訊，請參閱[常見案例](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_federation_common_scenarios.html)和[透過 OIDC 提供者請求憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity)。

在您的角色信任政策中使用此委託人類型，允許或拒絕`AssumeRoleWIthWebIdentity`使用 中存在的 OIDC IDP AWS 帳戶或四個內建 IDPs許可。若要在角色信任政策的 `Principal` 元素中指定 OIDC 聯合身分主體 ARN，請針對內建的 OIDC IDP，使用下列四種格式之一：

```
"Principal": { "Federated": "cognito-identity.amazonaws.com" }
```

```
"Principal": { "Federated": "www.amazon.com" }
```

```
"Principal": { "Federated": "graph.facebook.com" }
```

```
"Principal": { "Federated": "accounts.google.com" }
```

使用新增至帳戶的 OIDC 提供者 (例如 GitHub) 時，需要在角色的信任政策中指定提供者的 ARN。此組態可讓您撰寫 IAM 政策，專門控制透過自訂身分提供者進行驗證之使用者的存取權。

```
"Principal": { "Federated": "arn:aws:iam::AWS-account-ID:oidc-provider/full-OIDC-identity-provider-URL" }
```

例如，如果 GitHub 是受信任的 Web 身分提供者，則角色信任政策的 `Principal` 元素中的 OIDC 角色工作階段 ARN 會使用下列格式：

```
"Principal": { "Federated": "arn:aws:iam::AWS-account-ID:oidc-provider/tokens.actions.githubusercontent.com" }
```

如需詳細資訊，請參閱 [Configuring OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)。

角色信任政策以外的政策類型不支援 OIDC 聯合身分主體。

## SAML 聯合身分主體
<a name="principal-saml"></a>

*SAML 聯合委託人*是呼叫 AWS STS `AssumeRoleWithSAML` API 以使用 SAML 聲明請求臨時 AWS 登入資料的委託人。您可以使用 SAML 身分提供者 (IdP) 登入，然後使用此操作擔任 IAM 角色。與 類似`AssumeRoleWithWebIdentity`， `AssumeRoleWithSAML` 不需要 AWS 登入資料進行身分驗證。反之，使用者會先向 SAML 身分提供者進行身分驗證，然後使用其 SAML 聲明進行 `AssumeRoleWithSAML` API 呼叫，或重新導向至 AWS 登入/SAML 頁面以登入 AWS 管理主控台。如需哪些主體可以使用此操作擔任角色的詳細資訊，請參閱 [比較 AWS STS 登入資料](id_credentials_sts-comparison.md)。

在角色信任政策中使用此主體類型，以根據受信任的 SAML 身分提供者允許或拒絕許可。若要在角色信任政策的 `Principal` 元素中指定 SAML 身分角色工作階段 ARN，請使用下列格式：

```
"Principal": { "Federated": "arn:aws:iam::AWS-account-ID:saml-provider/provider-name" }
```

## IAM 使用者主體
<a name="principal-users"></a>

您可以在資源型政策的 `Principal` 元素中指定 IAM 使用者，或在支援主體的條件金鑰中指定。

**注意**  
在 `Principal` 元素中，[*Amazon Resource Name (ARN)*](reference_identifiers.md#identifiers-arns) 的使用者名稱部分區分大小寫。

```
"Principal": { "AWS": "arn:aws:iam::AWS-account-ID:user/user-name" }
```

```
"Principal": {
  "AWS": [
    "arn:aws:iam::AWS-account-ID:user/user-name-1", 
    "arn:aws:iam::AWS-account-ID:user/user-name-2"
  ]
}
```

當您在 `Principal` 元素中指定使用者時，您無法使用萬用字元 (`*`) 來表示「所有使用者」。主體必須一律指定特定的使用者。

**重要**  
如果角色信任政策中您的 `Principal` 元素包含指向特定 IAM 使用者的 ARN，則該 ARN 會在儲存政策時將 ARN 轉換為使用者的唯一主體 ID。如果有人希望藉由刪除並重新建立使用者來提升特權，這麼做可有助於減輕此類風險。您通常不會在主控台中看到此 ID，因為在顯示信任政策時還會反向轉換回使用者的 ARN。不過，如果您刪除使用者，則關係會中斷。即使重新建立使用者，政策都不再適用。這是因為新的使用者有新的主體 ID，其不符合儲存在信任政策中的 ID。發生這種情況時，委託人 ID 會顯示在以資源為基礎的政策中，因為 AWS 無法再將其對應回有效的 ARN。結果是，如果您刪除並重新建立了信任政策的 `Principal` 元素所引用的使用者，您必須編輯角色來以正確 ARN 替換不正確的主體 ID。當您儲存政策時，IAM 再次將 ARN 轉換為使用者的新主體 ID。

## IAM Identity Center 主體
<a name="principal-identity-users"></a>

在 IAM Identity Center 中，資源型政策中的主體必須定義為 AWS 帳戶 主體。若要指定存取權，請參照條件區塊中許可集合的角色 ARN。如需詳細資訊，請參閱《IAM Identity Center 使用者指南》**中的[資源政策、Amazon EKS 和 AWS KMS中的參考許可集合](https://docs.aws.amazon.com/singlesignon/latest/userguide/referencingpermissionsets.html)。

## AWS STS 聯合身分使用者主體
<a name="sts-session-principals"></a>

您可以在資源型政策的 `Principal` 元素中指定*聯合身分使用者工作階段*，或在支援主體的條件金鑰中指定。

**重要**  
AWS 建議您限制使用 AWS STS 聯合身分使用者工作階段。改為使用 [IAM 角色](IAM/latest/UserGuide/tutorial_cross-account-with-roles.html)。

聯合身分使用者主體是透過使用長期 AWS STS IAM 憑證呼叫 `GetFederationToken`的操作建立。聯合身分使用者許可是呼叫 `GetFederationToken` 的主體與作為參數傳遞至 `GetFederationToken` API 的工作階段政策之間的交集。

在 中 AWS，IAM 使用者或 AWS 帳戶根使用者 可以使用長期存取金鑰進行身分驗證。如需哪些主體可以使用此操作聯合身分的詳細資訊，請參閱 [比較 AWS STS 登入資料](id_credentials_sts-comparison.md)。
+ **IAM 聯合身分使用者** – IAM 使用者使用 `GetFederationToken` 操作進行聯合，該操作會產生此 IAM 使用者的聯合身分使用者工作階段。
+ **聯合身分根使用者** – 根使用者使用 `GetFederationToken` 操作進行聯合，該操作會產生此根使用者的聯合身分使用者工作階段。

當 IAM 使用者或根使用者請求 AWS STS 使用此操作的臨時登入資料時，他們會開始臨時聯合身分使用者工作階段。此工作階段的 ARN 是以聯合的原始身分為基礎。

若要在 `Principal` 元素中指定聯合身分使用者工作階段 ARN，請使用以下格式：

```
"Principal": { "AWS": "arn:aws:sts::AWS-account-ID:federated-user/user-name" }
```

## AWS 服務主體
<a name="principal-services"></a>

您可以在資源型政策的 `Principal`元素或支援主體的條件金鑰中指定 AWS 服務。*服務主體*是服務的識別碼。

服務可擔任的 IAM 角色 AWS 稱為*[服務角色](id_roles.md#iam-term-service-role)*。服務角色必須包含信任政策。*信任政策*是連接到角色的資源型政策，這些政策定義可擔任該角色的主體。有些服務角色具有已預先定義的信任政策。不過，在某些情況下，您必須在信任政策中指定服務主體。IAM 政策中的服務主體不能為 `"Service": "*"`。

**重要**  
服務主體的識別碼包含服務名稱，而且通常採用以下格式：  
`service-name.amazonaws.com`

服務主體是由服務定義。您可以藉由開啟 [AWS 使用 IAM 的 服務](reference_aws-services-that-work-with-iam.md)，檢查**服務連結角色**資料欄中是否為**是**，並開啟**是**連結，以檢視該服務的服務連結角色文件，從而尋找某些服務的服務主體。尋找該服務的 **Service-Linked Role Permissions** (服務連結角色許可) 區段，以檢視服務主體。

以下範例顯示一個可以連接到服務角色的政策。政策啟用兩種服務，分別為 Amazon ECS 和 Elastic Load Balancing，來擔任角色。然後服務可以執行指派給角色的許可政策所授予的任何任務 (不顯示)。若要指定多個服務主體，不用指定兩個 `Service` 元素；您可以只使用一個該元素。實際上，您可以將一組多個服務主體作為單一 `Service` 元素的值。

```
"Principal": {
    "Service": [
        "ecs.amazonaws.com",
        "elasticloadbalancing.amazonaws.com"
   ]
}
```

## AWS 選擇加入區域中的服務主體
<a name="principal-services-in-opt-in-regions"></a>

您可以在數個 AWS 區域以及您必須選擇加入的部分區域中啟動資源。如需您必須選擇加入的區域完整清單，請參閱 *AWS 一般參考*指南中的[管理 AWS 區域](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)。

當選擇加入區域中 AWS 的服務在相同區域內提出請求時，服務主體名稱格式會識別為其服務主體名稱的非區域化版本：

`service-name.amazonaws.com`

當選擇加入區域中 AWS 的服務向另一個區域提出跨區域請求時，服務主體名稱格式會識別為其服務主體名稱的區域化版本：

`service-name.{region}.amazonaws.com`

例如，您有一個位於區域 `ap-southeast-1` 中的 Amazon SNS 主題，而 Amazon S3 儲存貯體位於選擇加入區域 `ap-east-1`。您想要設定 S3 儲存貯體通知，將訊息發佈到 SNS 主題。若要允許 S3 服務將訊息張貼到 SNS 主題，您必須透過該主題以資源為基礎的存取政策授與 S3 服務主體 `sns:Publish` 權限。

如果您指定 S3 服務主體的非區域化版本 `s3.amazonaws.com`，則在存取政策主題中，從儲存貯體到主題的 `sns:Publish` 要求將會失敗。下列範例會在 SNS 主題存取政策的 `Principal` 政策元素中指定非區域化 S3 服務主體。

```
"Principal": { "Service": "s3.amazonaws.com" }
```

由於儲存貯體位於選擇加入的區域，而且要求是在同一個區域之外發出，因此 S3 服務主體會顯示為區域化服務主體名稱 `s3.ap-east-1.amazonaws.com`。當選擇加入區域中的服務向另一個區域提出請求時，您必須使用區域化 AWS 服務主體名稱。指定區域化服務主體名稱後，如果儲存貯體向位於另一個區域的 SNS 主題發出 `sns:Publish` 要求，則該要求將會成功。下列範例會在 SNS 主題存取政策的 `Principal` 政策元素中指定區域化 S3 服務主體。

```
"Principal": { "Service": "s3.ap-east-1.amazonaws.com" }
```

只有在您指定區域化服務主體名稱時，從選擇加入區域至另一個區域的跨區域要求的資源政策或服務主體型允許清單才會成功。

**注意**  
對於 IAM 角色信任政策，建議使用非區域化服務主體名稱。IAM 資源是全球性的，因此可以在任何區域中使用相同的角色。

## 所有主體
<a name="principal-anonymous"></a>

可使用萬用字元 (\$1) 在資源型政策的 `Principal` 元素中或支援主體的條件金鑰中指定所有主體。[資源型政策](access_policies.md#policies_resource-based) *授予*許可和[條件金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)用於限制政策陳述式的條件。

**重要**  
強烈建議您不要在資源型政策的 `Principal` 中搭配使用萬用字元 (\$1) 與 `Allow` 效果，除非您打算授予公開或匿名存取。否則，請指定預定的主體、服務或 `Principal` 元素中的 AWS 帳戶，然後進一步限制 `Condition` 元素中的存取。IAM 角色信任政策尤其如此，因為它們允許其他主體成為您帳戶中的主體。

對於資源型政策，搭配使用萬用字元 (\$1) 與 `Allow` 效果可授權存取所有使用者，包括匿名使用者 (公開存取)。對於您帳戶中的 IAM 使用者和角色主體，不需要其他許可。對於其他帳戶中的主體，他們也必須在其帳戶中具有身分型許可，以允許他們存取您的資源。這稱為[跨帳戶存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html)。

對於匿名使用者，下列元素相同：

```
"Principal": "*"
```

```
"Principal" : { "AWS" : "*" }
```

您不能使用萬用字元來比對部分主體名稱或 ARN。

以下範例顯示可用於明確拒絕所有主體的資源型政策 (而不是 [AWS JSON 政策元素： NotPrincipal](reference_policies_elements_notprincipal.md))，但在 `Condition` 元素中指定的主體*除外*。此政策應[新增至 Amazon S3 儲存貯體](https://docs.aws.amazon.com//AmazonS3/latest/userguide/add-bucket-policy.html)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "UsePrincipalArnInsteadOfNotPrincipalWithDeny",
      "Effect": "Deny",
      "Action": "s3:*",
      "Principal": "*",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*",
        "arn:aws:s3:::amzn-s3-demo-bucket"
      ],
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::444455556666:user/user-name"
        }
      }
    }
  ]
}
```

------

## 其他資訊
<a name="Principal_more-info"></a>

如需詳細資訊，請參閱下列內容：
+ *Amazon Simple Storage Service 使用者指南*中的[儲存貯體政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)
+ *Amazon Simple Notification Service 開發人員指南*中的 [Amazon SNS 政策範例](https://docs.aws.amazon.com/sns/latest/dg/UsingIAMwithSNS.html#ExamplePolicies_SNS)
+ *Amazon Simple Queue Service 開發人員指南*中的 [Amazon SQS 政策範例](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSExamples.html)
+ *AWS Key Management Service 開發人員指南*中的[索引鍵政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)
+ *AWS 一般參考* 中的[帳戶識別符](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html)
+ [OIDC 聯合身分](id_roles_providers_oidc.md)

# AWS JSON 政策元素： NotPrincipal
<a name="reference_policies_elements_notprincipal"></a>

`NotPrincipal` 元素使用 `"Effect":"Deny"` 來拒絕存取所有主體，但 `NotPrincipal` 元素中指定的主體***除外***。委託人可以是 IAM 使用者、 AWS STS 聯合身分使用者委託人、IAM 角色、擔任的角色工作階段 AWS 帳戶、 AWS 服務或其他委託人類型。如需有關主體的資訊，請參閱 [AWS JSON 政策元素： Principal](reference_policies_elements_principal.md)。

`NotPrincipal` 必須與 `"Effect":"Deny"` 搭配使用。不支援將其與 `"Effect":"Allow"` 搭配使用。

**重要**  
不建議將 `NotPrincipal` 用於新的資源型政策，作為安全和授權策略的一部分。使用 `NotPrincipal` 時，會難以疑難排解多個政策類型的影響。我們建議改為將 `aws:PrincipalArn` 內容索引鍵與 ARN 條件運算子搭配使用。

## 重點
<a name="notprincipal-key-points"></a>
+ 某些 AWS 服務 (包括 VPC 端點) 的資源型政策支援 `NotPrincipal` 元素。資源型政策是您直接內嵌在資源中的政策。您無法在以 IAM 身分為基礎的政策或 IAM 角色信任政策中使用 `NotPrincipal` 元素。
+ 對於已附加許可界限政策的 IAM 使用者或角色，請勿使用所含 `NotPrincipal` 政策元素具有 `Deny` 效果的資源型政策陳述式。無論在 `NotPrincipal` 元素中指定何值，具有 `Deny` 效果的 `NotPrincipal` 元素將始終拒絕任何已附加許可界限政策的 IAM 主體。這會造成部分本可存取資源的 IAM 使用者或角色失去存取權。我們建議您變更資源型政策陳述式，將條件運算子 [`ArnNotEquals`](reference_policies_elements_condition_operators.md#Conditions_ARN) 與 [`aws:PrincipalArn`](reference_policies_condition-keys.md#condition-keys-principalarn) 內容索引鍵搭配使用來限制存取，而不是使用 `NotPrincipal` 元素。如需有關許可界限的資訊，請參閱 [IAM 實體的許可界限](access_policies_boundaries.md)。
+ 使用 `NotPrincipal` 時，還必須指定未遭拒之主體的帳戶 ARN。否則，政策可能會拒絕存取包含主體的整個帳戶。根據您包含在政策中的服務， AWS 可能先驗證帳戶，再來才是使用者。如果正在評估擔任角色的使用者 （使用角色的使用者）， AWS 則 可能會先驗證帳戶，然後驗證角色，然後驗證擔任角色使用者。擔任角色的使用者由該使用者擔任角色時指定的角色工作階段名稱來進行識別。因此，我們強烈建議您明確包含使用者帳戶的 ARN，或同時包含角色 ARN 和包含該角色的帳戶的 ARN。
+ 服務控制政策 (SCP) 和資源控制政策 (RCP) 不支援 `NotPrincipal` 元素。

## `NotPrincipal` 元素的替代方案
<a name="notprincipal-alternatives"></a>

在 中管理存取控制時 AWS，在某些情況下，您可能需要明確拒絕所有委託人存取資源，但您指定的一或多個委託人除外。 AWS 建議使用具有全域條件內容索引鍵的拒絕陳述式，以便更精確地控制和更輕鬆地進行故障診斷。下列範例展示了使用條件運算子 (例如 `StringNotEquals` 或 `ArnNotEquals`) 來拒絕存取所有主體 (Condition 元素中指定的主體除外) 的替代方法。

## 使用 IAM 角色的案例範例
<a name="notprincipal-alternative-role"></a>

您可以將資源型政策與拒絕陳述式搭配使用，來防止所有 IAM 角色 (Condition 元素中指定的角色除外) 存取或操作資源。此方法遵循 AWS 安全原則，明確拒絕一律優先於任何允許陳述式，並有助於維護整個 AWS 基礎設施的最低權限原則。

建議使用帶有全域條件內容索引鍵和條件運算子 (例如 [`ArnNotEquals`](reference_policies_elements_condition_operators.md#Conditions_ARN)) 的拒絕陳述式，而不是使用 `NotPrincipal`，來明確允許 IAM 角色存取資源。下列範例使用了 [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) 來明確允許角色 `read-only-role` 存取 `Bucket_Account_Audit` 資料夾中的 Amazon S3 儲存貯體。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyCrossAuditAccess",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::Bucket_Account_Audit",
        "arn:aws:s3:::Bucket_Account_Audit/*"
      ],
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::444455556666:role/read-only-role"
        }
      }
    }
  ]
}
```

------

## 使用服務主體的案例範例
<a name="notprincipal-alternative-service-principal"></a>

您可以使用拒絕陳述式來防止所有服務主體 (`Condition` 元素中指定的主體除外) 存取或操作資源。當您需要實作精細存取控制或在 AWS 環境中的不同服務和應用程式之間建立安全邊界時，此方法特別有用。

建議使用帶有全域條件內容索引鍵和條件運算子 (例如 [`StringNotEquals`](reference_policies_elements_condition_operators.md#Conditions_String)) 的拒絕陳述式，而不是使用 `NotPrincipal`，來明確允許服務主體存取資源。下列範例使用了 `aws:PrincipalServiceName` 來明確允許 AWS CodeBuild 服務主體存取 `BUCKETNAME` 資料夾中的 Amazon S3 儲存貯體。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyNotCodeBuildAccess",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::BUCKETNAME",
        "arn:aws:s3:::BUCKETNAME/*"
      ],
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:PrincipalServiceName": "codebuild.amazonaws.com"
        }
      }
    }
  ]
}
```

------

# IAM JSON 政策元素：Action
<a name="reference_policies_elements_action"></a>

`Action` 元素描述了將允許或拒絕的特定動作。陳述式必須包含 `Action` 或 `NotAction` 元素。每個 AWS 服務都有自己的一組動作，描述您可以使用該服務執行的任務。例如，Amazon S3 的動作清單可以在 Amazon *Simple Storage Service 使用者指南*中的[在政策中指定許可](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html)中找到，Amazon EC2 的動作清單可以在 [Amazon EC2 API 參考](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/query-apis.html)中找到，而 的動作清單 AWS Identity and Access Management 可以在 [IAM API 參考](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html)中找到。若要尋找其他服務的動作清單，請參閱該服務的 API 參考[文件](https://aws.amazon.com/documentation)。

AWS 也提供 JSON 格式的服務參考資訊，以簡化政策管理工作流程的自動化。透過 服務參考資訊，您可以從 AWS 服務 機器可讀取的檔案跨 存取可用的動作、資源和條件索引鍵。如需詳細資訊，請參閱 Service Authorization Reference 中的 [Simplified AWS 服務 information for programmatic access](https://docs.aws.amazon.com/service-authorization/latest/reference/service-reference.html)。

您可以使用服務命名空間做為動作字首 (`iam`、`ec2`、`sqs`、`sns`、`s3` 等) 來指定值，其後跟隨要允許或拒絕的動作名稱。該名稱必須符合所支援的服務的動作。字首和動作名稱不區分大小寫。例如，`iam:ListAccessKeys` 與 `IAM:listaccesskeys` 相同。以下範例顯示不同服務的 `Action` 元素。

**Amazon SQS 動作**

```
"Action": "sqs:SendMessage"
```

**Amazon EC2 動作**

```
"Action": "ec2:StartInstances"
```

**IAM 動作**

```
"Action": "iam:ChangePassword"
```

**Amazon S3 動作**

```
"Action": "s3:GetObject"
```

您可以為 `Action` 元素指定多個值。

```
"Action": [ "sqs:SendMessage", "sqs:ReceiveMessage", "ec2:StartInstances", "iam:ChangePassword", "s3:GetObject" ]
```

您可以使用多字元比對萬用字元 (`*`) 和單一字元比對萬用字元 (`?`)，讓 存取特定 AWS 產品提供的所有動作。例如，以下 `Action` 元素適用於所有 S3 動作。

```
"Action": "s3:*"
```

您也可以將萬用字元 (`*` 或 `?`) 用作動作名稱的一部分。例如，以下 `Action` 元素適用於包含字串 `AccessKey` 的所有 IAM 動作，包括 `CreateAccessKey`、`DeleteAccessKey`、`ListAccessKeys` 和 `UpdateAccessKey`。

```
"Action": "iam:*AccessKey*"
```

有些服務可讓您限制可用的動作。例如，Amazon SQS 可讓您僅提供所有可能的 Amazon SQS 動作的子集。在這種情況下，`*` 萬用字元不允許完全控制佇列；它只允許您已共用的部分動作。如需詳細資訊，請參閱《Amazon Simple Queue Service 開發人員指南》**中的[了解許可](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/acp-overview.html#PermissionTypes)。

# IAM JSON 政策元素：NotAction
<a name="reference_policies_elements_notaction"></a>

`NotAction` 是進階政策元素，明確符合「除了」**指定的動作清單外的所有內容。使用 `NotAction` 可以透過僅列出一些不相符的動作來產生較短的政策，而不是包括相符的長動作清單。在 `NotAction` 中指定的動作不受政策陳述式中的 `Allow` 或 `Deny` 效果的影響。反之，這表示如果使用 `Allow` 效果，則允許未列出的所有適用動作或服務。此外，如果您使用 `Deny` 效果，則會拒絕此類未列出的動作或服務。將 `NotAction` 與 `Resource` 元素一起使用時，可以為政策提供範圍。這是 AWS 決定哪些動作或服務適用的方式。如需詳細資訊，請參閱下列範例政策。

**帶允許的 NotAction** 

您可以使用 陳述式中的 `NotAction`元素`"Effect": "Allow"`來提供 AWS 服務中所有動作的存取權，但 中指定的動作除外`NotAction`。您可以將其與 `Resource` 元素一起使用，以便為政策提供範圍，將允許的動作限制為可以對指定資源執行的動作。

以下範例可讓使用者存取*除了*刪除儲存貯體之外可在任何 S3 資源上執行的所有 Amazon S3 動作。此政策也不允許在其他服務中執行動作，因為其他服務動作不適用於 S3 資源。

```
"Effect": "Allow",
"NotAction": "s3:DeleteBucket",
"Resource": "arn:aws:s3:::*",
```

有時，您可能想要允許存取大量動作。透過使用 `NotAction` 元素，您可以有效地反轉陳述式，從而產生更短的動作清單。例如，因為 AWS 有這麼多的服務，您可能想要建立一個政策，允許使用者執行除存取 IAM 動作以外的一切。

下列範例允許使用者存取每個 AWS 服務中的每個動作，IAM 除外。

```
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
```

在相同陳述式中或在政策中的不同陳述式小心使用 `NotAction` 元素和 `"Effect": "Allow"`。`NotAction` 符合未明確列出或適用於指定資源的所有服務和動作，並可能導致授予使用者比您預期更多的許可。

**帶拒絕的 NotAction**

您可以在陳述式中使用 `NotAction` 元素 `"Effect": "Deny"` 拒絕存取除 `NotAction` 元素中指定的動作之外的所有列出的資源。此組合不允許列出的項目，而是明確拒絕未列出的動作。您仍必須允許您要允許的動作。

如果使用者未使用 MFA 登入，則以下條件範例拒絕存取非 IAM 動作。如果使用者使用 MFA 登入，則 `"Condition"` 測試失敗，最終的 `"Deny"` 陳述式沒有影響。但請注意，這不會授予使用者存取任何動作的許可；它只會明確拒絕除 IAM 動作以外的所有其他動作。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "DenyAllUsersNotUsingMFA",
        "Effect": "Deny",
        "NotAction": "iam:*",
        "Resource": "*",
        "Condition": {"BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}}
    }]
}
```

------

如需拒絕特定區域以外動作存取 (特定服務除外) 的範例政策，請參閱 [AWS： AWS 根據請求的區域拒絕對 的存取](reference_policies_examples_aws_deny-requested-region.md)。

# IAM JSON 政策元素：Resource
<a name="reference_policies_elements_resource"></a>

IAM 政策陳述式中的 `Resource` 元素可指定套用該陳述式的一個或多個物件。陳述式必須包含 `Resource` 或 `NotResource` 元素。

您可以使用 Amazon Resource Name (ARN) 來指定資源。ARN 的格式取決於您參考的 AWS 服務 和特定資源。雖然 ARN 格式不同，但務必使用 ARN 來識別資源。如需有關 ARN 格式的詳細資訊，請參閱 [IAM ARN](reference_identifiers.md#identifiers-arns)。如需有關如何指定資源的詳細資訊，請參閱您要撰寫陳述式的服務文件。

**注意**  
有些 AWS 服務 不允許您指定個別資源的動作。在這些情況下，您在 `Action` 或 `NotAction` 元素中列出的任何動作都會套用至該服務中的所有資源。在這種情況下，您可以在 `Resource` 元素中使用萬用字元 (`*`)。

以下範例參考特定的 Amazon SQS 佇列。

```
"Resource": "arn:aws:sqs:us-east-2:account-ID-without-hyphens:queue1"
```

以下範例參考 AWS 帳戶中名為 `Bob` 的 IAM 使用者。

**注意**  
在 `Resource` 元素中，IAM 使用者名稱區分大小寫。

```
"Resource": "arn:aws:iam::account-ID-without-hyphens:user/Bob"
```

## 在資源 ARN 中使用萬用字元
<a name="reference_policies_elements_resource_wildcards"></a>

可以在 ARN 的個別區段內 (各部分以冒號分隔) 使用萬用字元 (`*` 和 `?`)。
+ 字元的任意組合 (`*`)
+ 任何單一字元 (`?`)

您可以在每個區段中使用多個 `*` 或 `?` 字元。如果萬用字元 `*` 是資源 ARN 區段的最後一個字元，則其可以展開，以符合冒號界限以外的內容。我們建議您在由冒號分隔的 ARN 區段內使用萬用字元 (`*` 和 `?`)。

**注意**  
您無法在識別 AWS 產品的服務區段中使用萬用字元。如需 ARN 客群的詳細資訊，請參閱 [使用 Amazon Resource Name (ARNs識別 AWS 資源](reference-arns.md)。

以下範例參考路徑為 `/accounting` 的所有 IAM 使用者。

```
"Resource": "arn:aws:iam::account-ID-without-hyphens:user/accounting/*"
```

以下範例參考特定 Amazon S3 儲存貯體中的所有項目。

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
```

星號 (`*`) 字元可以展開以取代區段內的所有項目，包括如正斜線 (`/`) 等字元，這些字元可能會顯示為指定服務命名空間內的分隔符號。例如，假設下列 Amazon S3 ARN，因為相同的萬用字元擴充邏輯適用於所有服務。

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*/test/*"
```

ARN 中的萬用字元適用於儲存貯體中的所有以下物件，而不僅僅是列出的第一個物件。

```
amzn-s3-demo-bucket/1/test/object.jpg
amzn-s3-demo-bucket/1/2/test/object.jpg
amzn-s3-demo-bucket/1/2/test/3/object.jpg 
amzn-s3-demo-bucket/1/2/3/test/4/object.jpg
amzn-s3-demo-bucket/1///test///object.jpg
amzn-s3-demo-bucket/1/test/.jpg
amzn-s3-demo-bucket//test/object.jpg
amzn-s3-demo-bucket/1/test/
```

考慮上一個清單中的最後兩個物件。Amazon S3 物件名稱可以傳統分隔符號正斜線 (`/`) 字元開頭或結尾。雖然 `/` 作為分隔符，但在資源 ARN 中使用此字元時卻沒有特定的意義。它被視為與任何其他有效字元相同。ARN 不符合下列物件：

```
amzn-s3-demo-bucket/1-test/object.jpg
amzn-s3-demo-bucket/test/object.jpg
amzn-s3-demo-bucket/1/2/test.jpg
```

## 指定多個資源
<a name="reference_policies_elements_resource_multiple-resources"></a>

您可以使用 ARNs 陣列，在 `Resource` 元素中指定多個資源。以下範例參考兩個 DynamoDB 資料表。

```
"Resource": [
    "arn:aws:dynamodb:us-east-2:account-ID-without-hyphens:table/books_table",
    "arn:aws:dynamodb:us-east-2:account-ID-without-hyphens:table/magazines_table"
]
```

## 在資源 ARN 中使用政策變數
<a name="reference_policies_elements_resource_policy-variables"></a>

在 `Resource` 元素中，您可以在 ARN 中用於識別特定資源 (即 ARN 的尾隨部分) 的部分中使用 JSON [政策變數](reference_policies_variables.md)。例如，您可以使用索引鍵 `{aws:username}` 做為資源 ARN 的一部分，以表示目前使用者的名稱應做為資源名稱的一部分包含在內。以下範例顯示如何在 `{aws:username}` 元素中使用 `Resource` 索引鍵。此政策允許存取與目前使用者名稱符合的 Amazon DynamoDB 資料表。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "dynamodb:*",
        "Resource": "arn:aws:dynamodb:us-east-2:111122223333:table/${aws:username}"
    }
}
```

------

如需有關 JSON 政策變數的詳細資訊，請參閱 [IAM 政策元素：變數與標籤](reference_policies_variables.md)。

# IAM JSON 政策元素：NotResource
<a name="reference_policies_elements_notresource"></a>

`NotResource` 是進階政策元素，會明確比對除指定資源以外的每項資源。使用 `NotResource` 可以透過僅列出一些不相符的資源來產生較短的政策，而不是包括相符的長資源清單。這對套用在單一 AWS 服務中的政策特別有用。

例如，假設您有一個名為 `HRPayroll` 的群組。不應允許 `HRPayroll` 成員存取除 `HRBucket` 儲存貯體中的 `Payroll` 資料夾以外的任何 Amazon S3 資源。以下政策明確拒絕存取除列出的資源以外的所有 Amazon S3 資源。不過，請注意，此政策不授予使用者存取任何資源的許可。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": "s3:*",
    "NotResource": [
      "arn:aws:s3:::HRBucket/Payroll",
      "arn:aws:s3:::HRBucket/Payroll/*"
    ]
  }
}
```

------

一般而言，要明確拒絕對資源的存取，您可以編寫使用 `"Effect":"Deny"` 的政策，其中包含個別列出每個資料夾的 `Resource` 元素。但是，在這種情況下，每次向 `HRBucket` 新增資料夾或向 Amazon S3 新增不應存取的資源時，都必須將其名稱新增至 `Resource` 元素中的清單。如果您使用 `NotResource` 元素，則會自動拒絕使用者存取新資料夾，除非您將資料夾名稱新增到 `NotResource` 元素。

使用 `NotResource` 時，請記住，此元素中指定的資源是「唯一」**不受限的資源。因此，這會限制可能套用至動作的所有資源。在上述範例中，政策只影響 Amazon S3 動作，因此只會影響 Amazon S3 資源。如果 `Action` 元素也包含 Amazon EC2 動作，則該政策將拒絕存取未在 `NotResource` 元素中指定的任何 EC2 資源。若要了解服務中的哪些動作允許指定資源的 ARN，請參閱 [AWS 服務的動作、資源和條件金鑰](reference_policies_actions-resources-contextkeys.html)。

## NotResource 與其他元素
<a name="notresource-element-combinations"></a>

`"Effect": "Allow"`、`"Action": "*"` 和 `"NotResource": "arn:aws:s3:::HRBucket"` 元素**絕對**不能一起使用。此陳述式非常危險，因為它允許 S3 `HRBucket` 儲存貯體以外所有資源 AWS 上的 中的所有動作。 S3 它甚至允許使用者自行新增允許他們存取 `HRBucket` 的政策。請勿執行此作業。

在相同陳述式中或在政策中的不同陳述式小心使用 `NotResource` 元素和 `"Effect": "Allow"`。`NotResource` 允許未明確列出的所有服務和資源，並可能導致授予使用者比您預期的更多許可。在相同陳述式中使用 `NotResource` 元素和 `"Effect": "Deny"` 會拒絕未明確列出的服務和資源。

# IAM JSON 政策元素：Condition
<a name="reference_policies_elements_condition"></a>

`Condition` 元素 (或 `Condition` 區塊**) 可讓您於政策生效時指定條件。`Condition` 元素是選用的。在 `Condition` 元素中，您所建置的表達式使用[條件運算子](reference_policies_elements_condition_operators.md) (等於、小於等等) 來比對政策中的內容索引鍵和值，以及請求內容中的索引鍵和值。若要進一步了解請求內容，請參閱 [請求的元件](intro-structure.md#intro-structure-request)。

```
"Condition" : { "{condition-operator}" : { "{condition-key}" : "{condition-value}" }}
```

您在政策條件中指定的內容索引鍵可以是[全域條件內容索引鍵](reference_policies_condition-keys.md)或服務特定的內容索引鍵。全域條件內容索引鍵包含 `aws:` 字首。服務特定的內容索引鍵包含服務的字首。例如，Amazon EC2 可讓您使用 `ec2:InstanceType` 內容索引鍵撰寫條件，此索引鍵對於該服務是唯一的。若要檢視包含 `iam:` 字首的服務特定的 IAM 內容索引鍵，請參閱 [IAM 和 AWS STS 條件內容索引鍵](reference_policies_iam-condition-keys.md)。

內容索引鍵*名稱*不區分大小寫。例如，包括 `aws:SourceIP` 內容索引鍵等同於對 `AWS:SourceIp` 的測試。內容索引鍵*值*是否區分大小寫取決於您使用的[條件運算子](reference_policies_elements_condition_operators.md)。例如，下列條件包含 `StringEquals` 運算子，以確保僅 `john` 所做的請求會相符。使用者指定的 `John` 會受到存取遭拒。

```
"Condition" : { "StringEquals" : { "aws:username" : "john" }}
```

以下條件使用 [`StringEqualsIgnoreCase`](reference_policies_elements_condition_operators.md#Conditions_String) 運算子，以符合使用者指定的 `john` 或 `John`。

```
"Condition" : { "StringEqualsIgnoreCase" : { "aws:username" : "john" }}
```

部分內容索引鍵支援索引鍵值對，可允許您指定部分索引鍵名稱。範例包括[`aws:RequestTag/tag-key`](reference_policies_condition-keys.md#condition-keys-requesttag)內容索引鍵、 AWS KMS [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context)和多個 服務支援[`ResourceTag/tag-key`](reference_policies_condition-keys.md#condition-keys-resourcetag)的內容索引鍵。
+ 如果您對 [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policy-structure.html#amazon-ec2-keys) 之類的服務使用 `ResourceTag/tag-key` 內容索引鍵，則必須為 `tag-key` 指定索引鍵名稱。
+ **金鑰名稱不區分大小寫。**這表示如果您在政策的條件元素中指定 `"aws:ResourceTag/TagKey1": "Value1"`，則該條件會符合名為 `TagKey1` 或 `tagkey1` 的資源標籤鍵 (但不會同時符合兩者)。
+ AWS 支援這些屬性的 服務可能允許您建立多個金鑰名稱，這些名稱僅因案例而異。例如，可能使用 `ec2=test1` 和 `EC2=test2` 標記 Amazon EC2 執行個體。當您使用條件 (例如，`"aws:ResourceTag/EC2": "test1"`) 以允許對該資源的存取，則金鑰名稱同時符合兩個標籤，但只有一個值符合。這會導致意外的條件失敗。

**重要**  
根據最佳實務，確保帳戶成員在命名鍵值對屬性時遵守一致的命名慣例。範例包括標籤或 AWS KMS 加密內容。您可以使用[`aws:TagKeys`](reference_policies_condition-keys.md#condition-keys-tagkeys)內容金鑰進行標記，或使用 [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context-keys](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context-keys)進行 AWS KMS 加密內容。
+ 如需所有條件運算子的清單及其運作方式的描述，請參閱[條件運算子](reference_policies_elements_condition_operators.md)。
+ 除非另有說明，否則，所有內容索引鍵都可以具有多個值。如需有關如何處理具有多個值的內容索引鍵的描述，請參閱 [用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)
+ 如需有關所有全域可用內容索引鍵的清單，請參閱 [AWS 全域條件內容索引鍵](reference_policies_condition-keys.md)。
+ 如需每個服務定義的條件內容金鑰，請參閱 [AWS 服務的動作、資源和條件金鑰](reference_policies_actions-resources-contextkeys.html)。

## 請求內容
<a name="AccessPolicyLanguage_RequestContext"></a>

當[委託](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#principal)人向 提出[請求](intro-structure.md#intro-structure-request)時 AWS， 會將請求資訊 AWS 收集到請求內容中。請求內容包含有關主體、資源、動作和其他環境屬性的資訊。政策評估會將政策中的屬性與請求中傳送的屬性比對，以評估和授權可在 AWS中執行的動作。

您可以使用 JSON 政策的 `Condition` 元素來針對請求內容測試特定內容索引鍵。例如，您可以建立使用 [aws:CurrentTime](reference_policies_condition-keys.md#condition-keys-currenttime) 內容索引鍵的政策，來[僅允許使用者在特定日期範圍內執行動作](reference_policies_examples_aws-dates.md)。

下列範例展示了當 Martha Rivera 傳送請求以停用其 MFA 裝置時的請求內容表示。

```
Principal: AROA123456789EXAMPLE
Action: iam:DeactivateMFADevice
Resource: arn:aws:iam::user/martha
Context:
  – aws:UserId=AROA123456789EXAMPLE:martha
  – aws:PrincipalAccount=1123456789012
  – aws:PrincipalOrgId=o-example
  – aws:PrincipalARN=arn:aws:iam::1123456789012:assumed-role/TestAR
  – aws:MultiFactorAuthPresent=true
  – aws:MultiFactorAuthAge=2800
  – aws:CurrentTime=...
  – aws:EpochTime=...
  – aws:SourceIp=...
```

該請求內容與一項政策相符，該政策允許使用者移除自己的多重要素驗證 (MFA) 裝置，但前提是他們必須在過去一小時 (3,600 秒) 內使用 MFA 登入過。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "AllowRemoveMfaOnlyIfRecentMfa",
        "Effect": "Allow",
        "Action": [
            "iam:DeactivateMFADevice"
        ],
        "Resource": "arn:aws:iam::*:user/${aws:username}",
        "Condition": {
            "NumericLessThanEquals": {"aws:MultiFactorAuthAge": "3600"}
        }
    }
}
```

------

在此範例中，政策與請求內容相符：動作相同，資源與 "\$1" 萬用字元相符，且 `aws:MultiFactorAuthAge` 的值為 2800，小於 3600，因此政策允許此授權請求。

AWS 會評估政策中的每個內容索引鍵，並傳回 *true* 或 *false* 的值。請求中不存在的內容索引鍵視為不相符。

請求內容可傳回下列值：
+ **True** (真) – 若申請者在過去一個小時或一個小時內使用 MFA 登入，條件便會傳回 *true*。
+ **False** (偽) – 若申請者在過去超過一個小時中使用 MFA 登入，條件便會傳回 *false*。
  + **不存在** – 如果請求者在 AWS CLI 或 AWS API 中使用其 IAM 使用者存取金鑰提出請求，則金鑰不存在。在此情況下，由於索引鍵不存在，因此不會相符。

**注意**  
在某些情況下，當條件索引鍵值不存在時，條件仍然可以傳回 true。例如，如果新增 `ForAllValues` 限定詞，則當請求中不存在內容索引鍵時，請求會傳回 true。若要防止遺失內容索引鍵或具有空值的內容索引鍵評估為 true，您可以在政策中包含值為 `false` 的 [Null 條件運算子](reference_policies_elements_condition_operators.md#Conditions_Null)，以檢查內容索引鍵是否存在且其值不為 Null。

## 條件區塊
<a name="AccessPolicyLanguage_ConditionBlock"></a>

以下範例顯示 `Condition` 元素的基本格式：

```
"Condition": {"StringLike": {"s3:prefix": ["jane/*"]}}
```

來自請求的值由內容索引鍵表示，在本例中為 `s3:prefix`。內容金鑰值會與您指定為常值的值進行比較，例如 `jane/*`。要進行的比較類型由 [條件運算子](reference_policies_elements_condition_operators.md) (在這裡為`StringLike`) 指定。您可以使用典型的布林比較 (例如，等於、大於和小於) 來建立比較字串、日期、數字等條件。當您使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)或 [ARN 運算子](reference_policies_elements_condition_operators.md#Conditions_ARN)時，您也可以在內容索引鍵值中使用[政策變數](reference_policies_variables.md)。下列範例包含 `aws:username` 變數。

```
"Condition": {"StringLike": {"s3:prefix": ["${aws:username}/*"]}}
```

在某些情況下，內容索引鍵可以包含多個值。例如，對 Amazon DynamoDB 的請求可能會要求從資料表中傳回或更新多個屬性。用於存取 DynamoDB 資料表的政策可以包括 `dynamodb:Attributes` 內容索引鍵，其包含請求中列出的所有屬性。您可以使用 `Condition` 元素中的設定運算子，根據政策中允許的屬性清單測試請求中的多個屬性。如需詳細資訊，請參閱[用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。

在請求期間評估政策時， 會將金鑰 AWS 取代為請求中的對應值。（在此範例中， AWS 將使用請求的日期和時間。) 負責評估條件，以傳回 true 或 false，然後將該因素考慮為整個政策是否允許或拒絕請求。

### 條件中的多個值
<a name="Condition-multiple-conditions"></a>

`Condition` 元素可以包含多個條件運算子，而且每個條件運算子都可以包含多個內容索引鍵值對。下圖說明了這一點。

![\[兩個條件運算子區塊圖。第一個區塊包含兩個內容金鑰預留位置，每個預留位置都有多個值。第二個條件區塊包含一個內容索引鍵，其中包含多個值。\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block.diagram.png)


如需詳細資訊，請參閱[用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。

# IAM JSON 政策元素：條件運算子
<a name="reference_policies_elements_condition_operators"></a>

<a name="topiclist"></a>

在 `Condition` 元素中使用條件運算子來將政策中的條件鍵和值與請求內容中的值進行比對。如需有關 `Condition` 元素的詳細資訊，請參閱 [IAM JSON 政策元素：Condition](reference_policies_elements_condition.md)。

您可以在政策中使用的條件運算子取決於您選擇的條件索引鍵。您可以選擇全域條件索引鍵或服務限定條件索引鍵。若要了解針對全域條件索引鍵您可以使用的條件運算子，請參閱 [AWS 全域條件內容索引鍵](reference_policies_condition-keys.md)。若要了解您可以用於服務特定條件金鑰的條件運算子，請參閱 [AWS 服務的動作、資源和條件金鑰](reference_policies_actions-resources-contextkeys.html)，然後選擇您要檢視的服務。

**重要**  
如果您在政策條件中指定的索引鍵不存在於請求內容中，則值不相符且條件為 *false*。如果政策條件要求索引鍵為*不*相符，例如 `StringNotLike` 或 `ArnNotLike`，並且正確的索引鍵不存在，則條件為 *true*。除了 [...IfExist](#Conditions_IfExists) 和 [Null 檢查](#Conditions_Null)以外，此邏輯適用於所有條件運算子。這些運算子測試索引鍵是否存在於請求內容中。

條件運算子可分成以下幾種類別：
+ [：字串](#Conditions_String)
+ [數值](#Conditions_Numeric)
+ [日期和時間](#Conditions_Date)
+ [：布林值](#Conditions_Boolean)
+ [：二進位](#Conditions_BinaryEquals)
+ [IP 地址](#Conditions_IPAddress)
+ [Amazon Resource Name (ARN)](#Conditions_ARN) (僅可用於部分服務。)
+ [...IfExists](#Conditions_IfExists) (檢查鍵值是否做為另一檢查的一部分存在)
+ [Null 檢查](#Conditions_Null) (檢查鍵值是否做為獨立檢查存在)

## 字串條件運算子
<a name="Conditions_String"></a>

運用字串條件運算子，您可以建構以索引鍵與字串值的對比為基礎來限制存取的 `Condition` 元素。
+  **政策變數** – [支援](reference_policies_variables.md)
+ **萬用字元** – [支援](#Conditions_String-wildcard)


****  

| 條件運算子 | 描述 | 
| --- | --- | 
|   `StringEquals`   |  完全相符，區分大小寫  | 
|   `StringNotEquals`   |  否定相符  | 
|   `StringEqualsIgnoreCase`   |  完全相符，不區分大小寫  | 
|   `StringNotEqualsIgnoreCase`   |  否定相符，不區分大小寫  | 
|   `StringLike`   | 大小寫相符。值可以在字串的任何位置包含多字元比對萬用字元 (\$1) 和單一字元比對萬用字元 (?)。您必須指定萬用字元才能達到部分字串相符。  如果索引鍵包含多個值，`StringLike` 可使用集合運算子限定 `ForAllValues:StringLike` 和 `ForAnyValue:StringLike`. 如需詳細資訊，請參閱[用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。  | 
|   `StringNotLike`   |  否定大小寫相符。值可以在字串的任何位置包含多字元比對萬用字元 (\$1) 或單一字元比對萬用字元 (?)。  | 

**Example 字串條件運算子**  
例如，下列陳述式包含的 `Condition` 元素使用 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag) 索引鍵，以指定提出請求的主體必須以 `iamuser-admin` 任務類別標記。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "StringEquals": {
                "aws:PrincipalTag/job-category": "iamuser-admin"
            }
        }
    }
}
```
如果您在政策條件中指定的索引鍵不存在於請求內容中，則值不相符。在此範例中，如果主體使用的 IAM 使用者已連接標籤，則 `aws:PrincipalTag/job-category` 索引鍵存在於請求內容中。如果主體使用的 IAM 角色有連接的標籤或工作階段標籤，則也包含此索引鍵。如果不具有標籤的使用者嘗試檢視或編輯存取金鑰，此條件會傳回 `false`，且此陳述式會隱含拒絕請求。  
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  | <pre>aws:PrincipalTag/job-category:<br />  – iamuser-admin</pre>  |  匹配 | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  | <pre>aws:PrincipalTag/job-category:<br />  – dev-ops</pre>  | 無相符項目 | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  |  請求內容中沒有 `aws:PrincipalTag/job-category`。  | 無相符項目 | 

**Example 將政策變數與字串條件運算子搭配使用**  
下列範例使用 `StringLike` 條件運算子執行與[政策變數](reference_policies_variables.md)的字串配對來建立政策，該政策允許 IAM 使用者使用 Amazon S3 主控台管理其 Amazon S3 儲存貯體中的「主目錄」。該政策允許對 S3 儲存貯體執行指定操作，前提是 `s3:prefix` 與任一指定模式相符。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringLike": {
          "s3:prefix": [
            "",
            "home/",
            "home/${aws:username}/"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}",
        "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}/*"
      ]
    }
  ]
}
```
下表顯示 如何根據請求內容中的[aws:username](reference_policies_condition-keys.md#condition-keys-username)值，評估不同使用者的 AWS 此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  | <pre>aws:username:<br />  – martha_rivera</pre>  | <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/martha_rivera/"<br />  ]<br />}</pre>  | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  |  <pre>aws:username:<br />  – nikki_wolf</pre>  |  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/nikki_wolf/"<br />  ]<br />}</pre>  | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  |  請求內容中沒有 `aws:username`。  | 無相符項目 | 
如需關於如何使用 `Condition` 元素根據 OIDC 聯合身分的應用程式 ID 和使用者 ID 來限制存取資源的政策範例，請參閱 [Amazon S3：可讓 Amazon Cognito 使用者存取其儲存貯體中的物件](reference_policies_examples_s3_cognito-bucket.md)。

### 多值字串條件運算子
<a name="conditions_string_multivalued"></a>

如果請求中的索引鍵包含多個值，則可以使用集運算子 `ForAllValues` 和 `ForAnyValue` 來限定字串運算子。如需有關多個內容索引鍵或值之評估邏輯的詳細資訊，請參閱[用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。


| 條件運算子 | Description | 
| --- | --- | 
|  `ForAllValues:StringEquals` `ForAllValues:StringEqualsIgnoreCase`  |  請求中條件索引鍵的所有值都必須與政策中的至少一個值相符。  | 
|  `ForAnyValue:StringEquals` `ForAnyValue:StringEqualsIgnoreCase`  |  請求中至少有一個條件索引鍵值必須與政策中的其中一個值相符。  | 
|  `ForAllValues:StringNotEquals` `ForAllValues:StringNotEqualsIgnoreCase`  |  否定相符。 請求中內容索引鍵的所有值都不與政策中的任何內容索引鍵值相符。  | 
|  `ForAnyValue:StringNotEquals` `ForAnyValue:StringNotEqualsIgnoreCase`  |  否定相符。 請求中至少有一個內容索引鍵值不得與政策中內容索引鍵中的任何值相符。  | 
|  `ForAllValues:StringLike`  |  請求中條件索引鍵的所有值都必須與政策中的至少一個值相符。  | 
|  `ForAnyValue:StringLike`  |  請求中至少有一個條件索引鍵值必須與政策中的其中一個值相符。  | 
|  `ForAllValues:StringNotLike`  |  否定相符。 請求中內容索引鍵的所有值都不與政策中的任何內容索引鍵值相符。  | 
|  `ForAnyValue:StringNotLike`  |  否定相符。 請求中至少有一個內容索引鍵值不得與政策中內容索引鍵中的任何值相符。  | 

**Example 將 `ForAnyValue` 與字串條件運算子搭配使用**  
此範例會示範如何建立身分型政策，它允許使用 Amazon EC2 `CreateTags` 動作以將標籤連接至執行個體。使用 `StringEqualsIgnoreCase` 時，僅當標籤包含 `environment` 鍵且值為 `preprod` 或 `storage` 時，您才能連接標籤。將 `IgnoreCase` 附加至運算子時，可以允許任何現有的標籤值大寫 (例如 `preprod`、`Preprod` 和 `PreProd`) 都解析為 true。  
將 `ForAnyValue` 修飾詞與 [aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) 條件索引鍵搭配使用時，請求中至少有一個標籤索引鍵值必須與值 `environment` 相符。`ForAnyValue` 比較會區分大小寫，這可以阻止使用者使用錯誤大小寫的標籤索引鍵，例如使用 `Environment` 而不是 `environment`。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "ec2:CreateTags",
    "Resource": "arn:aws:ec2:*:*:instance/*",
    "Condition": {
      "StringEqualsIgnoreCase": {
        "aws:RequestTag/environment": [
          "preprod",
          "storage"
        ]
      },
      "ForAnyValue:StringEquals": {
        "aws:TagKeys": "environment"
      }
    }
  }
}
```
 下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />aws:RequestTag/environment:<br />  – preprod</pre>  | 匹配  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – costcenter<br />aws:RequestTag/environment:<br />  – PreProd</pre>  | 匹配  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – Environment<br />aws:RequestTag/Environment:<br />  – preprod</pre>  | 無相符項目  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – costcenter<br />aws:RequestTag/environment:<br />  – preprod</pre>  | 無相符項目  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  |  請求內容中沒有 `aws:TagKeys`。 <pre>aws:RequestTag/environment:<br />  – storage</pre>  | 無相符項目  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre> 請求內容中沒有 `aws:RequestTag/environment`。  | 無相符項目  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  |  請求內容中沒有 `aws:TagKeys`。 請求內容中沒有 `aws:RequestTag/environment`。  | 無相符項目  | 

### 萬用字元比對
<a name="Conditions_String-wildcard"></a>

字串條件運算子會執行不強制執行預先定義格式的無模式比對。ARN 和 Date 條件運算子是字串運算子的子集，它們會對條件索引鍵值強制執行一種結構。

建議使用與索引鍵要比較的值對應的條件運算子。例如，將索引鍵與字串值進行比較時，應該使用 [字串條件運算子](#Conditions_String)。同樣地，將索引鍵與 ARN 值進行比較時，應該使用 [Amazon Resource Name (ARN) 條件運算子](#Conditions_ARN)。

**Example**  
此範例說明如何圍繞組織中的資源建立邊界。此政策中的條件將拒絕存取 Amazon S3 動作，除非正在存取的資源位於 AWS Organizations中的一組特定組織單位中。 AWS Organizations 路徑是組織實體結構的文字表示。  
條件要求 `aws:ResourceOrgPaths` 包含任何列出的組織單位路徑。由於 `aws:ResourceOrgPaths` 是多值條件，因此政策會使用 `ForAllValues:StringNotLike` 運算子來比較 `aws:ResourceOrgPaths` 的值與政策中的組織單位清單。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyS3AccessOutsideMyBoundary",
      "Effect": "Deny",
      "Action": [
        "s3:*"
      ],
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:ResourceOrgPaths": [
            "o-acorg/r-acroot/ou-acroot-mediaou/",
            "o-acorg/r-acroot/ou-acroot-sportsou/*"
          ] 
        }
      }
    }
  ]
}
```
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  | <pre>aws:ResourceOrgPaths:<br />  – o-acorg/r-acroot/ou-acroot-sportsou/costcenter/</pre>  | 匹配 | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  | <pre>aws:ResourceOrgPaths:<br />  – o-acorg/r-acroot/ou-acroot-mediaou/costcenter/</pre>  | 無相符項目 | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  |  請求中沒有 `aws:ResourceOrgPaths:`。  | 無相符項目 | 

## 數位條件運算子
<a name="Conditions_Numeric"></a>

利用數位條件運算子，您可以建構以索引鍵與整數或小數值的對比來限制存取的 `Condition` 元素。
+  **政策變數** – 不支援
+ **萬用字元** – 不支援


****  

| 條件運算子 | 描述 | 
| --- | --- | 
|   `NumericEquals`   |  相符  | 
|   `NumericNotEquals`   |  否定相符  | 
|   `NumericLessThan`   |  「小於」相符  | 
|   `NumericLessThanEquals`   |  「小於或等於」相符  | 
|   `NumericGreaterThan`   |  「大於」相符  | 
|   `NumericGreaterThanEquals`   |  「大於或等於」相符  | 

例如，下列聲明包含一個 `Condition` 元素，該元素使用 `NumericLessThanEquals` 條件運算子與 `s3:max-keys` 金鑰來指定申請者一次「最多」**可在 `amzn-s3-demo-bucket` 內列出 10 個物件。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
    "Condition": {"NumericLessThanEquals": {"s3:max-keys": "10"}}
  }
}
```

------

如果您在政策條件中指定的索引鍵不存在於請求內容中，則值不相符。在此範例中，當您執行 `s3:max-keys` 操作時，`ListBucket` 索引鍵永遠存在於請求中。如果此政策允許所有 Amazon S3 操作，則只有包含 `max-keys` 內容索引鍵且值小於或等於 10 的操作，才允許執行。

## 日期條件運算子
<a name="Conditions_Date"></a>

運用日期條件運算子，您可以建構以索引鍵與日期/時間值的對比為基礎來限制存取的 `Condition` 元素。您同時使用這些條件運算子與 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime) 索引鍵或 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime) 索引鍵。您必須指定日期/時間值，且其中一個 [W3C 實作要採用 ISO 8601 日期格式](http://www.w3.org/TR/NOTE-datetime)或 epoch (UNIX) 時間格式。
+  **政策變數** – 不支援
+ **萬用字元** – 不支援


****  

| 條件運算子 | 描述 | 
| --- | --- | 
|   `DateEquals`   |  符合特定日期  | 
|   `DateNotEquals`   |  否定相符  | 
|   `DateLessThan`   |  在特定日期與時間前相符  | 
|   `DateLessThanEquals`   |  在特定日期與時間時或之前相符  | 
|   `DateGreaterThan`   |  在特定日期與時間後相符  | 
|   `DateGreaterThanEquals`   |  在特定日期與時間時或之後相符  | 

例如，下列陳述式包含的 `Condition` 元素將 `DateGreaterThan` 條件運算子與 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime) 索引鍵搭配使用。此條件指定用來提出請求的臨時安全憑證已於 2020 年發行。此政策可以每天以程式設計方式更新，以確保帳戶成員使用全新的憑證。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "DateGreaterThan": {
                "aws:TokenIssueTime": "2020-01-01T00:00:01Z"
            }
        }
    }
}
```

------

如果您在政策條件中指定的索引鍵不存在於請求內容中，則值不相符。只有在主體使用臨時憑證發出請求時，`aws:TokenIssueTime` 索引鍵才存在於請求內容中。金鑰不存在於使用存取金鑰提出的 AWS CLI API AWS 或 AWS SDK 請求中。在此範例中，如果 IAM 使用者嘗試檢視或編輯存取金鑰，則會拒絕請求。

## 布林值條件運算子
<a name="Conditions_Boolean"></a>

運用布林值條件，您可以建構 `Condition` 元素，這些元素會根據將索引鍵與 `true` 或 `false` 進行比較的結果來限制存取權。

如果索引鍵包含多個值，布林運算子可以使用集運算子 `ForAllValues` 和 `ForAnyValue` 進行限定。如需有關多個內容索引鍵或值之評估邏輯的詳細資訊，請參閱[用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。
+  **政策變數** – [支援](reference_policies_variables.md)
+ **萬用字元** – 不支援


****  

| 條件運算子 | 描述 | 
| --- | --- | 
|   `Bool`   |  布林值相符  | 
|   `ForAllValues:Bool`   |  與 Array of Bool 資料類型搭配使用。內容索引鍵值中的所有布林值必須與政策中的布林值相符。 若要防止 `ForAllValues` 運算子將遺失內容索引鍵或具有空值的內容索引鍵評估為「已允許」，您可以在政策中包含 [Null 條件運算子](#Conditions_Null)。  | 
|   `ForAnyValue:Bool`   |  與 Array of Bool 資料類型搭配使用。內容索引鍵值中至少有一個布林值必須與政策中的布林值相符。  | 

**Example 布林值條件運算子**  
下列身分型政策透過將 `Bool` 條件運算子和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport) 索引鍵搭配使用，拒絕當請求不在 SSL 上時，將物件和物件標籤複寫至目的地儲存貯體及其內容。  
此政策不允許任何動作。將此政策與允許特定動作的其他政策結合使用。  
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "BooleanExample",
      "Action": "s3:ReplicateObject",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket",
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "false"
        }
      }
    }
  ]
}
```
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  | <pre>aws:SecureTransport:<br />  – false</pre>  | 匹配 | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  | <pre>aws:SecureTransport:<br />  – true</pre>  | 無相符項目 | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  |  請求內容中沒有 `aws:SecureTransport`。  | 無相符項目 | 

## 二進位條件運算子
<a name="Conditions_BinaryEquals"></a>

運用 `BinaryEquals` 條件運算子，您可以建構用於測試二進位格式索引鍵值的 `Condition` 元素。它會比較指定金鑰位元組的值與政策中 [base-64](https://en.wikipedia.org/wiki/Base64) 編碼表示的二進位值。如果您在政策條件中指定的索引鍵不存在於請求內容中，則值不相符。
+  **政策變數** – 不支援
+ **萬用字元** – 不支援

```
"Condition" : {
  "BinaryEquals": {
    "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="
  }
}
```


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  | <pre>key:<br />  – QmluYXJ5VmFsdWVJbkJhc2U2NA==</pre>  | 匹配 | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  | <pre>key:<br />  – ASIAIOSFODNN7EXAMPLE</pre>  | 無相符項目 | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  |  請求內容中沒有 `key`。  | 無相符項目 | 

## IP 地址條件運算子
<a name="Conditions_IPAddress"></a>

運用 IP 地址條件運算子，您可以建構 `Condition` 元素，它們會以索引鍵與 IPv4 或 IPv6 地址或 IP 地址範圍的對比來限制存取。您可以搭配 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip) 索引鍵來使用這些運算子。該值必須採用標準的 CIDR 格式 (例如 203.0.113.0/24 或 2001:DB8:1234:5678::/64)。如果您指定的 IP 地址沒有關聯的路由字首，IAM 將使用 `/32` 做為預設字首值。

有些 AWS 服務支援 IPv6，使用 ：： 代表 0 的範圍。若要了解某項服務是否支援 IPv6，請參閱該服務的文件。
+  **政策變數** – 不支援
+ **萬用字元** – 不支援


****  

| 條件運算子 | 描述 | 
| --- | --- | 
|   `IpAddress`   |  指定的 IP 地址或範圍  | 
|   `NotIpAddress`   |  除指定 IP 地址或範圍外的所有 IP 地址  | 

**Example IP 位址條件運算子**  
下列陳述式將 `IpAddress` 條件運算子與 `aws:SourceIp` 索引鍵搭配使用，來指定請求必須來自 IP 範圍 203.0.113.0 至 203.0.113.255。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "IpAddress": {
                "aws:SourceIp": "203.0.113.0/24"
            }
        }
    }
}
```
`aws:SourceIp` 條件索引鍵解析為發出請求的 IP 地址。如果請求源自 Amazon EC2 執行個體，則 `aws:SourceIp` 計算為執行個體的公有 IP 地址。  
如果您在政策條件中指定的索引鍵不存在於請求內容中，則值不相符。`aws:SourceIp` 索引鍵永遠存在於請求內容中，但請求者使用 VPC 端點提出請求時為例外。在此情況下，此條件會傳回 `false`，且此陳述式會隱含拒絕請求。  
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"IpAddress": {<br />  "aws:SourceIp": "203.0.113.0/24"<br />}</pre>  | <pre>aws:SourceIp:<br />  – 203.0.113.1</pre>  | 匹配 | 
|  <pre>"IpAddress": {<br />  "aws:SourceIp": "203.0.113.0/24"<br />}</pre>  | <pre>aws:SourceIp:<br />  – 198.51.100.1</pre>  | 無相符項目 | 
以下範例顯示如何混合使用 IPv4 與 IPv6 地址，以涵蓋您組織的所有有效 IP 地址。建議您使用您的 IPv6 地址範圍以及已擁有的 IPv4 範圍來更新組織的政策，以確保政策在您過渡到 IPv6 時繼續有效。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "someservice:*",
    "Resource": "*",
    "Condition": {
      "IpAddress": {
        "aws:SourceIp": [
          "203.0.113.0/24",
          "2001:DB8:1234:5678::/64"
        ]
      }
    }
  }
}
```
如果以使用者身分直接呼叫測試的 API，`aws:SourceIp` 條件索引鍵僅在 JSON 政策中有效。如果改為使用服務代表您呼叫目標服務，則目標服務看到的是進行呼叫的服務的 IP 地址而不是來源使用者的 IP 地址。例如，如果使用 AWS CloudFormation 呼叫 Amazon EC2 來建構執行個體，則會發生這種情況。目前，無法透過進行呼叫的服務將來源 IP 地址傳遞給目標服務以在 JSON 政策中進行評估。對於這些服務 API 呼叫類型，請勿使用 `aws:SourceIp` 條件索引鍵。

## Amazon Resource Name (ARN) 條件運算子
<a name="Conditions_ARN"></a>

運用 Amazon Resource Name (ARN) 條件運算子，您可以建構以索引鍵與 ARN 的對比為基礎來限制存取的 `Condition` 元素。ARN 被視為一個字串。
+  **政策變數** – [支援](reference_policies_variables.md)
+ **萬用字元** – [支援](reference_policies_elements_resource.md#reference_policies_elements_resource_wildcards)


****  

| 條件運算子 | 描述 | 
| --- | --- | 
|   `ArnEquals`, `ArnLike`  |  ARN 大小寫相符。ARN 的六個由冒號分隔開的部分都要單獨檢查，每一個部分都可包括一個多字元比對萬用字元 (\$1) 或一個單字元比對萬用字元 (?)。`ArnEquals` 和 `ArnLike` 條件運算子的行為完全相同。  | 
|   `ArnNotEquals`, `ArnNotLike`  |  ARN 否定相符。`ArnNotEquals` 和 `ArnNotLike` 條件運算子的行為完全相同。  | 

**Example ARN 條件運算子**  
下列以資源為基礎的政策範例顯示連接至 Amazon SQS 佇列的政策 (您想要將 SNS 訊息傳送到此佇列)。它授予 Amazon SNS 將訊息傳送到所選佇列的許可，但僅在該服務代表特定 Amazon SNS 主題傳送這些訊息時才授予此許可。您在 `Resource` 欄位中指定佇列，Amazon SNS 主題則作為 `SourceArn` 索引鍵的值。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Principal": {
            "Service": "sns.amazonaws.com"
        },
        "Action": "SQS:SendMessage",
        "Resource": "arn:aws:sqs:us-east-1:123456789012:QUEUE-ID",
        "Condition": {
            "ArnEquals": {
                "aws:SourceArn": "arn:aws:sns:us-east-1:123456789012:TOPIC-ID"
            }
        }
    }
}
```
僅當資源觸發服務代表資源擁有者呼叫另一項服務時，請求內容中才存在 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 索引鍵。如果 IAM 使用者嘗試直接執行此操作，此條件會傳回 `false`，且此陳述式會隱含拒絕請求。  
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  | <pre>aws:SourceArn:<br />  – arn:aws:sns:us-west-2:123456789012:TOPIC-ID</pre>  | 匹配 | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  | <pre>aws:SourceArn:<br />  – arn:aws:sns:us-west-2:777788889999:TOPIC-ID</pre>  | 無相符項目 | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  |  請求內容中沒有 `aws:SourceArn`。  | 無相符項目 | 

### 多值 ARN 條件運算子
<a name="conditions_arn_multivalued"></a>

如果請求中的索引鍵包含多個值，則可以使用集運算子 `ForAllValues` 和 `ForAnyValue` 來限定 ARN 運算子。如需有關多個內容索引鍵或值之評估邏輯的詳細資訊，請參閱[用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。


| 條件運算子 | Description | 
| --- | --- | 
|  `ForAllValues:ArnEquals` `ForAllValues:ArnLike`  |  請求內容中的所有 ARN 都必須與政策中的至少一個 ARN 模式相符。  | 
|  `ForAnyValue:ArnEquals` `ForAnyValue:ArnLike`  |  請求內容中至少有一個 ARN 必須與政策中的其中一個 ARN 模式相符。  | 
|  `ForAllValues:ArnNotEquals` `ForAllValues:ArnNotLike`  |  否定相符。 請求內容中的所有 ARN 都不與政策中的任何字串 ARN 模式相符。  | 
|  `ForAnyValue:ArnNotEquals` `ForAnyValue:ArnNotLike`  |  否定相符。 請求內容中必須至少有一個 ARN 不得與政策中的任何 ARN 模式相符。  | 

**Example 將 `ForAllValues` 與 ARN 條件運算子搭配使用**  
下列範例使用 `ForAllValues:ArnLike` 來建立或更新 Amazon CloudWatch Logs 日誌的邏輯交付來源。條件區塊包含條件索引鍵 [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchlogs.html#amazoncloudwatchlogs-policy-keys](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchlogs.html#amazoncloudwatchlogs-policy-keys)，用於篩選請求中傳遞的日誌產生資源 ARN。使用此條件運算子，請求中的所有 ARN 都必須與政策中的至少一個 ARN 相符。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "logs:PutDeliverySource",
            "Resource": "arn:aws:logs:us-east-1:123456789012:delivery-source:*",
            "Condition": {
                "ForAllValues:ArnLike": {
                    "logs:LogGeneratingResourceArns": [
                        "arn:aws:cloudfront::123456789012:distribution/*",
                        "arn:aws:cloudfront::123456789012:distribution/support*"
                    ]
                }
            }
        }
    ]
}
```
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter</pre>  | 匹配 | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter<br />  – arn:aws::cloudfront:123456789012:distribution/support2025</pre>  | 匹配 | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter<br />  – arn:aws::cloudfront:123456789012:distribution/admin</pre>  | 無相符項目 | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:777788889999:distribution/costcenter</pre>  | 無相符項目 | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  |  請求內容中沒有 `logs:LogGeneratingResourceArns`。  | 匹配  | 
如果請求中沒有內容索引鍵，或內容索引鍵值解析為 Null 資料集 (例如空白字串)，則 `ForAllValues` 限定詞會傳回 true。若要防止遺失內容索引鍵或具有空值的內容索引鍵評估為 true，您可以在政策中包含值為 `false` 的 [Null 條件運算子](#Conditions_Null)，以檢查內容索引鍵是否存在且其值不為 Null。

## ...IfExists 條件運算子
<a name="Conditions_IfExists"></a>

除 `IfExists` 條件外，您可在任何條件運算子名稱的尾端加入 `Null`，例如 `StringLikeIfExists`。執行此操作，並表明如果請求的內容中存在條件索引鍵，則依照政策所述來處理索引鍵。如果該索引鍵不存在，則評估條件元素為 true。」 陳述式中其他條件因素仍然可以導致不相符，但使用 `...IfExists` 檢查時並非使用遺失索引鍵。如果使用 `"Effect": "Deny"` 元素搭配否定條件運算子，例如 `StringNotEqualsIfExists`，即使條件索引鍵不存在，仍然會拒絕請求。

**使用 `IfExists` 的範例**

許多條件索引鍵描述有關特定類型的資源的資訊，僅當存取該類型的資源時才存在。這些條件索引鍵在其他類型的資源上不存在。當政策陳述式僅適用於一種類型的資源時，這不會導致問題。但是，有時單一陳述式可以適用於多種類型的資源，例如當政策陳述式從多個服務引用操作時，或是當服務中的給定操作存取同一服務中的多種不同資源類型時。在這種情況下，在政策陳述式中包含僅適用於一種資源的條件索引鍵可能會導致政策陳述式中的 `Condition` 元素失敗，從而使陳述式的 `"Effect"` 不適用。

例如，請設想以下政策範例：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "THISPOLICYDOESNOTWORK",
    "Effect": "Allow",
    "Action": "ec2:RunInstances",
    "Resource": "*",
    "Condition": {"StringLike": {"ec2:InstanceType": [
      "t1.*",
      "t2.*",
      "m3.*"
    ]}}
  }
}
```

------

上述政策的*意圖*是讓使用者可以啟動類型為 `t1`、`t2` 或 `m3` 的任何執行個體。但是，啟動執行個體要求存取除了執行個體本身之外的許多資源；例如映射、金鑰對、安全群組等。會針對啟動執行個體所需的每個資源來評估整個陳述式。這些其他資源沒有 `ec2:InstanceType` 條件金鑰，因此 `StringLike` 檢查會失敗，並且不會向使用者授予啟動「任何」**執行個體類型的能力。

若要解決此問題，請改用 `StringLikeIfExists` 條件運算子。如此一來，僅有在條件索引鍵存在時才會進行測試。您會讀到以下政策：「如果正在檢查的資源有 "`ec2:InstanceType`" 條件索引鍵，那麼只會在鍵值以 `t1.`、`t2.` 或 `m3.` 開頭時才允許該動作。如果正在檢查的資源沒有該條件索引鍵，則無需擔心它。』 與 `StringLikeIfExists` 條件運算子搭配使用時，條件索引鍵值中的星號 (\$1) 會被解譯為萬用字元，以實現部分字串相符。`DescribeActions` 陳述式包含在主控台檢視執行個體所需的動作。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RunInstance",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
        "StringLikeIfExists": {
          "ec2:InstanceType": [
            "t1.*",
            "t2.*",
            "m3.*"
          ]
        }
      }
    },
    {
      "Sid": "DescribeActions",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeImages",
        "ec2:DescribeInstances",
        "ec2:DescribeVpcs",
        "ec2:DescribeKeyPairs",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups"
      ],
      "Resource": "*"
    }
  ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  | <pre>ec2:InstanceType:<br />  – t1.micro</pre>  | 匹配 | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  | <pre>ec2:InstanceType:<br />  – m2.micro</pre>  | 無相符項目 | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  |  請求內容中沒有 `ec2:InstanceType`。  | 匹配 | 

## 用於檢查條件索引鍵是否存在的條件運算子
<a name="Conditions_Null"></a>

使用 `Null` 條件運算子檢查授權時是否沒有條件索引鍵。在政策陳述式中使用 `true` (索引鍵不存在 - 為 null) 或 `false` (索引鍵存在且值不為 null)。

您不可使用[政策變數](reference_policies_variables.md)與 `Null` 條件運算子。

例如，您可以使用此條件運算子來確定使用者使用的是臨時憑證還是自己的憑證來發出請求。如果使用者使用的是臨時憑證，則索引鍵 `aws:TokenIssueTime` 存在並具有一個值。下列範例展示了一個條件，該條件規定使用者必須使用臨時憑證 (必須存在索引鍵) 才能使用 Amazon EC2 API。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":{
      "Action":"ec2:*",
      "Effect":"Allow",
      "Resource":"*",
      "Condition":{"Null":{"aws:TokenIssueTime":"false"}}
  }
}
```

------

# 具有多個內容索引鍵或值的條件
<a name="reference_policies_condition-logic-multiple-context-keys-or-values"></a>

您可以使用政策的 `Condition` 元素來測試請求中單一內容索引鍵的多個內容索引鍵或多個值。當您以程式設計方式或透過 提出請求時 AWS， AWS 管理主控台您的請求會包含有關委託人、操作、標籤等資訊。您可以使用內容索引鍵來測試請求中相符的內容索引鍵的值，以及政策條件中指定的內容索引鍵。若要了解請求中包含的資訊和資料，請參閱 [請求內容](reference_policies_elements_condition.md#AccessPolicyLanguage_RequestContext)。

**Topics**
+ [多個內容索引鍵或值的評估邏輯](#reference_policies_multiple-conditions-eval)
+ [否定相符條件運算子的評估邏輯](#reference_policies_multiple-conditions-negated-matching-eval)

## 多個內容索引鍵或值的評估邏輯
<a name="reference_policies_multiple-conditions-eval"></a>

`Condition` 元素可以包含多個條件運算子，而且每個條件運算子都可以包含多個內容索引鍵值對。除非另有指定，否則大多數內容索引鍵都支援使用多個值。
+ 如果您的政策陳述式有多個[條件運算子](reference_policies_elements_condition_operators.md)，則使用邏輯 `AND` 評估條件運算子。
+ 如果您的政策陳述式已將多個內容索引鍵連接至單一條件運算子，則使用邏輯 `AND` 評估內容索引鍵。
+ 如果單一條件運算子包含一個內容索引鍵的多個值，則使用邏輯 `OR` 評估這些值。
+ 如果單一否定相符條件運算子包含一個內容索引鍵的多個值，則使用邏輯 `NOR` 評估這些值。

條件元素區塊中的所有內容索引鍵都必須解析為 true 才能調用所需的 `Allow` 或 `Deny` 效果。下圖說明具有多個條件運算子和內容索引鍵值對的條件的計算邏輯。

![\[條件區塊顯示如何將 AND 和 OR 套用到多個內容索引鍵和值\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block_AND_2.diagram.png)


例如，下列 S3 儲存貯體政策說明上圖在政策中的表示方式。條件區塊包含條件運算子 `StringEquals` 和 `ArnLike`，以及內容索引鍵 `aws:PrincipalTag` 和 `aws:PrincipalArn`。若要調用所需的 `Allow` 或 `Deny` 效果，條件區塊中的所有內容索引鍵都必須解析為 true。發出請求的用戶必須同時具有*部門*和*角色*這兩個主體標籤索引鍵，其中包含政策中指定的其中一個標籤索引鍵值。此外，發出請求之使用者的主體 ARN 必須符合政策中指定的其中一個 `aws:PrincipalArn` 值才會評估為 true。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExamplePolicy",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:root"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/department": [
            "finance",
            "hr",
            "legal"
          ],
          "aws:PrincipalTag/role": [
            "audit",
            "security"
          ]
        },
        "ArnLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::222222222222:user/Ana",
            "arn:aws:iam::222222222222:user/Mary"
          ]
        }
      }
    }
  ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: legal<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn: <br />  arn:aws:iam::222222222222:user/Mary</pre>  |  **相符** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **沒有相符項目** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: payroll<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **沒有相符項目** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  |  請求內容中沒有 `aws:PrincipalTag/role`。 <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **沒有相符項目**  | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | 請求內容中沒有 `aws:PrincipalTag`。 <pre>aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **沒有相符項目**  | 

## 否定相符條件運算子的評估邏輯
<a name="reference_policies_multiple-conditions-negated-matching-eval"></a>

部分[條件運算子](reference_policies_elements_condition_operators.md) (例如 `StringNotEquals` 或 `ArnNotLike`) 使用否定相符將政策中的內容索引鍵值對與請求中的內容金鑰值對進行比較。使用否定相符條件運算子為政策中的單一內容索引鍵指定多個值時，有效許可的工作方式類似於邏輯 `NOR`。在否定相符中，僅當所有值都評估為 false 時，邏輯 `NOR` 或 `NOT OR` 才傳回 true。

下圖說明具有多個條件運算子和內容索引鍵值對的條件的計算邏輯。此圖包含內容索引鍵 3 的否定相符條件運算子。

![\[條件區塊顯示在使用否定相符條件運算子時如何將 AND 和 OR 套用到多個內容索引鍵和值\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block_AND_Negated_NOR_2.diagram.png)


例如，下列 S3 儲存貯體政策說明上圖在政策中的表示方式。條件區塊包含條件運算子 `StringEquals` 和 `ArnNotLike`，以及內容索引鍵 `aws:PrincipalTag` 和 `aws:PrincipalArn`。若要調用所需的 `Allow` 或 `Deny` 效果，條件區塊中的所有內容索引鍵都必須解析為 true。發出請求的用戶必須同時具有*部門*和*角色*這兩個主體標籤索引鍵，其中包含政策中指定的其中一個標籤索引鍵值。由於 `ArnNotLike` 條件運算子使用否定相符，因此發出請求的使用者的主體 ARN 必須符合要評估為 true 的政策中指定的任何 `aws:PrincipalArn` 值。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExamplePolicy",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:root"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/department": [
            "finance",
            "hr",
            "legal"
          ],
          "aws:PrincipalTag/role": [
            "audit",
            "security"
          ]
        },
        "ArnNotLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::222222222222:user/Ana",
            "arn:aws:iam::222222222222:user/Mary"
          ]
        }
      }
    }
  ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: legal<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki<br /></pre>  |  **相符** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **沒有相符項目** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: payroll<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **沒有相符項目** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | >請求內容中沒有 `aws:PrincipalTag/role`。 <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **沒有相符項目** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | 請求內容中沒有 `aws:PrincipalTag`。 <pre>aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **沒有相符項目**  | 

# 單值與多值的內容索引鍵
<a name="reference_policies_condition-single-vs-multi-valued-context-keys"></a>

單值與多值內容索引鍵之間的差異在於[請求內容](intro-structure.md#intro-structure-request)中值的數目，而非政策條件中值的數目。
+ *單值*條件內容索引鍵在請求內容中最多有一個值。例如，當您在 中標記資源時 AWS，每個資源標籤都會儲存為索引鍵/值對。由於資源標籤金鑰只能有單一標籤值，因此 [aws:ResourceTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-resourcetag) 是單值內容索引鍵。請勿使用具有單值內容索引鍵的條件集運算子。
+ *多值*條件內容索引鍵在請求內容中可以擁有多個值。例如，當您在 中標記資源時 AWS，您可以在單一請求中包含多個標籤鍵/值對。因此，[aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) 是多值內容索引鍵。多值內容索引鍵需要條件集運算子。

例如，請求可以來自最多一個 VPC 端點，因此 [aws:SourceVpce](reference_policies_condition-keys.md#condition-keys-sourcevpce) 是單值內容索引鍵。由於服務可以有多個屬於該服務的服務主體名稱，因此 [aws:PrincipalServiceNamesList](reference_policies_condition-keys.md#condition-keys-principalservicenameslist) 是多值內容索引鍵。

**重要**  
單值與多值內容索引鍵之間的差異取決於請求內容中值的數目，而非政策條件中值的數目。

## 重點
<a name="reference_policies_condition-key-points"></a>
+ *單值*和*多值*分類包含在 [AWS 全域條件內容索引鍵](reference_policies_condition-keys.md) 主題中作為*值類型*的每個條件內容索引鍵的描述中。
+ [Service Authorization Reference](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) 中的多值內容索引鍵使用 `ArrayOf` 字首，後接條件運算子類別類型 (例如 `ArrayOfString` 或 `ArrayOfARN`)，表示請求可能包含條件內容索引鍵的多個值。
+ 可以使用任何可用的單值內容索引鍵作為政策變數，但不能使用多值內容金鑰作為政策變數。如需有關政策變數的詳細資訊，請參閱 [IAM 政策元素：變數與標籤](reference_policies_variables.md)。
+ 使用包含金鑰/值對的內容索引鍵時，請務必注意，即使可以有多個標籤鍵值，每個 `tag-key` 只能有一個值。
  + [aws:PrincipalTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-principaltag)、[aws:RequestTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-requesttag) 和 [aws:ResourceTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-resourcetag) 是單值內容索引鍵。
  + [aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) 定義了請求中允許的標籤索引鍵，但不包含標籤索引鍵值。由於您可以在請求中包含多個標籤索引鍵值對，因此 `aws:TagKeys` 是多值內容索引鍵。
+ 多值內容索引鍵需要條件集運算子。請勿將條件集運算子 `ForAllValues` 或 `ForAnyValue` 與單值內容索引鍵搭配使用。使用條件集運算子搭配單值內容索引鍵可能會導致過度寬鬆的政策。

## 用於多值內容索引鍵的集運算子
<a name="reference_policies_condition-multi-valued-context-keys"></a>

若要將您的條件內容索引鍵與具有多值的[請求內容](intro-structure.md#intro-structure-request)索引鍵進行比較，您必須使用 `ForAllValues` 或 `ForAnyValue` 集運算子。這些集運算子用於比較兩組值，例如請求中的標籤集和政策條件中的標籤集。

`ForAllValues` 和 `ForAnyValue` 限定詞將集操作功能新增到了條件運算子，允許您針對政策條件中的多內容索引鍵值來測試具有多值的請求內容索引鍵。此外，如果您在政策中使用萬用字元或變數包含多值字串內容索引鍵，您也必須使用 `StringLike` [條件運算子](reference_policies_elements_condition_operators.md#Conditions_String)。多個條件索引鍵值必須像[陣列](reference_policies_grammar.md#policies-grammar-json)那樣用方括號括住，例如 `"Key2":["Value2A", "Value2B"]`。

### ForAllValues
<a name="reference_policies_condition-forallvalues"></a>

`ForAllValues` 限定詞會測試請求內容中每個成員的值是否與限定詞後面的條件運算子相符。如果請求中每個內容索引鍵值都與政策中的內容索引鍵值相符，則條件會傳回 `true`。如果請求中沒有內容索引鍵，也會傳回 `true`。

**重要**  
如果將 `ForAllValues` 與 `Allow` 效果搭配使用，請務必小心，因為如果請求內容中意外出現遺失內容索引鍵，則可能導致政策過度寬鬆。您應該始終在政策中包含具有 `false` 值的 [`Null`](reference_policies_elements_condition_operators.md#Conditions_Null) 條件運算子，以檢查內容索引鍵是否存在且其值不為 Null。如需範例，請參閱 [根據標籤索引鍵控制存取權限](access_tags.md#access_tags_control-tag-keys)。

#### ForAllValues 集運算子範例
<a name="reference_policies_condition-forallvalues-example"></a>

在下列範例中，ForAllValues 會與 aws:TagKeys 搭配使用，以允許使用者刪除指派給 EC2 執行個體的特定標籤。此政策僅允許使用者刪除 `environment` 和 `cost-center` 標籤。您可以將其單獨刪除，也可以同時刪除。請求中的標籤索引鍵必須與政策中指定的索引鍵完全相符。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DeleteTags",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": [
                        "environment",
                        "cost-center"
                    ]
                },
                "Null": {
                    "aws:TagKeys": "false"
                }
            }
        }
    ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre>  |  **相符**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – cost-center</pre>  |  **相符**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – cost-center</pre>  |  **相符**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – dept</pre>  |  **沒有相符項目**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  |  請求內容中沒有 `aws:TagKeys`。  |  **沒有相符項目**  | 

請注意，在最後一個範例中，結果為「無相符項目」，因為 Null 條件檢查會在遺失內容索引鍵時防止相符。這是避免政策過度寬鬆的最佳實務。

### ForAnyValue
<a name="reference_policies_condition-foranyvalue"></a>

`ForAnyValue` 限定詞會測試這組請求內容索引鍵值是否至少有一個成員與政策條件中這組內容索引鍵值的至少一個成員相符。如果請求中任一內容索引鍵值與政策中的任一內容索引鍵值相符，則條件會傳回 `true`。如果沒有相符的內容索引鍵，或者如果索引鍵不存在，則條件會傳回 `false`。

**重要**  
將 `ForAnyValue` 與 `Deny` 效果搭配使用時，如果請求中不存在內容索引鍵，政策會評估為**無相符項目**。為實現一致的行為，請在政策中新增明確的 [`Null`](reference_policies_elements_condition_operators.md#Conditions_Null) 條件檢查，以驗證內容索引鍵是否存在。如需詳細資訊，請參閱[用於檢查條件索引鍵是否存在的條件運算子](reference_policies_elements_condition_operators.md#Conditions_Null)。

#### ForAnyValue 集運算子範例
<a name="reference_policies_condition-foranyvalue-example"></a>

在下列範例中，ForAnyValue 會與 aws:TagKeys 搭配使用，以允許使用者刪除指派給 EC2 執行個體的特定標籤。如果請求中指定的標籤索引鍵包含 `environment` 或 `cost-center`，則此政策允許使用者刪除執行個體的標籤。請求可以包含政策中指定標籤索引鍵之外的其他標籤索引鍵，但必須包含至少一個指定索引鍵以符合條件。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DeleteTags",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws:TagKeys": [
                        "environment",
                        "cost-center"
                    ]
                }
            }
        }
    ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre>  |  **相符**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – cost-center</pre>  |  **相符**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – cost-center</pre>  |  **相符**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – dept</pre>  |  **相符**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – dept</pre>  |  **沒有相符項目**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  |  請求內容中沒有 `aws:TagKeys`。  |  **沒有相符項目**  | 

# 條件政策範例
<a name="reference_policies_condition_examples"></a>

在 IAM 政策中，您可以為單值和多值內容索引鍵指定多個值，以便與請求內容進行比較。下列一組政策範例示範具有多個內容索引鍵和值的政策條件。

**注意**  
如果您想提交要包含在本參考指南中的政策，請使用此頁面底部的 **Feedback (意見回饋)** 按鈕。如需以身分為基礎的 IAM 政策範例，請參閱 [以身分為基礎的 IAM 政策範例](access_policies_examples.md)。

## 條件政策範例：單值內容索引鍵
<a name="reference_policies_condition_example_library_single-valued"></a>
+ 具有單值內容索引鍵的多個條件區塊。([檢視此範例](reference_policies_condition_examples-single-valued-context-keys.md#reference_policies_condition_examples-single-valued-context-keys-1)。)
+ 具有多個單值內容索引鍵和值的一個條件區塊。([檢視此範例](reference_policies_condition_examples-single-valued-context-keys.md#reference_policies_condition_examples-single-valued-context-keys-2)。)

## 條件政策範例：多值內容索引鍵
<a name="reference_policies_condition_example_library_multi-valued"></a>
+ 使用條件集運算子 `ForAllValues` 的拒絕政策。([檢視此範例](reference_policies_condition_examples-multi-valued-context-keys.md#reference_policies_condition_examples-multi-valued-context-keys-1)。)
+ 使用條件集運算子 `ForAnyValue` 的拒絕政策。([檢視此範例](reference_policies_condition_examples-multi-valued-context-keys.md#reference_policies_condition_examples-multi-valued-context-keys-2)。)

# 多值內容索引鍵範例
<a name="reference_policies_condition_examples-multi-valued-context-keys"></a>

下列一組政策範例示範如何使用多值內容索引鍵建立政策條件。

## 範例：使用條件集運算子 ForAllValues 的拒絕政策
<a name="reference_policies_condition_examples-multi-valued-context-keys-1"></a>

下列範例說明如何使用身分型政策，在請求中包含特定標籤索引鍵字首時，拒絕使用 IAM 標記動作。[`aws:TagKeys`](reference_policies_condition-keys.md#condition-keys-tagkeys) 的值包含用於部分字串比對的萬用字元 (\$1)。此政策包含具有內容索引鍵 `aws:TagKeys` 的 `ForAllValues` 集運算子，因為請求內容索引鍵可以包含多值。為了使內容索引鍵 `aws:TagKeys` 符合，請求內容中的每個值都必須與政策中的至少一個值相符。

如果請求中沒有內容索引鍵，`ForAllValues` 集運算子也會傳回 true。

您可以透過在政策中包含一個值為 `false` 的 `Null` 條件運算子，來檢查請求中的內容索引鍵是否存在且其值不為 Null，從而防止遺失內容索引鍵或具有空值的內容索引鍵評估為 true。如需詳細資訊，請參閱[用於檢查條件索引鍵是否存在的條件運算子](reference_policies_elements_condition_operators.md#Conditions_Null)。

**重要**  
此政策不允許任何動作。將此政策與允許特定動作的其他政策結合使用。

**Example 拒絕多值內容索引鍵的單一政策條件值**  
在下列範例中，該政策會拒絕請求，其中請求中的 `aws:TagKeys` 值不包含字首 **key1**。請求內容可以包含多個值，但由於使用了 `ForAllValues` 條件集運算子，請求內容中的所有標籤索引鍵值都必須以字首 **key1** 開頭。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyRestrictedTags",
      "Effect": "Deny",
      "Action": [
        "iam:Tag*",
        "iam:UnTag*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:TagKeys": "key1*"
        }
      }
    }
  ]
}
```
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。對於拒絕陳述式，「相符」表示「遭拒」，「無相符項目」表示「未遭拒」，且可能由其他陳述式允許。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:legal</pre>  |  **沒有相符項目** 可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key1:personnel</pre>  | **沒有相符項目** 可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key2:audit</pre>  | **相符** | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | 請求內容中沒有 `aws:TagKeys`。  | **相符** | 

**Example 拒絕多值內容索引鍵的多個政策條件值**  
在下列範例中，該政策會拒絕請求，其中請求中的 `aws:TagKeys` 值不包含字首 **key1** 或 **key2**。請求內容可以包含多個值，但由於使用了 `ForAllValues` 條件集運算子，請求內容中的所有標籤索引鍵值都必須以字首 **key1** 或 **key2** 開頭。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyRestrictedTags",
      "Effect": "Deny",
      "Action": [
        "iam:Tag*",
        "iam:UnTag*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:TagKeys": [
            "key1*",
            "key2*"
          ]
        }
      }
    }
  ]
}
```
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。對於拒絕陳述式，「相符」表示「遭拒」，「無相符項目」表示「未遭拒」，且可能由其他陳述式允許。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:legal</pre>  |  **沒有相符項目** 可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key1:personnel</pre>  | **沒有相符項目** 可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key2:audit</pre>  | **沒有相符項目** 可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key3:legal</pre>  | **相符**  | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | 請求內容中沒有 `aws:TagKeys`。  | **相符** | 

## 範例：使用條件集運算子 ForAnyValue 拒絕政策
<a name="reference_policies_condition_examples-multi-valued-context-keys-2"></a>

如果使用政策中指定的其中一個標籤索引鍵 (`environment` 或 `webserver`) 標記任何快照，下列以身分為基礎的政策範例將拒絕建立 EC2 執行個體磁碟區的快照。此政策包含具有內容索引鍵 `aws:TagKeys` 的 `ForAnyValue` 集運算子，因為請求內容索引鍵可以包含多值。如果您的標記請求包含政策中指定的任何一個標籤索引鍵值，`aws:TagKeys` 內容索引鍵將傳回 true 以調用拒絕政策效果。

**重要**  
此政策不允許任何動作。將此政策與允許特定動作的其他政策結合使用。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ec2:CreateSnapshot",
        "ec2:CreateSnapshots"
      ],
      "Resource": "arn:aws:ec2:us-west-2::snapshot/*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:TagKeys": "webserver"
        }
      }
    }
  ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。對於拒絕陳述式，「相符」表示「遭拒」，「無相符項目」表示「未遭拒」，且可能由其他陳述式允許。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – webserver</pre>  | **相符** | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – webserver<br />  – test</pre>  |  **相符** | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – test</pre>  | **沒有相符項目** 可能由其他陳述式允許。 | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | 請求內容中沒有 `aws:TagKeys`。  | **沒有相符項目** 可能由其他陳述式允許。  | 

# 單值內容索引鍵政策範例
<a name="reference_policies_condition_examples-single-valued-context-keys"></a>

下列一組政策範例示範如何使用單值內容索引鍵建立政策條件。

## 範例：具有單值內容索引鍵的多個條件區塊
<a name="reference_policies_condition_examples-single-valued-context-keys-1"></a>

當條件區塊具有多個條件時，每個條件都有單一內容索引鍵，所有內容索引鍵都必須解析為 true 才能調用所需的 `Allow` 或 `Deny` 效果。當您使用否定相符條件運算子時，會反轉條件值的評估邏輯。

下列範例可讓使用者建立 EC2 磁碟區，並在磁碟區建立期間將標籤套用至磁碟區。請求內容必須包含內容索引鍵 `aws:RequestTag/project` 的值，以及內容索引鍵 `aws:ResourceTag/environment` 的值可以是生產以外的任何值。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:volume/*",
      "Condition": {
        "StringLike": {
          "aws:RequestTag/project": "*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:*/*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceTag/environment": "production"
        }
      }
    }
  ]
}
```

------

請求內容必須包含專案標籤值，且無法為生產資源建立以調用 `Allow` 效果。下列 EC2 磁碟區已成功建立，因為專案名稱為 `Feature3`，資源標籤為 `QA`。

```
aws ec2 create-volume \
    --availability-zone us-east-1a \
    --volume-type gp2 \
    --size 80 \
    --tag-specifications 'ResourceType=volume,Tags=[{Key=project,Value=Feature3},{Key=environment,Value=QA}]'
```

## 範例：具有多個單值內容索引鍵和值的一個條件區塊
<a name="reference_policies_condition_examples-single-valued-context-keys-2"></a>

當條件區塊包含多個內容索引鍵，且每個內容索引鍵都具有多個值時，每個內容索引鍵都必須解析為 true，以便至少一個金鑰值能夠調用所需的 `Allow` 或 `Deny` 效果。當您使用否定相符條件運算子時，會反轉內容索引鍵值的評估邏輯。

下列範例可讓使用者在 Amazon Elastic Container Service 叢集上啟動和執行任務。
+ 對於 `aws:RequestTag/environment` 內容索引鍵 **AND**，請求內容必須包含 `production` **OR** `prod-backup`。
+ `ecs:cluster` 內容索引鍵確保任務在 `default1` **OR** `default2` ARN ECS 叢集上執行。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:RunTask",
        "ecs:StartTask"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/environment": [
            "production",
            "prod-backup"
          ]
        },
        "ArnEquals": {
          "ecs:cluster": [
            "arn:aws:ecs:us-east-1:111122223333:cluster/default1",
            "arn:aws:ecs:us-east-1:111122223333:cluster/default2"
          ]
        }
      }
    }
  ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: environment:production<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default1</pre>  | 匹配 | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: environment:prod-backup<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | 匹配 | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: webserver:production<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | 無相符項目 | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  |  請求內容中沒有 `aws:RequestTag`。 <pre>ecs:cluster<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | 無相符項目 | 

# IAM 政策元素：變數與標籤
<a name="reference_policies_variables"></a>

當您在撰寫政策時不知道資源或條件索引鍵的確切值時，請使用 AWS Identity and Access Management (IAM) 政策變數做為預留位置。

**注意**  
如果 AWS 無法解析變數，這可能會導致整個陳述式無效。例如，如果您使用 `aws:TokenIssueTime` 變數，此變數只會在請求者使用臨時憑證驗證時解析值 (IAM 角色)。為避免變數造成陳述式無效，請使用 [... IfExists 條件運算子。](reference_policies_elements_condition_operators.md#Conditions_IfExists)

**Topics**
+ [簡介](#policy-vars-intro)
+ [在政策中使用變數](#policy-vars-using-variables)
+ [做為政策變數的標籤](#policy-vars-tags)
+ [在此您可以使用政策變數](#policy-vars-wheretouse)
+ [沒有值的政策變數](#policy-vars-no-value)
+ [您可以使用適用於政策變數的請求資訊](#policy-vars-infotouse)
+ [指定預設值](#policy-vars-default-values)
+ [如需詳細資訊](#policy-vars-formoreinfo)

## 簡介
<a name="policy-vars-intro"></a>

在 IAM 政策中，許多動作允許您為要控制存取的特定資源提供名稱。例如，下列政策可讓使用者為 `marketing` 專案列出、讀取和寫入 S3 儲存貯體 `amzn-s3-demo-bucket` 中的物件。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"],
      "Condition": {"StringLike": {"s3:prefix": ["marketing/*"]}}
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/marketing/*"]
    }
  ]
}
```

------

在某些情況下，您在編寫政策時可能不知道資源的確切名稱。您可能想要一般化政策，以使其適用於許多使用者，而不必為每個使用者製作政策的唯一副本。建議您建立適用於該群組中任何使用者的單一群組政策，而不是為每個使用者建立單獨政策。

## 在政策中使用變數
<a name="policy-vars-using-variables"></a>

您可以使用在政策中設定預留位置的*政策變數*來定義政策內的動態值。

變數使用 **`$`** 字首後接一對大括號 (**`{ }`**) 進行標記，其中包含請求中的值的變數名稱。

評估政策時，政策變數將取代為來自請求中傳遞的條件式內容金鑰的值。變數可用於以[身分為基礎的政策、資源政策、服務控制政策、工作階段政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)以及 [VPC 端點政策](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。用作許可界限的以身分為基礎的政策也支援政策變數。

全域條件內容索引鍵可以用作跨 AWS 服務請求中的變數。與 AWS 資源互動時，服務特定條件索引鍵也可以用作變數，但只有在針對支援其資源提出請求時才可用。如需每個 AWS 服務和資源可用的內容金鑰清單，請參閱[https://docs.aws.amazon.com/service-authorization/latest/reference/reference.html](https://docs.aws.amazon.com/service-authorization/latest/reference/reference.html)。在某些情況下，您無法使用值填入全域條件內容索引鍵。若要進一步了解每個索引鍵，請參閱 [AWS 全域條件內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

**重要**  
索引鍵名稱不區分大小寫。例如，`aws:CurrentTime` 等同於 `AWS:currenttime`。
您可以使用任何單一值條件鍵作為變數。您無法使用多重值條件鍵做為變數。

下面範例顯示了 IAM 角色或使用者的政策，它用政策變數替換特定資源名稱。您可以利用 `aws:PrincipalTag` 條件索引鍵來重複使用此政策。此政策被評估時，僅在儲存貯體名稱以 `team` 主體標籤中的團隊名稱作為結尾時，`${aws:PrincipalTag/team}` 才會允許該動作。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"],
      "Condition": {"StringLike": {"s3:prefix": ["${aws:PrincipalTag/team}/*"]}}
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/${aws:PrincipalTag/team}/*"]
    }
  ]
}
```

------

該變數使用 `$` 字首標記，後跟一對大括號 (`{ }`)。在 `${ }` 字元內，您可以包含要在政策中想要使用的請求中的值的名稱。您可以使用的值將在本頁稍後討論。

如需有關此全域條件索引鍵的詳細資訊，請參閱全域條件金鑰清單中的 [aws:PrincipalTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-principaltag)。

**注意**  
若要使用政策變數，必須在陳述式中包含 `Version` 元素，並且必須將版本設定為支援政策變數的版本。變數已導入版本 `2012-10-17`。舊版的政策語言不支援政策變數。如果不包含 `Version` 元素，並將其設定為適當的版本，則 `${aws:username}` 等變數將被視為政策中的常值字串。  
`Version` 政策元素與政策版本不同。`Version` 政策元素是在政策內使用，並定義政策語言的版本。另一方面，政策版本會在您在 IAM 中變更客戶受管政策時建立。變更的政策不會覆寫現有的政策。IAM 反而會建立新版本的受管政策。若要進一步了解 `Version` 政策元素，請參閱 [IAM JSON 政策元素：Version](reference_policies_elements_version.md)。若要進一步了解政策版本，請參閱 [版本控制 IAM 政策](access_policies_managed-versioning.md)。

允許主體從 S3 儲存貯體的 /David 路徑取得物件之政策如下所示：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/David/*"
      ]
    }
  ]
}
```

------

如果此政策附加至使用者 `David`，該使用者會從其自己的 S3 儲存貯體取得物件，但您必須為包含使用者名稱的每個使用者建立獨立政策。您接著會將每個政策連接到個別使用者。

透過使用政策變數，您可以建立可重複使用的政策。如果 `aws:PrincipalTag` 的標籤鍵值與請求中傳遞的標籤鍵 `owner` 值相符，下列政策將允許使用者從 Amazon S3 儲存貯體取得物件。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Sid": "AllowUnlessOwnedBySomeoneElse",
    "Effect": "Allow",
    "Action": ["s3:GetObject"],    
    "Resource": ["*"],
    "Condition": {
        "StringEquals": {
          "s3:ExistingObjectTag/owner": "${aws:PrincipalTag/owner}"
        }
      }
    }
  ]
}
```

------

像這樣使用政策變數來替代使用者時，您不必為每個單獨使用者設定獨立的政策。在下列範例中，政策會附加至由產品經理使用臨時安全憑證擔任的 IAM 角色。使用者提出新增 Amazon S3 物件的請求時，IAM 會將目前請求中的 `dept` 標籤值替換為 `${aws:PrincipalTag}` 變數，並評估該政策。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowOnlyDeptS3Prefix",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/${aws:PrincipalTag/dept}/*"
            ]
        }
    ]
}
```

------

## 做為政策變數的標籤
<a name="policy-vars-tags"></a>

在某些 AWS 服務中，您可以將自己的自訂屬性連接到這些服務建立的資源。例如，您可以將標籤套用至 Amazon S3 儲存貯體或 IAM 使用者。這些標籤均為鍵值組。您定義標籤鍵名稱以及與該鍵名稱關聯的值。例如，您可以建立一個具有 **department** 索引鍵和 **Human Resources** 值的標籤。如需有關標記 IAM 實體的詳細資訊，請參閱 [AWS Identity and Access Management 資源的標籤](id_tags.md)。有關標記其他 AWS 服務建立之資源的資訊，請參閱該服務的文件。如需有關使用標籤編輯器的詳細資訊，請參閱 *AWS 管理主控台 使用者指南中的*[使用標籤編輯器](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/tag-editor.html)。

您可以標記 IAM 資源以簡化探索、整理和追蹤您的 IAM 資源。您也可以標記 IAM 身分來控制存取資源或標記本身。若要進一步了解有關使用標籤以控制存取的詳細資訊，請參閱[使用標籤控制對 IAM 使用者和角色的存取](access_iam-tags.md)。

## 在此您可以使用政策變數
<a name="policy-vars-wheretouse"></a>

 您可以在 `Resource` 元素中使用政策變數，也可以在 `Condition` 元素中使用字串比較。

### 資源元素
<a name="policy-vars-resourceelement"></a>

您可以在 `Resource` 元素中使用政策變數，但只能在 ARN 的資源部分中使用政策變數。ARN 的這個部分會出現在第 5 個冒號 (:) 之後。您無法使用變數來取代第 5 個冒號之前的 ARN 部分，例如服務或帳戶。如需有關 ARN 格式的詳細資訊，請參閱 [IAM ARN](reference_identifiers.md#identifiers-arns)。

若要以標籤值取代 ARN 的一部分，請以 `${ }` 包住字首與索引鍵名稱。例如，以下資源元素僅指其名稱與請求之使用者的部門標籤值相同的儲存貯體。

`"Resource": ["arn:aws::s3:::amzn-s3-demo-bucket/${aws:PrincipalTag/department}"]`

許多 AWS 資源使用包含使用者建立名稱的 ARNs。下列 IAM 政策可確保只有具有相符 access-project、access-application 和 access-environment 標籤值的特定使用者才能修改其資源。此外，使用 [\$1 萬用字元比對](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html)時，它們能允許自訂資源名稱尾碼。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessBasedOnArnMatching",
      "Effect": "Allow",
      "Action": [
        "sns:CreateTopic",
        "sns:DeleteTopic"],      
      "Resource": ["arn:aws:sns:*:*:${aws:PrincipalTag/access-project}-${aws:PrincipalTag/access-application}-${aws:PrincipalTag/access-environment}-*"
      ]
    }
  ]
}
```

------

### 條件元素
<a name="policy-vars-conditionelement"></a>

在涉及字串運算子或 ARN 運算子的任何條件下，您都可以將政策變數用於 `Condition` 值。字串運算子包括 `StringEquals`、`StringLike` 和 `StringNotLike`。ARN 運算子包括 `ArnEquals` 和 `ArnLike`。您無法使用政策變數搭配其他運算子，例如 `Numeric`、`Date`、`Boolean`、`Binary`、`IP Address` 或 `Null` 運算子。如需有關條件運算子的詳細資訊，請參閱 [IAM JSON 政策元素：條件運算子](reference_policies_elements_condition_operators.md)。

在 `Condition` 元素表達式中參照標籤時，請使用相關的字首和索引鍵名稱做為條件金鑰。然後，使用您想在條件值中測試的值。

例如，下列政策範例允許完整存取使用者，但僅限在標籤 `costCenter` 連接至使用者時。此標籤也必須有一個 `12345` 或 `67890` 的值。如果此標籤沒有值，或有任何其他值，請求將會失敗。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
          "iam:*user*"
       ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "iam:ResourceTag/costCenter": [ "12345", "67890" ]
        }
      }
    }
  ]
}
```

------

## 沒有值的政策變數
<a name="policy-vars-no-value"></a>

當政策變數參考的條件內容索引鍵沒有值或不存在於請求授權內容中時，該值實際上是空值。沒有相等或類似的值。在以下情況下，授權內容中可能不存在條件內容索引鍵：
+ 您正在對不支援該條件索引鍵的資源請求中使用服務特定條件內容索引鍵。
+ IAM 主體、工作階段、資源或請求的標籤不存在。
+ 在 [AWS 全域條件內容索引鍵](reference_policies_condition-keys.md) 中列出了每個全域條件內容金鑰的其他情況。

當您在 IAM 政策的條件元素中使用沒有值的變數時 ([IAM JSON 政策元素：條件運算子](reference_policies_elements_condition_operators.md)，例如 `StringEquals` 或 `StringLike` 不匹配)，政策陳述式不會生效。

反向條件運算子 (例如 `StringNotEquals` 或 `StringNotLike`) 確實與空值匹配，因為其正在測試的條件索引鍵的值不等於或不類似於有效空值。

在下列範例中，`aws:principaltag/Team` 必須等於 `s3:ExistingObjectTag/Team` 才能允許存取。未設定 `aws:principaltag/Team` 時，系統會明確拒絕存取。如果在授權內容中沒有值的變數用作政策的 `Resource` 或 `NotResource` 元素的一部分，則包含沒有值之政策變數的資源將不會與任何資源相匹配。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
   {
    "Effect": "Deny", 
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition": {
      "StringNotEquals": {
        "s3:ExistingObjectTag/Team": "${aws:PrincipalTag/Team}"
       }
      }
    }
  ]
}
```

------

## 您可以使用適用於政策變數的請求資訊
<a name="policy-vars-infotouse"></a>

 您可以使用 JSON 政策的 `Condition` 元素，來比較[請求內容](reference_policies_evaluation-logic_policy-eval-reqcontext.md)中的金鑰和您在政策中指定的鍵值。當您使用政策變數時， 會從請求內容索引鍵 AWS 取代 值，以取代政策中的 變數。

### 主體索引鍵值
<a name="principaltable"></a>

`aws:username`、`aws:userid` 及 `aws:PrincipalType` 的值取決於啟動請求之主體的類型。例如，請求可能是使用 IAM 使用者、IAM 角色或 AWS 帳戶根使用者的憑證提出。下列資料表顯示不同類型之主體的鍵值。


****  

| Principal | `aws:username` | `aws:userid` | `aws:PrincipalType` | 
| --- | --- | --- | --- | 
| AWS 帳戶根使用者 | (不存在) | AWS 帳戶 ID | Account | 
| IAM 使用者 | ：IAM-user-name | [：唯一 ID](reference_identifiers.md#identifiers-unique-ids) | User | 
| AWS STS 聯合身分使用者主體 | (不存在) | account:caller-specified-name | FederatedUser | 
| OIDC 聯合身分主體 有關使用 Web 聯合身分時可用的政策索引鍵的詳細資訊，請參閱 [AWS OIDC 聯合的可用金鑰](reference_policies_iam-condition-keys.md#condition-keys-wif)。 | (不存在) |   *role-id*：*caller-specified-role-name*  其中 `role-id` 是[角色的唯一 ID](reference_identifiers.md#identifiers-unique-ids)，caller-specified-role-name 由傳遞給 AssumeRoleWithWebIdentity 請求的 [RoleSessionName](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AssumeRole.html#API_AssumeRoleWithWebIdentity_RequestParameters) 參數指定。  | AssumedRole | 
| SAML 聯合身分主體 有關使用 SAML 聯合時可用的政策索引鍵的詳細資訊，請參閱 [單獨辨識以 SAML 為基礎的聯合身分中的使用者](id_roles_providers_saml.md#CreatingSAML-userid)。 | (不存在) |  *role-id*：*caller-specified-role-name* 其中 `role-id` 是[角色的唯一 ID](reference_identifiers.md#identifiers-unique-ids)，而 caller-specified-role-name 由 Attribute 元素指定，其 [Name 屬性](id_roles_providers_create_saml_assertions.md)設定為 https://aws.amazon.com/SAML/attributes/RoleSessionName。  | AssumedRole | 
| 擔任的角色 | (不存在) |  *role-id*：*caller-specified-role-name* 其中 `role-id` 是[角色的唯一 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids)，caller-specified-role-name 由傳遞給 AssumeRole 請求的 [RoleSessionName](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#API_AssumeRole_RequestParameters) 參數指定。  | AssumedRole | 
| 指派給 Amazon EC2 執行個體的角色 | (不存在) |  *role-id*:*ec2-instance-id* 其中 `role-id` 是[角色的唯一 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids)，而 ec2-instance-id 是 [EC2 執行個體的唯一識別符](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html)。  | AssumedRole | 
| 匿名呼叫者 (僅限 Amazon SQS、Amazon SNS 和 Amazon S3) | (不存在) | anonymous | Anonymous | 

對於此表格、中的項目，請注意下列事項：
+ 「不存在」**表示該值不在目前請求資訊中，並且任何符合它的嘗試都會失敗並導致陳述式無效。
+ *role-id* 是在建立時指派給每個角色的唯一識別符。您可以使用 AWS CLI 命令顯示角色 ID： `aws iam get-role --role-name rolename`
+ *caller-specified-name* 和 *caller-specified-role-name* 是呼叫程序 (例如，應用程式或服務) 在呼叫取得暫時憑證時所傳遞的名稱。
+ *ec2-instance-id* 是在啟動時指派給執行個體的值，並顯示在 Amazon EC2 主控台的 **Instances** (執行個體) 頁面上。您也可以執行 AWS CLI 命令來顯示執行個體 ID： `aws ec2 describe-instances`

### 聯合身分主體在請求中可用的資訊
<a name="policy-vars-infoWIF"></a>

聯合身分主體是使用 IAM 以外的系統進行身分驗證的使用者。例如，公司可能有內部呼叫 的應用程式以供內部使用 AWS。向使用該應用程式的每個公司使用者提供 IAM 身分可能是不切實際的。相反地，公司可能會使用具有單一 IAM 身分的代理 (中間層) 應用程式，或者公司可能使用 SAML 身分提供者 (IdP)。代理應用程式或 SAML IdP 使用公司網路對個別使用者進行身分驗證。然後，代理應用程式可以使用其 IAM 身分來取得個別使用者的臨時安全憑證。SAML IdP 可以有效地交換 AWS 臨時安全登入資料的身分資訊。然後，臨時登入資料可用於存取 AWS 資源。

同樣，您可以為應用程式需要存取 AWS 資源的行動裝置建立應用程式。在這種情況下，您可以使用 *OIDC 聯合*，其中應用程式使用 Login with Amazon、Amazon Cognito、Facebook 或 Google 等知名身分提供者對使用者進行身分驗證。然後，應用程式可以使用來自這些提供者的使用者身分驗證資訊來取得用來存取 AWS 資源的臨時安全憑證。

使用 OIDC 聯合的建議方法是利用 Amazon Cognito 和 AWS 行動 SDKs。如需詳細資訊，請參閱下列內容：
+ [Amazon Cognito 使用者指南](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html) 
+ [暫時性憑證的常見案例](id_credentials_temp.md#sts-introduction)

### 特殊字元
<a name="policy-vars-specialchars"></a>

有幾個特殊的預先定義的政策變數具有固定值，使您能夠表示具有特殊含意的字元。如果這些特殊字元是字串的一部分，那麼您正在嘗試比對，並且從字面上插入它們會被轉譯。例如，在字串中插入 \$1 星號將被轉譯為萬用字元，比對任何字元，而不是做為文字 \$1。在這些情況下，您可以使用以下預定義的政策變數：
+ **\$1\$1\$1\$1** - 在需要 \$1 星號字元的地方使用。
+ **\$1\$1?\$1** - 在需要 ? 問號字元的地方使用。
+ **\$1\$1\$1\$1** - 在需要 \$1 貨幣符號字元的地方使用。

這些預先定義的政策變數可以在可以使用一般政策變數的任何字串中使用。

## 指定預設值
<a name="policy-vars-default-values"></a>

若要將預設值新增到一個變數，請以單引號 (`' '`) 括住預設值，並使用逗號和空格 (`, `) 分隔變數文字和預設值。

例如，如果主體標記為 `team=yellow`，他們可以存取名為 `amzn-s3-demo-bucket-yellow` 的 `ExampleCorp's` Amazon S3 儲存貯體。具有此資源的政策可讓團隊成員存取其團隊儲存貯體，但不能存取其他團隊的儲存貯體。對於沒有團隊標籤的使用者，它會將 `company-wide` 的預設值設定為儲存貯體名稱。這些使用者只能存取 `amzn-s3-demo-bucket-company-wide` 儲存貯體，其中他們可以檢視廣泛的資訊，例如加入團隊的指示。

```
"Resource":"arn:aws:s3:::amzn-s3-demo-bucket-${aws:PrincipalTag/team, 'company-wide'}"
```

## 如需詳細資訊
<a name="policy-vars-formoreinfo"></a>

如需有關政策的詳細資訊，請參閱以下項目：
+  [中的政策和許可 AWS Identity and Access Management](access_policies.md) 
+  [以身分為基礎的 IAM 政策範例](access_policies_examples.md) 
+  [IAM JSON 政策元素參考](reference_policies_elements.md) 
+  [政策評估邏輯](reference_policies_evaluation-logic.md) 
+  [OIDC 聯合身分](id_roles_providers_oidc.md)

# IAM JSON 政策元素：支援的資料類型
<a name="reference_policies_elements_datatypes"></a>

本部分列出在 JSON 政策中指定值時所支援的資料類型。政策語言不支援每個政策元素的所有類型；有關每個元素的相關資訊，請參閱上一個部分。
+ Strings
+ 編號 (Ints 和 Floats)
+ Boolean
+ Null
+ 清單
+ 地圖
+ 結構 (只是巢狀地圖)

下表將每種資料類型對應至序列化。請注意，所有政策必須採用 UTF-8。如需 JSON 資料類型的資訊，請前往 [RFC 4627](https://datatracker.ietf.org/doc/html/rfc4627)。


****  

| 類型 | JSON | 
| --- | --- | 
|  字串  |  字串  | 
|  整數  |  Number  | 
|  Float  |  Number  | 
|  Boolean  |  true false  | 
|  Null  |  null  | 
|  日期  |  字串遵守 [ISO 8601 的 W3C 描述檔](http://www.w3.org/TR/NOTE-datetime)  | 
|  IpAddress  |  字串遵守 [RFC 4632](https://datatracker.ietf.org/doc/html/rfc4632)  | 
|  列出  |  Array  | 
|  物件  |  物件  | 

# 政策評估邏輯
<a name="reference_policies_evaluation-logic"></a>

當委託人嘗試使用 AWS 管理主控台、 AWS API 或 時 AWS CLI，該委託人會傳送*請求*至 AWS。當 AWS 服務收到請求時， AWS 會完成數個步驟，以決定是否允許或拒絕請求。

1. **身分驗證** – 如有必要， AWS 首先驗證提出請求的委託人。有少數幾個服務並不需要這個步驟，例如 Amazon S3，它允許匿名使用者的一些請求。

1. **[處理請求內容](reference_policies_evaluation-logic_policy-eval-reqcontext.md)** – AWS 處理請求中收集的資訊，以判斷哪些政策適用於請求。

1. **[AWS 強制執行程式碼邏輯如何評估允許或拒絕存取的請求](reference_policies_evaluation-logic_policy-eval-denyallow.md)** – AWS 評估所有政策類型和政策的順序會影響它們的評估方式。 AWS 然後， 會根據請求內容處理政策，以判斷是否允許或拒絕請求。

## 搭配以資源為基礎的政策來評估以身分為基礎的政策
<a name="policy-eval-basics-id-rdp"></a>

以身分為基礎的政策和以資源為基礎的政策，可為其連接到其中的身分或資源授予許可。當 IAM 實體 （使用者或角色） 請求存取相同帳戶中的資源時， 會 AWS 評估身分型和資源型政策授予的所有許可。最終產生的許可是這兩種許可的聯合。如果身分型政策、資源型政策或兩者都允許動作，則 會 AWS 允許該動作。在這些政策的明確拒絕會覆寫允許。

![\[搭配以資源為基礎的政策來評估以身分為基礎的政策\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/permissions_policies_effective.png)


## 搭配許可界限來評估以身分為基礎的政策
<a name="policy-eval-basics-id-bound"></a>

當 AWS 評估使用者的身分型政策和許可界限時，產生的許可是兩個類別的交集。這表示，當您新增許可界限到已有現有以身分為基礎之政策的使用者時，您可能會減少使用者可執行的動作。或者，當您移除使用者的許可界限時，您可能會增加他們可以執行的動作。在這些政策的明確拒絕會覆寫允許。若要檢視有關如何搭配許可界限來評估其他政策類型的詳細資訊，請參閱[評估含界限的有效許可](access_policies_boundaries.md#access_policies_boundaries-eval-logic)。

![\[評估以身分為基礎的政策及許可界限\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/permissions_boundary.png)


## 使用 AWS Organizations SCPs或 RCPs 評估身分型政策
<a name="policy-eval-basics-id-scp"></a>

當使用者屬於組織成員帳戶，並存取未設定資源型政策的資源時，產生的許可是使用者政策、服務控制政策 (SCP) 和資源控制政策 (RCP) 的交集。這表示動作必須得到所有三種政策類型的允許。身分型政策、SCP 或 RCP 中的明確拒絕會覆寫允許。

![\[評估身分型政策和 SCP 或 RCP\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/permissions_scp-idp.png)


您可以了解[您的帳戶是否為 AWS Organizations中組織的成員](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_details.html#orgs_view_account)。組織成員可能會受到 SCP 或 RCP 的影響。若要使用 AWS CLI 命令或 AWS API 操作檢視此資料，您必須擁有 AWS Organizations 實體 `organizations:DescribeOrganization`動作的許可。您必須擁有其他許可，才能在 AWS Organizations 主控台中執行 操作。若要了解 SCP 或 RCP 是否拒絕存取特定請求，或變更您的有效許可，請聯絡您的 AWS Organizations 管理員。

# 處理請求內容
<a name="reference_policies_evaluation-logic_policy-eval-reqcontext"></a>

當 AWS 評估並授權請求時，它會將請求資訊組合成*請求內容*。請求內容包含任何可用於政策評估的資訊。
+ **主體** – 傳送請求的使用者、角色或聯合身分使用者主體。有關主體的資訊，包括與該主體相關聯的政策。
+ **動作** – 主體想要執行的一個或多個動作。
+ **資源** – 執行動作或操作的一或多個 AWS 資源物件。
+ **資源資料** – 與所請求資源相關的資料。這可以包括諸如 DynamoDB 資料表名稱或 Amazon EC2 執行個體上之標籤的資訊。
+ **環境資料** – IP 地址、使用者代理程式、啟用 SSL 的狀態或一天中時間的相關資訊。

此資訊會與適用的政策進行比較，以決定是允許還是拒絕請求。您可以使用**主體**、**動作**、**資源**和**條件** (PARC) 模型來組織此屬性資訊，以進一步了解如何評估 AWS 政策。

## 了解 PARC 模型
<a name="reqcontext_parc-model"></a>

PARC 模型根據政策語言中的四個 JSON 元素來表示請求內容：
+ [Principal](reference_policies_elements_principal.md) – 發出請求的實體。主體代表可以進行身分驗證並授權在 AWS 帳戶中執行動作的人類使用者或程式設計式工作負載。
+ [Action](reference_policies_elements_action.md) – 正在執行的操作。動作通常會映射至 API 動作。
+ [Resource](reference_policies_elements_resource.md) – 正在對其執行動作的 AWS 資源。
+ [Condition](reference_policies_elements_condition.md) – 請求得到允許所必須滿足的其他限制。

下列範例說明 PARC 模型如何表示請求內容：

```
Principal: AIDA123456789EXAMPLE
Action: s3:CreateBucket
Resource: arn:aws:s3:::amzn-s3-demo-bucket1
Context:
- aws:UserId=AIDA123456789EXAMPLE:BobsSession
- aws:PrincipalAccount=123456789012
- aws:PrincipalOrgId=o-example
- aws:PrincipalARN=arn:aws:iam::AIDA123456789EXAMPLE:role/HR
- aws:MultiFactorAuthPresent=true
- aws:CurrentTime=...
- aws:EpochTime=...
- aws:SourceIp=...
- aws:PrincipalTag/dept=123
- aws:PrincipalTag/project=blue
- aws:RequestTag/dept=123
```

## 請求內容的重要性
<a name="reqcontext_importance"></a>

理解請求內容及其與政策評估的互動方式，對於下列項目至關重要：
+ 對存取問題進行疑難排解 
+ 設計有效且安全的政策
+ 了解政策授予的許可的完整範圍
+ 在不同案例中預測政策評估的結果

透過使用 PARC 模型視覺化請求內容，您可以更輕鬆地了解 如何 AWS 更有效地制定授權決策和設計政策。

## AWS 如何使用請求內容
<a name="reqcontext_usage"></a>

評估政策時， 會將請求內容中的資訊與所有適用政策中指定的資訊 AWS 進行比較。這包括身分型政策、資源型政策、IAM 許可界限、Organizations SCP、Organizations RCP 和工作階段政策。

對於每個政策類型， AWS 會使用請求內容來檢查：
+ 政策是否根據主體套用至請求。
+ 請求的動作是否允許在指定的資源上執行。
+ 請求內容是否符合政策中指定的任何條件。

如何 AWS 評估政策取決於套用至請求內容的政策類型。這些政策類型可在單一 AWS 帳戶內使用。如需有關這些政策類型的詳細資訊，請參閱 [中的政策和許可 AWS Identity and Access Management](access_policies.md)。若要了解如何 AWS 評估跨帳戶存取的政策，請參閱 [跨帳戶政策評估邏輯](reference_policies_evaluation-logic-cross-account.md)。
+ **AWS Organizations 資源控制政策 RCPs)** – AWS Organizations RCPs 指定組織或組織單位 (OU) 中帳戶內資源的可用許可上限。RCPs適用於成員帳戶中的資源，並影響委託人的有效許可，包括 AWS 帳戶根使用者，無論委託人是否屬於您的組織。RCP 不適用於組織管理帳戶中的資源，以及由服務連結角色進行的呼叫。如果 RCP 存在，則只有在 RCP 允許該動作時，身分型和資源型政策向成員帳戶中的資源授予許可才有效。
+ **AWS Organizations 服務控制政策 SCPs)** – AWS Organizations SCPs 指定組織或組織單位 (OU) 中帳戶內主體的可用許可上限。SCPs適用於成員帳戶中的主體，包括每個主體 AWS 帳戶根使用者。如果 SCP 存在，則只有在 SCP 允許該動作時，身分型和資源型政策授予給成員帳戶中主體的許可才有效。唯一的例外是組織管理帳戶中的主體和服務連結角色。
+ **資源型政策**：資源型政策會為政策中指定的主體授予許可。這些許可會定義主體可以對政策連接於其中的資源做哪些動作。
+ **許可界限** – 許可界限是一種功能，負責設定身分型政策可向 IAM 實體 (使用者或角色) 授予的許可上限。當您為實體設定許可界限時，實體只能執行由身分型政策和其許可界限同時允許的動作。在某些情況下，許可界限中的隱含拒絕會限制資源型政策所授予的許可。如需詳細資訊，請參閱[AWS 強制執行程式碼邏輯如何評估允許或拒絕存取的請求](reference_policies_evaluation-logic_policy-eval-denyallow.md)。
+ **以身分為基礎的政策** – 以身分為基礎的政策會連接到 IAM 身分 (使用者、使用者群組或角色)，並且授予許可給 IAM 實體 (使用者與角色)。如果只有身分型政策適用於請求，則 AWS 會檢查所有這些政策中至少有一個 `Allow`。
+ **工作階段政策** – 工作階段政策是在以程式設計方式為角色或聯合身分使用者工作階段建立臨時工作階段時作為參數傳遞的政策。若要以程式設計方式建立角色工作階段，請使用其中一種 `AssumeRole*` API 操作。當您這麼做且傳遞工作階段政策時，所產生工作階段的許可會是 IAM 實體的身分類型政策和工作階段政策的交集。若要建立聯合身分使用者工作階段，您要使用 IAM 使用者存取金鑰，以程式設計的方式來呼叫 `GetFederationToken` API 操作。如需詳細資訊，請參閱[工作階段政策](access_policies.md#policies_session)。

請記住，所有這類政策中的明確拒絕都會覆寫該允許。

**注意**  
**AWS Organizations 宣告政策**可讓您集中宣告和強制執行整個組織中指定 AWS 服務 所需的組態。由於宣告式政策直接在服務層級套用，因此不會直接影響政策評估請求，也不會包含在請求內容中。如需詳細資訊，請參閱 AWS Organizations 《 使用者指南》中的[宣告政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)。

## 使用 PARC 模型的政策評估範例
<a name="reqcontext_example"></a>

為了說明請求內容如何與政策評估互動，我們來看一個政策範例：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:CreateBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/dept": "123"
        }
      }
    }
  ]
}
```

------

在此範例中，該政策僅在請求內容包含的 `aws:PrincipalTag/dept` 值為 "123"，且資源符合 `amzn-s3-demo-bucket1` 儲存貯體名稱時，才會允許 `CreateBucket` 動作。下表說明 AWS 如何使用請求內容來評估此政策並作出授權決策。


| 政策 | 請求內容 | 評估結果 | 
| --- | --- | --- | 
| <pre>"StringEquals": {<br />    "aws:PrincipalTag/dept": "123"<br />}</pre>  |  <pre>Principal: AIDA123456789EXAMPLE<br />Action: s3:CreateBucket<br />Resource: arn:aws:s3:::amzn-s3-demo-bucket1<br />Context:  <br />    - aws:PrincipalTag/dept=123</pre>  | **相符** | 
| <pre>"StringEquals": {<br />    "aws:PrincipalTag/dept": "123"<br />}</pre>  |  <pre>Principal: AIDA123456789EXAMPLE<br />Action: s3:DeleteBucket<br />Resource: arn:aws:s3:::amzn-s3-demo-bucket1<br />Context:  <br />    - aws:PrincipalTag/dept=123</pre>  | **沒有相符項目** | 
| <pre>"StringEquals": {<br />    "aws:PrincipalTag/dept": "123"<br />}</pre>  |  <pre>Principal: AIDA123456789EXAMPLE<br />Action: s3:CreateBucket<br />Resource: arn:aws:s3:::amzn-s3-demo-bucket1<br />Context:  <br />    - aws:PrincipalTag/dept=321</pre>  | **沒有相符項目** | 
| <pre>"StringEquals": {<br />    "aws:PrincipalTag/dept": "123"<br />}</pre>  |  <pre>Principal: AIDA123456789EXAMPLE<br />Action: s3:CreateBucket<br />Resource: arn:aws:s3:::amzn-s3-demo-bucket1<br />Context:</pre> 請求中沒有 `aws:PrincipalTag`。  | **沒有相符項目** | 

# AWS 強制執行程式碼邏輯如何評估允許或拒絕存取的請求
<a name="reference_policies_evaluation-logic_policy-eval-denyallow"></a>

 AWS 強制執行程式碼會決定是否 AWS 應該允許或拒絕傳送至 的請求。 會 AWS 評估適用於請求內容的所有政策。以下是 AWS 政策評估邏輯的摘要。
+ 根據預設，所有的要求會一律拒絕 ( AWS 帳戶根使用者提出的要求例外，該使用者具有完整存取權)。
+ 允許以下評估邏輯後，請求必須得到某個政策或一組政策的明確允許。
+ 明確拒絕會覆寫明確允許。

政策評估可能會因請求是在單一帳戶內還是跨帳戶而有所不同。如需有關如何為單一帳戶內的 IAM 角色或使用者作出政策評估決策的詳細資訊，請參閱[單一帳戶中請求的政策評估](reference_policies_evaluation-logic_policy-eval-basics.md)。如需有關如何針對跨帳戶請求作出政策評估決策的詳細資訊，請參閱[跨帳戶政策評估邏輯](reference_policies_evaluation-logic-cross-account.md)。
+ **拒絕評估** – 根據預設，所有的請求一律拒絕。這稱為[隱含拒絕](reference_policies_evaluation-logic_AccessPolicyLanguage_Interplay.md)。 AWS 強制執行程式碼會評估帳戶內套用至請求的所有政策。這些包括 AWS Organizations SCPs和 RCPs、資源型政策、身分型政策、IAM 許可界限和工作階段政策。在所有這些政策中，強制執行程式碼會尋找套用到請求的 `Deny` 陳述式。此稱為[明確拒絕](reference_policies_evaluation-logic_AccessPolicyLanguage_Interplay.md)。如果強制執行程式碼找到一個適用的明確拒絕，則強制執行程式碼會傳回**拒絕**這一最後決定。如果沒有明確拒絕，該強制執行程式碼評估會持續執行。
+ **AWS Organizations RCPs** – 強制執行程式碼會評估套用至請求 AWS Organizations 的資源控制政策 (RCPs)。RCP 適用於 RCP 所連接的帳戶資源。如果強制執行程式碼在 RCP 中找不到任何適用的 `Allow` 陳述式，則強制執行程式碼會傳回**拒絕**這一最終決定。請注意，啟用 RCP 時，會自動建立名為 AWS 的 `RCPFullAWSAccess` 受管政策並連接到組織中的每個實體，包括根實體、每個 OU 以及 AWS 帳戶 。`RCPFullAWSAccess` 無法分離，因此始終會有 `Allow` 陳述式。如果 RCP 不存在，或 RCP 允許請求的動作，強制執行程式碼評估就會繼續執行。
+ **AWS Organizations SCPs** – 強制執行程式碼會評估套用至請求 AWS Organizations 的服務控制政策 (SCPs)。SCP 會套用至連接 SCP 的帳戶之主體。如果強制執行程式碼在 SCP 中找不到任何適用的 `Allow` 陳述式，則強制執行程式碼會傳回**拒絕**這一最終決定。如果 SCP 不存在，或是 SCP 允許請求動作，強制執行程式碼評估就會繼續執行。
+ **資源型政策** – 在同一帳戶內，資源型政策會根據存取資源的主體類型以及資源型政策中允許的主體，以不同的方式影響政策評估。根據主體類型，資源型政策中的 `Allow` 可能會導致 `Allow` 的最終決定，即使身分型識別政策、許可界限或工作階段政策中有隱含拒絕。

  針對大部分資源，您只需要在身分型政策或資源型政策中對主體提供明確 `Allow`，即可授予存取權。[IAM 角色信任政策](access_policies-cross-account-resource-access.md#access_policies-cross-account-delegating-resource-based-policies)和 [KMS 金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)是此邏輯的例外，因為這些政策必須明確允許存取[主體](reference_policies_elements_principal.md)。對於 IAM 和 AWS KMS 以外的服務，資源型政策可能也需要在同一帳戶內具有明確的 `Allow` 陳述式才能授予存取權。如需詳細資訊，請參閱適用於您所使用之特定服務的文件。

  對於單一帳戶政策評估請求，如果指定的主體是 IAM 使用者、IAM 角色或工作階段主體，資源型政策邏輯會與其他政策類型有所不同。工作階段主體包括 [IAM 角色工作階段](reference_policies_elements_principal.md#principal-role-session)或 [AWS STS 聯合身分使用者主體](reference_policies_elements_principal.md#sts-session-principals)。如果資源型政策直接將許可授予 IAM 使用者或提出要求的工作階段主體，則身分識別型政策、許可界限或工作階段政策中的隱含拒絕不會影響最終決定。
  + **IAM 角色** – 將許可授予 IAM 角色 ARN 的資源型政策受限於許可界限或工作階段政策中隱含拒絕的限制。您可以在主體元素或 `aws:PrincipalArn` 條件索引鍵中指定角色 ARN。在這兩種情況下，發出請求的主體是 **IAM 角色工作階段**。

    許可界限和工作階段政策不會限制在主體元素中使用 `aws:PrincipalArn` 條件索引鍵與萬用字元 (\$1) 所授予的許可，除非身分型政策包含明確拒絕。如需詳細資訊，請參閱[IAM 角色主體](reference_policies_elements_principal.md#principal-roles)。

    **角色 ARN 範例**

    ```
    arn:aws:iam::111122223333:role/examplerole
    ```
  + **IAM 角色工作階段** – 在同一帳戶內，將許可授予 IAM 角色工作階段 ARN 的資源型政策直接授予許可給擔任的角色工作階段。直接授予工作階段的許可不會受到身分識別型政策、許可界限或工作階段政策中隱含拒絕的限制。當您擔任角色並提出要求時，提出要求的主體是 IAM 角色工作階段 ARN，而不是角色本身的 ARN。如需詳細資訊，請參閱[角色工作階段主體](reference_policies_elements_principal.md#principal-role-session)。

    **角色工作階段 ARN 範例**

    ```
    arn:aws:sts::111122223333:assumed-role/examplerole/examplerolesessionname
    ```
  + **IAM 使用者** – 在同一帳戶內，將許可授予 IAM 使用者 ARN (非聯合身分使用者工作階段) 的資源型政策不受身分識別型政策或許可界限中隱含拒絕的限制。

    **IAM 使用者 ARN 範例**

    ```
    arn:aws:iam::111122223333:user/exampleuser
    ```
  + **AWS STS 聯合身分使用者主體** – 聯合身分使用者工作階段是透過呼叫 建立的工作階段[`GetFederationToken`](id_credentials_temp_request.md#api_getfederationtoken)。當聯合身分使用者提出要求時，提出要求的主體是聯合身分使用者 ARN，而不是聯合身分 IAM 使用者的 ARN。在相同的帳戶中，授予許可給聯合身分使用者 ARN 的資源型政策會直接將許可授予工作階段。直接授予工作階段的許可不會受到身分識別型政策、許可界限或工作階段政策中隱含拒絕的限制。

    但是，如果資源型政策向聯合身分 IAM 使用者 ARN 授予許可，則聯合身分使用者在工作階段期間提出的要求會受到許可界限或工作階段政策中隱含拒絕的限制。

    **聯合身分使用者工作階段 ARN 範例**

    ```
    arn:aws:sts::111122223333:federated-user/exampleuser
    ```
+ **身分型政策**：強制執行程式碼會檢查主體的身分型政策。若為 IAM 使用者，這些政策會包含使用者政策，以及使用者所屬群組的政策。如果沒有任何身分型政策或其中的任何陳述式允許請求的動作，則表示請求已遭隱含拒絕，且強制執行程式碼會傳回**拒絕**這一最終決定。如果任何適用的身分型政策中有任一陳述式允許請求的動作，則程式碼評估會繼續執行。
+ **IAM 許可界限**：強制執行程式碼會檢查主體所使用的 IAM 實體是否有許可界限。如果用來設定許可界限的政策不允許該請求動作，則表示請求已遭隱含拒絕。強制執行程式碼傳回**拒絕**的最後決定。如果許可界限不存在，或是許可界限允許請求的動作，程式碼評估就會繼續執行。
+ **工作階段政策**：強制執行程式碼會檢查主體是否為工作階段主體。工作階段主體包括 IAM 角色工作階段或 AWS STS 聯合身分使用者工作階段。如果主體不是工作階段主體，則強制執行程式碼會傳回**允許**的最終決定。

  對於工作階段主體，強制執行程式碼會檢查工作階段政策是否已在請求中傳遞。您可以在使用 AWS CLI 或 AWS API 取得角色或 AWS STS 聯合身分使用者主體的臨時登入資料時，傳遞工作階段政策。如果未傳遞工作階段政策，則會建立預設工作階段政策，且強制執行程式碼會傳回**允許**這一最終決定。
  + 如果工作階段政策存在，且不允許該要求動作，則表示要求已遭隱含拒絕。強制執行程式碼傳回**拒絕**的最後決定。
  + 強制執行程式碼會檢查主體是否為角色工作階段。如果主體是角色工作階段，則請求將為**已允許**。否則，會隱含拒絕請求，強制執行程式碼會傳回**拒絕**這一最終決定。
  + 如果有工作階段政策，且政策允許該要求動作，則強制執行程式碼會傳回**允許**的最終決定。

# 單一帳戶中請求的政策評估
<a name="reference_policies_evaluation-logic_policy-eval-basics"></a>

## IAM 角色的政策評估
<a name="policy-eval-basics-single-account-role"></a>

下列流程圖詳細說明如何針對單一帳戶內的 IAM 角色作出政策評估決策。

![\[單一帳戶內 IAM 角色的評估流程圖\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/PolicyEvaluationSingleAccountRole.png)


## IAM 使用者的政策評估
<a name="policy-eval-basics-single-account-user"></a>

下列流程圖詳細說明如何針對單一帳戶內的 IAM 使用者作出政策評估決策。

![\[單一帳戶內 IAM 使用者的評估流程圖\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/PolicyevaluationSingleAccountUser.png)


## 以身分為基礎和以資源為基礎的政策的範例
<a name="reference_policies_evaluation-logic_policies_evaluation_example"></a>

最常見的政策類型是以身分為基礎的政策和以資源為基礎的政策。請求存取資源時， 會針對同一帳戶內**至少一個允許** AWS ，評估政策授予的所有許可。所有政策中的明確拒絕都會覆寫該允許。

**重要**  
如果在相同帳戶中，身分型政策和資源型政策中的任意一項政策允許請求而另一項不允許，則請求仍將被允許。

假設 Carlos 有使用者名稱 `carlossalazar`，他嘗試儲存檔案到 `amzn-s3-demo-bucket-carlossalazar-logs` Amazon S3 儲存貯體。

另外，也假設以下政策已連接到 `carlossalazar` IAM 使用者。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowS3ListRead",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowS3Self",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar/*",
                "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar"
            ]
        },
        {
            "Sid": "DenyS3Logs",
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::*log*"
        }
    ]
}
```

------

此政策中的 `AllowS3ListRead` 陳述式允許 Carlos 檢視帳戶中的所有儲存貯體的清單。`AllowS3Self` 陳述式允許 Carlos 完整存取名稱和他的使用者名稱完全相同的儲存貯體。`DenyS3Logs` 陳述式拒絕 Carlos 存取名稱中包含 `log` 的任何 S3 儲存貯體。

此外，以下以資源為基礎的政策 (稱為儲存貯體政策) 已連接到 `amzn-s3-demo-bucket-carlossalazar` 儲存貯體。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/carlossalazar"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar/*",
                "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar"
            ]
        }
    ]
}
```

------

此政策指定只有 `carlossalazar` 使用者可以存取 `amzn-s3-demo-bucket-carlossalazar` 儲存貯體。

當 Carlos 提出將檔案儲存至儲存`amzn-s3-demo-bucket-carlossalazar-logs`貯體的請求時， AWS 會決定哪些政策適用於請求。在這種情況下，只有以身分為基礎的政策和以資源為基礎的政策適用。這兩者都是許可政策。由於未套用許可界限，評估邏輯會降低到以下邏輯。

![\[評估流程圖\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/EffectivePermissionsShort.png)


AWS 會先檢查套用到請求內容的`Deny`陳述式。它找到一個，因為以身分為基礎的政策明確拒絕 Carlos 存取任何用於記錄的 S3 儲存貯體。Carlos 存取遭拒。

假設他發現自己的錯誤，並嘗試將檔案儲存到儲存`amzn-s3-demo-bucket-carlossalazar`貯體。 AWS 檢查是否有`Deny`陳述式，但找不到。接著檢查許可政策。身分類型政策和資源類型政策都允許請求。因此， AWS 允許請求。如果其中一個元素明確拒絕陳述式、請求會被拒絕。如果其中一種政策類型允許請求，但另一種則不允許，則仍會允許請求。

# 跨帳戶政策評估邏輯
<a name="reference_policies_evaluation-logic-cross-account"></a>

您可以允許一個帳戶中的主體存取第二個帳戶中的資源。這稱為跨帳戶存取。當您允許跨帳戶存取時，主體所在的帳戶稱為*受信任*帳戶。資源所在的帳戶是*信任*帳戶。

若要允許跨帳戶存取，請將以資源為基礎的政策連接至您要共用的資源。您也必須將身分型政策連接至在請求中扮演主體的身分。信任帳戶中的資源型政策，必須指定具有資源存取權的受信任帳戶主體。您可以指定整個帳戶或其 IAM 使用者、 AWS STS 聯合身分使用者主體、IAM 角色或擔任角色的工作階段。您也可以將 AWS 服務指定為委託人。如需詳細資訊，請參閱[如何指定主體](reference_policies_elements_principal.md#Principal_specifying)。

主體的以身分為基礎的政策，必須允許要求存取信任服務中的資源。可以指定資源的 ARN 來執行此操作。

在 IAM 中，您可以將以資源為基礎的政策連接至 IAM 角色，以允許其他帳戶中的主體擔任該角色。角色的以資源為基礎的政策稱為角色信任政策。擔任該角色之後，允許的主體可以使用產生的臨時憑證，以存取您帳戶中的多個資源。此存取是在角色的以身分為基礎的許可政策中定義。若要了解使用角色允許跨帳戶存取，與使用其他以資源為基礎的政策允許跨帳戶存取有何不同，請參閱 [IAM 中的跨帳戶資源存取](access_policies-cross-account-resource-access.md)。

**重要**  
其他服務會影響政策評估邏輯。例如， AWS Organizations 支援可套用至一或多個帳戶中主體和資源[的服務控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)[和資源控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。 AWS Resource Access Manager 支援政策片段，以控制允許主體對與其共用的資源執行哪些動作。 [https://docs.aws.amazon.com/ram/latest/userguide/permissions.html](https://docs.aws.amazon.com/ram/latest/userguide/permissions.html)

## 決定是否允許跨帳戶請求
<a name="policy-eval-cross-account"></a>

對於跨帳戶請求，受信任 `AccountA` 中的請求者必須具有以身分為基礎的政策。該政策必須允許他們對信任 `AccountB` 中的資源提出請求。此外，`AccountB` 中以資源為基礎的政策，必須允許 `AccountA` 中的請求者存取資源。

當您提出跨帳戶請求時， 會 AWS 執行兩項評估。 會 AWS 評估信任帳戶和信任帳戶中的請求。如需有關如何在單一帳戶內評估請求的詳細資訊，請參閱 [AWS 強制執行程式碼邏輯如何評估允許或拒絕存取的請求](reference_policies_evaluation-logic_policy-eval-denyallow.md)。只有當兩項評估都傳回 `Allow` 決定時，才允許此請求。

![\[跨帳戶評估\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/policy_cross-account-eval-simple.png)


1. 當一個帳戶中的主體請求存取另一個帳戶中的資源時，就稱為跨帳戶請求。

1. 提出請求的主體存在於受信任帳戶中 (`AccountA`)。 AWS 評估此帳戶時會檢查以身分為基礎的政策，以及可限制以身分為基礎的政策的任何政策。如需詳細資訊，請參閱[搭配許可界限來評估以身分為基礎的政策](reference_policies_evaluation-logic.md#policy-eval-basics-id-bound)。

1. 所請求的資源存在於信任帳戶中 (`AccountB`)。 AWS 評估此帳戶時會檢查連接至所請求資源的以資源為基礎的政策，以及可限制以資源為基礎的政策的任何政策。如需詳細資訊，請參閱[搭配以資源為基礎的政策來評估以身分為基礎的政策](reference_policies_evaluation-logic.md#policy-eval-basics-id-rdp)。

1. AWS 只有在兩個帳戶政策評估都允許請求時， 才會允許請求。

下列流程圖更詳細地說明如何針對跨帳戶請求作出政策評估決策。同樣地，只有在兩個帳戶政策評估都 AWS 允許請求時， 才會允許請求。

![\[詳細的跨帳戶政策評估\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/PolicyEvaluationCrossAccount.png)


## 跨帳戶政策評估範例
<a name="policies_evaluation_example-cross-account"></a>

下列範例示範一個帳戶中的角色由第二個帳戶中資源型政策授予許可的案例。

假設 Carlos 是開發人員，而且他在帳戶 111111111111 中是名為 `Demo` 的 IAM 角色。他想將檔案儲存至帳戶 222222222222 中的 `amzn-s3-demo-bucket-production-logs` Amazon S3 儲存貯體。

另外，也假設以下政策已連接到 `Demo` IAM 角色。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowS3ListRead",
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "*"
        },
        {
            "Sid": "AllowS3ProductionObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object*",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-production/*"
        },
        {
            "Sid": "DenyS3Logs",
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::*log*",
                "arn:aws:s3:::*log*/*"
            ]
        }
    ]
}
```

------

此政策中的 `AllowS3ListRead` 陳述式允許 Carlos 檢視 Amazon S3 中所有儲存貯體的清單。`AllowS3ProductionObjectActions` 陳述式允許 Carlos 完整存取 `amzn-s3-demo-bucket-production` 儲存貯體中的物件。

此外，以下以資源為基礎的政策 (稱為儲存貯體政策) 已連接至帳戶 222222222222 中的 `amzn-s3-demo-bucket-production` 儲存貯體。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject*",
                "s3:PutObject*",
                "s3:ReplicateObject",
                "s3:RestoreObject"
            ],
            "Principal": { "AWS": "arn:aws:iam::111111111111:role/Demo" },
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-production/*"
        }
    ]
}
```

------

此政策允許 `Demo` 角色存取 `amzn-s3-demo-bucket-production` 儲存貯體中的物件。角色可建立與編輯儲存貯體中的物件，但不能刪除。角色無法管理儲存貯體本身。

當 Carlos 提出將檔案儲存至儲存`amzn-s3-demo-bucket-production-logs`貯體的請求時， AWS 會決定哪些政策適用於請求。在此情況下，連接至 `Demo` 角色的身分型政策是帳戶 `111111111111` 中唯一套用的政策。在帳戶 `222222222222` 中，沒有任何以資源為基礎的政策連接至 `amzn-s3-demo-bucket-production-logs` 儲存貯體。當 AWS 評估帳戶 時`111111111111`，會傳回 的決策`Deny`。這是因為以身分為基礎的政策中的 `DenyS3Logs` 陳述式，明確拒絕存取任何日誌儲存貯體。如需有關如何在單一帳戶內評估請求的詳細資訊，請參閱 [AWS 強制執行程式碼邏輯如何評估允許或拒絕存取的請求](reference_policies_evaluation-logic_policy-eval-denyallow.md)。

因為其中一個帳戶內明確拒絕請求，所以最終決定是拒絕請求。

![\[針對 amzn-s3-demo-bucket-production-logs 儲存貯體的請求\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/policy_cross-account-eval-example.png)


假設 Carlos 接著發現他的錯誤，並嘗試將檔案儲存至 `Production`儲存貯體。 AWS 首先 會檢查帳戶`111111111111`，以判斷是否允許請求。只有身分型政策適用，且允許 request. AWS then 檢查帳戶 `222222222222`。只有連接至 `Production` 儲存貯體的以資源為基礎的政策才會套用，並允許請求。因為這兩個帳戶都允許請求，所以最終決定是允許請求。

![\[對 Production 儲存貯體的請求\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/policy_cross-account-eval-example-correct.png)


# 明確和隱含拒絕之間的差異
<a name="reference_policies_evaluation-logic_AccessPolicyLanguage_Interplay"></a>

如果適用的請求包含 `Deny` 陳述式，請求會導致明確拒絕。如果套用到請求的政策包含 `Allow` 陳述式和 `Deny` 陳述式，則 `Deny` 陳述式勝過 `Allow` 陳述式。請求明確遭拒。

如果沒有適用的 `Deny` 陳述式，也沒有適用的 `Allow` 陳述式，則會發生暗中拒絕。由於預設拒絕存取 IAM 主體，他們必須明確獲允許執行動作。否則，會暗中拒絕他們存取。

當您設計授權策略時，您必須建立具 `Allow` 陳述式的政策，讓您的主體成功發出請求。不過，您可以選擇明確和暗中拒絕的任意組合。

例如，您可以建立下列政策，其中包含允許的動作、隱含拒絕的動作以及明確拒絕的動作。此 `AllowGetList` 陳述式**允許**對以字首 `Get` 和 `List` 開頭的 IAM 動作的唯讀存取。IAM 中的所有其他動作，例如 `iam:CreatePolicy`，則被**隱含拒絕**。此 `DenyReports` 陳述式**明確拒絕**存取 IAM 報告，方法是拒絕存取包含 `Report` 尾碼的動作，例如 `iam:GetOrganizationsAccessReport`。如果有人向此主體新增其他政策，以授予他們對 IAM 報告的存取權，例如 `iam:GenerateCredentialReport`，則由於存在此明確拒絕，報告相關的要求仍然被拒絕。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowGetList",
            "Effect": "Allow",
            "Action": [
                "iam:Get*",
                "iam:List*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "DenyReports",
            "Effect": "Deny",
            "Action": "iam:*Report",
            "Resource": "*"
        }
    ]
}
```

------

# IAM JSON 政策語言的文法
<a name="reference_policies_grammar"></a>

此頁面介紹用來在 IAM 中建立 JSON 政策語言的正式文法。我們展示此文法，以便您可以了解如何建構和驗證政策。

如需政策的範例，請參閱下列主題：
+ [中的政策和許可 AWS Identity and Access Management](access_policies.md)
+ [以身分為基礎的 IAM 政策範例](access_policies_examples.md)
+ [使用 Amazon EC2 主控台的範例政策](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-ec2-console.html)，以及 Amazon [ Amazon EC2 使用者指南中的使用 AWS CLI、Amazon EC2 CLI 或 AWS SDK 的範例政策](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html)。 *Amazon EC2 * 
+  *Amazon Simple Storage Service 使用者指南*中的[儲存貯體政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)和[使用者政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-policies-s3.html)。

如需其他 AWS 服務中使用的政策範例，請前往這些服務的文件。

**Topics**
+ [政策語言和 JSON](#policies-grammar-json)
+ [此文法中使用的慣例](#policies-grammar-conventions)
+ [文法](#policies-grammar-bnf)
+ [政策文法備註](#policies-grammar-notes)

## 政策語言和 JSON
<a name="policies-grammar-json"></a>

以 JSON 表達的政策。當您建立或編輯 JSON 政策時，IAM 可以執行政策驗證以協助您建立有效的政策。IAM 會識別 JSON 語法錯誤，而 IAM Access Analyzer 會提供額外的政策檢查及建議，協助您進一步改良政策。若要進一步了解政策驗證的資訊，請參閱 [IAM 政策驗證](access_policies_policy-validator.md)。若要進一步了解 IAM Access Analyzer 政策檢查和可動作的建議，請參閱 [IAM Access Analyzer 政策驗證](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。

在本文件中，我們不提供哪些資料構成有效 JSON 的完整說明。不過，以下是一些基本 JSON 規則：
+ 個別實體間允許空格。
+ 值以雙引號括住。雙引號對於數字和布林值為選用。
+ 許多元素 (例如，`action_string_list` 和 `resource_string_list`) 可將 JSON 陣列當作值。陣列可以使用一個或多個值。如果包含多個值，陣列會在方括號 (`[` 和 `]`) 中並以逗號分隔，如以下範例所示：

  `"Action" : ["ec2:Describe*","ec2:List*"]`
+ 基本 JSON 資料類型 (布林值、數字及字串) 是在 [RFC 7159](https://datatracker.ietf.org/doc/html/rfc7159) 中定義。

## 此文法中使用的慣例
<a name="policies-grammar-conventions"></a>

此文法中使用以下慣例：
+ 下列字元是 JSON 權杖，並且「包含」**在政策中：

  `{ } [ ] " , :`
+ 下列字元在文法中為特殊字元，並且「不」**包含在政策中：

  `= < > ( ) |`
+ 如果某個元素允許多個值，它會使用重複值、逗號分隔符號和省略符號 (`...`) 來表示。範例：

  `[<action_string>, <action_string>, ...]`

  `<principal_map> = { <principal_map_entry>, <principal_map_entry>, ... }`

  如果允許多個值，只包含一個值也屬有效。對於僅有一個值，必須省略尾端逗號。如果元素使用陣列 (以 [ 和 ] 標註)，但只包含一個值，則括號為選用。範例：

  `"Action": [<action_string>]`

  `"Action": <action_string>`
+ 某個元素後的問號 (`?`) 表示該元素為選用。範例：

  <`version_block?>`

  不過，有關選用元素的詳細資訊，請務必參照文法清單後的注意事項。
+ 元素之間的垂直線 (`|`) 表示替代方案。在文法中，括號定義替代方案的範圍。範例：

  `("Principal" | "NotPrincipal")` 
+ 必須為文字字串的元素會加上雙引號 (`"`)。範例：

  `<version_block> = "Version" : ("2008-10-17" | "2012-10-17" )`

如需其他注意事項，請參閱文法清單後的[政策文法備註](#policies-grammar-notes)。

## 文法
<a name="policies-grammar-bnf"></a>

以下清單說明政策語言文法。如需清單中所使用的慣例，請參閱上一節。如需其他資訊，請參閱後續的注意事項。

**注意**  
此文法描述以版本 `2008-10-17 ` 和 `2012-10-17 ` 標記的政策。`Version` 政策元素與政策版本不同。`Version` 政策元素是在政策內使用，並定義政策語言的版本。另一方面，政策版本會在您在 IAM 中變更客戶受管政策時建立。變更的政策不會覆寫現有的政策。IAM 反而會建立新版本的受管政策。若要進一步了解 `Version` 政策元素，請參閱 [IAM JSON 政策元素：Version](reference_policies_elements_version.md)。若要進一步了解政策版本，請參閱 [版本控制 IAM 政策](access_policies_managed-versioning.md)。

```
policy  = {
     <version_block?>,
     <id_block?>,
     <statement_block>
}

<version_block> = "Version" : ("2008-10-17"		 	 	  | "2012-10-17"		 	 	 )

<id_block> = "Id" : <policy_id_string>

<statement_block> = "Statement" : [ <statement>, <statement>, ... ]

<statement> = { 
    <sid_block?>,
    <principal_block?>,
    <effect_block>,
    <action_block>,
    <resource_block>,
    <condition_block?>
}

<sid_block> = "Sid" : <sid_string>

<effect_block> = "Effect" : ("Allow" | "Deny")  

<principal_block> = ("Principal" | "NotPrincipal") : ("*" | <principal_map>)

<principal_map> = { <principal_map_entry>, <principal_map_entry>, ... }

<principal_map_entry> = ("AWS" | "Federated" | "Service" | "CanonicalUser") :   
    [<principal_id_string>, <principal_id_string>, ...]

<action_block> = ("Action" | "NotAction") : 
    ("*" | <action_string> | [<action_string>, <action_string>, ...])

<resource_block> = ("Resource" | "NotResource") : 
    : ("*" | <resource_string> | [<resource_string>, <resource_string>, ...])

<condition_block> = "Condition" : { <condition_map> }
<condition_map> = { 
  <condition_type_string> : { <condition_key_string> : <condition_value_list> },
  <condition_type_string> : { <condition_key_string> : <condition_value_list> }, ...
}  
<condition_value_list> = [<condition_value>, <condition_value>, ...]
<condition_value> = (<condition_value_string> | <condition_value_string> | <condition_value_string>)
```

## 政策文法備註
<a name="policies-grammar-notes"></a>
+ 單一政策可包含一系列的陳述式。
+ 政策大小上限為 2048 個字元和 10,240 個字元，取決於政策所連接的實體。如需詳細資訊，請參閱 [IAM AWS STS 和配額](reference_iam-quotas.md)。政策大小的計算不包含空格字元。
+ 個別元素不得包含相同索引鍵的多個執行個體。例如，您不能在同一個陳述式中包含兩次 `Effect` 區塊。
+ 區塊可以任何順序顯示。例如，政策中 `version_block` 可以在 `id_block` 之後。同樣地，`effect_block`、`principal_block`、`action_block` 可以在陳述式內以任何順序顯示。
+ `id_block` 在以資源為基礎的政策中為選用。身分類型政策「不」**得包含它。
+ 以資源為基礎的政策和 IAM 角色的信任政策需要 `principal_block` 元素 (例如，在 Amazon S3 儲存貯體政策中)。身分類型政策「不」**得包含它。
+ Amazon S3 儲存貯體政策中的 `principal_map` 元素可以包含 `CanonicalUser` ID。大多數以資源為基礎的政策不支援此映射。若要進一步了解有關在儲存貯體政策中使用正式使用者 ID，請參閱 *Amazon Simple Storage Service 使用者指南*中的[在政策中指定主體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-bucket-user-policy-specifying-principal-intro.html)。
+ 每個字串值 (`policy_id_string`、`sid_string`、`principal_id_string`、`action_string`、`resource_string`、`condition_type_string`、`condition_key_string` 和字串版本的 `condition_value`) 可以有自己的最低和最大長度限制、特定允許的值，或是必要的內部格式。

### 有關字串值的備註
<a name="policies-grammar-notes-strings"></a>

本節提供有關在政策的不同元素中使用字串值的其他資訊。

**`action_string`**  
包含服務命名空間、冒號和動作的名稱。動作名稱可以包含萬用字元。範例：  

```
"Action":"ec2:StartInstances"

"Action":[
  "ec2:StartInstances",
  "ec2:StopInstances"
]

"Action":"cloudformation:*"

"Action":"*"

"Action":[
  "s3:Get*",
  "s3:List*"
]
```

**`policy_id_string`**  
提供方式以包含有關政策的資訊。有些服務 (例如 Amazon SQS 和 Amazon SNS) 在預留方式中使用 `Id` 元素。除非按個別服務進行限制，否則 policy\$1id\$1string 可以包含空格。有些服務需要此值在 AWS 帳戶中為唯一。  
以資源為基礎的政策中允許 `id_block`，但是以身分為基礎的政策不允許。
長度並沒有限制，雖然此字串對政策的整體長度有影響，但是有限的。  

```
"Id":"Admin_Policy"

"Id":"cd3ad3d9-2776-4ef1-a904-4c229d1642ee"
```

**`sid_string`**  
提供方式以包含有關個別陳述式的資訊。對於 IAM 政策，`Sid` 值只允許使用基本英數字元 (A-Z、a-z、0-9)。支援資源政策的其他 AWS 服務可能對 `Sid` 值有其他要求。例如，某些服務要求此值在 中是唯一的 AWS 帳戶，而某些服務允許額外的字元，例如`Sid`值中的空格。  

```
"Sid":"1" 

"Sid": "ThisStatementProvidesPermissionsForConsoleAccess"
```

**`principal_id_string`**  
提供使用 、IAM 使用者 AWS 帳戶、IAM 角色、聯合身分使用者或擔任角色使用者 的 [*Amazon Resource Name* (ARN)](reference_identifiers.md#identifiers-arns) 來指定委託人的方法。對於 AWS 帳戶，您也可以使用簡短格式，`AWS:accountnumber`而不是完整的 ARN。如需包含 AWS 服務、擔任角色等等所有選項，請參閱[如何指定主體](reference_policies_elements_principal.md#Principal_specifying)。  
請注意，您只能使用 \$1 來指定「每個人/匿名」。您不能使用它來指定 ARN 的部分名稱。

**`resource_string`**  
在大部分情況下，包含 [Amazon Resource Name (ARN)](reference_identifiers.md#identifiers-arns)。您可以在 ARN 的資源部分中使用萬用字元 (\$1 和 ？)。如需有關在 ARN 中使用萬用字元的詳細資訊，請參閱[在路徑中使用萬用字元](reference-arns.md#arns-paths-wildcards)。  
當您在身分型政策中指定不完整的 ARN （少於標準六個欄位） 時， AWS 會自動將萬用字元 (\$1) 新增至所有缺少的欄位，以完成 ARN。例如，指定 `arn:aws:sqs` 等同於 `arn:aws:sqs:*:*:*`，這會授予所有區域和帳戶所有 Amazon SQS 資源的存取權。不過，傳遞至 AWS STS AssumeRole、AssumeRoleWithWebIdentity 和 AssumeRoleWithSAML 請求的工作階段政策不支援不完整ARNs。在工作階段政策中使用不完整的 ARN 將導致`MalformedPolicyDocumentException`錯誤。

```
"Resource":"arn:aws:iam::123456789012:user/Bob"

"Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*"
```

**`condition_type_string`**  
識別要測試條件的類型，例如 `StringEquals`、`StringLike`、`NumericLessThan`、`DateGreaterThanEquals`、`Bool`、`BinaryEquals`、`IpAddress`、`ArnEquals` 等。如需資料類型的完整清單，請參閱 [IAM JSON 政策元素：條件運算子](reference_policies_elements_condition_operators.md)。  

```
"Condition": {
  "NumericLessThanEquals": {
    "s3:max-keys": "10"
  }
}

"Condition": {
  "Bool": {
    "aws:SecureTransport": "true"
  }
}

"Condition": {
  "StringEquals": {
      "s3:x-amz-server-side-encryption": "AES256"
   }
}
```

**`condition_key_string`**  
識別要測試其值以判斷是否符合條件的條件金鑰。 AWS 定義一組可用於所有 AWS 服務的條件金鑰，包括 `aws:PrincipalType`、 `aws:SecureTransport`和 `aws:userid`。  
如需 AWS 條件索引鍵的清單，請參閱 [AWS 全域條件內容索引鍵](reference_policies_condition-keys.md)。如需服務特定的條件金鑰，請參閱該服務的文件，例如下列：  
+ *Amazon Simple Storage Service 使用者指南*中的[在政策中指定條件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html)
+ 《Amazon EC2 使用者指南》中的 [Amazon EC2 的 IAM 政策](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html)。**

```
"Condition":{
  "Bool": {
      "aws:SecureTransport": "true"
   }
}

"Condition": {
  "StringNotEquals": {
      "s3:x-amz-server-side-encryption": "AES256"
   }
}

"Condition": {
  "StringEquals": {
    "aws:ResourceTag/purpose": "test"
  }
}
```

**`condition_value_string`**  
識別決定是否符合條件的 condition\$1key\$1string 的值。如需條件類型有效值的完整清單，請參閱 [IAM JSON 政策元素：條件運算子](reference_policies_elements_condition_operators.md)。  

```
"Condition":{
  "ForAnyValue:StringEquals": {
		"dynamodb:Attributes": [
			"ID",
			"PostDateTime"
  	      ]
  }
}
```

# AWS 任務函數的 受管政策
<a name="access_policies_job-functions"></a>

我們建議使用[授予最低權限](best-practices.md#grant-least-privilege)的政策，或僅授予執行任務所需的許可。授予最低權限的最安全方式是撰寫僅具有團隊所需許可的自訂政策。您必須建立程序，以允許您的團隊在必要時要求更多許可。[建立 IAM 客戶受管政策](access_policies_create-console.md)需要時間和專業知識，而受管政策可為您的團隊提供其所需的許可。

若要開始將許可新增至 IAM 身分 （使用者、使用者群組和角色），您可以使用 [AWS 受管政策](access_policies_managed-vs-inline.md#aws-managed-policies)。 AWS 受管政策涵蓋常見的使用案例，並可在 中使用 AWS 帳戶。 AWS 受管政策不會授予最低權限許可。若授予主體的許可超出執行任務所需的許可，您必須考量其相關的安全性風險。

您可以將 AWS 受管政策，包括任務函數，連接到任何 IAM 身分。若要切換到最低權限許可，您可以執行 AWS Identity and Access Management 和 Access Analyzer 以使用 AWS 受管政策監控主體。了解他們正在使用哪些許可後，您可以撰寫自訂政策或產生僅具有團隊所需許可的政策。這較不安全，但在您了解團隊使用的方式時提供更多彈性 AWS。

AWS 工作職能的 受管政策旨在與 IT 產業中的常見工作職能密切一致。您可以使用這些政策來授予執行特定任務角色中的某人所預期的任務所需的許可權。這些政策將許多服務的許可整合到單一政策，以便更輕鬆地使用分散在許多政策中的許可。

**使用角色來結合服務**  
有些政策使用 IAM 服務角色來協助您利用其他 AWS 服務中找到的功能。這些政策會授予 的存取權`iam:passrole`，這可讓具有 政策的使用者將角色傳遞給 AWS 服務。此角色會將 IAM 許可委派給 AWS 服務，以代表您執行動作。

您必須根據您的需求建立角色。例如，網路管理員政策可讓具有政策的使用者將名為「flow-logs-vpc」的角色傳遞到 Amazon CloudWatch 服務。CloudWatch 使用該角色來記錄和擷取 IP 流量和使用者所建立的 VPC。

為了遵守安全性最佳實務，工作職能的政策包含篩選條件，其會限制可傳遞的有效角色的名稱。這有助於避免授予不必要的許可。如果您的使用者確實選用的服務角色，則您必須建立遵照政策中指定的命名慣例的角色。然後，將許可授予角色。完成後，使用者就可以設定服務以使用角色，授予它角色提供的許可。

在以下區段，每個政策的名稱是連到 AWS 管理主控台中政策詳細資訊頁面的連結。您可以在那裡查看政策文件並檢閱其授予的許可。

## 管理員任務角色
<a name="jf_administrator"></a>

**AWS 受管政策名稱：** [AdministratorAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AdministratorAccess)

**使用案例：**此使用者具有完整的存取權，可委派許可給 AWS中的每個服務和資源。

**政策更新：** AWS 維護和更新此政策。如需此政策的變更記錄，請在 IAM 主控台中檢視政策，然後選擇 **Policy versions** (政策版本) 索引標籤。如需有關任務角色政策更新的詳細資訊，請參閱 [工作職能的 AWS 受管政策更新](#security-iam-awsmanpol-jobfunction-updates)。

**政策描述：**此政策會針對帳戶中的所有 AWS 服務和所有資源授予所有動作。如需受管政策的詳細資訊，請參閱 *AWS Managed Policy Reference Guide* 中的 [AdministratorAccess](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/AdministratorAccess.html)。

**注意**  
您必須先啟用 IAM 使用者和角色存取， IAM 使用者或角色才能使用此政策中的許可存取 AWS 帳單與成本管理 主控台。若要執行此操作，請遵循[將存取權授予帳單主控台](getting-started-account-iam.md)中的指示，將存取權委派給帳單主控台。

## 帳單任務角色
<a name="jf_accounts-payable"></a>

**AWS 受管政策名稱：**[帳單](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/Billing)

**使用案例：**此使用者需要檢視帳單資訊、設定付款和授權付款。使用者可以監控整個 AWS 服務累積的成本。

**政策更新：** AWS 維護和更新此政策。如需此政策的變更記錄，請在 IAM 主控台中檢視政策，然後選擇 **Policy versions** (政策版本) 索引標籤。如需有關任務角色政策更新的詳細資訊，請參閱 [工作職能的 AWS 受管政策更新](#security-iam-awsmanpol-jobfunction-updates)。

**政策描述：**此政策授予完整許可，以管理帳單、成本、付款方法、預算和報告。如需其他成本管理政策範例，請參閱《AWS 帳單與成本管理 使用者指南》**中的 [AWS Billing 政策範例](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-example-policies.html) 如需受管政策的詳細資訊，請參閱 *AWS Managed Policy Reference Guide* 中的 [Billing](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/Billing.html)。

**注意**  
您必須先啟用 IAM 使用者和角色存取， IAM 使用者或角色才能使用此政策中的許可存取 AWS 帳單與成本管理 主控台。若要執行此操作，請遵循[將存取權授予帳單主控台](getting-started-account-iam.md)中的指示，將存取權委派給帳單主控台。

## 資料庫管理員任務角色
<a name="jf_database-administrator"></a>

**AWS 受管政策名稱：**[DatabaseAdministrator](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/DatabaseAdministrator)

**使用案例：**此使用者在 AWS 雲端中設定、設定和維護資料庫。

**政策更新：** AWS 維護和更新此政策。如需此政策的變更記錄，請在 IAM 主控台中檢視政策，然後選擇 **Policy versions** (政策版本) 索引標籤。如需有關任務角色政策更新的詳細資訊，請參閱 [工作職能的 AWS 受管政策更新](#security-iam-awsmanpol-jobfunction-updates)。

**政策描述：**此政策授予許可，以建立、設定和維護資料庫。它包括對 AWS 資料庫服務的存取，例如 Amazon DynamoDB、Amazon Relational Database Service (RDS) 和 Amazon Redshift。查看政策以了解此政策支援之資料庫服務的完整清單。如需受管政策的詳細資訊，請參閱 *AWS Managed Policy Reference Guide* 中的 [DatabaseAdministrator](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/DatabaseAdministrator.html)。

此任務函數政策支援將角色傳遞至 AWS 服務的能力。政策只針對下表中所命名的那些角色允許 `iam:PassRole` 動作。如需詳細資訊，請參閱本主題稍後的 [建立角色和連接政策 (主控台)](access_policies_job-functions_create-policies.md)。


| 使用案例 | 角色名稱 (\$1 是萬用字元) | 要選擇的服務角色類型 | 選取此 AWS 受管政策 | 
| --- | --- | --- | --- | 
| 允許使用者監控 RDS 資料庫 | [rds-monitoring-role](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html) | 增強監控的 Amazon RDS 角色 | [AmazonRDSEnhancedMonitoringRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonRDSEnhancedMonitoringRole) | 
| 允許 AWS Lambda 監控您的資料庫並存取外部資料庫 | [rdbms-lambda-access](https://aws.amazon.com/blogs/big-data/from-sql-to-microservices-integrating-aws-lambda-with-relational-databases) | Amazon EC2 | [AWSLambda\$1FullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSLambda_FullAccess) | 
| 允許 Lambda 使用 DynamoDB 將檔案上傳至 Amazon S3 和 Amazon Redshift 叢集 | [lambda\$1exec\$1role](https://aws.amazon.com/blogs/big-data/a-zero-administration-amazon-redshift-database-loader) | AWS Lambda | 如 [AWS 大數據部落格](https://aws.amazon.com/blogs/big-data/a-zero-administration-amazon-redshift-database-loader)中所定義建立新的受管政策 | 
| 允許 Lambda 函數作為您 DynamoDB 表格的觸發條件 | [lambda-dynamodb-\$1](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html) | AWS Lambda | [AWSLambdaDynamoDBExecutionRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaDynamoDBExecutionRole) | 
| 允許 Lambda 函數存取 VPC 中的 Amazon RDS | [lambda-vpc-execution-role](https://docs.aws.amazon.com/lambda/latest/dg/vpc-rds.html) | 如 [AWS Lambda 開發人員指南](https://docs.aws.amazon.com/lambda/latest/dg/vpc-rds.html) 中所定義使用信任政策建立角色 | [AWSLambdaVPCAccessExecutionRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole) | 
| 允許 AWS Data Pipeline 存取您的 AWS 資源 | [DataPipelineDefaultRole](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) | 如 [AWS Data Pipeline 開發人員指南](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) 中所定義使用信任政策建立角色 |  AWS Data Pipeline 文件會列出此使用案例所需的許可。請參閱 [的 IAM 角色 AWS Data Pipeline](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) | 
| 允許在 Amazon EC2 執行個體上執行的應用程式存取您的 AWS 資源 | [DataPipelineDefaultResourceRole](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) | 如 [AWS Data Pipeline 開發人員指南](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) 中所定義使用信任政策建立角色 | [AmazonEC2RoleforDataPipelineRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforDataPipelineRole) | 

## 資料科學家任務角色
<a name="jf_data-scientist"></a>

**AWS 受管政策名稱：**[DataScientist](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/DataScientist)

**使用案例：**此使用者執行 Hadoop 工作和查詢。使用者也會存取和分析資料分析和商業智慧的資訊。

**政策更新：** AWS 維護和更新此政策。如需此政策的變更記錄，請在 IAM 主控台中檢視政策，然後選擇 **Policy versions** (政策版本) 索引標籤。如需有關任務角色政策更新的詳細資訊，請參閱 [工作職能的 AWS 受管政策更新](#security-iam-awsmanpol-jobfunction-updates)。

**政策描述：**此政策授予許可，以在 Amazon EMR 叢集上建立、管理和執行查詢，並使用 Amazon QuickSight 等工具執行資料分析。此政策包括存取其他資料科學家服務，例如 Amazon EC2 AWS Data Pipeline、Amazon Kinesis、Amazon Machine Learning 和 SageMaker AI。查看政策以了解此政策支援之資料科學家服務的完整清單。如需受管政策的詳細資訊，請參閱 *AWS Managed Policy Reference Guide* 中的 [DataScientist](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/DataScientist.html)。

此任務函數政策支援將角色傳遞至 AWS 服務的能力。一個陳述式允許傳遞任何角色到 SageMaker AI。另外一個陳述式只針對下表中所命名的那些角色允許 `iam:PassRole` 動作。如需詳細資訊，請參閱本主題稍後的 [建立角色和連接政策 (主控台)](access_policies_job-functions_create-policies.md)。


| 使用案例 | 角色名稱 (\$1 是萬用字元) | 要選擇的服務角色類型 | AWS 要選取的 受管政策 | 
| --- | --- | --- | --- | 
| 允許 Amazon EC2 執行個體存取適合叢集的服務和資源 | [EMR-EC2\$1DefaultRole](https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-iam-roles-defaultroles.html) | Amazon EMR for EC2  | [AmazonElasticMapReduceforEC2Role](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role) | 
| 允許 Amazon EMR 存取適用於叢集的 Amazon EC2 服務和資源 | [EMR\$1DefaultRole](https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-iam-roles-defaultroles.html) | Amazon EMR | [AmazonEMRServicePolicy\$1v2](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEMRServicePolicy_v2) | 
| 允許 Kinesis Managed Service for Apache Flink 存取串流資料來源 | [kinesis-\$1](https://aws.amazon.com/blogs/big-data/a-zero-administration-amazon-redshift-database-loader) | 如 [AWS 大數據部落格](https://aws.amazon.com/blogs/big-data/a-zero-administration-amazon-redshift-database-loader)中所定義使用信任政策建立角色。 | 請參閱 [AWS 大數據部落格](https://aws.amazon.com/blogs/big-data/a-zero-administration-amazon-redshift-database-loader)，其根據您的使用案例概述四個可能的選項 | 
| 允許 AWS Data Pipeline 存取您的 AWS 資源 | [DataPipelineDefaultRole](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) | 如 [AWS Data Pipeline 開發人員指南](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) 中所定義使用信任政策建立角色 |  AWS Data Pipeline 文件會列出此使用案例所需的許可。請參閱適用於 [的 IAM 角色 AWS Data Pipeline](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) | 
| 允許在 Amazon EC2 執行個體上執行的應用程式存取您的 AWS 資源 | [DataPipelineDefaultResourceRole](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) | 如 [AWS Data Pipeline 開發人員指南](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) 中所定義使用信任政策建立角色 | [AmazonEC2RoleforDataPipelineRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforDataPipelineRole) | 

## 開發人員進階使用者任務角色
<a name="jf_developer-power-user"></a>

**AWS 受管政策名稱：**[PowerUserAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/PowerUserAccess)

**使用案例：**此使用者執行應用程式開發任務，並可以建立和設定支援 AWS 感知應用程式開發的資源和服務。

**政策更新：** AWS 維護和更新此政策。如需此政策的變更記錄，請在 IAM 主控台中檢視政策，然後選擇 **Policy versions** (政策版本) 索引標籤。如需有關任務角色政策更新的詳細資訊，請參閱 [工作職能的 AWS 受管政策更新](#security-iam-awsmanpol-jobfunction-updates)。

**政策描述：**此政策的第一個陳述式使用 [`NotAction`](reference_policies_elements_notaction.md)元素來允許所有 AWS 服務和所有資源的所有動作 AWS Identity and Access Management，但 AWS Organizations和 除外 AWS 帳戶管理。第二個陳述式則會授予可建立服務連結角色的 IAM 許可。如果某些服務必須存取其他服務中的資源 (例如 Amazon S3 儲存貯體)，則這是必要的。它還授予 AWS Organizations 許可來檢視有關使用者組織的資訊，包括管理帳戶電子郵件和組織限制。雖然此政策會限制 IAM AWS Organizations，但如果啟用 IAM Identity Center，則會允許使用者執行所有 IAM Identity Center 動作。它還授予帳戶管理許可，以檢視為帳戶啟用或停用哪些 AWS 區域。

## 網路管理員任務角色
<a name="jf_network-administrator"></a>

**AWS 受管政策名稱：**[NetworkAdministrator](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/NetworkAdministrator)

**使用案例：**此使用者的任務是設定和維護 AWS 網路資源。

**政策更新：** AWS 維護和更新此政策。如需此政策的變更記錄，請在 IAM 主控台中檢視政策，然後選擇 **Policy versions** (政策版本) 索引標籤。如需有關任務角色政策更新的詳細資訊，請參閱 [工作職能的 AWS 受管政策更新](#security-iam-awsmanpol-jobfunction-updates)。

**政策描述：**此政策授予在 Auto Scaling、Amazon EC2 AWS Direct Connect、Route 53、Amazon CloudFront、Elastic Load Balancing AWS Elastic Beanstalk、Amazon SNS、CloudWatch、CloudWatch Logs、Amazon S3、IAM 和 Amazon Virtual Private Cloud 中建立和維護網路資源的許可。如需受管政策的詳細資訊，請參閱 *AWS Managed Policy Reference Guide* 中的 [NetworkAdministrator](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/NetworkAdministrator.html)。

此任務函數需要將角色傳遞至 AWS 服務的能力。政策只針對下表中所命名的那些角色授予 `iam:GetRole` 和 `iam:PassRole`：如需詳細資訊，請參閱本主題後面部分的 [建立角色和連接政策 (主控台)](access_policies_job-functions_create-policies.md)。


| 使用案例 | 角色名稱 (\$1 是萬用字元) | 要選擇的服務角色類型 | AWS 要選取的 受管政策 | 
| --- | --- | --- | --- | 
| 可讓 Amazon VPC 代表使用者在 CloudWatch Logs 中建立和管理日誌，以監控進出 VPC 的 IP 流量 | [flow-logs-\$1](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-logs-iam) | 如 [Amazon VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-logs-iam) 中所定義使用信任政策建立角色 | 此使用案例沒有現有的 AWS 受管政策，但文件會列出所需的許可。請參閱 [Amazon VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-logs-iam)。 | 

## 唯讀存取
<a name="awsmp_readonlyaccess"></a>

**AWS 受管政策名稱：**[ReadOnlyAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/ReadOnlyAccess)

**使用案例:**此使用者需要對 AWS 帳戶中的每個資源進行唯讀存取。

**重要**  
此使用者也將有權讀取 Amazon S3 儲存貯體和 Amazon DynamoDB 資料表等儲存服務中的資料。

**政策更新：** AWS 維護和更新此政策。如需此政策的變更記錄，請在 IAM 主控台中檢視政策，然後選擇 **Policy versions** (政策版本) 索引標籤。如需有關任務角色政策更新的詳細資訊，請參閱 [工作職能的 AWS 受管政策更新](#security-iam-awsmanpol-jobfunction-updates)。

**政策說明：**此政策會授予列出、取得、描述及檢視資源及其屬性的許可。不包括像建立或刪除變動職能。此政策確實包含對 AWS Identity and Access Management 和 等安全相關 AWS 服務的唯讀存取 AWS 帳單與成本管理。查看政策以了解此政策支援之服務和動作的完整清單。如需有關受管政策的詳細資訊，請參閱 *AWS Managed Policy Reference Guide* 中的 [ReadOnlyAccess](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/ReadOnlyAccess.html)。如果您需要類似政策，但此政策不會授予存取權來讀取儲存服務中的資料，請參閱[僅限檢視使用者任務角色](#jf_view-only-user)。

## MCP 服務動作完整存取
<a name="jf_mcp-service-actions"></a>

**AWS 受管政策名稱：**[AWSMcpServiceActionsFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSMcpServiceActionsFullAccess)

**使用案例：**此使用者需要使用 AWS MCP 伺服器存取 AWS 服務。此政策不會將 MCP 服務所採取動作的存取權授予其他服務 AWS 。

**政策更新：** AWS 維護和更新此政策。如需此政策的變更記錄，請在 IAM 主控台中檢視政策，然後選擇 **Policy versions** (政策版本) 索引標籤。如需有關任務角色政策更新的詳細資訊，請參閱 [工作職能的 AWS 受管政策更新](#security-iam-awsmanpol-jobfunction-updates)。

**政策描述：**此政策授予呼叫任何 AWS MCP 服務動作的許可。當您不需要指定每個 AWS MCP 服務的許可時，可以使用 。它不會將 MCP 服務所採取動作的許可授予其他服務 AWS ，除了 MCP 服務動作之外，還必須一律單獨授予這些許可。如需 受管政策的詳細資訊，請參閱《 *AWS 受管政策參考指南*》中的 [AWSMcpServiceActionsFullAccess](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/AWSMcpServiceActionsFullAccess.html)。

## 安全稽核人員任務角色
<a name="jf_security-auditor"></a>

**AWS 受管政策名稱：**[SecurityAudit](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/SecurityAudit)

**使用案例：**此使用者監控帳戶是否符合安全需求。這個使用者可以存取日誌和事件，以調查潛在安全漏洞或潛在惡意活動。

**政策更新：** AWS 維護和更新此政策。如需此政策的變更記錄，請在 IAM 主控台中檢視政策，然後選擇 **Policy versions** (政策版本) 索引標籤。如需有關任務角色政策更新的詳細資訊，請參閱 [工作職能的 AWS 受管政策更新](#security-iam-awsmanpol-jobfunction-updates)。

**政策描述：**此政策授予許可，以檢視許多 AWS 服務的組態資料和檢閱其日誌。如需受管政策的詳細資訊，請參閱 *AWS Managed Policy Reference Guide* 中的 [SecurityAudit](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/SecurityAudit.html)。

## 支援使用者任務角色
<a name="jf_support-user"></a>

**AWS 受管政策名稱：**[AWSSupportAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSSupportAccess)

**使用案例：**此使用者聯絡 AWS Support、建立支援案例，以及檢視現有案例的狀態。

**政策更新：** AWS 維護和更新此政策。如需此政策的變更記錄，請在 IAM 主控台中檢視政策，然後選擇 **Policy versions** (政策版本) 索引標籤。如需有關任務角色政策更新的詳細資訊，請參閱 [工作職能的 AWS 受管政策更新](#security-iam-awsmanpol-jobfunction-updates)。

**政策描述：**此政策授予建立和更新 支援 案例的許可。如需有關受管政策的詳細資訊，請參閱 *AWS Managed Policy Reference Guide* 中的 [AWSSupportAccess](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/AWSSupportAccess.html)。

## 系統管理員任務角色
<a name="jf_system-administrator"></a>

**AWS 受管政策名稱：**[SystemAdministrator](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/SystemAdministrator)

**使用案例：**此使用者為開發操作設定和維護資源。

**政策更新：** AWS 維護和更新此政策。如需此政策的變更記錄，請在 IAM 主控台中檢視政策，然後選擇 **Policy versions** (政策版本) 索引標籤。如需有關任務角色政策更新的詳細資訊，請參閱 [工作職能的 AWS 受管政策更新](#security-iam-awsmanpol-jobfunction-updates)。

**政策描述：**此政策授予許可，以跨各種 AWS 服務建立和維護資源，包括 AWS CloudTrail Amazon CloudWatch AWS CodeCommit、 AWS CodeDeploy、 AWS Config、 AWS Directory Service、Amazon EC2、 AWS Identity and Access Management AWS Key Management Service、 AWS Lambda、Amazon RDS、Route 53、Amazon S3、Amazon SES、Amazon SQS AWS Trusted Advisor和 Amazon VPC。如需受管政策的詳細資訊，請參閱 *AWS Managed Policy Reference Guide* 中的 [SystemAdministrator](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/SystemAdministrator.html)。

此任務函數需要將角色傳遞至 AWS 服務的能力。政策只針對下表中所命名的那些角色授予 `iam:GetRole` 和 `iam:PassRole`：如需詳細資訊，請參閱本主題後面部分的 [建立角色和連接政策 (主控台)](access_policies_job-functions_create-policies.md)。如需有關任務角色政策更新的詳細資訊，請參閱 [工作職能的 AWS 受管政策更新](#security-iam-awsmanpol-jobfunction-updates)。


| 使用案例 | 角色名稱 (\$1 是萬用字元) | 要選擇的服務角色類型 | AWS 要選取的 受管政策 | 
| --- | --- | --- | --- | 
| 允許在 Amazon ECS 叢集的 EC2 執行個體中執行的應用程式存取 Amazon ECS | [ecr-sysadmin-\$1](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html) | EC2 容器服務的 Amazon EC2 角色  | [AmazonEC2ContainerServiceforEC2Role](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role) | 
| 允許使用者監控資料庫 | [rds-monitoring-role](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html) | 增強監控的 Amazon RDS 角色 | [AmazonRDSEnhancedMonitoringRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonRDSEnhancedMonitoringRole) | 
| 允許在 EC2 執行個體中執行的應用程式存取 AWS 資源。 | [ec2-sysadmin-\$1](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) | Amazon EC2 | 授予 S3 儲存貯體存取權的角色的範例政策，如《Amazon EC2 使用者指南》[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)中所示；可視需要自訂 | 
| 允許 Lambda 讀取 DynamoDB Streams 和寫入 CloudWatch Logs | [lambda-sysadmin-\$1](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html) | AWS Lambda | [AWSLambdaDynamoDBExecutionRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaDynamoDBExecutionRole) | 

## 僅限檢視使用者任務角色
<a name="jf_view-only-user"></a>

**AWS 受管政策名稱：**[ViewOnlyAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/ViewOnlyAccess)

**使用案例：**此使用者可以跨 服務檢視帳戶中 AWS 的資源和基本中繼資料清單。使用者無法讀取超出配額的資源內容或中繼資料，以及列出資源的資訊。

**政策更新：** AWS 維護和更新此政策。如需此政策的變更記錄，請在 IAM 主控台中檢視政策，然後選擇 **Policy versions** (政策版本) 索引標籤。如需有關任務角色政策更新的詳細資訊，請參閱 [工作職能的 AWS 受管政策更新](#security-iam-awsmanpol-jobfunction-updates)。

**政策描述：**此政策會授予 `List*`、`View*`、、 `Describe*` `Get*`和 `Lookup*`存取 AWS 服務的資源。若要查看此政策針對每個服務包含哪些動作，請參閱 [ViewOnlyAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/ViewOnlyAccess)。如需受管政策的詳細資訊，請參閱 *AWS Managed Policy Reference Guide* 中的 [ViewOnlyAccess](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/ViewOnlyAccess.html)。

## 工作職能的 AWS 受管政策更新
<a name="security-iam-awsmanpol-jobfunction-updates"></a>

這些政策都由 維護， AWS 並保持在最新狀態，以在 AWS 服務新增時包含對新服務和新功能的支援。這些政策無法由客戶修改。您可以複製政策，然後修改副本，但該副本不會自動更新，因為 AWS 引入新的服務和 API 操作。

對於任務角色政策，您可以在 IAM 主控台中檢視版本歷程記錄，以及每次更新的時間和日期。若要執行此操作，請使用此頁面上的連結來檢視政策詳細資訊。然後選擇 **Policy versions** (政策版本) 索引標籤以檢視版本。此頁面會顯示政策的最近 25 個版本。若要檢視政策的所有版本，請呼叫 [get-policy-version](https://docs.aws.amazon.com/cli/latest/reference/iam/get-policy-version.html) AWS CLI 命令或 [GetPolicyVersion](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicyVersion.html) API 操作。

**注意**  
您最多可以有五個版本的客戶受管政策，但 會 AWS 保留 AWS 受管政策的完整版本歷史記錄。

# 建立角色和連接政策 (主控台)
<a name="access_policies_job-functions_create-policies"></a>

一些先前列出的政策授予使用角色來設定 AWS 服務的能力，這些角色可讓這些服務代表您執行操作。工作職能政策會指定確切的角色名稱，您必須使用或至少包含字首，其指定可用名稱的第一個部分。若要建立這些角色之一，請執行下列程序中的步驟。

**為 AWS 服務 (IAM 主控台） 建立角色**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在 IAM 主控台的導覽窗格中，選擇**角色**，然後選擇**建立角色**。

1. 對於 **Trusted entity type** (信任的實體類型)，請選擇 **AWS 服務**。

1. 針對**服務或使用案例**，選擇服務，然後選擇使用案例。服務會定義使用案例，以包含服務所需的信任政策。

1. 選擇**下一步**。

1. 對於**許可政策**，選項取決於您選取的使用案例：
   + 如果服務定義了角色的許可，則您無法選取許可政策。
   + 從一組有限的許可政策中選取。
   + 從所有許可政策中選取。
   + 選取無許可政策，在建立角色之後建立政策，然後將政策連接到角色。

1. (選用) 設定[許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。這是進階功能，可用於服務角色，而不是服務連結的角色。

   1. 開啟**設定許可界限**區段，然後選擇**使用許可界限來控制角色許可上限**。

      IAM 包含您帳戶中 AWS 受管和客戶受管政策的清單。

   1. 選取用於許可界限的政策。

1. 選擇**下一步**。

1. 對於**角色名稱**，選項取決於服務：
   + 如果服務定義了角色名稱，則無法編輯角色名稱。
   + 如果服務定義了角色名稱的字首，則可以輸入選用字尾。
   + 如果服務未定義角色名稱，則可以為角色命名。
**重要**  
當您命名角色時，請注意下列事項：  
角色名稱在您的 中必須是唯一的 AWS 帳戶，而且無法依大小寫設為唯一。  
例如，不要同時建立名為 **PRODROLE** 和 **prodrole** 的角色。當角色名稱用於政策或 ARN 的一部分時，角色名稱會區分大小寫，但是當角色名稱在主控台中顯示給客戶時，例如在登入過程中，角色名稱不會區分大小寫。
因為其他實體可能會參考角色，所以在建立角色之後，就無法編輯其名稱。

1. (選用) 在**說明**中，輸入角色的說明。

1. (選用) 若要編輯使用案例和角色許可，請在**步驟 1：選取受信任的實體**或者**步驟 2：新增許可**區段中選擇**編輯**。

1. (選用) 若要協助識別、組織或搜尋角色，請將標籤新增為索引鍵值對。如需在 IAM 中使用標籤的詳細資訊，請參閱《*IAM 使用者指南*》中的[AWS Identity and Access Management 資源的標籤](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)。

1. 檢閱角色，然後選擇 **Create role** (建立角色)。

## 範例 1：設定使用者做為資料庫管理員 (主控台)
<a name="jf_example_1"></a>

此範例顯示設定 IAM 使用者 Alice 作為[資料庫管理員](access_policies_job-functions.md#jf_database-administrator)所需的步驟。您使用該區段中表格第一列的資訊，並允許使用者啟用 Amazon RDS 監控。您將 [DatabaseAdministrator](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/DatabaseAdministrator) 政策連接到 Alice 的 IAM 使用者，讓他們可以管理 Amazon 資料庫服務。該政策也允許 Alice 將稱為 `rds-monitoring-role` 的角色傳遞到 Amazon RDS 服務，讓該服務代表他們來監控 Amazon RDS 資料庫。

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 選擇**政策**，在搜尋方塊中輸入 **database**，然後按下 Enter 鍵。

1. 選取 **DatabaseAdministrator** 政策的選項按鈕，選擇**動作**，然後選擇**連接**。

1. 在實體清單中，選取 **Alice**，然後選擇**連接政策**。Alice 現在可管理 AWS 資料庫。不過，為允許 Alice 來監控這些資料庫，您必須設定服務角色。

1. 在 IAM 主控台的導覽窗格中，選擇 **Roles** (角色)，然後選擇 **Create role** (建立角色)。

1. 選擇 **AWS Service** ( 服務) 角色類型，然後選擇 **Amazon RDS**。

1. 選擇 **Amazon RDS Role for Enhanced Monitoring** (增強監控的 Amazon RDS 角色) 使用案例。

1. Amazon RDS 定義角色的許可。選擇 **Next: Review (下一步：檢閱)** 以繼續進行。

1. 角色名稱必須是 Alice 現在所有的 DatabaseAdministrator 政策所指定的其中一個。其中一個是 **rds-monitoring-role**。為 **Role name** (角色名稱) 輸入該名稱。

1. (選用) 在 **Role description (角色說明)** 中，輸入新角色的說明。

1. 檢閱詳細資訊之後，選擇 **Create role (建立角色)**。

1. Alice 現在可以在 Amazon RDS 主控台的 **Monitoring** (監控) 區段中啟用 **RDS Enhanced Monitoring** (RDS 增強型監控)。例如，他們在建立資料庫執行個體、建立讀取複本或修改資料庫執行個體時，他們可能執行此操作。在將 **Enable Enhanced Monitoring** (啟用增強型監控) 設定為 **Yes** (是) 時，他們必須在 **Monitoring Role** (監控角色) 方塊中輸入他們建立的角色名稱 (rds-monitoring-role)。

## 範例 2：設定使用者做為網路管理員 (主控台)
<a name="jf_example_2"></a>

此範例顯示設定 IAM 使用者 Jorge 作為[網路管理員](access_policies_job-functions.md#jf_network-administrator)所需的步驟。它使用該區段中表格的資訊，允許 Jorge 監控進出 VPC 的 IP 流量。它也允許 Jorge 在 CloudWatch Logs 中擷取日誌中的資訊。您可將 [NetworkAdministrator](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/NetworkAdministrator) 政策連接到 Jorge 的 IAM 使用者，讓他們可以設定 AWS 網路資源。該政策也會在您建立流程日誌時，讓 Jorge 將名稱開頭為 `flow-logs*` 的角色傳遞到 Amazon EC2。在這個案例中，不像範例 1，沒有預先定義的服務角色類型，所以您必須分別地執行幾個步驟。

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**政策**，然後在搜尋方塊中輸入 **network**，再按下 Enter。

1. 選取 **NetworkAdministrator** 政策旁的選項按鈕，選擇**動作**，然後選擇**連接**。

1. 在使用者清單中，選取 **Jorge** 旁的核取方塊，然後選擇**連接政策**。Jorge 現在可管理 AWS 網路資源。不過，為啟用監控 VPC 中的 IP 流量，您必須設定服務角色。

1. 由於您需要建立的服務角色，沒有預先定義的受管政策，您必須先建立它。在導覽窗格中，選擇 **Policies** (政策)，然後選擇 **Create policy** (建立政策)。

1. 在**政策編輯器**區段中，選擇 **JSON** 選項，並從下列 JSON 政策文件複製文字。將此文字貼上至 **JSON** 文字方框中。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents",
           "logs:DescribeLogGroups",
           "logs:DescribeLogStreams"
         ],
         "Effect": "Allow",
         "Resource": "*"
       }
     ]
   }
   ```

------

1.  解決[政策驗證](access_policies_policy-validator.md)期間產生的任何安全性警告、錯誤或一般性警告，然後選擇 **Next** (下一步)。
**注意**  
您可以隨時切換**視覺化**與 **JSON** 編輯器選項。不過，如果您進行變更或在**視覺化**編輯器中選擇**下一步**，IAM 就可能會調整您的政策結構，以便針對視覺化編輯器進行最佳化。如需詳細資訊，請參閱[政策結構調整](troubleshoot_policies.md#troubleshoot_viseditor-restructure)。

1. 在**檢視與建立**頁面上，針對政策名稱輸入 **vpc-flow-logs-policy-for-service-role**。檢視**此政策中定義的許可**以查看政策授與的許可，然後選擇**建立政策**來儲存您的工作。

   新的政策會出現在受管政策清單中，並且已準備好連接。

1. 在 IAM 主控台的導覽窗格中，選擇 **Roles** (角色)，然後選擇 **Create role** (建立角色)。

1. 選擇 **AWS Service** ( 服務) 角色類型，然後選擇 **Amazon EC2**。

1. 選擇 **Amazon EC2** 使用案例。

1. 在 **Attach permissions policies (連接許可政策)** 頁面上，選擇您稍早建立的政策 **vpc-flow-logs-policy-for-service-role**，然後選擇 **Next: Review (下一步：檢閱)**。

1. 角色名稱必須經過 Jorge 現在所有的 NetworkAdministrator 政策許可。任何以 `flow-logs-` 開頭的名稱均允許。在此範例中，為 **Role name** (角色名稱) 輸入 **flow-logs-for-jorge**。

1. (選用) 在 **Role description (角色說明)** 中，輸入新角色的說明。

1. 檢閱詳細資訊之後，選擇 **Create role (建立角色)**。

1. 現在您可以設定此案例所需的信任政策。在**角色**頁面上，選擇 **flow-logs-for-jorge** 角色 (名稱，而非核取方塊)。針對您的新角色，在詳細資訊頁面上，選擇 **Trust relationships (信任關係)** 標籤，然後選擇 **Edit trust relationship (編輯信任關係)**。

1. 將「Service (服務)」行讀取為如下所示，取代 `ec2.amazonaws.com` 的項目：

   ```
           "Service": "vpc-flow-logs.amazonaws.com"
   ```

1. Jorge 現在可在 Amazon EC2 主控台中為 VPC 或子網路建立流程日誌。當您建立流程日誌時，指定 **flow-logs-for-jorge** 角色。該角色具有許可，以建立日誌和寫入資料。

# AWS 全域條件內容索引鍵
<a name="reference_policies_condition-keys"></a>

當[委託人](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#principal)向 提出[請求](intro-structure.md#intro-structure-request)時 AWS， 會將請求資訊 AWS 收集到[請求內容](intro-structure.md#intro-structure-request)中。您可以使用 JSON 政策的 `Condition` 元素，來比較請求內容中的鍵和您在政策中指定的鍵值。請求資訊由不同的來源提供，包括提出請求的主體、提出請求的資源，以及請求本身的中繼資料。

**全域條件索引鍵**可用於所有 AWS 服務。雖然這些條件索引鍵可用於所有政策，但不是每個請求內容都提供該索引鍵。例如，只有在 [AWS 服務主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services)直接呼叫您的資源時，`aws:SourceAccount` 條件索引鍵才可用。若要進一步了解全域金鑰包含在請求內容中的情況，請參閱每個金鑰的**可用性**資訊。

有些個別服務會建立其自己的條件索引鍵，可在其他服務的請求內容中使用。**跨服務條件索引鍵**是一種全域條件索引鍵類型，其中包含符合服務名稱的字首，例如 `ec2:` 或 `lambda:`，但可在其他服務中使用。

**定義服務特定的條件金鑰**，以搭配個別 AWS 服務使用。例如，Amazon S3 可讓您使用 `s3:VersionId` 條件索引鍵撰寫政策，以限制對特定 Amazon S3 物件版本的存取。此條件索引鍵對服務是唯一的，這表示它僅適用於對 Amazon S3 服務的請求。如需服務特定的條件金鑰，請參閱 [AWS 服務的動作、資源和條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)，然後選擇您要檢視其金鑰的服務。

**注意**  
如果您使用只能在一些情況下可用的條件鍵，則可以使用條件運算子的 [IfExists](reference_policies_elements_condition_operators.md#Conditions_IfExists) 版本。如果請求內容中缺少條件鍵，則政策可能會讓評估失敗。例如，搭配使用以下條件區塊與 `...IfExists` 運算子，以在請求來自特定 IP 範圍或特定 VPC 時進行比對。若其中一個鍵，或兩者都不包含在請求內容中，條件仍會傳回 `true`。只有在請求內容中包含指定鍵時，才會檢查值。如需有關在運算子不存在金鑰時如何評估政策的詳細資訊，請參閱[條件運算子](reference_policies_elements_condition_operators.md)。  

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

**重要**  
若要將您的條件與具有多個鍵值的請求內容進行比較，您必須使用 `ForAllValues` 或 `ForAnyValue` 設定運算子。只能將集合運算子與多值條件鍵搭配使用。請勿將集合運算子與單一值條件鍵搭配使用。如需詳細資訊，請參閱[用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。


| 主體的屬性 | 角色工作階段的屬性 | 網路的屬性 | 資源的屬性 | 請求的屬性 | 
| --- | --- | --- | --- | --- | 
|  `aws:PrincipalArn` `aws:PrincipalAccount` `aws:PrincipalOrgPaths` `aws:PrincipalOrgID` `aws:PrincipalTag/*tag-key*` `aws:PrincipalIsAWSService` `aws:PrincipalServiceName` `aws:PrincipalServiceNamesList` `aws:PrincipalType` `aws:userid` `aws:username`  |  `aws:AssumedRoot` `aws:FederatedProvider` `aws:TokenIssueTime` `aws:MultiFactorAuthAge` `aws:MultiFactorAuthPresent` `aws:ChatbotSourceArn` `aws:Ec2InstanceSourceVpc` `aws:Ec2InstanceSourcePrivateIPv4` `aws:SourceIdentity` `ec2:RoleDelivery` `ec2:SourceInstanceArn` `glue:RoleAssumedBy` `glue:CredentialIssuingService` `codebuild:BuildArn` `codebuild:ProjectArn` `lambda:SourceFunctionArn` `ssm:SourceInstanceArn` `identitystore:UserId`  |  `aws:SourceIp` `aws:SourceVpc` `aws:SourceVpcArn` `aws:SourceVpce` `aws:VpceAccount` `aws:VpceOrgID` `aws:VpceOrgPaths` `aws:VpcSourceIp`  |  `aws:ResourceAccount` `aws:ResourceOrgID` `aws:ResourceOrgPaths` `aws:ResourceTag/*tag-key*`  |  `aws:CalledVia` `aws:CalledViaFirst` `aws:CalledViaLast` `aws:CalledViaAWSMCP` `aws:ViaAWSService` `aws:ViaAWSMCPService` `aws:CurrentTime` `aws:EpochTime` `aws:referer` `aws:RequestedRegion` `aws:RequestTag/*tag-key*` `aws:TagKeys` `aws:SecureTransport` `aws:SourceAccount` `aws:SourceArn` `aws:SourceOrgID` `aws:SourceOrgPaths` `aws:UserAgent` `aws:IsMcpServiceAction`  | 

## 敏感條件索引鍵
<a name="condition-keys-sensitive"></a>

下列條件索引鍵視為敏感資訊。在這些條件索引鍵中使用萬用字元沒有任何有效的使用案例，即使具有萬用字元的索引鍵值子字串也一樣。這是因為萬用字元可能會將條件索引鍵與任何值比對，這可能會構成安全風險。
+ `aws:PrincipalAccount`
+ `aws:PrincipalOrgID`
+ `aws:ResourceAccount`
+ `aws:ResourceOrgID`
+ `aws:SourceAccount`
+ `aws:SourceOrgID`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:VpceAccount`
+ `aws:VpceOrgID`

## 主體的屬性
<a name="condition-keys-principal-properties"></a>

使用下列條件索引鍵，將提出請求的主體詳細資訊與您在政策中指定的主體屬性進行比較。如需可以提出請求的主體清單，請參閱 [如何指定主體](reference_policies_elements_principal.md#Principal_specifying)。

### aws:PrincipalArn
<a name="condition-keys-principalarn"></a>

使用此鍵來將提出請求主體的 [Amazon Resource Name (ARN)](reference_identifiers.md#identifiers-arns) 與您在政策中所指定的 ARN 進行比較。針對 IAM 角色，請求內容會傳回角色的 ARN，而非取得角色使用者的 ARN。
+ **可用性** – 此鍵會包含在所有簽章請求的請求內容中。匿名請求不包含此鍵。您可以在此條件鍵中指定以下類型的主體：
  + IAM 角色
  + IAM 使用者
  + AWS STS 聯合身分使用者主體
  + AWS 帳戶 根使用者
+ **資料類型** – ARN

  AWS 建議您在比較 [ARN 時使用 ARN 運算子](reference_policies_elements_condition_operators.md#Conditions_ARN)，而非[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。 ARNs
+ **值類型** - 單一值
+ **範例值**以下清單顯示您可以在 `aws:PrincipalArn` 條件索引鍵中指定的不同類型主體傳回的請求內容值：
  + **IAM 角色** – 請求內容包含條件鍵 `aws:PrincipalArn` 的下列值。請勿將擔任角色工作階段 ARN 指定為此條件鍵的值。如需有關擔任角色工作階段主體的詳細資訊，請參閱 [角色工作階段主體](reference_policies_elements_principal.md#principal-role-session)。

    ```
    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 帳戶 主體](reference_policies_elements_principal.md#principal-accounts)。

    ```
    arn:aws:iam::123456789012:root
    ```

您可以在 AWS Organizations 服務控制政策 (SCPs) `aws:PrincipalArn`中將根使用者 ARN 指定為條件索引鍵的值。SCP 是一種組織政策，用於管理您組織中的許可，並且僅會影響組織中的成員帳戶。SCP 會限制 IAM 使用者和成員帳戶中 IAM 使用者和角色的許可，包括成員帳戶的根使用者。如需有關 SCP 對許可之影響的詳細資訊，請參閱 *AWS Organizations User Guide* 中的 [SCP effects on permissions](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html#scp-effects-on-permissions)。

### aws:PrincipalAccount
<a name="condition-keys-principalaccount"></a>

使用此鍵來將請求主體所屬的帳戶與您在政策中指定的帳戶識別碼進行比較。對於匿名請求，請求內容會返回 `anonymous`。
+ **可用性** – 此金鑰會包含在所有請求的請求內容中，包括匿名請求。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

以下範例中，除了帳號為 `123456789012` 的主體之外，一律拒絕存取。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyAccessFromPrincipalNotInSpecificAccount",
      "Action": "service:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:service:us-east-1:111122223333:resource"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalAccount": [
            "123456789012"
          ]
        }
      }
    }
  ]
}
```

------

### aws:PrincipalOrgPaths
<a name="condition-keys-principalorgpaths"></a>

使用此金鑰來比較提出請求之委託人的 AWS Organizations 路徑與政策中的路徑。該主體可以是 IAM 使用者、IAM 角色、 AWS STS 聯合身分使用者主體或 AWS 帳戶根使用者。在政策中，這項條件鍵會確保申請者是在指定組織根或 AWS Organizations中組織單位 (OU) 內的帳戶成員。 AWS Organizations 路徑是 AWS Organizations 實體結構的文字表示法。如需有關使用和了解路徑的詳細資訊，請參閱 [了解 AWS Organizations 實體路徑](access_policies_last-accessed-view-data-orgs.md#access_policies_last-accessed-viewing-orgs-entity-path)。
+ **可用性** – 只有在主體是組織的成員時，請求內容中才會包含此鍵。匿名請求不包含此鍵。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String) (清單)
+ **值類型** - 多重值

**注意**  
組織 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` 條件運算子使用多個值時，主體的路徑必須符合政策列出的其中一個路徑。如需有關多重值條件鍵的詳細資訊，請參閱 [用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。

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

### aws:PrincipalOrgID
<a name="condition-keys-principalorgid"></a>

使用此金鑰來比較 AWS Organizations 請求主體所屬組織的識別符與政策中指定的識別符。
+ **可用性** – 只有在主體是組織的成員時，請求內容中才會包含此鍵。匿名請求不包含此鍵。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

此全域鍵提供了列出組織中所有 AWS 帳戶的所有帳戶 ID 的替代方法。您可以使用此條件鍵來簡化在[資源型政策](access_policies_identity-vs-resource.md)中指定 `Principal` 元素。您可以在條件元素中指定[組織 ID](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_details.html)。當您新增和移除帳戶時，包含 `aws:PrincipalOrgID` 鍵的政策會自動包含正確的帳戶，不需要手動更新。

例如，下列 Amazon S3 儲存貯體政策允許 `o-xxxxxxxxxxx` 組織中任何帳戶的成員將物件新增至 `amzn-s3-demo-bucket` 儲存貯體。

------
#### [ JSON ]

****  

```
 {
  "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](#condition-keys-principalisawsservice)。

如需 的詳細資訊 AWS Organizations，請參閱[什麼是 AWS Organizations？](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html) *AWS Organizations 《 使用者指南*》中的 。

### aws:PrincipalTag/*tag-key*
<a name="condition-keys-principaltag"></a>

使用此鍵來將連接至提出請求主體的標籤，與您在政策中所指定的標籤進行比較。若主體連接的標籤超過一個，請求內容會針對每個連接的標籤鍵包含一個 `aws:PrincipalTag` 鍵。
+ **可用性** – 若主體搭配連接標籤使用 IAM 使用者，此鍵會包含在請求內容中。其會針對主體，使用具備連接標籤或[工作階段標籤](id_session-tags.md)的 IAM 角色包含在其中。匿名請求不包含此鍵。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

您可以將自訂屬性以鍵值對的形式新增至使用者或角色。如需有關 IAM 標籤的詳細資訊，請參閱 [AWS Identity and Access Management 資源的標籤](id_tags.md)。您可以使用 `aws:PrincipalTag` 對 AWS 主體進行[控制存取](access_iam-tags.md#access_iam-tags_control-principals)。

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

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:Get*",
        "iam:List*",
        "iam:Generate*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/department": "hr"
        }
      }
    }
  ]
}
```

------

### aws:PrincipalIsAWSService
<a name="condition-keys-principalisawsservice"></a>

使用此金鑰來檢查 AWS [服務主體](reference_policies_elements_principal.md#principal-services)是否直接呼叫您的資源。例如： AWS CloudTrail 使用服務主體 `cloudtrail.amazonaws.com` 將日誌寫入至 Amazon S3 儲存貯體。當服務使用服務主體對您的資源執行直接動作時，請求內容鍵會設定為 true (真)。服務代表 IAM 主體使用主體的憑證來提出請求時，內容鍵設定為 false。若服務使用[服務角色或服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)來代表主體進行呼叫，則也會設定為 false。
+ **可用性** – 對於所有使用 AWS 憑證的已簽署 API 請求，此鍵會出現在請求內容中。匿名請求不包含此鍵。
+ **資料類型** – [布林值](reference_policies_elements_condition_operators.md#Conditions_Boolean)
+ **值類型** - 單一值

您可以使用此條件金鑰來限制對信任身分和預期網路位置的存取，同時安全地授予對 AWS 服務的存取。

在下列 Amazon S3 儲存貯體政策範例中，存取儲存貯體會受到限制，除非請求來自 `vpc-111bbb22` 或來自服務主體，例如 CloudTrail。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExpectedNetworkServicePrincipal",
      "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 Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/gv-_H8a42G4/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/gv-_H8a42G4)


### aws:PrincipalServiceName
<a name="condition-keys-principalservicename"></a>

使用此鍵將政策中的[服務主體](reference_policies_elements_principal.md#principal-services)名稱，以及向您的資源提出請求的服務主體進行比較。您可以使用這個鍵來檢查這個呼叫是否由特定的服務主體進行比較。當服務主體直接向您的資源要求時，`aws:PrincipalServiceName` 鍵會包含服務主體的名稱。例如， AWS CloudTrail 服務主體名稱為 `cloudtrail.amazonaws.com`。
+ **可用性** – 當 AWS 服務委託人進行呼叫時，此金鑰會出現在請求中。此鍵在任何其他情況下都不存在，包括以下情況：
  + 若服務使用[服務角色或服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)來代表主體進行呼叫。
  + 服務使用 IAM 主體的憑證代表主體提出請求。
  + 如果呼叫是由 IAM 主體直接進行。
  + 如果呼叫由匿名請求者發出。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

您可以使用此條件金鑰來限制對信任身分和預期網路位置的存取，同時安全地授予對 AWS 服務的存取。

在下列 Amazon S3 儲存貯體政策範例中，存取儲存貯體會受到限制，除非請求來自 `vpc-111bbb22` 或來自服務主體，例如 CloudTrail。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExpectedNetworkServicePrincipal",
      "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
<a name="condition-keys-principalservicenameslist"></a>

此鍵提供屬於該服務的所有[服務主體](reference_policies_elements_principal.md#principal-services)名稱清單。這是進階條件鍵。您可以用其來限制服務僅從特定區域存取您的資源。某些服務可能會建立區域服務主體，以指示特定區域內服務的特定執行個體。您可以將資源的存取限制為服務的特定執行個體。當服務主體直接向您的資源要求時，`aws:PrincipalServiceNamesList` 包含與服務區域執行個體相關聯的所有服務主體名稱的無序清單。
+ **可用性** – 當 AWS 服務委託人進行呼叫時，此金鑰會出現在請求中。此鍵在任何其他情況下都不存在，包括以下情況：
  + 若服務使用[服務角色或服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)來代表主體進行呼叫。
  + 服務使用 IAM 主體的憑證代表主體提出請求。
  + 如果呼叫是由 IAM 主體直接進行。
  + 如果呼叫由匿名請求者發出。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String) (清單)
+ **值類型** - 多重值

`aws:PrincipalServiceNamesList` 是多重值條件鍵。多值鍵在請求內容中可以擁有多個值。使用此鍵時，您必須使用 `ForAnyValue` 或 `ForAllValues` 設定運算子搭配[字串條件運算子](reference_policies_elements_condition_operators.md#Conditions_String)。如需有關多重值條件鍵的詳細資訊，請參閱 [用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。

### aws:PrincipalType
<a name="condition-keys-principaltype"></a>

使用此鍵來將發出請求的主體類型與您在政策中所指定的主體類型進行比較。如需詳細資訊，請參閱 [如何指定主體](reference_policies_elements_principal.md#Principal_specifying)。如需 `principal` 鍵值的具體範例，請參閱 [主體索引鍵值](reference_policies_variables.md#principaltable)。
+ **可用性** – 此鍵會包含在所有請求的請求內容中，包括匿名請求。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

### aws:userid
<a name="condition-keys-userid"></a>

使用此鍵來將申請者的主體識別碼與您在政策中所指定的 ID 進行比較。針對 IAM 使用者，請求內容值是使用者 ID。針對 IAM 角色，此值的格式可能會不同。如需針對不同主體資訊顯示方式的詳細資訊，請參閱 [如何指定主體](reference_policies_elements_principal.md#Principal_specifying)。如需 `principal` 鍵值的具體範例，請參閱 [主體索引鍵值](reference_policies_variables.md#principaltable)。
+ **可用性** – 此鍵會包含在所有請求的請求內容中，包括匿名請求。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

### aws:username
<a name="condition-keys-username"></a>

使用此鍵將申請者的使用者名稱與您在政策中所指定的使用者名稱進行比較。如需針對不同主體資訊顯示方式的詳細資訊，請參閱 [如何指定主體](reference_policies_elements_principal.md#Principal_specifying)。如需 `principal` 鍵值的具體範例，請參閱 [主體索引鍵值](reference_policies_variables.md#principaltable)。
+ **可用性** – 此鍵一律會包含在 IAM 使用者的請求內容中。使用 AWS 帳戶根使用者 或 IAM 角色提出的匿名請求和請求不包含此金鑰。使用 IAM Identity Center 憑證提出的請求不會在內容中包含此鍵。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

## 角色工作階段的屬性
<a name="condition-keys-role-session-properties"></a>

使用下列條件索引鍵來比較產生工作階段時角色工作階段的屬性。只有在主體使用角色工作階段或聯合身分使用者主體憑證發出請求時，這些條件索引鍵方才可用。這些條件索引鍵的值會內嵌在角色的工作階段權杖中。

[角色](reference_policies_elements_principal.md#principal-roles)是一種主體。您也可以使用 [主體的屬性](#condition-keys-principal-properties) 區段中的條件索引鍵，在角色提出請求時評估角色的屬性。

### aws:AssumedRoot
<a name="condition-keys-assumedroot"></a>

使用此金鑰來檢查是否使用 [AssumeRoot](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html) 提出請求。`AssumeRoot` 會傳回特權根使用者工作階段的短期憑證，可以用來對組織中的成員帳戶採取特權動作。如需詳細資訊，請參閱[集中管理成員帳戶的根存取權](id_root-user.md#id_root-user-access-management)。
+ **可用性**：只有在主體使用 [AssumeRoot](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html) 的憑證發出請求時，請求內容中才會包含此金鑰。
+ **資料類型** – [布林值](reference_policies_elements_condition_operators.md#Conditions_Boolean)
+ **值類型** - 單一值

在下列範例中，當用作服務控制政策時， 拒絕使用 AWS Organizations 成員帳戶中根使用者的長期登入資料。不過，該政策不會拒絕 `AssumeRoot` 工作階段執行 `AssumeRoot` 工作階段允許的動作。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
       {
          "Effect":"Deny",
          "Action":"*",
          "Resource": "*",
          "Condition":{
             "ArnLike":{
                "aws:PrincipalArn":[
                   "arn:aws:iam::*:root"
                ]
             },
             "Null":{
                "aws:AssumedRoot":"true"
             }
          }
       }
    ]
 }
```

------

### aws:FederatedProvider
<a name="condition-keys-federatedprovider"></a>

使用此鍵來將主體的發行身分提供者 (IdP) 與您在政策中所指定的 IdP 進行比較。這表示使用 [https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRoleWithWebIdentity](https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRoleWithWebIdentity) AWS STS 操作擔任的 IAM 角色。使用產生角色工作階段的暫時憑證提出要求時，要求內容會識別驗證原始聯合身分的 IdP。
+ **可用性** – 此金鑰存在於使用 OpenID Connect (OIDC) 提供者擔任的角色工作階段中，以及使用 OIDC 提供者呼叫 `AssumeRoleWithWebIdentity` 時的角色信任政策中。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)\$1
+ **值類型** - 單一值

\$1 資料類型取決於 IdP：
+ 如果您使用的是內建 AWS IdP，例如 [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html)，則金鑰值將為**字串**。鍵值可能類似：`cognito-identity.amazonaws.com`。
+ 如果您使用的 IdP 不是內建的 AWS，例如 [https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)或 [Amazon EKS](https://docs.aws.amazon.com//eks/latest/userguide/associate-service-account-role.html)，則金鑰值將為 **ARN**。鍵值可能類似：`arn:aws:iam::111122223333:oidc-provider/oidc.eks.region.amazonaws.com/id/OIDC_Provider_ID`。

如需有關外部 IdP 和 `AssumeRoleWithWebIdentity` 的詳細資訊，請參閱[常用案例](id_federation_common_scenarios.md)。如需詳細資訊，請參閱[角色工作階段主體](reference_policies_elements_principal.md#principal-role-session)。

### aws:TokenIssueTime
<a name="condition-keys-tokenissuetime"></a>

使用此鍵來將發行暫時性安全憑證的日期和時間與您在政策中所指定的日期和時間進行比較。
+ **可用性** – 只有在主體使用暫時憑證發出請求時，請求內容中才會包含此鍵。金鑰不存在於使用存取金鑰提出的 AWS CLI API AWS 或 AWS SDK 請求中。
+ **資料類型** – [日期](reference_policies_elements_condition_operators.md#Conditions_Date)
+ **值類型** - 單一值

若要了解哪些服務支援使用暫時憑證，請參閱[AWS 使用 IAM 的 服務](reference_aws-services-that-work-with-iam.md)。

### aws:MultiFactorAuthAge
<a name="condition-keys-multifactorauthage"></a>

使用此鍵來將請求主體獲得授權使用 MFA 以來的秒數，與您在政策中所指定的數字進行比較。如需有關 MFA 的詳細資訊，請參閱 [AWS IAM 中的多重要素驗證](id_credentials_mfa.md)。

**重要**  
此條件金鑰不適用於使用存取金鑰簽署 CLI、 AWS API 或 AWS SDK AWS 請求的聯合身分或請求。若要進一步了解如何使用臨時安全憑證將 MFA 保護新增至 API 操作，請參閱 [透過 MFA 實現安全的 API 存取](id_credentials_mfa_configure-api-require.md)。  
若要檢查是否使用 MFA 來驗證 IAM 聯合身分，您可以將身分提供者的身分驗證方法 AWS 作為工作階段標籤傳遞至 。如需詳細資訊，請參閱[在 中傳遞工作階段標籤 AWS STS](id_session-tags.md)。若要針對 IAM Identity Center 身分強制執行 MFA，您可以[啟用存取控制的屬性](https://docs.aws.amazon.com/singlesignon/latest/userguide/configure-abac.html)，以使用身分提供者的身分驗證方法將 SAML 聲明宣告傳遞至 IAM Identity Center。
+ **可用性**：只有在主體使用[臨時安全憑證](id_credentials_temp.md)發出請求時，請求內容中才會包含此金鑰。含有 MFA 條件的政策可連接到：
  + IAM 使用者或群組
  + 資源，例如 Amazon S3 儲存貯體、Amazon SQS 佇列或者 Amazon SNS 主題
  + 可由使用者擔任的 IAM 角色的信任政策
+ **資料類型** – [數值](reference_policies_elements_condition_operators.md#Conditions_Numeric)
+ **值類型** - 單一值

### aws:MultiFactorAuthPresent
<a name="condition-keys-multifactorauthpresent"></a>

使用此金鑰來檢查是否使用了多重要素驗證 (MFA) 來驗證發出請求的[臨時安全憑證](id_credentials_temp.md)。

**重要**  
此條件金鑰不適用於使用存取金鑰簽署 CLI、 AWS API 或 AWS SDK AWS 請求的聯合身分或請求。若要進一步了解如何使用臨時安全憑證將 MFA 保護新增至 API 操作，請參閱 [透過 MFA 實現安全的 API 存取](id_credentials_mfa_configure-api-require.md)。  
若要檢查是否使用 MFA 來驗證 IAM 聯合身分，您可以將身分提供者的身分驗證方法 AWS 作為工作階段標籤傳遞至 。如需詳細資訊，請參閱[在 中傳遞工作階段標籤 AWS STS](id_session-tags.md)。若要針對 IAM Identity Center 身分強制執行 MFA，您可以[啟用存取控制的屬性](https://docs.aws.amazon.com/singlesignon/latest/userguide/configure-abac.html)，以使用身分提供者的身分驗證方法將 SAML 聲明宣告傳遞至 IAM Identity Center。
+ **可用性** – 只有在主體使用暫時憑證發出請求時，請求內容中才會包含此鍵。含有 MFA 條件的政策可連接到：
  + IAM 使用者或群組
  + 資源，例如 Amazon S3 儲存貯體、Amazon SQS 佇列或者 Amazon SNS 主題
  + 可由使用者擔任的 IAM 角色的信任政策
+ **資料類型** – [布林值](reference_policies_elements_condition_operators.md#Conditions_Boolean)
+ **值類型** - 單一值

臨時憑證可用來驗證擁有 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 或 [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) 臨時權杖的 IAM 角色和 IAM 使用者，以及 AWS 管理主控台使用者。

IAM 使用者存取金鑰是長期憑證，但在某些情況下， 會代表 IAM 使用者 AWS 建立臨時憑證以執行操作。在這些情況下，`aws:MultiFactorAuthPresent` 鍵會出現在請求中，並設為 `false` 值。在兩種常見的情況下可能會發生此情況：
+ 中的 IAM 使用者 AWS 管理主控台 在不知情的情況下使用臨時登入資料。使用者會使用他們的使用者名稱和密碼 (長期憑證) 登入主控台。不過，主控台會在背景中代表使用者產生臨時憑證。
+ 如果 IAM 使用者呼叫 AWS 服務，服務會重複使用使用者的登入資料，對不同的服務提出另一個請求。例如，呼叫 Athena 存取 Amazon S3 儲存貯體時，或使用 CloudFormation 建立 Amazon EC2 執行個體時。對於後續請求， AWS 會使用臨時登入資料。

若要了解哪些服務支援使用暫時憑證，請參閱[AWS 使用 IAM 的 服務](reference_aws-services-that-work-with-iam.md)。

`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`](reference_policies_elements_condition_operators.md#Conditions_IfExists) 運算子來檢查是否使用 MFA 驗證請求。

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

這個 `Deny`、`BoolIfExists` 與 `false` 的組合會拒絕未使用 MFA 驗證的請求。特別地是，它會拒絕來自未包含 MFA 之暫時憑證的請求。它也會拒絕使用長期登入資料提出的請求，例如使用存取金鑰進行的 AWS CLI 或 AWS API 操作。`*IfExists` 運算子會檢查 `aws:MultiFactorAuthPresent` 鍵是否存在以及它是否可能存在，如其存在所指出。當您想要拒絕任何未使用 MFA 驗證的請求時，請使用此項目。這更安全，但可能會破壞任何使用存取金鑰來存取 或 API 的程式碼 AWS CLI 或 AWS 指令碼。

**替代組合**  
您也可以使用 [`BoolIfExists`](reference_policies_elements_condition_operators.md#Conditions_IfExists)運算子來允許使用長期憑證提出的 MFA 驗證請求和 AWS CLI 或 AWS API 請求。

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

此條件會比對鍵是否存在，**或者**鍵是否不存在。這個 `Allow`、`BoolIfExists` 與 `true` 的組合允許使用 MFA 驗證的請求，或允許無法使用 MFA 驗證的請求。這表示請求者使用其長期存取金鑰時，允許 AWS CLI AWS API 和 AWS SDK 操作。此組合不允許來自暫時憑證，且能夠包含 MFA 的請求但未這麼做的請求。

當您使用 IAM 主控台視覺化編輯器建立政策並選擇 **MFA required** (需要 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
<a name="condition-keys-chatbotsourcearn"></a>

使用此金鑰，將主體設定的來源聊天組態 ARN 與您在頻道組態相關聯之 IAM 角色政策中指定的聊天組態 ARN 進行比較。可以根據 Amazon Q Developer 在聊天應用程式中啟動的擔任角色工作階段來授權請求。
+ **可用性** – 每當擔任角色工作階段時，聊天應用程式中的 Amazon Q Developer 都會在請求內容中包含此索引鍵。金鑰值是聊天組態 ARN，例如當您[從聊天頻道執行 AWS CLI 命令](https://docs.aws.amazon.com/chatbot/latest/adminguide/chatbot-cli-commands.html)時。
+ **資料類型** – [ARN](reference_policies_elements_condition_operators.md#Conditions_ARN)
+ **值類型** - 單一值
+ **範例值** – `arn:aws::chatbot::123456789021:chat-configuration/slack-channel/private_channel`

以下政策拒絕 Amazon S3 對來自 Slack 頻道的所有請求的指定儲存貯體提出請求。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ExampleS3Deny",
            "Effect": "Deny",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "ArnLike": {
                      "aws:ChatbotSourceArn": "arn:aws:chatbot::*:chat-configuration/slack-channel/*"
                }
            }
        }
    ]
}
```

------

### aws:Ec2InstanceSourceVpc
<a name="condition-keys-ec2instancesourcevpc"></a>

此鍵可識別要接收 Amazon EC2 IAM 角色憑證的 VPC。您可以在具有 [`aws:SourceVPC`](#condition-keys-sourcevpc) 全域鍵的政策中使用此鍵，以檢查是否從與接收憑證之 VPC (`aws:Ec2InstanceSourceVpc`) 相符的 VPC (`aws:SourceVPC`) 進行呼叫。
+ **可用性** – 每當請求者使用 Amazon EC2 角色憑證簽署請求時，請求內容中會包含此鍵。它可用於 IAM 政策、服務控制政策、VPC 端點政策和資源政策。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

此鍵可與 VPC 識別符值搭配使用，但是當與 `aws:SourceVpc` 內容鍵一起用作變數時最有用。只有在請求者使用 VPC 端點提出請求時，請求內容中才會包含 `aws:SourceVpc` 內容鍵。搭配使用 `aws:Ec2InstanceSourceVpc` 與 `aws:SourceVpc` 可讓您更廣泛地使用 `aws:Ec2InstanceSourceVpc`，因為其會比較通常一起變更的值。

------
#### [ JSON ]

****  

```
{
  "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:Ec2InstanceSourcePrivateIPv4
<a name="condition-keys-ec2instancesourceprivateip4"></a>

此鍵可識別接收 Amazon EC2 IAM 角色憑證之主要彈性網路介面的私有 IPv4 地址。您必須搭配使用此條件鍵與其配套鍵 `aws:Ec2InstanceSourceVpc`，以確保您擁有 VPC ID 和來源私有 IP 的全域唯一組合。搭配使用此鍵與 `aws:Ec2InstanceSourceVpc`，來確保從接收憑證的相同私有 IP 地址提出請求。
+ **可用性** – 每當請求者使用 Amazon EC2 角色憑證簽署請求時，請求內容中會包含此鍵。它可用於 IAM 政策、服務控制政策、VPC 端點政策和資源政策。
+ **資料類型** – [IP 位址](reference_policies_elements_condition_operators.md#Conditions_IPAddress)
+ **值類型** - 單一值

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

下列範例是服務控制政策 (SCP)，拒絕存取所有資源，除非請求透過與 角色登入資料相同的 VPC 中的 VPC 端點抵達。在此範例中，`aws:Ec2InstanceSourcePrivateIPv4` 會根據來源 IP 將憑證來源限制為特定執行個體。

------
#### [ JSON ]

****  

```
{
    "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
<a name="condition-keys-sourceidentity"></a>

使用此鍵來將主體所設定的來源身分與您在政策中所指定的來源身分進行比較。
+ **可用性** – 當使用任何 AWS STS 擔任角色 CLI 命令或 AWS STS `AssumeRole` API 操作擔任角色時，設定來源身分後，此金鑰會包含在請求內容中。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

您可以在政策中使用此金鑰，允許 AWS 在擔任角色時設定來源身分的委託人在 中執行動作。[AWS CloudTrail](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) 中會顯示角色指定來源身分的活動。這可讓管理員更輕鬆地判斷角色在其中執行動作的對象或對象 AWS。

與 [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname) 不同，在設定來源身分之後，就無法變更值。這會出現在由角色所採取的所有動作的請求內容中。當您使用工作階段憑證來擔任另一個角色時，此值仍然存在於後續角色工作階段。從另一個角色取得及擔任角色稱為[角色鏈結](id_roles.md#iam-term-role-chaining)。

當委託人最初設定來源身分，同時使用任何 AWS STS 擔任角色 CLI 命令或 AWS STS `AssumeRole` API 操作來擔任角色時， [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity)金鑰會出現在請求中。針對具有來源身分集的角色工作階段所採取的任何動作，`aws:SourceIdentity` 鍵會出現在請求中。

下列在帳戶 `111122223333` 中的 `CriticalRole` 角色信任政策包含針對 `aws:SourceIdentity` 的條件，可防止沒有設定為 Saanvi 或 Diego 的來源身分的主體擔任角色。

------
#### [ JSON ]

****  

```
{
    "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"]
                }
            }
        }
    ]
}
```

------

若要進一步了解有關使用來源身分的詳細資訊，請參閱 [監控並控制使用擔任角色所採取的動作](id_credentials_temp_control-access_monitor.md)。

### ec2:RoleDelivery
<a name="condition-keys-ec2-role-delivery"></a>

使用此金鑰來比較已簽署請求中的執行個體中繼資料服務版本與 Amazon EC2 的 IAM 角色憑證。執行個體中繼資料服務會依據任何指定請求 (`PUT` 或 `GET` 標頭) 來區分 IMDSv1 及 IMDSv2 請求，這些對 IMDSv2 而言是唯一的內容，會出現在該請求中。
+ **可用性**：每當 Amazon EC2 執行個體建立角色工作階段時，請求內容中會包含此鍵。
+ **資料類型** – [數值](reference_policies_elements_condition_operators.md#Conditions_Numeric)
+ **值類型** - 單一值
+ **範例值** – 1.0、2.0

您可以在每個執行個體上設定執行個體中繼資料服務 (IMDS)，此類本機程式碼或使用者必須使用 IMDSv2。當您指定必須使用該 IMDSv2 時，IMDSv1 則無法繼續運作。
+ 執行個體中繼資料服務第 1 版 (IMDSv1) – 請求/回應方法 
+ 執行個體中繼資料服務第 2 版 (IMDSv2) – 工作階段導向方法

如需如何設定執行個體以使用 IMDSv2 的資訊，請參閱[設定執行個體中繼資料選項](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)。

在下列範例中，如果請求內容中的 ec2:RoleDelivery 值為 1.0 (IMDSv1)，則會拒絕存取。一般情況下，可套用此政策陳述式，如果 Amazon EC2 角色憑證未簽署該請求，則不具任何作用。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
               {
            "Sid": "RequireAllEc2RolesToUseV2",
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "NumericLessThan": {
                    "ec2:RoleDelivery": "2.0"
                }
            }
        }
    ]
}
```

------

如需詳細資訊，請參閱[使用執行個體中繼資料的範例政策](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html#iam-example-instance-metadata)。

### ec2:SourceInstanceArn
<a name="condition-keys-ec2-source-instance-arn"></a>

使用此金鑰來比較產生角色工作階段之執行個體的 ARN。
+ **可用性**：每當 Amazon EC2 執行個體建立角色工作階段時，請求內容中會包含此鍵。
+ **資料類型** – [ARN](reference_policies_elements_condition_operators.md#Conditions_ARN)
+ **值類型** - 單一值
+ **範例值** – arn：aws：ec2：us-west-2：111111111111：instance/instance-id

如需政策範例，請參閱[允許特定執行個體檢視其他 AWS 服務中的資源](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html#iam-example-source-instance)。

### glue:RoleAssumedBy
<a name="condition-keys-glue-role-assumed-by"></a>

 AWS Glue 服務會為每個 AWS API 請求設定此條件金鑰，其中 AWS Glue 代表客戶使用服務角色提出請求 （不是透過任務或開發人員端點，而是直接透過 AWS Glue 服務）。使用此金鑰來驗證對 AWS 資源的呼叫是否來自 AWS Glue 服務。
+ **可用性** – 當 代表客戶使用服務角色 AWS Glue 提出請求時，此金鑰會包含在請求內容中。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值
+ **範例值** – 此金鑰始終設定為 `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"
        }
    }
}
```

### glue:CredentialIssuingService
<a name="condition-keys-glue-credential-issuing"></a>

 AWS Glue 服務會使用來自任務或開發人員端點的服務角色，為每個 AWS API 請求設定此金鑰。使用此金鑰來驗證對 AWS 資源的呼叫是否來自 AWS Glue 任務或開發人員端點。
+ **可用性** – 當 從任務或開發人員端點 AWS Glue 發出請求時，此金鑰會包含在請求內容中。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值
+ **範例值** – 此金鑰始終設定為 `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"
        }
    }
}
```

### codebuild:BuildArn
<a name="condition-keys-codebuild-build-arn"></a>

此金鑰可識別已交付 IAM 角色登入資料的 CodeBuild 組建 ARN。使用此金鑰來驗證對 AWS 資源的呼叫是否來自特定的 CodeBuild 組建。

**注意**  
的完整值`codebuild:BuildArn`無法事先得知，因為它包含動態產生的組建 ID。
+ **可用性** – 每當請求是由 CodeBuild 擔任的角色提出時，請求內容中就會包含此金鑰。
+ **資料類型** – [ARN](reference_policies_elements_condition_operators.md#Conditions_ARN)
+ **值類型** - 單一值
+ **範例值** – arn：aws：codebuild：us-east-1：123456789012：build/MyBuildProject：12345678-1234-1234-1234-123456789012

下列範例允許特定 CodeBuild 組建`s3:GetObject`存取指定的儲存貯體。

```
{
    "Effect": "Allow",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition": {
        "ArnLike": {
            "codebuild:BuildArn": "arn:aws:codebuild:us-east-1:123456789012:build/MyBuildProject:*"
        }
    }
}
```

### codebuild:ProjectArn
<a name="condition-keys-codebuild-project-arn"></a>

此金鑰可識別已將 IAM 角色登入資料交付至 CodeBuild 組建的 CodeBuild 專案 ARN。使用此金鑰來驗證對 AWS 資源的呼叫是否來自特定的 CodeBuild 專案。
+ **可用性** – 每當請求是由 CodeBuild 擔任的角色提出時，請求內容中都會包含此金鑰。
+ **資料類型** – [ARN](reference_policies_elements_condition_operators.md#Conditions_ARN)
+ **值類型** - 單一值
+ **範例值** – arn：aws：codebuild：us-east-1：123456789012：project/MyBuildProject

下列範例允許來自特定 CodeBuild 專案的任何組建`s3:GetObject`存取指定的儲存貯體。

```
{
    "Effect": "Allow",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition": {
        "ArnEquals": {
            "codebuild:ProjectArn": "arn:aws:codebuild:us-east-1:123456789012:project/MyBuildProject"
        }
    }
}
```

### lambda:SourceFunctionArn
<a name="condition-keys-lambda-source-function-arn"></a>

使用此金鑰來識別接收 IAM 角色憑證的 Lambda 函數 ARN。Lambda 服務會為來自函數執行環境的每個 AWS API 請求設定此金鑰。使用此金鑰來驗證對 AWS 資源的呼叫是否來自特定 Lambda 函數的程式碼。Lambda 也會為來自執行環境外部的某些請求設定此金鑰，例如將日誌寫入到 CloudWatch 並將追蹤傳送至 X-Ray。
+ **可用性** – 每當叫用 Lambda 函數程式碼時，此金鑰會包含在請求內容中。
+ **資料類型** – [ARN](reference_policies_elements_condition_operators.md#Conditions_ARN)
+ **值類型** - 單一值
+ **範例值** – arn:aws:lambda:us-east-1:123456789012:function:TestFunction

下列範例允許一個特定 Lambda 函數對指定的儲存貯體進行 `s3:PutObject` 存取。

------
#### [ JSON ]

****  

```
{
    "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 Developer Guide* 中的 [Working with Lambda execution environment credentials](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html#permissions-executionrole-source-function-arn)。

### ssm:SourceInstanceArn
<a name="condition-keys-ssm-source-instance-arn"></a>

使用此金鑰來識別交付 IAM 角色登入資料的 AWS Systems Manager 受管執行個體 ARN。當請求來自具有與 Amazon EC2 執行個體設定檔關聯之 IAM 角色的受管執行個體時，則此條件索引鍵不存在。
+ **可用性**：每當角色憑證交付至 AWS Systems Manager 受管執行個體時，此金鑰會包含在請求內容中。
+ **資料類型** – [ARN](reference_policies_elements_condition_operators.md#Conditions_ARN)
+ **值類型** - 單一值
+ **範例值** – arn：aws：ec2：us-west-2：111111111111：instance/instance-id

### identitystore:UserId
<a name="condition-keys-identity-store-user-id"></a>

使用此金鑰來比較已簽署請求中的 IAM Identity Center 人力資源身分與政策中指定的身分。
+ **可用性**：當請求的發起人是 IAM Identity Center 中的使用者時，會包含此金鑰。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值
+ **範例值** – 94482488-3041-7026-18f3-be45837cd0e4

您可以使用、UserId AWS 或 AWS SDK 向 [GetUserId](https://docs.aws.amazon.com//singlesignon/latest/IdentityStoreAPIReference/API_GetUserId.html) API 提出請求，在 IAM Identity Center 中找到使用者的 UserId。 AWS CLI

## 網路的屬性
<a name="condition-keys-network-properties"></a>

使用下列條件索引鍵，將請求來源或傳遞通過的網路詳細資訊與您在政策中指定的網路屬性進行比較。

### aws:SourceIp
<a name="condition-keys-sourceip"></a>

使用此鍵來將申請者的 IP 地址和您在政策中所指定的 IP 地址進行比較。`aws:SourceIp` 條件鍵僅可用於公有 IP 地址範圍。
+ **可用性** – 此鍵會包含在請求內容中，但當申請者使用 VPC 端點提出請求時則除外。
+ **資料類型** – [IP 位址](reference_policies_elements_condition_operators.md#Conditions_IPAddress)
+ **值類型** - 單一值

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

**注意**  
`aws:SourceIp` 同時支援 IPv4 和 IPv6 IP 地址或者 IP 地址範圍。如需支援 IPv6 AWS 服務 的清單，請參閱《*Amazon VPC 使用者指南*》中的[AWS 服務 支援 IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/aws-ipv6-support.html) 的 。

例如，您可以將以下身分型政策連接至 IAM 角色。如果使用者從指定的 IPv4 地址範圍進行呼叫，則此政策允許使用者將物件放入 `amzn-s3-demo-bucket3` Amazon S3 儲存貯體。此政策也允許 AWS 服務使用 [轉送存取工作階段](access_forward_access_sessions.md) 代表您執行此操作。

------
#### [ JSON ]

****  

```
{
    "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。如需支援 IPv6 AWS 服務 的清單，請參閱《*Amazon VPC 使用者指南*》中的[AWS 服務 支援 IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/aws-ipv6-support.html) 的 。

------
#### [ JSON ]

****  

```
{
    "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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-vpcsourceip)。如需有關使用 VPC 端點的詳細資訊，請參閱 *AWS PrivateLink 指南*中的 [VPC 端點和 VPC 端點服務的身分與存取管理](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-iam.html)。

**注意**  
 AWS 服務 代表您 AWS 服務 呼叫其他 (service-to-service呼叫） 時，會修訂特定網路的授權內容。如果您的政策搭配 `Deny`陳述式使用此條件金鑰， AWS 服務 原則可能會意外遭到封鎖。為在滿足安全需求的同時讓 AWS 服務 可以正常運作，請透過新增值為 `false` 的 `aws:PrincipalIsAWSService` 條件索引鍵，將服務主體從 `Deny` 陳述式中排除。

### aws:SourceVpc
<a name="condition-keys-sourcevpc"></a>

使用此金鑰來檢查請求是否通過 VPC 端點所連接的 VPC。在政策中，您可以使用此鍵，只允許存取特定 VPC。如需詳細資訊，請參閱 *Amazon Simple Storage Service 使用者指南*中的[限制特定 VPC 的存取](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html#example-bucket-policies-restrict-access-vpc)。
+ **可用性** – 只有在申請者使用 VPC 端點提出請求時，請求內容中才會包含此鍵。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

在政策中，您可以使用此金鑰來允許或限制對特定 VPC 端點的存取。

例如，您可以將下列身分型政策連接至 IAM 角色以拒絕 `PutObject` Amazon S3 `amzn-s3-demo-bucket3` 儲存貯體，除非請求是從指定的 VPC ID 提出 AWS 服務 ，或使用[轉送存取工作階段 (FAS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html) 代表該角色提出請求。與 [aws:SourceIp](#condition-keys-sourceip) 不同，您必須使用 [aws:ViaAWSService](#condition-keys-viaawsservice) 或 [aws:CalledVia](#condition-keys-calledvia) 來允許 FAS 請求，因為不會保留初始請求的來源 VPC。

**注意**  
此政策不允許任何動作。將此政策與允許特定動作的其他政策結合使用。

------
#### [ JSON ]

****  

```
{
  "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"
        }
      }
    }
  ]
}
```

------

**注意**  
AWS 建議您使用 `aws:SourceVpc` `aws:SourceVpcArn`，而不是您要鎖定的服務`aws:SourceVpcArn`是否支援 。如需支援的 服務清單，請參閱 [aws：SourceVpcArn](#condition-keys-sourcevpcarn)。

### aws:SourceVpcArn
<a name="condition-keys-sourcevpcarn"></a>

使用此金鑰來驗證透過 VPC 端點提出請求的 VPC ARN。此金鑰會傳回 VPC 端點所連接之 VPC 的 ARN。
+ **可用性** – 透過 VPC 端點提出請求時，此金鑰會包含在受支援服務的請求內容中。若請求透過公有服務端點發出，則不會包含此鍵。下列服務支援此鍵：
  + AWS App Runner （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html))
  + AWS Application Discovery Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html))
  + Amazon Athena (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html))
  + AWS Cloud Map （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html))
  + Amazon CloudWatch Application Insights (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html))
  + AWS CloudFormation （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html))
  + Amazon Comprehend Medical (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html))
  + AWS Compute Optimizer （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html))
  + Amazon； Elastic Container Registry （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html))
  + Amazon Elastic Container Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html))
  + Amazon Kinesis Analytics （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html))
  + Amazon Route 53 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html))
  + AWS DataSync （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html))
  + Amazon Elastic Block Store (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html))
  + Amazon EventBridge 排程器 (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html))
  + Amazon Data Firehose (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html))
  + AWS HealthImaging （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html))
  + AWS HealthLake （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html))
  + AWS HealthOmics （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html))
  + AWS Identity and Access Management (`iam:PassRole`動作除外） （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html))
  + AWS IoT FleetWise （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html))
  + AWS IoT Wireless （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html))
  + AWS Key Management Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html))
  + AWS Lambda （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html))
  + AWS Payment Cryptography （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html))
  + Amazon Polly (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html))
  + AWS 私有憑證授權單位 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html))
  + AWS 資源回收筒 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html))
  + Amazon Rekognition (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html))
  + Service Quotas (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html))
  + Amazon Simple Storage Service (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html))
  + AWS Storage Gateway （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html))
  + AWS Systems Manager Incident Manager 聯絡人 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html))
  + Amazon Textract (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html))
  + Amazon Transcribe (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html))
  + AWS Transfer Family （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html))
+ **資料類型** – ARN

  AWS 建議您在比較 [ARN 時使用 ARN 運算子](reference_policies_elements_condition_operators.md#Conditions_ARN)，而非[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。 ARNs
+ **值類型** - 單一值
+ **範例值** – `arn:aws:ec2:us-east-1:123456789012:vpc/vpc-0e9801d129EXAMPLE`

以下是拒絕從 VPC 外部任何位置存取 `amzn-s3-demo-bucket`及其物件的儲存貯體政策範例`vpc-1a2b3c4d`。

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
     {
       "Sid": "Access-to-specific-VPC-only",
       "Principal": "*",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket",
                    "arn:aws:s3:::amzn-s3-demo-bucket/*"],
       "Condition": {
         "ArnNotEquals": {
           "aws:SourceVpcArn": "arn:aws:ec2:us-east-1:*:vpc/vpc-1a2b3c4d"
         }
       }
     }
   ]
}
```

### aws:SourceVpce
<a name="condition-keys-sourcevpce"></a>

使用此鍵來將請求的 VPC 端點識別碼與您在政策中所指定的端點 ID 進行比較。
+ **可用性** – 只有在申請者使用 VPC 端點提出請求時，請求內容中才會包含此鍵。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

在政策中，您可以使用此鍵來將存取限制在特定 VPC 端點。如需詳細資訊，請參閱 *Amazon Simple Storage Service 使用者指南*中的[限制特定 VPC 的存取](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html#example-bucket-policies-restrict-access-vpc)。與使用 類似[aws:SourceVpc](#condition-keys-sourcevpc)，您必須使用 [aws:ViaAWSService](#condition-keys-viaawsservice)或 [aws:CalledVia](#condition-keys-calledvia) 來允許 AWS 服務 使用[轉送存取工作階段 (FAS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html) 提出的請求。這是因為不會保留初始請求的來源 VPC 端點。

### aws:VpceAccount
<a name="condition-keys-vpceaccount"></a>

使用此金鑰將擁有 VPC 端點 AWS 的帳戶 ID 與您在政策中指定的帳戶 ID 進行比較。此條件索引鍵可確保請求來自特定帳戶擁有的 VPC 端點，協助您建立網路周邊控制。
+ **可用性** – 若請求透過 VPC 端點發出，請求內容中會包含此鍵。若請求透過公有服務端點發出，則不會包含此鍵。

  下列服務支援此鍵：
  + AWS App Runner （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html))
  + AWS Application Discovery Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html))
  + Amazon Athena (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html))
  + AWS Cloud Map （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html))
  + Amazon CloudWatch Application Insights (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html))
  + AWS CloudFormation （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html))
  + Amazon Comprehend Medical (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html))
  + AWS Compute Optimizer （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html))
  + Amazon； Elastic Container Registry （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html))
  + Amazon Elastic Container Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html))
  + Amazon Kinesis Analytics （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html))
  + Amazon Route 53 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html))
  + AWS DataSync （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html))
  + Amazon Elastic Block Store (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html))
  + Amazon EventBridge 排程器 (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html))
  + Amazon Data Firehose (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html))
  + AWS HealthImaging （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html))
  + AWS HealthLake （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html))
  + AWS HealthOmics （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html))
  + AWS Identity and Access Management (`iam:PassRole`動作除外） （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html))
  + AWS IoT FleetWise （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html))
  + AWS IoT Wireless （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html))
  + AWS Key Management Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html))
  + AWS Lambda （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html))
  + AWS Payment Cryptography （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html))
  + Amazon Polly (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html))
  + AWS 私有憑證授權單位 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html))
  + AWS 資源回收筒 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html))
  + Amazon Rekognition (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html))
  + Service Quotas (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html))
  + Amazon Simple Storage Service (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html))
  + AWS Storage Gateway （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html))
  + AWS Systems Manager Incident Manager 聯絡人 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html))
  + Amazon Textract (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html))
  + Amazon Transcribe (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html))
  + AWS Transfer Family （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html))
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值
+ **範例值** – `123456789012`

您可以使用此條件索引鍵來限制存取資源，使得請求必須透過帳戶擁有的 VPC 端點送達。下列 Amazon S3 儲存貯體政策範例允許在請求來自指定帳戶擁有的 VPC 端點時存取：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessToSpecificVpceAccountOnly",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/RoleName"
            },
            "Action": "s3:GetObject",
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "StringEquals": {
                    "aws:VpceAccount": "111122223333"
                }
            }
        }
    ]
}
```

------

**注意**  
選取的服務集目前支援此條件金鑰 AWS 。將此鍵與不受支援的服務搭配使用，可能會導致意外的授權結果。請務必將條件索引鍵的範圍限定為政策中受支援的服務。

有些 AWS 服務會在代表您時，從其網路存取您的資源。如果您使用這類服務，則需要編輯上述政策範例，以允許 AWS 服務從網路外部存取您的資源。如需有關根據請求來源強制執行存取控制時需要考量之存取模式的詳細資訊，請參閱[使用資料周邊建立許可防護機制](access_policies_data-perimeters.md)。

### aws:VpceOrgID
<a name="condition-keys-vpceorgid"></a>

使用此金鑰來比較 中 AWS Organizations 擁有 VPC 端點之組織的識別符，而該 VPC 端點具有您在政策中指定的識別符。此條件索引鍵提供了最具可擴展性的網路周邊控制方法，可自動包含組織內帳戶擁有的所有 VPC 端點。
+ **可用性** – 當透過 VPC 端點提出請求，且 VPC 端點擁有者帳戶是 AWS 組織的成員時，此金鑰會包含在請求內容中。如果透過其他網路路徑發出請求，或 VPC 端點擁有者帳戶不屬於組織，則不會包含此索引鍵。

  下列服務支援此鍵：
  + AWS App Runner （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html))
  + AWS Application Discovery Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html))
  + Amazon Athena (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html))
  + AWS B2B 資料交換 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsb2bdatainterchange.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsb2bdatainterchange.html))
  + AWS Cloud Map （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html))
  + Amazon CloudWatch Application Insights (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html))
  + AWS CloudFormation （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html))
  + Amazon Cognito （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncognitoidentity.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncognitoidentity.html))
  + Amazon Comprehend Medical (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html))
  + AWS Compute Optimizer （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html))
  + AWS Database Migration Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatabasemigrationservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatabasemigrationservice.html))
  + AWS Directory Service Data （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdirectoryservicedata.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdirectoryservicedata.html))
  + Amazon； Elastic Container Registry （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html))
  + Amazon Elastic Container Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html))
  + Amazon Kinesis Analytics （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html))
  + Amazon Route 53 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html))
  + AWS DataSync （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html))
  + Amazon Elastic Block Store (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html))
  + Amazon EventBridge 排程器 (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html))
  + Amazon Data Firehose (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html))
  + AWS HealthImaging （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html))
  + AWS HealthLake （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html))
  + AWS HealthOmics （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html))
  + AWS Identity and Access Management (`iam:PassRole`動作除外） （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html))
  + AWS Identity Store （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentitystore.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentitystore.html))
  + AWS IoT FleetWise （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html))
  + AWS IoT TwinMaker （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiottwinmaker.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiottwinmaker.html))
  + AWS IoT Wireless （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html))
  + Amazon Keyspaces （適用於 Apache Cassandra) （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkeyspacesforapachecassandra.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkeyspacesforapachecassandra.html))
  + AWS Key Management Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html))
  + AWS Lambda （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html))
  + AWS Network Firewall （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsnetworkfirewall.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsnetworkfirewall.html))
  + AWS Payment Cryptography （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html))
  + Amazon Pinpoint SMS 和語音服務 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpinpointsmsandvoiceservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpinpointsmsandvoiceservice.html))
  + Amazon Polly (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html))
  + AWS 價格表 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspricelist.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspricelist.html))
  + AWS 私有憑證授權單位 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html))
  + AWS 資源回收筒 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html))
  + Amazon Rekognition (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html))
  + Service Quotas (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html))
  + Amazon Simple Email Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonses.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonses.html))
  + Amazon Simple Storage Service (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html))
  + Amazon Simple Queue Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsqs.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsqs.html))
  + AWS Storage Gateway （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html))
  + AWS Systems Manager Incident Manager 聯絡人 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html))
  + Amazon Textract (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html))
  + Amazon Transcribe (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html))
  + AWS Transfer Family （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html))
  + Amazon WorkMail （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonworkmail.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonworkmail.html))
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值
+ **範例值** – `o-a1b2c3d4e5`

下列資源控制政策範例會拒絕存取您的 Amazon S3 和資源， AWS Key Management Service 除非請求是透過指定組織擁有的 VPC 端點，或來自代表您行事 AWS 的服務網路。某些組織可能需要進一步編輯此政策以滿足其組織需求，例如允許第三方合作夥伴存取。如需有關根據請求來源強制執行存取控制時需要考量之存取模式的詳細資訊，請參閱[使用資料周邊建立許可防護機制](access_policies_data-perimeters.md)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceNetworkPerimeterVpceOrgID",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:*",
        "kms:*"
      ],
      "Resource": "*",
      "Condition": {
        "BoolIfExists": {
          "aws:PrincipalIsAWSService": "false",
          "aws:ViaAWSService": "false"
        },
        "StringNotEqualsIfExists": {
            "aws:VpceOrgID": "o-abcdef0123",
            "aws:PrincipalTag/network-perimeter-exception": "true"
        }
      }
    }
  ]
}
```

------

**注意**  
選取的服務集目前支援此條件金鑰 AWS 。將此鍵與不受支援的服務搭配使用，可能會導致意外的授權結果。請務必將條件索引鍵的範圍限定為政策中受支援的服務。

### aws:VpceOrgPaths
<a name="condition-keys-vpceorgpaths"></a>

使用此金鑰，將發出請求的 VPC 端點 AWS Organizations 路徑與您在政策中指定的路徑進行比較。借助此條件索引鍵，您可以在組織單位層級實作網路周邊控制，當您在指定的組織單位內新增端點時，系統會隨 VPC 端點用量自動擴展。
+ **可用性** – 如果透過 VPC 端點發出請求，且 VPC 端點擁有者帳戶是組織成員，請求內容中會包含此索引鍵。如果透過其他網路路徑發出請求，或 VPC 端點擁有者帳戶不屬於組織，則不會包含此索引鍵。

  下列服務支援此鍵：
  + AWS App Runner （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html))
  + AWS Application Discovery Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html))
  + Amazon Athena (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html))
  + AWS Cloud Map （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html))
  + Amazon CloudWatch Application Insights (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html))
  + AWS CloudFormation （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html))
  + Amazon Comprehend Medical (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html))
  + AWS Compute Optimizer （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html))
  + Amazon； Elastic Container Registry （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html))
  + Amazon Elastic Container Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html))
  + Amazon Kinesis Analytics （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html))
  + Amazon Route 53 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html))
  + AWS DataSync （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html))
  + Amazon Elastic Block Store (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html))
  + Amazon EventBridge 排程器 (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html))
  + Amazon Data Firehose (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html))
  + AWS HealthImaging （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html))
  + AWS HealthLake （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html))
  + AWS HealthOmics （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html))
  + AWS Identity and Access Management (`iam:PassRole`動作除外） （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html))
  + AWS IoT FleetWise （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html))
  + AWS IoT Wireless （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html))
  + AWS Key Management Service （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html))
  + AWS Lambda （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html))
  + AWS Payment Cryptography （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html))
  + Amazon Polly (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html))
  + AWS 私有憑證授權單位 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html))
  + AWS 資源回收筒 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html))
  + Amazon Rekognition (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html))
  + Service Quotas (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html))
  + Amazon Simple Storage Service (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html))
  + AWS Storage Gateway （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html))
  + AWS Systems Manager Incident Manager 聯絡人 （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html))
  + Amazon Textract (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html))
  + Amazon Transcribe (字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html))
  + AWS Transfer Family （字首：[https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html))
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String) (清單)
+ **值類型** - 多重值
+ **範例值** – `o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/`

由於 `aws:VpceOrgPaths` 是多值條件索引鍵，因此使用此鍵時，您必須搭配[字串條件運算子](reference_policies_elements_condition_operators.md#Conditions_String)使用 `ForAnyValue` 或 `ForAllValues` 集運算子。下列 Amazon S3 儲存貯體政策範例僅在請求透過特定組織單位中帳戶擁有的 VPC 端點送達時允許存取：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessFromSpecificOrgPaths",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/RoleName"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
      "Condition": {
        "ForAnyValue:StringLike": {
          "aws:VpceOrgPaths": [
            "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/*",
            "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-33333333/*"
          ]
        }
      }
    }
  ]
}
```

------

**注意**  
選取的服務集目前支援此條件金鑰 AWS 。將此鍵與不受支援的服務搭配使用，可能會導致意外的授權結果。請務必將條件索引鍵的範圍限定為政策中受支援的服務。

有些 AWS 服務會在代表您時，從其網路存取您的資源。如果您使用這類服務，則需要編輯上述政策範例，以允許 AWS 服務從網路外部存取您的資源。如需有關根據請求來源強制執行存取控制時需要考量之存取模式的詳細資訊，請參閱[使用資料周邊建立許可防護機制](access_policies_data-perimeters.md)。

### aws:VpcSourceIp
<a name="condition-keys-vpcsourceip"></a>

使用此鍵來將提出請求的 IP 地址與您在政策中所指定的 IP 地址進行比較。在政策中，只有在請求來自指定 IP 地址並且透過 VPC 端點時，此鍵才會相符。
+ **可用性** – 只有在請求是使用 VPC 端點提出時，請求內容中才會包含此鍵。
+ **資料類型** – [IP 位址](reference_policies_elements_condition_operators.md#Conditions_IPAddress)
+ **值類型** - 單一值

如需詳細資訊，請參閱《Amazon VPC 使用者指南》**中的[使用端點政策控制 VPC 端點的存取](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html)。與使用 類似[aws:SourceVpc](#condition-keys-sourcevpc)，您必須使用 [aws:ViaAWSService](#condition-keys-viaawsservice)或 [aws:CalledVia](#condition-keys-calledvia) 來允許 AWS 服務 使用[轉送存取工作階段 (FAS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html) 提出的請求。這是因為使用 VPC 端點提出的初始請求的來源 IP 並不會保留在 FAS 請求中。

**注意**  
`aws:VpcSourceIp` 同時支援 IPv4 和 IPv6 IP 地址或者 IP 地址範圍。如需支援 IPv6 AWS 服務 的清單，請參閱《*Amazon VPC 使用者指南*》中的[AWS 服務 支援 IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/aws-ipv6-support.html) 的 。  
一律使用 `aws:VpcSourceIp`條件金鑰搭配 `aws:SourceVpc`、 `aws:SourceVpce`或 `aws:SourceVpcArn`條件金鑰。如果您不這樣做，政策可能會允許來自使用相同或重疊 IP CIDR 之非預期 VPC 的 API 呼叫。這可能是因為來自兩個不相關 VPCs IP CIDRs 可能相同或重疊。

**注意**  
 AWS 服務 代表您 AWS 服務 呼叫其他 (service-to-service呼叫） 時，會修訂特定網路的授權內容。如果您的政策搭配 `Deny`陳述式使用此條件金鑰， AWS 服務 原則可能會意外遭到封鎖。為在滿足安全需求的同時讓 AWS 服務 可以正常運作，請透過新增值為 `false` 的 `aws:PrincipalIsAWSService` 條件索引鍵，將服務主體從 `Deny` 陳述式中排除。

## 資源的屬性
<a name="condition-keys-resource-properties"></a>

使用下列條件索引鍵，將請求目標的資源詳細資訊與您在政策中指定的資源屬性進行比較。

### aws:ResourceAccount
<a name="condition-keys-resourceaccount"></a>

使用此鍵來比較請求的資源所有者的 [AWS 帳戶 ID](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) 與政策中的資源帳戶。然後，根據擁有該資源的帳戶來允許或拒絕對該資源的存取。
+ **可用性** – 此鍵一律會包含在大部分服務動作的請求內容中。下列動作不支援此鍵：
  + AWS Audit Manager
    + `auditmanager:UpdateAssessmentFrameworkShare`
  + Amazon Detective
    + `detective:AcceptInvitation`
  + AWS Directory Service
    + `ds:AcceptSharedDirectory`
  + Amazon Elastic Block Store – 所有動作
  + Amazon EC2
    + `ec2:AcceptTransitGatewayPeeringAttachment`
    + `ec2:AcceptVpcEndpointConnections`
    + `ec2:AcceptVpcPeeringConnection`
    + `ec2:CreateTransitGatewayPeeringAttachment`
    + `ec2:CreateVpcEndpoint`
    + `ec2:CreateVpcPeeringConnection`
  + Amazon EventBridge
    + `events:PutEvents` – 如果該事件匯流排在 2023 年 3 月 2 日之前設定為跨帳戶 EventBridge 目標，則 EventBridge `PutEvents` 會呼叫另一個帳戶中的事件匯流排。如需詳細資訊，請參閱 *Amazon EventBridge 使用者指南*中的[授予許可以便允許來自其他  AWS  帳戶的事件](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-cross-account.html#eb-receiving-events-from-another-account)。
  + Amazon GuardDuty
    + `guardduty:AcceptAdministratorInvitation`
  + Amazon Macie
    + `macie2:AcceptInvitation`
  + Amazon OpenSearch Service
    + `es:AcceptInboundConnection`
  + Amazon Route 53
    + `route53:AssociateVpcWithHostedZone`
    + `route53:CreateVPCAssociationAuthorization`
  + AWS Security Hub CSPM
    + `securityhub:AcceptAdministratorInvitation`
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

**注意**  
如需上述不受支援動作的其他考量事項，請參閱[資料周邊政策範例](https://github.com/aws-samples/data-perimeter-policy-examples)儲存庫。

此金鑰等於具有請求中評估之資源的帳戶 AWS 帳戶 ID。

對於您帳戶中的大部分資源，[ARN](reference_policies_elements_condition_operators.md#Conditions_ARN) 包含該資源的擁有者帳戶 ID。對於某些資源 (例如 Amazon S3 儲存貯體)，資源 ARN 不包含帳戶 ID。以下兩個範例顯示在 ARN 中具有帳戶 ID 的資源與沒有帳戶 ID 的 Amazon S3 ARN 之間的差異：
+ `arn:aws:iam::123456789012:role/AWSExampleRole` – 在帳戶 123456789012 中建立和擁有的 IAM 角色。
+ `arn:aws:s3:::amzn-s3-demo-bucket2` – 在帳戶 `111122223333` 中建立和擁有 Amazon S3 儲存貯體，不會顯示在 ARN 中。

使用 AWS 主控台、API 或 CLI 來尋找您的所有資源和對應的 ARNs。

您撰寫的政策會根據資源擁有者的帳戶 ID 拒絕資源許可。例如，如果*指定資源*不屬於*指定帳戶*，下列身分型政策會拒絕存取這些資源。

若要使用此政策，請將*斜體預留位置文字*取代為您的帳戶資訊。

**重要**  
此政策不允許任何動作。相反，它使用 `Deny` 效果，明確拒絕存取陳述式中列出的不屬於所列帳戶的所有資源。將此政策與允許存取特定資源的其他政策結合使用。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyInteractionWithResourcesNotInSpecificAccount",
      "Action": "service:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:service:us-east-1:111122223333:*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceAccount": [
            "111122223333"
          ]
        }
      }
    }
  ]
}
```

------

除非指定的 AWS 帳戶 擁有資源，否則此政策會拒絕存取特定 AWS 服務的所有資源。

**注意**  
有些 AWS 服務 需要存取在另一個 中託管的 AWS 擁有資源 AWS 帳戶。在身分型政策中使用 `aws:ResourceAccount`，可能會影響您的身分存取這些資源。

某些 AWS 服務，例如 AWS Data Exchange，依賴存取 外部的資源 AWS 帳戶 進行正常操作。如果在政策中使用元素 `aws:ResourceAccount`，請包含其他陳述式來建立這些服務的豁免。範例政策 [AWS：拒絕存取您帳戶外部的 Amazon S3 資源，但 AWS Data Exchange](reference_policies_examples_resource_account_data_exch.md) 示範如何在定義服務所擁有資源的例外狀況時，根據資源帳戶拒絕存取。

使用此政策範例作為建立您自己的自訂政策的範本。如需詳細資訊，請參閱您的服務[文件](https://docs.aws.amazon.com/index.html)。

### aws:ResourceOrgPaths
<a name="condition-keys-resourceorgpaths"></a>

使用此金鑰將存取資源的 AWS Organizations 路徑與政策中的路徑進行比較。在政策中，此條件索引鍵會確保資源屬於指定組織根帳戶或 AWS Organizations中組織單位內的帳戶成員。 AWS Organizations 路徑是 Organizations 實體結構的文字表示法。如需有關使用和了解路徑的詳細資訊，請參閱 [了解 AWS Organizations 實體路徑](access_policies_last-accessed-view-data-orgs.md#access_policies_last-accessed-viewing-orgs-entity-path)。
+ **可用性** – 只有在擁有資源的帳戶是組織成員時，請求內容中才會包含此鍵。此全域條件鍵不支援下列動作：
  + AWS Audit Manager
    + `auditmanager:UpdateAssessmentFrameworkShare`
  + Amazon Detective
    + `detective:AcceptInvitation`
  + AWS Directory Service
    + `ds:AcceptSharedDirectory`
  + Amazon Elastic Block Store – 所有動作
  + Amazon EC2
    + `ec2:AcceptTransitGatewayPeeringAttachment`
    + `ec2:AcceptVpcEndpointConnections`
    + `ec2:AcceptVpcPeeringConnection`
    + `ec2:CreateTransitGatewayPeeringAttachment`
    + `ec2:CreateVpcEndpoint`
    + `ec2:CreateVpcPeeringConnection`
  + Amazon EventBridge
    + `events:PutEvents` – 如果該事件匯流排在 2023 年 3 月 2 日之前設定為跨帳戶 EventBridge 目標，則 EventBridge `PutEvents` 會呼叫另一個帳戶中的事件匯流排。如需詳細資訊，請參閱 *Amazon EventBridge 使用者指南*中的[授予許可以便允許來自其他  AWS  帳戶的事件](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-cross-account.html#eb-receiving-events-from-another-account)。
  + Amazon GuardDuty
    + `guardduty:AcceptAdministratorInvitation`
  + Amazon Macie
    + `macie2:AcceptInvitation`
  + Amazon OpenSearch Service
    + `es:AcceptInboundConnection`
  + Amazon Route 53
    + `route53:AssociateVpcWithHostedZone`
    + `route53:CreateVPCAssociationAuthorization`
  + AWS Security Hub CSPM
    + `securityhub:AcceptAdministratorInvitation`
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String) (清單)
+ **值類型** - 多重值

**注意**  
如需上述不受支援動作的其他考量事項，請參閱[資料周邊政策範例](https://github.com/aws-samples/data-perimeter-policy-examples)儲存庫。

`aws:ResourceOrgPaths` 是多重值條件鍵。多值鍵在請求內容中可以擁有多個值。使用此鍵時，您必須使用 `ForAnyValue` 或 `ForAllValues` 設定運算子搭配[字串條件運算子](reference_policies_elements_condition_operators.md#Conditions_String)。如需有關多重值條件鍵的詳細資訊，請參閱 [用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。

例如，下列條件會對屬於組織 `o-a1b2c3d4e5` 的資源傳回 `True`。當您包含萬用字元時，您必須使用 [StringLike](reference_policies_elements_condition_operators.md) 條件運算子。

```
"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](reference_policies_elements_condition_operators.md) 條件運算子來指定 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](reference_policies_examples_resource_account_data_exch.md) 示範如何在定義服務所擁有資源的例外狀況時，根據資源帳戶拒絕存取。您可以建立類似的政策，使用 `aws:ResourceOrgPaths` 鍵來限制組織單位 (OU) 內資源的存取，同時考量服務擁有的資源。

使用此政策範例作為建立您自己的自訂政策的範本。如需詳細資訊，請參閱您的服務[文件](https://docs.aws.amazon.com/index.html)。

### aws:ResourceOrgID
<a name="condition-keys-resourceorgid"></a>

使用此金鑰，將 AWS Organizations 請求資源所屬組織的識別符與政策中指定的識別符進行比較。
+ **可用性** – 只有在擁有資源的帳戶是組織成員時，請求內容中才會包含此鍵。此全域條件鍵不支援下列動作：
  + AWS Audit Manager
    + `auditmanager:UpdateAssessmentFrameworkShare`
  + Amazon Detective
    + `detective:AcceptInvitation`
  + AWS Directory Service
    + `ds:AcceptSharedDirectory`
  + Amazon Elastic Block Store – 所有動作
  + Amazon EC2
    + `ec2:AcceptTransitGatewayPeeringAttachment`
    + `ec2:AcceptVpcEndpointConnections`
    + `ec2:AcceptVpcPeeringConnection`
    + `ec2:CreateTransitGatewayPeeringAttachment`
    + `ec2:CreateVpcEndpoint`
    + `ec2:CreateVpcPeeringConnection`
  + Amazon EventBridge
    + `events:PutEvents` – 如果該事件匯流排在 2023 年 3 月 2 日之前設定為跨帳戶 EventBridge 目標，則 EventBridge `PutEvents` 會呼叫另一個帳戶中的事件匯流排。如需詳細資訊，請參閱 *Amazon EventBridge 使用者指南*中的[授予許可以便允許來自其他  AWS  帳戶的事件](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-cross-account.html#eb-receiving-events-from-another-account)。
  + Amazon GuardDuty
    + `guardduty:AcceptAdministratorInvitation`
  + Amazon Macie
    + `macie2:AcceptInvitation`
  + Amazon OpenSearch Service
    + `es:AcceptInboundConnection`
  + Amazon Route 53
    + `route53:AssociateVpcWithHostedZone`
    + `route53:CreateVPCAssociationAuthorization`
  + AWS Security Hub CSPM
    + `securityhub:AcceptAdministratorInvitation`
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

**注意**  
如需上述不受支援動作的其他考量事項，請參閱[資料周邊政策範例](https://github.com/aws-samples/data-perimeter-policy-examples)儲存庫。

此全域鍵會傳回指定請求的資源組織 ID。它可讓您建立規則，這些規則適用於[身分型政策](access_policies_identity-vs-resource.md)的 `Resource` 元素中指定的組織中的所有資源。您可以在條件元素中指定[組織 ID](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_details.html)。當您新增和移除帳戶時，包含 `aws:ResourceOrgID` 鍵的政策會自動包含正確的帳戶，您無需手動更新它。

例如，下列政策可避免主體將物件新增至 `policy-genius-dev` 資源，除非 Amazon S3 資源屬於與提出請求的主體相同的組織。

**重要**  
此政策不允許任何動作。相反，它使用 `Deny` 效果，明確拒絕存取陳述式中列出的不屬於所列帳戶的所有資源。將此政策與允許存取特定資源的其他政策結合使用。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "DenyPutObjectToS3ResourcesOutsideMyOrganization",
        "Effect": "Deny",
        "Action": "s3:PutObject",
        "Resource": "arn:aws: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](reference_policies_examples_resource_account_data_exch.md) 示範如何在定義服務所擁有資源的例外狀況時，根據資源帳戶拒絕存取。您可以建立類似的政策，使用 `aws:ResourceOrgID` 鍵來限制組織內資源的存取，同時考量服務擁有的資源。

使用此政策範例作為建立您自己的自訂政策的範本。如需詳細資訊，請參閱您的服務[文件](https://docs.aws.amazon.com/index.html)。

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

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/cWVW0xAiWwc/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/cWVW0xAiWwc)


### aws:ResourceTag/*tag-key*
<a name="condition-keys-resourcetag"></a>

使用此鍵來將您在政策中所指定的標籤鍵值對與連接到資源的鍵值對進行比較。例如，您可以要求只在資源擁有連接標籤鍵 `"Dept"` 和值 `"Marketing"` 時才允許資源的存取。如需詳細資訊，請參閱[控制對 AWS 資源的存取](access_tags.md#access_tags_control-resources)。
+ **可用性** – 當所請求資源已連接標籤時，此鍵包含在請求內容中，或者包含在使用所連接標籤建立資源的請求中。只有在資源[支援以標籤為基礎的授權](reference_aws-services-that-work-with-iam.md)時，才會傳回此鍵。每個標籤鍵值對都會有一個內容鍵。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

此內容鍵的格式為 `"aws:ResourceTag/tag-key":"tag-value"`，其中 *tag-key* 和 *tag-value* 是標籤鍵值組。標籤索引鍵不區分大小寫。這表示如果您在政策的條件元素中指定 `"aws:ResourceTag/TagKey1": "Value1"`，則該條件會符合名為 `TagKey1` 或 `tagkey1` 的資源標籤鍵 (但不會同時符合兩者)。這些標籤索引鍵值對中的值需區分大小寫。這表示如果您在政策的條件元素中指定 `"aws:ResourceTag/TagKey1": "Production"`，該條件會符合名為 `Production` 的資源標籤值 (但不會符合 `production` 或 `PRODUCTION`)。

如需使用 `aws:ResourceTag` 鍵來控制 IAM 資源存取的範例，請參閱 [控制對 AWS 資源的存取](access_tags.md#access_tags_control-resources)。

如需使用 `aws:ResourceTag`金鑰控制對其他 AWS 資源之存取的範例，請參閱 [使用標籤控制對 AWS 資源的存取](access_tags.md)。

如需有關使用屬性型存取控制 (ABAC) 之 `aws:ResourceTag` 條件鍵的教程，請參閱 [IAM 教學課程：定義根據標籤存取 AWS 資源的許可](tutorial_attribute-based-access-control.md)。

## 請求的屬性
<a name="condition-keys-request-properties"></a>

使用下列條件索引鍵，將請求本身和請求內容的詳細資訊與您在政策中指定的請求屬性進行比較。

### aws:CalledVia
<a name="condition-keys-calledvia"></a>

使用此鍵可將政策中的服務與代表 IAM 主體 (使用者或角色) 提出請求的服務進行比較。當委託人向 AWS 服務提出請求時，該服務可能會使用委託人的登入資料向其他 服務提出後續請求。如果使用轉寄存取工作階段 (FAS) 發出請求，此索引鍵的值會設定為服務主體的值。`aws:CalledVia` 鍵包含代表主體提出請求的鏈結中，每個服務的排序清單。

如需詳細資訊，請參閱[轉送存取工作階段](access_forward_access_sessions.md)。
+ **可用性** – 支援 `aws:CalledVia` 的服務使用 IAM 主體的憑證向其他服務提出請求時，此鍵即出現在請求中。若服務使用[服務角色或服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)來代表主體進行呼叫，則此金鑰不存在。若主體直接進行呼叫，此鍵亦不存在。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String) (清單)
+ **值類型** - 多重值

若要在政策中使用 `aws:CalledVia` 條件金鑰，您必須提供服務委託人，以允許或拒絕 AWS 服務請求。例如，您可以使用 從 Amazon DynamoDB 資料表 AWS CloudFormation 讀取和寫入。DynamoDB 接著會使用由 AWS Key Management Service (AWS KMS) 提供的加密。

若要在*任何*服務使用主體憑證提出請求時，允許或拒絕存取，請使用 `aws:ViaAWSService` 條件鍵。該條件索引鍵支援 AWS 服務。

`aws:CalledVia` 鍵是[多值鍵](reference_policies_condition-single-vs-multi-valued-context-keys.md)。但是，您無法在條件中使用此鍵強制排序。使用上面的例子，**使用者 1** 向 CloudFormation發出請求，其中 CloudFormation會呼叫 DynamoDB，而 DynamoDB 呼叫 AWS KMS。這是三個獨立的請求。使用者 1 *透過* CloudFormation 和 DynamoDB 對 AWS KMS 執行最終呼叫。

![\[使用 aws:CalledVia 的範例\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/condition-key-calledvia-example-diagram.png)


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

例如，下列政策允許管理名為 的 AWS KMS 金鑰`my-example-key`，但前提是 DynamoDB 是其中一個請求服務。`ForAnyValue:StringEquals` 條件運算子確保 DynamoDB 為呼叫服務之一。若主體直接呼叫 AWS KMS ，則條件會傳回 `false`，且此政策不允許該請求。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "KmsActionsIfCalledViaDynamodb",
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey",
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/my-example-key",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws:CalledVia": [
                        "dynamodb.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

如果您想強制執行鏈結中進行第一個或最後一個呼叫的服務，可以使用 `aws:CalledViaFirst` 和 `aws:CalledViaLast` 鍵。例如，下列政策允許管理`my-example-key`名為 的金鑰 AWS KMS。只有在鏈結中包含多個請求時，才允許這些 AWS KMS 操作。第一個請求必須透過 CloudFormation 執行，而最後一個須透過 DynamoDB 進行。如果其他服務在鏈結中間發出請求，則仍允許該操作。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "KmsActionsIfCalledViaChain",
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey",
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/my-example-key",
            "Condition": {
                "StringEquals": {
                    "aws:CalledViaFirst": "cloudformation.amazonaws.com",
                    "aws:CalledViaLast": "dynamodb.amazonaws.com"
                }
            }
        }
    ]
}
```

------

當服務使用 IAM 主體憑證來呼叫另一個服務時，`aws:CalledViaFirst` 和 `aws:CalledViaLast` 鍵即會出現在請求中。它們會指出在請求鏈中進行呼叫的第一個和最後一個服務。例如，假設 CloudFormation 呼叫另一個名為 的服務`X Service`，它會呼叫 DynamoDB，然後呼叫 AWS KMS。對 的最終呼叫是由 `User 1` ** CloudFormation執行，然後 AWS KMS 是 `X Service`，然後是 DynamoDB。它首先透過 呼叫 CloudFormation ，最後透過 DynamoDB 呼叫。

![\[使用 aws:CalledViaFirst 和 aws:CalledViaLast 的範例\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/condition-key-calledviafirstlast-example-diagram.png)


### aws:CalledViaFirst
<a name="condition-keys-calledviafirst"></a>

使用此鍵可將政策中的服務與代表 IAM 主體 (使用者或角色) 提出請求的***第一個服務***進行比較。如需詳細資訊，請參閱 `aws:CalledVia`。
+ **可用性** – 服務使用 IAM 主體的憑證向不同服務提出至少一個其他請求時，此鍵即出現在請求中。若服務使用[服務角色或服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)來代表主體進行呼叫，則此金鑰不存在。若主體直接進行呼叫，此鍵亦不存在。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

### aws:CalledViaLast
<a name="condition-keys-calledvialast"></a>

使用此鍵可將政策中的服務與代表 IAM 主體 (使用者或角色) 提出請求的*最後一個服務*進行比較。如需詳細資訊，請參閱 `aws:CalledVia`。
+ **可用性** – 服務使用 IAM 主體的憑證向不同服務提出至少一個其他請求時，此鍵即出現在請求中。若服務使用[服務角色或服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)來代表主體進行呼叫，則此金鑰不存在。若主體直接進行呼叫，此鍵亦不存在。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

### aws:ViaAWSService
<a name="condition-keys-viaawsservice"></a>

使用此金鑰來檢查 是否使用[轉送存取工作階段 (FAS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html) 代表您向其他 服務 AWS 服務 提出請求。

當服務使用轉寄存取工作階段代表原始 IAM 主體發出請求時，請求內容索引鍵會傳回 `true`。主體直接進行呼叫時，請求環境鍵也會傳回 `false`。
+ **可用性** – 此金鑰一律會包含在請求內容中。
+ **資料類型** – [布林值](reference_policies_elements_condition_operators.md#Conditions_Boolean)
+ **值類型** - 單一值

### aws:CalledViaAWSMCP
<a name="condition-keys-calledviaawasmcp"></a>

使用此金鑰來比較政策中的服務與代表 IAM 主體 （使用者或角色） 提出請求的 AWS MCP 服務。當委託人向 AWS MCP 服務提出請求時，該服務會使用委託人的登入資料向其他服務提出後續請求。使用 AWS MCP 服務提出請求時，會以服務主體的值設定此金鑰。`aws:CalledViaAWSMCP` 金鑰包含代表委託人提出請求的 MCP 服務的服務委託人名稱。
+ **可用性** – 當 AWS MCP 服務使用 IAM 主體的登入資料向 AWS 服務提出請求時，此金鑰會出現在請求中。若主體直接進行呼叫，此鍵亦不存在。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

您可以使用此條件金鑰，根據啟動請求的特定 MCP 伺服器來允許或拒絕存取。例如，以下政策拒絕透過特定 MCP 伺服器啟動敏感刪除操作：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenySensitiveActionsViaSpecificMCP",
            "Effect": "Deny",
            "Action": [
                "s3:DeleteBucket",
                "s3:DeleteObject",
                "dynamodb:DeleteTable"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:CalledViaAWSMCP": "aws-mcp.amazonaws.com"
                }
            }
        }
    ]
}
```

### aws:ViaAWSMCPService
<a name="condition-keys-viaawsmcpservice"></a>

使用此金鑰來檢查 AWS MCP 服務是否使用轉送存取工作階段 (FAS) AWS 代表您向其他服務提出請求。當 AWS MCP 服務代表原始 IAM 主體將請求轉送至 AWS 服務`true`時，請求內容金鑰會傳回。主體直接進行呼叫時，請求環境鍵也會傳回 `false`。
+ **可用性** – 當 AWS MCP 伺服器代表 IAM 主體向下游 AWS 服務提出請求時，此金鑰會包含在請求內容中。
+ **資料類型** – [布林值](reference_policies_elements_condition_operators.md#Conditions_Boolean)
+ **值類型** - 單一值

您可以使用此金鑰在特定動作透過 MCP 伺服器時加以限制。例如，當透過任何 AWS MCP 伺服器啟動時，下列政策會拒絕敏感的刪除操作：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenySensitiveActionsViaMCP",
            "Effect": "Deny",
            "Action": [
                "s3:DeleteBucket",
                "s3:DeleteObject",
                "dynamodb:DeleteTable"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "aws:ViaAWSMCPService": "true"
                }
            }
        }
    ]
}
```

### aws:CurrentTime
<a name="condition-keys-currenttime"></a>

使用此鍵來將請求的日期和時間及您在政策中所指定的日期與時間進行比較。如要檢視使用此條件鍵的範例政策，請參閱 [AWS：允許根據日期和時間進行存取](reference_policies_examples_aws-dates.md)。
+ **可用性** – 此金鑰一律會包含在請求內容中。
+ **資料類型** – [日期](reference_policies_elements_condition_operators.md#Conditions_Date)
+ **值類型** - 單一值

### aws:EpochTime
<a name="condition-keys-epochtime"></a>

使用此鍵來將請求的日期和時間 (epoch 或 Unix 時間) 與您在政策中所指定的日期與時間進行比較。此鍵也接受自 1970 年 1 月 1 日以來的秒數。
+ **可用性** – 此金鑰一律會包含在請求內容中。
+ **資料類型** – [日期](reference_policies_elements_condition_operators.md#Conditions_Date)、[數字](reference_policies_elements_condition_operators.md#Conditions_Numeric)
+ **值類型** - 單一值

### aws:referer
<a name="condition-keys-referer"></a>

使用此鍵來將在用戶端瀏覽器中推薦請求的人員，與您在政策中所指定的推薦者進行比較。`aws:referer` 請求內容的值會由呼叫者在 HTTP 標頭中提供。當您選取網頁上的連結時，`Referer` 標頭會包含在 Web 瀏覽器請求中。`Referer` 標頭包含選取連結的網頁 URL。
+ **可用性** – 只有在透過從瀏覽器中的網頁 URL 連結來調用對 AWS 資源的請求時，請求內容才會包含此金鑰。程式設計請求不會包含此鍵，因為它不會使用瀏覽器連結來存取 AWS 資源。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

例如，您可以直接使用 URL 或使用直接 API 呼叫來存取 Amazon S3 物件。如需詳細資訊，請參閱[直接使用 Web 瀏覽器的 Amazon S3 API 操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-use-case-4)。當您從存在於網頁中的 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
<a name="condition-keys-requestedregion"></a>

使用此金鑰來比較請求中呼叫 AWS 的區域與您在政策中指定的區域。您可以使用此全域條件鍵來控制可接受請求的區域。若要檢視每個服務的 AWS 區域，請參閱 中的[服務端點和配額](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)*Amazon Web Services 一般參考*。
+ **可用性** – 此鍵一律會包含在請求內容中。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

有些全域服務 (例如 IAM) 只會有單一端點。因為此端點實際位於美國東部 (維吉尼亞北部) 區域，所以一律會對 us-east-1 區域提出 IAM 呼叫。例如，如果您建立的政策拒絕存取所有服務 (如果請求的區域不是 us-west-2)，則 IAM 呼叫一律會失敗。若要檢視如何解決此問題的範例，請參閱[帶拒絕的 NotAction](reference_policies_elements_notaction.md)。

**注意**  
`aws:RequestedRegion` 條件鍵可讓您控制哪個端點叫用的服務，但不控制操作的影響。有些服務具有跨區域影響。  
例如，Amazon S3 具有延及其他區域的 API 操作。  
您可以在一個區域 (受 `s3:PutBucketReplication` 條件鍵影響) 中叫用`aws:RequestedRegion`，但其他區域會根據複寫組態設定而受到影響。
您可以調用 `s3:CreateBucket` 以在其他區域建立儲存貯體，並使用 `s3:LocationConstraint` 條件鍵控制適用的區域。

您可以使用此內容金鑰來限制存取指定區域集中 AWS 的服務。例如，下列政策可讓使用者在 AWS 管理主控台中檢視所有 Amazon EC2 執行個體。不過，只允許他們對愛爾蘭 (eu-west-1)、倫敦 (eu-west-2) 或巴黎 (eu-west-3) 的執行個體進行變更。

------
#### [ JSON ]

****  

```
{
    "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*
<a name="condition-keys-requesttag"></a>

使用此鍵來將請求中傳遞的標籤鍵/值對與您在政策中所指定的標籤對進行比較。例如，您可以檢查請求是否包含標籤鍵 `"Dept"` 並且其具有值 `"Accounting"`。如需詳細資訊，請參閱[在 AWS 請求期間控制存取](access_tags.md#access_tags_control-requests)。
+ **可用性** – 在請求中傳遞標籤鍵/值對時，鍵會包含在請求內容中。在請求中傳遞多個標籤時，每個標籤鍵值對都會有一個內容鍵。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

此內容鍵的格式為 `"aws:RequestTag/tag-key":"tag-value"`，其中 *tag-key* 和 *tag-value* 是標籤鍵值組。標籤索引鍵不區分大小寫。這表示如果您在政策的條件元素中指定 `"aws:RequestTag/TagKey1": "Value1"`，則該條件會符合名為 `TagKey1` 或 `tagkey1` 的要求標籤鍵 (但不會同時符合兩者)。這些標籤索引鍵值對中的值需區分大小寫。這表示如果您在政策的條件元素中指定 `"aws:RequestTag/TagKey1": "Production"`，該條件會符合名為 `Production` 的請求標籤值 (但不會符合 `production` 或 `PRODUCTION`)。

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

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "ec2:CreateTags",
    "Resource": "arn:aws:ec2::111122223333:instance/*",
    "Condition": {
      "StringEquals": {
        "aws:RequestTag/environment": [
          "preprod",
          "production"
        ],
        "aws:RequestTag/team": [
          "engineering"
        ]
      }
    }
  }
}
```

------

### aws:TagKeys
<a name="condition-keys-tagkeys"></a>

使用此鍵來將請求中的標籤鍵與您在政策中所指定的鍵進行比較。當使用政策來控制使用標籤的存取時，建議您使用 `aws:TagKeys` 條件鍵來定義允許的標籤鍵。如需範例政策和詳細資訊，請參閱 [根據標籤索引鍵控制存取權限](access_tags.md#access_tags_control-tag-keys)。
+ **可用性** – 如果操作支援在請求中傳遞標籤，則此鍵會包含在請求內容中。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String) (清單)
+ **值類型** - 多重值

此內容鍵的格式為 `"aws:TagKeys":"tag-key"`，其中 *tag-key* 是沒有值的標籤鍵清單 (例如，`["Dept","Cost-Center"]`)。

由於您可以在請求中包含多個標籤鍵值對，因此請求內容可能會是[多值](reference_policies_condition-single-vs-multi-valued-context-keys.md)請求。在這種情況下，您必須使用 `ForAllValues` 或 `ForAnyValue` 設定運算子。如需詳細資訊，請參閱[用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。

有些服務支援標記搭配資源操作，如建立、修改或刪除資源。若要允許標記和操作作為單一呼叫，您必須建立一個政策，同時包括標記動作和資源修改動作。然後，您可以使用 `aws:TagKeys` 條件鍵以強制執行在請求中使用特定的標籤鍵。例如，若要在某人建立 Amazon EC2 快照時限制標籤，您必須在政策中包含 `ec2:CreateSnapshot` 建立動作***和*** `ec2:CreateTags` 標記動作。若要檢視適用於此案例 (使用 `aws:TagKeys`) 的政策，請參閱《Amazon EC2 使用者指南》**中的[使用標籤建立快照](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html#iam-creating-snapshot-with-tags)。

### aws:SecureTransport
<a name="condition-keys-securetransport"></a>

使用此金鑰來檢查請求是否使用 TLS 進行傳送。請求內容會傳回 `true` 或 `false`。在政策中，您可以允許只有在使用 TLS 傳送請求時，才能進行特定動作。
+ **可用性** – 此鍵一律會包含在請求內容中。
+ **資料類型** – [布林值](reference_policies_elements_condition_operators.md#Conditions_Boolean)
+ **值類型** - 單一值

**注意**  
 AWS 服務 代表您 AWS 服務 呼叫其他 (service-to-service呼叫） 時，會修訂特定網路的授權內容。如果您的政策搭配 `Deny`陳述式使用此條件金鑰， AWS 服務 原則可能會意外遭到封鎖。為在滿足安全需求的同時讓 AWS 服務 可以正常運作，請透過新增值為 `false` 的 `aws:PrincipalIsAWSService` 條件索引鍵，將服務主體從 `Deny` 陳述式中排除。例如：  

```
{
  "Effect": "Deny",
  "Action": "s3:*",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "aws:SecureTransport": "false",
      "aws:PrincipalIsAWSService": "false"
    }
  }
}
```
當不使用 HTTPS (`aws:SecureTransport` 為 false) 時，此政策拒絕存取 Amazon S3 操作，但僅適用於非AWS 服務主體。這可確保您的條件限制適用於委託人以外的所有 AWS 服務 委託人。

### aws:SourceAccount
<a name="condition-keys-sourceaccount"></a>

使用此金鑰來比較提出service-to-service請求之資源的帳戶 ID 與您在政策中指定的帳戶 ID，但僅限於服務 AWS 委託人提出請求時。
+ **可用性** – 只有當 [AWS 服務主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services)代表組態觸發服務對服務要求的資源直接呼叫您的資源時，才會將此鍵包含在請求內容中。發出呼叫服務會將原始資源的帳戶 ID 傳遞給被呼叫的服務。
**注意**  
此金鑰提供統一機制，以跨 AWS 服務強制執行跨服務混淆代理控制。不過，並非所有服務整合都需要使用此全域條件索引鍵。如需緩解跨服務混淆代理人風險之服務特定機制的詳細資訊，請參閱 AWS 服務 您使用的 文件。  
![\[aws:SourceAccount\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/sourceAccount.png)
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

您可以使用此條件索引鍵，以協助確保呼叫服務只有在請求來自特定帳戶時，才能存取您的資源。例如，您可以連接下列資源控制政策 (RCP)，以拒絕服務主體對 Amazon S3 儲存貯體的請求，除非它們由指定帳戶中的資源所觸發。此政策只會對具有 `aws:SourceAccount` 金鑰 (`"Null": {"aws:SourceAccount": "false"}`) 的服務主體 (`"Bool": {"aws:PrincipalIsAWSService": "true"}`) 提出的請求套用控制項，因此不需要使用此金鑰和主體呼叫的服務整合不會受到影響。如果請求內容中存在 `aws:SourceAccount` 金鑰，則 `Null` 條件將評估為 `true`，導致強制執行 `aws:SourceAccount` 金鑰。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RCPEnforceConfusedDeputyProtection",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:SourceAccount": "111122223333"
        },
        "Null": {
          "aws:SourceAccount": "false"
        },
        "Bool": {
          "aws:PrincipalIsAWSService": "true"
        }
      }
    }
  ]
}
```

------

在以資源為基礎的政策中，其中委託人是 AWS 服務 委託人，請使用 金鑰來限制授予服務的許可。例如，當 Amazon S3 儲存貯體設定為傳送通知至 Amazon SNS 主題時，Amazon S3 服務會叫用所有已設定事件的 `sns:Publish` API 操作。在允許 `sns:Publish` 操作的主題政策中，將條件鍵的值設定為 Amazon S3 儲存貯體的帳戶 ID。

### aws:SourceArn
<a name="condition-keys-sourcearn"></a>

使用此鍵，可將提出服務對服務請求之資源的 [Amazon Resource Name (ARN)](reference_identifiers.md#identifiers-arns) 與您在政策中所指定的 ARN 進行比較，但僅限於請求是由 AWS 服務主體提出的情況。如果來源的 ARN 包括帳戶 ID 時，則不需要搭配 `aws:SourceAccount` 使用 `aws:SourceArn`。

此鍵不適用提出請求的主體 ARN。請改用 `aws:PrincipalArn`。
+ **可用性** – 只有當 [AWS 服務主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services)代表組態觸發服務對服務要求的資源直接呼叫您的資源時，才會將此鍵包含在請求內容中。發出呼叫的服務會將原始資源的 ARN 傳遞給被呼叫的服務。
**注意**  
此金鑰提供統一機制，以跨 AWS 服務強制執行跨服務混淆代理控制。不過，並非所有服務整合都需要使用此全域條件索引鍵。如需緩解跨服務混淆代理人風險之服務特定機制的詳細資訊，請參閱 AWS 服務 您使用的 文件。  
![\[aws:SourceArn\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/sourceArn.png)
+ **資料類型** – ARN

  AWS 建議您在比較 [ARN 時使用 ARN 運算子](reference_policies_elements_condition_operators.md#Conditions_ARN)，而非[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。 ARNs
+ **值類型** - 單一值

您可以使用此條件索引鍵，以協助確保呼叫服務只有在請求來自特定資源時，才能存取您的資源。使用以資源為基礎的政策搭配 AWS 服務 委託人做為 時`Principal`，請將此條件索引鍵的值設定為您要限制存取之資源的 ARN。例如，當 Amazon S3 儲存貯體設定為傳送通知至 Amazon SNS 主題時，Amazon S3 服務會叫用所有已設定事件的 `sns:Publish` API 操作。在允許 `sns:Publish` 操作的主題政策中，將條件鍵的值設定為 Amazon S3 儲存貯體的 ARN。如需有關何時在資源型政策中使用此條件索引鍵的建議，請參閱您正在使用的 AWS 服務 文件。

### aws:SourceOrgID
<a name="condition-keys-sourceorgid"></a>

使用此金鑰來比較提出service-to-service請求之資源[的組織 ID](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_details.html) 與您在政策中指定的組織 ID，但僅限於服務 AWS 委託人提出請求時。當您對 AWS Organizations中的組織新增和移除帳戶時，包含 `aws:SourceOrgID` 鍵的政策會自動包含正確的帳戶，您無需手動更新政策。
+ **可用性** – 只有當 [AWS 服務主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services)代表組織成員帳戶所擁有的資源直接呼叫您的資源時，此鍵才會包含在請求內容中。發出呼叫的服務會將原始資源的組織 ID 傳遞給被呼叫的服務。
**注意**  
此金鑰提供統一機制，以跨 AWS 服務強制執行跨服務混淆代理控制。不過，並非所有服務整合都需要使用此全域條件索引鍵。如需緩解跨服務混淆代理人風險之服務特定機制的詳細資訊，請參閱 AWS 服務 您使用的 文件。  
![\[aws:SourceOrgID\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/sourceOrgID.png)
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

您可以使用此條件索引鍵，以協助確保呼叫服務只有在請求來自特定組織時，才能存取您的資源。例如，您可以連接下列資源控制政策 (RCP) 來拒絕服務主體對 Amazon S3 儲存貯體的請求，除非它們是由指定 AWS 組織中的資源觸發。此政策只會對具有 `aws:SourceAccount` 金鑰 (`"Null": {"aws:SourceAccount": "false"}`) 的服務主體 (`"Bool": {"aws:PrincipalIsAWSService": "true"}`) 提出的請求套用控制項，因此不需要使用該金鑰和主體呼叫的服務整合不會受到影響。如果請求內容中存在 `aws:SourceAccount` 金鑰，則 `Null` 條件將評估為 `true`，導致強制執行 `aws:SourceOrgID` 金鑰。我們在 `Null` 條件運算子中使用 `aws:SourceAccount` 而非 `aws:SourceOrgID`，因此如果請求來自不屬於組織的帳戶，則控制仍然適用。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RCPEnforceConfusedDeputyProtection",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:SourceOrgID": "o-xxxxxxxxxx"
        },
        "Null": {
          "aws:SourceAccount": "false"
        },
        "Bool": {
          "aws:PrincipalIsAWSService": "true"
        }
      }
    }
  ]
}
```

------

### aws:SourceOrgPaths
<a name="condition-keys-sourceorgpaths"></a>

使用此金鑰來比較提出service-to-service請求的資源 AWS Organizations 路徑與您在政策中指定的組織路徑，但僅限於服務 AWS 委託人提出請求時。 AWS Organizations 路徑是 AWS Organizations 實體結構的文字表示法。如需有關使用和了解路徑的詳細資訊，請參閱[了解 AWS Organizations 實體路徑](access_policies_last-accessed-view-data-orgs.md#access_policies_last-accessed-viewing-orgs-entity-path)。
+ **可用性** – 只有當 [AWS 服務主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services)代表組織成員帳戶所擁有的資源直接呼叫您的資源時，此鍵才會包含在請求內容中。發出呼叫的服務會將原始資源的組織路徑傳遞給被呼叫的服務。
**注意**  
此金鑰提供統一機制，以跨 AWS 服務強制執行跨服務混淆代理控制。不過，並非所有服務整合都需要使用此全域條件索引鍵。如需緩解跨服務混淆代理人風險之服務特定機制的詳細資訊，請參閱 AWS 服務 您使用的 文件。  
![\[aws:SourceOrgPaths\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/sourceOrgPaths.png)
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String) (清單)
+ **值類型** - 多重值

使用此條件索引鍵，以協助確保呼叫服務只有在請求來自 AWS Organizations中的特定組織單位 (OU) 時，才能存取您的資源。

與 `aws:SourceOrgID` 類似，為了協助防止對不需要使用此索引鍵的服務整合造成影響，請使用 `Null` 條件運算子與 `aws:SourceAccount` 條件索引鍵，以便在請求來自不屬於組織的帳戶時仍可套用控制項。

```
{
      "Condition": {
        "ForAllValues:StringNotLikeIfExists": {
            "aws:SourceOrgPaths": "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/"
        },
        "Null": {
          "aws:SourceAccount": "false"
        },
        "Bool": {
          "aws:PrincipalIsAWSService": "true"
        }
      }
}
```

`aws:SourceOrgPaths` 是多重值條件鍵。多值鍵在請求內容中可以擁有多個值。使用此鍵時，您必須使用 `ForAnyValue` 或 `ForAllValues` 設定運算子搭配[字串條件運算子](reference_policies_elements_condition_operators.md#Conditions_String)。如需有關多重值條件鍵的詳細資訊，請參閱 [用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。

### aws:UserAgent
<a name="condition-keys-useragent"></a>

使用此鍵來將申請者的用戶端應用程式與您在政策中指定的應用程式進行比較。
+ **可用性** – 此鍵一律會包含在請求內容中。
+ **資料類型** – [字串](reference_policies_elements_condition_operators.md#Conditions_String)
+ **值類型** - 單一值

**警告**  
應該小心使用此鍵。由於`aws:UserAgent` 值由 HTTP 標頭中的呼叫者提供，未授權方可以使用修改的或自訂瀏覽器來提供他們選擇的任何 `aws:UserAgent` 值。因此， `aws:UserAgent` 不應用於防止未經授權方提出直接 AWS 請求。您可以使用它僅允許特定用戶端應用程式，而且只在測試政策之後才能使用。

### aws:IsMcpServiceAction
<a name="condition-keys-ismcpserviceaction"></a>

使用此金鑰來驗證正在授權的動作是否為 MCP 服務動作。此金鑰不是指 MCP 服務對其他服務 AWS 採取的動作。
+ **可用性** – 此金鑰包含在請求內容中，且只有在 MCP 服務授權 MCP 服務動作時，才會設為 True。
+ **資料類型** – [布林值](reference_policies_elements_condition_operators.md#Conditions_Boolean)
+ **值類型** - 單一值

## 其他跨服務條件鍵
<a name="condition-keys-other"></a>

AWS STS 支援 [OIDC](reference_policies_iam-condition-keys.md#condition-keys-wif) [聯合的 SAML 型聯合條件金鑰](reference_policies_iam-condition-keys.md#condition-keys-saml)和跨服務條件金鑰。當使用 OIDC 或 SAML 聯合身分的使用者在其他 服務中執行 AWS 操作時，即可使用這些金鑰。

# IAM 和 AWS STS 條件內容索引鍵
<a name="reference_policies_iam-condition-keys"></a>

您可以使用 JSON 政策中的 `Condition`元素來測試包含在所有請求請求內容中的金鑰值 AWS 。這些鍵提供有關請求本身或請求參考的資源的資訊。在允許使用者請求的動作之前，您可以檢查鍵是否有指定的值。這可讓您可以在 JSON 政策陳述式符合或不符合傳入請求時進行精細控制。如需有關如何 JSON 政策中使用 `Condition` 元素的資訊，請參閱 [IAM JSON 政策元素：Condition](reference_policies_elements_condition.md)。

本主題說明 IAM 服務 （字`iam:`首為 ) 和 AWS Security Token Service (AWS STS) 服務 (`sts:`字首為 ) 定義和提供的金鑰。其他數個 AWS 服務也提供與該服務定義的動作和資源相關的服務特定金鑰。如需詳細資訊，請參閱 [AWS 服務的動作、資源和條件金鑰](reference_policies_actions-resources-contextkeys.html)。支援條件鍵的服務文件通常包含其他資訊。例如，如需可在 Amazon S3 資源政策中使用之金鑰的資訊，請參閱 *Amazon Simple Storage Service 使用者指南*中的 [Amazon S3 政策鍵](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html#AvailableKeys-iamV2)。

**Topics**
+ [IAM 的可用鍵](#available-keys-for-iam)
+ [AWS OIDC 聯合的可用金鑰](#condition-keys-wif)
+ [SAML AWS STS 型聯合的可用金鑰](#condition-keys-saml)
+ [跨服務 SAML AWS STS 型聯合內容索引鍵](#cross-condition-keys-saml)
+ [的可用金鑰 AWS STS](#condition-keys-sts)

## IAM 的可用鍵
<a name="available-keys-for-iam"></a>

您可以在控制存取 IAM 資源的政策中使用以下條件鍵：

**iam:AssociatedResourceArn**  
使用 [ARN 運算子](reference_policies_elements_condition_operators.md#Conditions_ARN)。  
指定將在目標服務與此角色建立關聯之資源的 ARN。資源通常屬於主體者傳遞角色的目標服務。有時候，資源也可能屬於第三個服務。例如，您可以將角色傳遞給他們在 Amazon EC2 執行個體上使用的 Amazon EC2 Auto Scaling。在這種情況下，條件可能會符合 Amazon EC2 執行個體的 ARN。  
此條件鍵僅適用於政策中的 [PassRole](id_roles_use_passrole.md) 動作。不能用來限制任何其他動作。  
在政策中使用 `iam:AssociatedResourceArn` 條件來限制 [PassRole](id_roles_use_passrole.md) 動作時，如果政策旨在定義 [AddRoleToInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddRoleToInstanceProfile.html) 動作的存取權，則需特別考量。在這種情況下，您無法在 EC2 執行個體 ARN 中指定區域或執行個體 ID。ARN 值必須為 `arn:aws:ec2:*:CallerAccountId:instance/*`。使用任何其他 ARN 值可能會導致非預期評估結果。
在身分型政策中使用此條件索引鍵以允許實體傳遞角色，但前提是該角色與指定的資源相關聯。例如，您可以允許 IAM 使用者或角色將任何角色傳遞給 Amazon EC2 服務，以便與 AWS 帳戶中的執行個體搭配使用。不允許 IAM 使用者或角色將角色傳遞給其他服務。  

```
{
    "Effect": "Allow",
    "Action": "iam:PassRole",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "iam:PassedToService": "ec2.amazonaws.com"
        },
        "ArnLike": {
            "iam:AssociatedResourceARN": [
                "arn:aws:ec2:*:111122223333:instance/*"
            ]
        }
    }
}
```
AWS 支援 [iam：PassedToService](#ck_PassedToService) 的 服務也支援此條件金鑰。

**iam:AWSServiceName**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
指定此角色所連接的 AWS 服務。  
[https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) API 操作支援此條件索引鍵。  
如需哪些服務支援使用服務連結角色的資訊，請參閱 [AWS 使用 IAM 的 服務](reference_aws-services-that-work-with-iam.md)，並尋找 **Service-Linked Role (服務連結角色)** 欄中顯示 **Yes (是)** 的服務。選擇具有連結的 **Yes (是)**，以檢視該服務的服務連結角色文件。
在此範例中，若服務名稱為 *access-analyzer.amazonaws.com*，您可允許實體使用 [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) API 操作建立服務連結角色。    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
       "Effect": "Allow",
       "Action": "iam:CreateServiceLinkedRole",
       "Resource": "*",
       "Condition": {
         "StringLike": {
           "iam:AWSServiceName": "access-analyzer.amazonaws.com"
         }
       }
     }]
 }
```

**iam:FIDO-certification**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
在註冊 FIDO 安全金鑰時檢查 MFA 裝置 FIDO 認證等級。從 [FIDO Alliance Metadata Service (MDS)](https://fidoalliance.org/metadata/) 中擷取裝置認證。如果 FIDO 安全金鑰的認證狀態或等級發生變更，除非裝置已取消註冊並再次註冊以取得更新的認證資訊，否則其將不會更新。  
L1、L1plus、L2、L2plus、L3、L3plus 的可能值  
在此範例中，您註冊安全金鑰並擷取您裝置的 FIDO Level 1 plus 認證。    
****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-certification": "L1plus"
                }
            }
        }
    ]
                  
 }
```

**iam:FIDO-FIPS-140-2-certification**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
在註冊 FIDO 安全金鑰時檢查 MFA 裝置 FIPS-140-2 驗證認證等級。從 [FIDO Alliance Metadata Service (MDS)](https://fidoalliance.org/metadata/) 中擷取裝置認證。如果 FIDO 安全金鑰的認證狀態或等級發生變更，除非裝置已取消註冊並再次註冊以取得更新的認證資訊，否則其將不會更新。  
L1、L2、L3、L4 的可能值  
在此範例中，您註冊安全金鑰並擷取您裝置的 FIPS-140-2 Level 2 認證。    
****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2"
                }
            }
        }
    ]
                  
 }
```

**iam:FIDO-FIPS-140-3-certification**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
在註冊 FIDO 安全金鑰時檢查 MFA 裝置 FIPS-140-3 驗證認證等級。從 [FIDO Alliance Metadata Service (MDS)](https://fidoalliance.org/metadata/) 中擷取裝置認證。如果 FIDO 安全金鑰的認證狀態或等級發生變更，除非裝置已取消註冊並再次註冊以取得更新的認證資訊，否則其將不會更新。  
L1、L2、L3、L4 的可能值  
在此範例中，您註冊安全金鑰並擷取裝置的 FIPS-140-3 Level 3 認證。    
****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-3-certification": "L3"
                }
            }
        }
    ]
                  
 }
```

**iam:OrganizationsPolicyId**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
檢查具有指定 AWS Organizations ID 的政策是否符合請求中使用的政策。如要檢視使用此條件鍵的範例 IAM 政策，請參閱 [IAM：檢視 AWS Organizations 政策的服務上次存取資訊](reference_policies_examples_iam_service-accessed-data-orgs.md)。

**iam:PassedToService**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
指定可以將角色傳遞到的服務的服務主體。此條件鍵僅適用於政策中的 [PassRole](id_roles_use_passrole.md) 動作。不能用來限制任何其他動作。  
當您在政策中使用此條件鍵時，請使用服務主體指定服務。服務主體是可以在政策的 `Principal` 元素中指定的服務名稱。這是通常的格式：`SERVICE_NAME_URL.amazonaws.com`。  
您可以使用 `iam:PassedToService` 限制使用者，以便他們只能將角色傳遞給特定服務。例如，使用者可能會建立[服務角色](id_roles.md#iam-term-service-role)，它信任 CloudWatch 代他們將日誌資料寫入 Amazon S3 儲存貯體。然後，使用者必須將許可政策和信任政策連接到新的服務角色。在這種情況下，信任政策必須在 `cloudwatch.amazonaws.com` 元素中指定 `Principal`。若要檢視允許使用者將該角色傳遞至 CloudWatch 的政策，請參閱 [IAM：將 IAM 角色傳遞至特定 AWS 服務](reference_policies_examples_iam-passrole-service.md)。  
透過使用此條件鍵，您可以確保使用者僅為您指定的服務建立服務角色。例如，如果具有上述政策的使用者嘗試為 Amazon EC2 建立服務角色，操作將會失敗。發生失敗的原因是使用者沒有將角色傳遞至 Amazon EC2 的許可。  
有時您會將角色傳遞給服務，然後將角色傳遞給不同服務。`iam:PassedToService` 僅包含擔任角色的最終服務，而不是傳遞角色的中繼服務。  
有些服務不支援此條件鍵。

**iam:PermissionsBoundary**  
使用 [ARN 運算子](reference_policies_elements_condition_operators.md#Conditions_ARN)。  
檢查指定的政策連接為 IAM 主體資源上的許可界限。如需詳細資訊，請參閱[IAM 實體的許可界限](access_policies_boundaries.md)

**iam:PolicyARN**  
使用 [ARN 運算子](reference_policies_elements_condition_operators.md#Conditions_ARN)。  
在涉及受管政策的請求中檢查託管政策的 Amazon Resource Name (ARN) 。如需詳細資訊，請參閱[控制對政策的存取](access_controlling.md#access_controlling-policies)。

**iam:RegisterSecurityKey**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
檢查 MFA 裝置啟用的目前狀態。  
可能值為 `Create` 或 `Activate`。  
在此範例中，您註冊安全金鑰並擷取裝置的 FIPS-140-3 Level 1 認證。    
****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-3-certification": "L1"
                }
            }
        }
    ]
                  
 }
```

**iam:ResourceTag/*key-name***  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
檢查連接至身分資源 (使用者或角色) 的標籤是否符合指定的鍵名稱和值。  
IAM 和 同時 AWS STS 支援 `iam:ResourceTag` IAM 條件金鑰和`aws:ResourceTag`全域條件金鑰。
您可以將自訂屬性以鍵/值組的形式新增至 IAM 資源。如需有關 IAM 資源標籤的詳細資訊，請參閱 [AWS Identity and Access Management 資源的標籤](id_tags.md)。您可以使用 `ResourceTag` [控制對 AWS 資源的存取](access_tags.md#access_tags_control-resources)，包括 IAM 資源。但是，由於 IAM 不支援群組的標籤，因此您無法使用標籤來控制群組的存取。  
此範例會示範如何建立身分型政策，允許刪除具有 **status=terminated** 標籤的使用者。若要使用此政策，請將範例政策中的*斜體預留位置文字*取代為您自己的資訊。然後，遵循[建立政策](access_policies_create.md)或[編輯政策](access_policies_manage-edit.md)中的指示進行操作。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": "iam:DeleteUser",
        "Resource": "*",
        "Condition": {"StringEquals": {"iam:ResourceTag/status": "terminated"}}
    }]
}
```

**iam:ServiceSpecificCredentialAgeDays**  
適用於[數字運算子](reference_policies_elements_condition_operators.md#Conditions_Numeric)。  
此條件索引鍵會根據服務特定憑證的過期設定限制憑證的建立，便於您控制可建立之服務特定憑證的存留期上限 (以天為單位)。  
天的有效範圍為 1 至 36600 (最短 1 天，最長 36600 天)。  
[https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) API 操作支援此條件索引鍵。  
在此範例中，您僅允許使用者在服務特定憑證於 90 天內過期時，為 Amazon Bedrock 服務建立服務特定憑證。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceSpecificCredential",
            "Resource": "arn:aws:iam::111122223333:user/username",
            "Condition": {
                "StringEquals": {
                    "iam:ServiceSpecificCredentialServiceName": "bedrock.amazonaws.com"
                },
                "NumericLessThanEquals": {
                    "iam:ServiceSpecificCredentialAgeDays": "90"
                }
            }
        }
    ]
}
```

**iam:ServiceSpecificCredentialServiceName**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
指定管理 AWS 服務特定登入資料時可以使用哪些服務。此條件金鑰可讓您限制在管理 AWS 服務特定登入資料時允許哪些服務。  
下列 API 操作支援此條件索引鍵：  
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html)
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html)
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html)
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html)
下列服務支援服務特定憑證，其確切值格式如下：  
+ `bedrock.amazonaws.com`
+ `cassandra.amazonaws.com`
+ `codecommit.amazonaws.com`
在此範例中，您僅允許使用者使用 [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) API 操作，為 Amazon Bedrock 服務建立服務特定憑證。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceSpecificCredential",
            "Resource": "arn:aws:iam::111122223333:user/username",
            "Condition": {
                "StringEquals": {
                    "iam:ServiceSpecificCredentialServiceName": "bedrock.amazonaws.com"
                }
            }
        }
    ]
}
```

**iam：DelegationDuration**  
適用於[數字運算子](reference_policies_elements_condition_operators.md#Conditions_Numeric)。  
根據委派請求中請求的暫時存取持續時間篩選存取權。  
產品提供者可以使用此條件金鑰來控制他們在傳送給客戶的委派請求中允許的最長持續時間。持續時間以秒為單位指定，並決定臨時憑證在客戶釋出交換字符後保持有效的時間長度。這有助於產品提供者根據其使用案例強制執行有關存取持續時間限制的內部政策。  
`CreateDelegationRequest` API 操作支援此條件索引鍵。  
在此範例中，只有在請求的持續時間為 7200 秒 (2 小時） 或更短時，您才允許建立委派請求。  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateDelegationRequest",
            "Resource": "*",
            "Condition": {
                "NumericLessThanEquals": {
                    "iam:DelegationDuration": "7200"
                }
            }
        }
    ]
}
```

**iam：NotificationChannel**  
使用 [ARN 運算子](reference_policies_elements_condition_operators.md#Conditions_ARN)。  
根據為接收委派請求通知指定的 Amazon SNS 主題 ARN 篩選存取權。  
產品提供者可以使用此條件金鑰來限制哪些 SNS 主題可用於 CreateDelegationRequest API 呼叫中的委派請求通知。產品提供者必須指定 SNS 主題，才能接收狀態變更通知和交換字符。這可確保通知只會傳送到產品提供者組織內已核准的管道。  
`CreateDelegationRequest` API 操作支援此條件索引鍵。  
在此範例中，只有在委派請求使用特定 SNS 主題進行通知時，您才允許建立委派請求。  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateDelegationRequest",
            "Resource": "*",
            "Condition": {
                "ArnEquals": {
                    "iam:NotificationChannel": "arn:aws:sns:us-east-1:123456789012:delegation-notifications"
                }
            }
        }
    ]
}
```

**iam：TemplateArn**  
使用 [ARN 運算子](reference_policies_elements_condition_operators.md#Conditions_ARN)。  
根據用於在委派請求中定義許可的政策範本 ARN 篩選存取權。  
產品提供者可以使用此條件金鑰來控制可在 CreateDelegationRequest API 呼叫中使用的政策範本。政策範本定義產品提供者在客戶帳戶中請求的暫時許可。這可讓產品提供者限制在建立委派請求時可以使用哪些已註冊的政策範本。  
`CreateDelegationRequest` API 操作支援此條件索引鍵。  
在此範例中，只有當委派請求使用來自特定合作夥伴網域的政策範本時，您才允許建立委派請求。  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateDelegationRequest",
            "Resource": "*",
            "Condition": {
                "ArnLike": {
                    "iam:TemplateArn": "arn:aws:iam:::delegation-template/partner_*"
                }
            }
        }
    ]
}
```

**iam：DelegationRequestOwner**  
使用 [ARN 運算子](reference_policies_elements_condition_operators.md#Conditions_ARN)。  
根據擁有委派請求的 AWS 身分或委託人篩選存取權。  
客戶可以使用此條件金鑰來控制誰可以根據擁有權對委派請求執行動作。委派請求的擁有者是客戶帳戶中啟動或接收委派請求的 AWS 身分或委託人。  
下列 API 操作支援此條件索引鍵：  
+ `GetDelegationRequest`
+ `AcceptDelegationRequest`
+ `RejectDelegationRequest`
+ `SendDelegatedToken`
+ `ListDelegationRequests`
+ `UpdateDelegationRequest`
在此範例中，您允許使用者僅管理他們擁有的委派請求。  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetDelegationRequest",
                "iam:AcceptDelegationRequest",
                "iam:RejectDelegationRequest",
                "iam:SendDelegatedToken",
                "iam:UpdateDelegationRequest",
                "iam:ListDelegationRequests"
            ],
            "Resource": "*",
            "Condition": {
                "ArnEquals": {
                    "iam:DelegationRequestOwner": "${aws:PrincipalArn}"
                }
            }
        }
    ]
}
```

## AWS OIDC 聯合的可用金鑰
<a name="condition-keys-wif"></a>

您可以使用 OIDC 聯合，將臨時安全登入資料提供給已透過 OpenID Connect 相容身分提供者 (IdP) 驗證的使用者，提供給 AWS 帳戶中的 IAM OpenID Connect (OIDC) 身分提供者。此類身分提供者範例包括 GitHub、Amazon Cognito、Login with Amazon 以及 Google。可以使用您自己的 IdP 的身分權杖和存取權杖，以及授予給 Amazon Elastic Kubernetes Service 工作負載的[服務帳戶權杖](https://docs.aws.amazon.com/eks/latest/userguide/service-accounts.html#service-account-tokens)。

您可以使用 AWS OIDC 條件內容金鑰來撰寫政策，將聯合主體的存取權限制為與特定提供者、應用程式或使用者相關聯的資源。這些鍵通常用於角色的信任政策。使用 OIDC 提供者的名稱 (`token.actions.githubusercontent.com`) 後跟宣告 (`:aud`): `token.actions.githubusercontent.com:aud` 來定義條件索引鍵。

某些 OIDC 聯合條件索引鍵可用於角色工作階段，以授權資源存取。如果此值在**工作階段中可用**欄中為**是**，您可以在政策中使用這些條件索引鍵來定義允許使用者在其他 AWS 服務中存取哪些 。當工作階段中無法使用宣告時，OIDC 條件內容索引鍵僅用於初始 [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) 身分驗證的角色信任政策。

選取您的 IdP，查看如何將 IdP 中的宣告對應至 AWS中的 IAM 條件內容索引鍵。適用於 GitHub 和 Google 的索引鍵的詳細資訊位於**預設**索引標籤下。

------
#### [ Default ]

預設會列出標準 OIDC 宣告及其對應至 AWS STS 條件內容索引鍵的方式 AWS。您可以使用這些金鑰來控制角色的存取。為此，請將 **AWS STS 條件索引鍵**與 **IdP JWT 宣告**欄中的值進行比較。如果您的 IdP 未列在索引標籤選項中，可使用此映射。

GitHub Actions 工作流程和 Google 是在其 OIDC JWT ID 權杖中使用預設實作的 IdP 的一些範例。


| AWS STS 條件索引鍵 | IdP JWT 宣告 | 在工作階段中可用 | 
| --- | --- | --- | 
| amr | amr | 是 | 
| aud | azp 如果未設定 `azp` 的值，則 `aud` 條件索引鍵會映射至 `aud` 宣告。 | 是 | 
| email | email | 否 | 
| oaud | aud | 否 | 
| sub | sub | 是 | 

如需有關搭配使用條件內容索引鍵與 GitHub 的詳細資訊，請參閱 [設定 GitHub OIDC 身分提供者的角色](id_roles_create_for-idp_oidc.md#idp_oidc_Create_GitHub)。如需有關 Google `aud` 和 `azp` 欄位的詳細資訊，請參閱 [Google Identity Platform OpenID Connect](https://developers.google.com/identity/protocols/OpenIDConnect) 指南。

**amr**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。鍵是多值的，這表示您使用[條件設定運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)在政策中對其進行測試。  
**範例**：`token.actions.githubusercontent.com:amr`  
身分驗證方法參考包含使用者的登入資訊。鍵可以包含以下值：  
+ 如果使用者未經身分驗證，則鍵只包含 `unauthenticated`。
+ 如果使用者已通過身分驗證，則金鑰會包含值 `authenticated` 以及呼叫中所使用的登入提供者的名稱 (`accounts.google.com`)。

**aud**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例**：  
+ `accounts.google.com:aud`
+ `token.actions.githubusercontent.com:aud`
使用 `aud` 條件索引鍵來驗證對象是否與您在政策中所指定的相符。可以將 aud 金鑰與 sub 金鑰用於相同的身分提供者。  
在下列權杖欄位中設定此條件索引鍵：  
+ 未設定 `aud` 欄位時，您應用程式的 OAuth 2.0 Google 用戶端 ID 的 `azp`。設定 `azp` 欄位時，`aud` 欄位與 `accounts.google.com:oaud` 條件索引鍵相符。
+ 設定 `azp` 欄位時為 `azp`。這可能發生於混合式應用程式，其中，Web 應用程式和 Android 應用程式具有不同的 OAuth 2.0 Google 用戶端 ID，但共用相同的 Google API 專案。
當您使用 `accounts.google.com:aud` 條件鍵撰寫政策時，您必須知道應用程式是否為設定 `azp` 欄位的混合式應用程式。  
`azp` Field Not Set  
下列範例政策適用於未設定 `azp` 欄位的非混合式應用程式。在這種情況下，Google ID 權杖 `aud` 欄位值符合 `accounts.google.com:aud` 和 `accounts.google.com:oaud` 條件鍵值。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {"Federated": "accounts.google.com"},
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "accounts.google.com:aud": "aud-value",
                    "accounts.google.com:oaud": "aud-value",
                    "accounts.google.com:sub": "sub-value"
                }
            }
        }
    ]
}
```
`azp` Field Set  
下列範例政策適用於已設定 `azp` 欄位的混合式應用程式。在這種情況下，Google ID 權杖 `aud` 欄位值只符合 `accounts.google.com:oaud` 條件鍵值。`azp` 欄位值符合 `accounts.google.com:aud` 條件鍵值。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {"Federated": "accounts.google.com"},
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "accounts.google.com:aud": "azp-value",
                    "accounts.google.com:oaud": "aud-value",
                    "accounts.google.com:sub": "sub-value"
                }
            }
        }
    ]
}
```

**email**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例**：`accounts.google.com:email`  
此條件索引鍵會驗證使用者的電子郵件地址。此宣告的值對於此賬戶可能不是唯一，而且可能會隨著時間而變更，因此不應使用此值作為主要識別符來驗證您的使用者記錄。

**oaud**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例**：`accounts.google.com:oaud`  
此金鑰會指定預期使用此 ID 權杖的其他對象 (`aud`)。必須是您應用程式的其中一個 OAuth 2.0 用戶端 ID。

**sub**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例**：  
+ `accounts.google.com:sub`
+ token.actions.githubusercontent.com:sub
使用這些金鑰來驗證主旨是否與您在政策中所指定的相符。您可以搭配相同身分提供者的 `sub` 鍵來使用 `aud` 鍵。  
在下列角色信任政策中， `sub`條件索引鍵會將角色限制為名為 的 GitHub 分支`demo`。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::111122223333:oidc-provider/token.actions.githubusercontent.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
          "token.actions.githubusercontent.com:sub": "repo:org-name/repo-name:ref:refs/heads/demo"
        }
      }
    }
  ]
}
```

------
#### [ Amazon Cognito ]

此索引標籤說明 Amazon Cognito 如何將 OIDC 宣告映射至 中的 AWS STS 條件內容索引鍵 AWS。您可以使用這些金鑰來控制角色的存取。為此，請將 **AWS STS 條件索引鍵**與 **IdP JWT 宣告**欄中的值進行比較。

對於 Amazon Cognito 使用的角色，金鑰的定義方式使用宣告後的 `cognito-identity.amazonaws.com`。

如需有關身分池宣告映射的詳細資訊，請參閱 *Amazon Cognito Developer Guide* 中的 [Default provider mappings](https://docs.aws.amazon.com/cognito/latest/developerguide/provider-mappings.html)。如需有關使用者集區宣告映射的詳細資訊，請參閱*Amazon Cognito Developer Guide* 中的 [Using the ID token](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-id-token.html)。


| AWS STS 條件索引鍵 | IdP JWT 宣告 | 在工作階段中可用 | 
| --- | --- | --- | 
| amr | amr | 是 | 
| aud | aud | 是 | 
| oaud | aud | 否 | 
| sub | sub | 是 | 

**amr**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。鍵是多值的，這表示您使用[條件設定運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)在政策中對其進行測試。  
**範例** – `cognito-identity.amazonaws.com:amr`  
身分驗證方法參考包含使用者的登入資訊。鍵可以包含以下值：  
+ 如果使用者未經身分驗證，則鍵只包含 `unauthenticated`。
+ 如果使用者已通過身分驗證，則金鑰會包含值 `authenticated` 以及呼叫中所使用的登入提供者的名稱 (`cognito-identity.amazonaws.com`)。
舉例來說，Amazon Cognito 角色的信任政策中的以下條件會測試使用者是否未經身分驗證。  

```
"Condition": {
  "StringEquals": 
    { "cognito-identity.amazonaws.com:aud": "us-east-2:identity-pool-id" },
  "ForAnyValue:StringLike": 
    { "cognito-identity.amazonaws.com:amr": "unauthenticated" }
}
```

**aud**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `cognito-identity.amazonaws.com:aud`  
對您的使用者進行身分驗證的使用者集區應用程式用戶端。Amazon Cognito 會在存取權杖 `client_id` 宣告中呈現相同的值。

**oaud**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `cognito-identity.amazonaws.com:oaud`  
對您的使用者進行身分驗證的使用者集區應用程式用戶端。Amazon Cognito 會在存取權杖 `client_id` 宣告中呈現相同的值。

**sub**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `cognito-identity.amazonaws.com:sub`  
已驗證使用者的唯一識別碼 (UUID) 或主體。使用者名稱在您的使用者集區中可能不是唯一的。子宣告是識別特定使用者的最佳方法。您可以搭配相同身分提供者的 `sub` 鍵來使用 `aud` 鍵。  

```
"Condition": {
         "StringEquals": {
            "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-abcd-abcd-abcd-123456790ab",
            "cognito-identity.amazonaws.com:sub": [
               "us-east-1:12345678-1234-1234-1234-123456790ab",
               "us-east-1:98765432-1234-1234-1243-123456790ab"
            ]
         }
      }
```

------
#### [ Login with Amazon ]

此索引標籤說明 Login with Amazon 如何將 OIDC 宣告對應至其中 AWS STS 的條件內容金鑰 AWS。您可以使用這些金鑰來控制角色的存取。為此，請將 **AWS STS 條件索引鍵**與 **IdP JWT 宣告**欄中的值進行比較。


| AWS STS 條件索引鍵 | IdP JWT 宣告 | 在工作階段中可用 | 
| --- | --- | --- | 
|  app\$1id  |  應用程式 ID  |  是  | 
|  sub  |  使用者 ID  |  是  | 
|  user\$1id  |  使用者 ID  |  是  | 

**app\$1id**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `www.amazon.com:app_id`  
此金鑰會指定與其他身分提供者所使用之 `aud` 欄位相符的對象內容。

**sub**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `www.amazon.com:sub`  
此金鑰會確認使用者 ID 與您在政策中所指定的相符。您可以搭配相同身分提供者的 `sub ` 鍵來使用 `aud` 鍵。

**user\$1id**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `www.amazon.com:user_id`  
此金鑰會指定與其他身分提供者使用之 `aud` 欄位相符的對象內容。您可以將 `user_id` 金鑰與 `id` 金鑰用於相同身分提供者。

------
#### [ Facebook ]

此索引標籤說明 Facebook 如何將 OIDC 宣告對應至 中的 AWS STS 條件內容索引鍵 AWS。您可以使用這些金鑰來控制角色的存取。為此，請將 **AWS STS 條件索引鍵**與 **IdP JWT 宣告**欄中的值進行比較。


| AWS STS 條件索引鍵 | IdP JWT 宣告 | 在工作階段中可用 | 
| --- | --- | --- | 
| app\$1id | 應用程式 ID | 是 | 
| id | id | 是 | 

**app\$1id**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `graph.facebook.com:app_id`  
此金鑰會確認對象內容與其他身分提供者所使用之 `aud` 欄位相符。

**id**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `graph.facebook.com:id`  
此金鑰已確認應用程式 (或網站) ID 與您在政策中所指定的相符。

------
#### [ GitHub ]

此索引標籤說明 GitHub Actions 如何將 OIDC 宣告映射至 中的 AWS STS 條件內容索引鍵 AWS。您可以使用這些金鑰來控制角色的存取。為此，請將 **AWS STS 條件索引鍵**與 **IdP JWT 宣告**欄中的值進行比較。


| AWS STS 條件索引鍵 | IdP JWT 宣告 | 在工作階段中可用 | 
| --- | --- | --- | 
| 演員 | 演員 | 否 | 
| actor\$1id | actor\$1id | 否 | 
| job\$1workflow\$1ref | job\$1workflow\$1ref | 否 | 
| repository | repository | 否 | 
| repository\$1id | repository\$1id | 否 | 
| 工作流程 | 工作流程 | 否 | 
| 參考 | 參考 | 否 | 
| 環境 | 環境 | 否 | 
| enterprise\$1id | enterprise\$1id | 否 | 

**演員**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `token.actions.githubusercontent.com:actor`  
此金鑰可識別啟動工作流程執行的個人帳戶。使用此項目來限制特定演員的存取。

**actor\$1id**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `token.actions.githubusercontent.com:actor_id`  
此金鑰會驗證啟動工作流程執行之個人帳戶的 ID。演員 IDs由 GitHub 產生，不可變。

**job\$1workflow\$1ref**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `token.actions.githubusercontent.com:job_workflow_ref`  
此金鑰包含使用可重複使用工作流程之任務可重複使用工作流程的參考路徑。使用此項目來限制對特定工作流程的存取，並確保只有核准的工作流程才能擔任角色。

**儲存庫**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `token.actions.githubusercontent.com:repository`  
此金鑰可識別工作流程執行所在的儲存庫。使用此項目來限制對特定 GitHub 儲存庫的存取。

**repository\$1id**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `token.actions.githubusercontent.com:repository_id`  
此金鑰會驗證工作流程執行所在之儲存庫的 ID。儲存庫 IDs 是不可變的，即使重新命名儲存庫也不會變更。

**工作流程**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `token.actions.githubusercontent.com:workflow`  
此金鑰包含工作流程的名稱。使用此項目來限制對儲存庫中特定工作流程的存取。

**參考**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `token.actions.githubusercontent.com:ref`  
此金鑰可識別觸發工作流程執行的 git ref （分支或標籤）。使用此選項根據特定分支來限制存取，例如僅允許 `main`或 `production`分支。

**環境**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `token.actions.githubusercontent.com:environment`  
此金鑰包含任務所使用的環境名稱。使用此選項實作環境型存取控制，例如開發、預備和生產環境的個別許可。  
如果您的信任政策中包含環境宣告，則必須在 GitHub 工作流程中設定並提供環境。

**enterprise\$1id**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `token.actions.githubusercontent.com:enterprise_id`  
此金鑰會驗證包含工作流程執行所在儲存庫的企業 ID。使用此選項可確保存取權僅限於 GitHub Enterprise 組織內的儲存庫。

下列範例信任政策使用 GitHub OIDC 權杖中的自訂宣告來限制對角色的存取。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "Federated": "arn:aws:iam::AWS_ACCOUNT_ID:oidc-provider/token.actions.githubusercontent.com"
         },
         "Action": "sts:AssumeRoleWithWebIdentity",
         "Condition": {
            "StringLike": {
                "token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
                "token.actions.githubusercontent.com:job_workflow_ref": "octo-org/octo-automation/.github/workflows/oidc.yml@refs/heads/main",
                "token.actions.githubusercontent.com:repository": "octo-org/octo-repo",
                "token.actions.githubusercontent.com:actor": "octocat",
                "token.actions.githubusercontent.com:ref": "refs/heads/main",
                "token.actions.githubusercontent.com:enterprise_id": "345"
               }
           }
        }
    ]
}
```

------
#### [ Google ]

此索引標籤說明 Google 如何將 OIDC 宣告映射至 中的 AWS STS 條件內容索引鍵 AWS。您可以使用這些金鑰來控制角色的存取。為此，請將 **AWS STS 條件索引鍵**與 **IdP JWT 宣告**欄中的值進行比較。


| AWS STS 條件索引鍵 | IdP JWT 宣告 | 在工作階段中可用 | 
| --- | --- | --- | 
| google/organization\$1number | google：organization\$1number | 否 | 

**google/organization\$1number**  
適用於[數字運算子](reference_policies_elements_condition_operators.md#Conditions_Numeric)。  
**範例** – `accounts.google.com:google/organization_number`  
此金鑰會驗證權杖是否代表屬於特定 Google Cloud 或 Google Workspace 組織的 Google 身分。使用此項目來限制特定組織的使用者存取，確保只有您組織的身分才能擔任該角色。

下列範例信任政策使用 `google/organization_number`宣告來限制對角色的存取。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "Federated": "accounts.google.com"
         },
         "Action": "sts:AssumeRoleWithWebIdentity",
         "Condition": {
            "NumericEquals": {
                "accounts.google.com:google/organization_number": "123456"
               }
           }
        }
    ]
}
```

------
#### [ CircleCI ]

此索引標籤說明 CircleCI 如何將 OIDC 宣告映射至 中的 AWS STS 條件內容索引鍵 AWS。您可以使用這些金鑰來控制角色的存取。為此，請將 **AWS STS 條件索引鍵**與 **IdP JWT 宣告**欄中的值進行比較。


| AWS STS 條件索引鍵 | IdP JWT 宣告 | 在工作階段中可用 | 
| --- | --- | --- | 
| oidc.circleci.com/project-id | oidc.circleci.com/project-id | 否 | 

**oidc.circleci.com/project-id**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `circleci-issuer-url:oidc.circleci.com/project-id`  
此金鑰可識別正在執行任務的 CircleCI 專案。其值是包含唯一識別 CircleCI 專案之 UUID 的字串。使用此項目來限制對特定 CircleCI 專案的存取。

下列範例信任政策使用 `oidc.circleci.com/project-id`宣告來限制對角色的存取。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::123456789012:oidc-provider/oidc.circleci.com/org/12345"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "oidc.circleci.com/org/12345:aud": "sts.amazonaws.com",
          "oidc.circleci.com/org/12345:oidc.circleci.com/project-id": "76543210-ba98-fedc-3210-edcba0987654"
        }
      }
    }
  ]
}
```

------
#### [ Oracle Cloud Infrastructure (OCI) ]

此索引標籤說明 Oracle Cloud Infrastructure 如何將 OIDC 宣告映射至 中的 AWS STS 條件內容索引鍵 AWS。您可以使用這些金鑰來控制角色的存取。為此，請將 **AWS STS 條件索引鍵**與 **IdP JWT 宣告**欄中的值進行比較。


| AWS STS 條件索引鍵 | IdP JWT 宣告 | 在工作階段中可用 | 
| --- | --- | --- | 
| rpst\$1id | rpst\$1id | 否 | 

**rpst\$1id**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
**範例** – `oci-issuer-url:rpst_id`  
此金鑰可唯一識別 OCI 中的資源主體。使用此項目來限制對特定 OCI 資源主體的存取。rpst\$1id （資源主體工作階段字符 ID) 為 OCI 資源型身分驗證提供穩定的識別符。

下列範例信任政策使用 `rpst_id`宣告來限制對角色的存取。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::123456789012:oidc-provider/idcs-abc123ef5678901234abcd.identity.oraclecloud.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "idcs-abc123ef5678901234abcd.identity.oraclecloud.com:aud": "sts.amazonaws.com",
          "idcs-abc123ef5678901234abcd.identity.oraclecloud.com:rpst_id": "your-rpst-id"
        }
      }
    }
  ]
}
```

------

### 關於 OIDC 聯合的詳細資訊
<a name="condition-keys-wif-more-info"></a>


+ [Amazon Cognito 使用者指南](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html)
+ [OIDC 聯合身分](id_roles_providers_oidc.md)

## SAML AWS STS 型聯合的可用金鑰
<a name="condition-keys-saml"></a>

如果您使用 AWS Security Token Service (AWS STS) 使用[以 SAML 為基礎的聯合，](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSAML.html)您可以在政策中包含其他條件金鑰。

### SAML 角色信任政策
<a name="condition-keys-saml_trust-policy"></a>

在角色的信任政策中，您可以包含以下鍵，這些鍵可幫助您確定是否允許呼叫者擔任該角色。除了 `saml:doc` 外，所有值均來自 SAML 聲明。當您建立或編輯具有條件的政策時，在 IAM 主控台視覺化編輯器中可使用清單中的所有項目。標示為 `[]` 的項目*可以*具有一個值，該值是指定類型的清單。

**saml:aud**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
顯示 SAML 聲明的端點 URL。此鍵值來自聲明中的 `SAML Recipient` 欄位，*而不是* `Audience` 欄位。

**saml:commonName[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `commonName` 屬性。

**saml:cn[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduOrg` 屬性。

**saml:doc**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這代表用來擔任該角色的主體。格式為 *account-ID*/*provider-friendly-name*，例如 `123456789012/SAMLProviderName`。*account-ID* 值是指擁有 [SAML 提供者](id_roles_providers_create_saml.md)的帳戶。

**saml:edupersonaffiliation[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduPerson` 屬性。

**saml:edupersonassurance[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduPerson` 屬性。

**saml:edupersonentitlement[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduPerson` 屬性。

**saml:edupersonnickname[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduPerson` 屬性。

**saml:edupersonorgdn**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduPerson` 屬性。

**saml:edupersonorgunitdn[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduPerson` 屬性。

**saml:edupersonprimaryaffiliation**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduPerson` 屬性。

**saml:edupersonprimaryorgunitdn**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduPerson` 屬性。

**saml:edupersonprincipalname**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduPerson` 屬性。

**saml:edupersonscopedaffiliation[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduPerson` 屬性。

**saml:edupersontargetedid[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduPerson` 屬性。

**saml:eduorghomepageuri[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduOrg` 屬性。

**saml:eduorgidentityauthnpolicyuri[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduOrg` 屬性。

**saml:eduorglegalname[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduOrg` 屬性。

**saml:eduorgsuperioruri[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduOrg` 屬性。

**saml:eduorgwhitepagesuri[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `eduOrg` 屬性。

**saml:givenName[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `givenName` 屬性。

**saml:iss**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
發行者，由 URN 代表。

**saml:mail[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `mail` 屬性。

**saml:name[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `name` 屬性。

**saml:namequalifier**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
以 SAML 提供者易記名稱為基礎的雜湊值。該值是下列值的串連，依照順序且以 '/' 字元區隔：  

1. `Issuer` 回應值 (`saml:iss`)

1. `AWS` 帳戶 ID

1.  IAM 中 SAML 提供者的易記名稱 (ARN 的最後一個部分) 
帳戶 ID 與 SAML 提供者的易記名稱的串聯可作為鍵 `saml:doc` 供 IAM 政策使用。如需詳細資訊，請參閱 [單獨辨識以 SAML 為基礎的聯合身分中的使用者](id_roles_providers_saml.md#CreatingSAML-userid)。

**saml:organizationStatus[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `organizationStatus` 屬性。

**saml:primaryGroupSID[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `primaryGroupSID` 屬性。

**saml:sub**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是該陳述的主題，其中包含單獨辨識組織中某個使用者的值 (例如 `_cbb88bf52c2510eabe00c1642d4643f41430fe25e3`)。

**saml:sub\$1type**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
此鍵可以具有值 `persistent`、`transient` 或者由 SAML 聲明中使用的 `Format` 與 `Subject` 元素的完整 `NameID` URI 組成。`persistent` 的值表示 `saml:sub` 中的值對於工作階段之間的使用者是相同的。如果值為 `transient`，則使用者在每個工作階段中擁有不同的 `saml:sub` 值。如需 `NameID` 元素的 `Format` 屬性的詳細資訊，請參閱 [為身分驗證回應設定 SAML 聲明](id_roles_providers_create_saml_assertions.md)。

**saml:surname[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `surnameuid` 屬性。

**saml:uid[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `uid` 屬性。

**saml:x500UniqueIdentifier[]**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是 `x500UniqueIdentifier` 屬性。

如需 `eduPerson` 和 `eduOrg` 屬性的一般資訊，請參閱 [REFEDS Wiki 網站](https://wiki.refeds.org/display/STAN/eduPerson)。如需 `eduPerson` 屬性的清單，請參閱 [eduPerson 物件類別規格 (201602)](https://software.internet2.edu/eduperson/internet2-mace-dir-eduperson-201602.html)。

類型為清單的條件鍵可包括多個值。若要在清單值的政策中建立條件，可以使用[設定運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys) (`ForAllValues`、`ForAnyValue`)。例如，若要允許關係為「教職員」或「員工」 (但不是「學生」) 的任何使用者，您可以使用如下條件：

```
"Condition": {
   "ForAllValues:StringLike": {
     "saml:edupersonaffiliation":[ "faculty", "staff"] 
   }
}
```

## 跨服務 SAML AWS STS 型聯合內容索引鍵
<a name="cross-condition-keys-saml"></a>

某些以 SAML 為基礎的聯合條件金鑰可用於後續請求，以授權其他服務和`AssumeRole`呼叫中的 AWS 操作。這些是下列條件索引鍵，當聯合身分主體擔任另一個角色時，可用於角色信任政策，以及在來自其他服務的資源政策中 AWS 用於授權聯合身分主體的資源存取。如需使用這些金鑰的詳細資訊，請參閱[關於以 SAML 2.0 為基礎的聯合](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html#CreatingSAML-userid)。

選取條件鍵以查看描述。
+ [saml:namequalifier](#ck_saml-namequalifier)
+ [saml:sub](#ck_saml-sub)
+ [saml:sub_type](#ck_saml-subtype)

**注意**  
在初始外部身分提供者 (IdP) 驗證回應之後，沒有其他以 SAML 為基礎的聯合條件鍵可供使用。

## 的可用金鑰 AWS STS
<a name="condition-keys-sts"></a>

對於使用 AWS Security Token Service (AWS STS) 操作擔任的角色，您可以在 IAM 角色信任政策中使用下列條件金鑰。

**saml:sub**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
這是該陳述的主題，其中包含單獨辨識組織中某個使用者的值 (例如 `_cbb88bf52c2510eabe00c1642d4643f41430fe25e3`)。

**sts:AWSServiceName**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
使用此鍵來指定可以使用持有人權杖的服務。當您在政策中使用此條件鍵時，請使用服務主體指定服務。服務主體是可以在政策的 `Principal` 元素中指定的服務名稱。例如， `codeartifact.amazonaws.com`是 AWS CodeArtifact 服務主體。  
**可用性** – 此鍵會呈現在取得持有人權杖的請求中。您無法直接呼叫 AWS STS 以取得承載字符。當您在其他服務中執行某些操作時，服務會代表您請求持有人權杖。  
有些 AWS 服務需要您取得 AWS STS 服務承載字符的許可，才能以程式設計方式存取其資源。例如， AWS CodeArtifact 需要主體使用持有人權杖來執行某些操作。`aws codeartifact get-authorization-token` 命令會傳回一個持有人權杖。然後，您可以使用承載字符來執行 AWS CodeArtifact 操作。如需有關持有人權杖的詳細資訊，請參閱[服務持有人權杖](id_credentials_bearer.md)。  
您可以使用此條件鍵來允許主體取得持有人權杖，以與特定服務搭配使用。

**sts:DurationSeconds**  
適用於[數字運算子](reference_policies_elements_condition_operators.md#Conditions_Numeric)。  
使用此金鑰指定主體從 [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) API 取得 AWS AWS STS 承載字符或 JSON Web 字符時可以使用的持續時間 （以秒為單位）。  
**可用性** – 此金鑰存在於從 GetWebIdentityToken API 取得承載字符或 JSON Web 字符的請求中。您無法直接呼叫 AWS STS 以取得承載字符。當您在其他服務中執行某些操作時，服務會代表您請求持有人權杖。金鑰不適用於 AWS STS 擔任角色操作。  
有些 AWS 服務需要您取得 AWS STS 服務承載字符的許可，才能以程式設計方式存取其資源。例如， AWS CodeArtifact 需要主體使用持有人權杖來執行某些操作。`aws codeartifact get-authorization-token` 命令會傳回一個持有人權杖。然後，您可以使用承載字符來執行 AWS CodeArtifact 操作。如需有關持有人權杖的詳細資訊，請參閱[服務持有人權杖](id_credentials_bearer.md)。

**sts：IdentityTokenAudience**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
使用此金鑰指定 IAM 主體可以使用 [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) API 請求 JSON Web Token JWTs) 的對象。當 IAM 政策中存在此條件金鑰時，IAM 主體只能為政策中指定的對象請求權杖。外部服務會驗證 JSON Web 權杖中的對象 (「aud」) 宣告，以確保權杖適用於他們。  
**可用性** – 此金鑰存在於 GetWebIdentityToken API 的請求中，用於取得 JSON Web Token (JWTs) 以使用外部服務進行身分驗證。  
當您在政策中使用此條件索引鍵時，請指定符合預期收件人識別符的對象值 （例如 https://api.example.com)。  
下列範例政策允許委託人請求指定外部服務的字符：  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "sts:IdentityTokenAudience": [
                        "https://api2.example.com",
                        "https://api1.example.com"
                    ]
                }
            }
        }
    ]
}
```

**sts：SigningAlgorithm**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
使用此金鑰指定密碼編譯演算法， AWS AWS STS 用來簽署 [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) API 所產生的 JSON Web Token JWTs)。當您在政策中使用此條件金鑰時，請指定 ES384 (ECDSA 搭配 P-384 曲線和 SHA-384) 或 RS256 (RSA 搭配 SHA-256)。  
**可用性** – 此金鑰存在於 GetWebIdentityToken API 的請求中，該 API 用於取得 JSON Web Token (JWTs) 以使用外部服務進行身分驗證。  
您可以使用此條件金鑰，強制執行 IAM 主體使用與您的安全需求或整合的外部服務相容的簽署演算法來請求權杖。ES384 提供最佳的安全性和效能，而 RS256 提供與不支援 ECDSA 的系統更廣泛的相容性。  
下列範例政策要求主體使用 ES384 簽署演算法：  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "sts:SigningAlgorithm": "ES384"
                }
            }
        }
    ]
}
```

**sts:ExternalId**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
使用此鍵來請求主體在擔任 IAM 角色時提供特定的識別碼。  
**可用性** – 當委託人在使用 AWS CLI 或 AWS API 擔任角色時提供外部 ID 時，此金鑰會出現在請求中。  
當您在其他帳戶擔任角色時，可能需要此唯一識別符。若帳戶管理員 (該角色所屬的帳戶) 提供給您外部 ID，請將該數值填入 `ExternalId` ​參數。該值可為任何字串，例如密碼短語或帳號。外部 ID 的主要功能是解決並防止「混淆代理人」問題。如需有關外部 ID 和混淆代理人問題的詳細資訊，請參閱 [存取第三方 AWS 帳戶 擁有的](id_roles_common-scenarios_third-party.md)。  
`ExternalId` 值必須最少為 2 個字元，最多為 1,224 個字元。該值必須為英數字元，且不包含空格。也可以包含下列符號：加號 (\$1)、等號 (=)、逗號 (,)、句號 (.)、小老鼠 (@)、冒號 (:)、正斜線 (/) 和連字號 (-)。

**sts:RequestContext/*context-key***  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
使用此鍵，可將內嵌在請求中所傳遞的受信任權杖發行者簽署之內容聲明的工作階段內容鍵/值對，與角色信任政策中指定的內容鍵/值進行比較。  
**可用性** – 當使用 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API 操作擔任角色時，`ProvidedContexts`在請求參數中提供內容聲明時，請求中會出現此金鑰。  
此內容鍵會格式化為 `"sts:RequestContext/context-key":"context-value"`，其中位 `context-key` 和 `context-value` 為內容鍵/值對。如果請求中傳遞簽署內容聲明中內嵌了多個內容鍵，則每一組鍵/值對都有一個內容鍵。您必須為角色信任政策中的 `sts:SetContext` 動作授予許可，才能允許主體在產生的工作階段權杖中設定內容鍵。若要進一步了解可與此索引鍵搭配使用的受支援 IAM Identity Center 內容索引鍵，請參閱 *AWS IAM Identity Center User Guide* 中的 [AWS STS condition keys for IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/condition-context-keys-sts-idc.html)。  
您可以在角色信任政策中使用此鍵，以便在使用者或其屬性擔任角色時，能根據使用者或其屬性實行精細的存取控制。擔任角色後，活動會出現在 `AdditionalEventData` 屬性內的 AWS CloudTrail 日誌中，其中包含由擔任角色請求中的內容提供者所設定的工作階段內容索引鍵/值對。當不同的主體使用角色時，這可讓系統管理員更容易區分角色工作階段。鍵/值對是由指定的內容提供者設定，而不是由 AWS CloudTrail 或 設定 AWS STS。這可讓內容提供者控制 CloudTrail 日誌和工作階段資訊所包含的內容。

**sts:RequestContextProviders**  
使用 [ARN 運算子](reference_policies_elements_condition_operators.md#Conditions_ARN)。  
使用此鍵，可將請求中的內容提供者 ARN 與角色信任政策中指定的內容提供者 ARN 進行比較。  
**可用性** – 當使用 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API 操作擔任角色時，`ProvidedContexts`在請求參數中提供內容聲明時，請求中會出現此金鑰。  
下列範例條件會檢查請求中傳遞的內容提供者 ARN 是否符合角色信任政策條件中指定的 ARN。建議您新增帶有 `ForAllValues` 的 Null 檢查，防止遺失內容索引鍵或具有空值的內容索引鍵評估為 true。如需詳細資訊，請參閱[用於檢查條件索引鍵是否存在的條件運算子](reference_policies_elements_condition_operators.md#Conditions_Null)。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Action": "sts:SetContext",
    "Effect": "Allow",
    "Resource": "*",
    "Condition": {
      "ForAllValues:ArnEquals": {
        "sts:RequestContextProviders": [
          "arn:aws:iam::aws:contextProvider/IdentityCenter"
        ]
      },
      "Null": {
        "sts:RequestContextProviders": "false"
      }
    }
  }
}
```

**sts:RoleSessionName**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
使用此鍵，比較使用政策中指定的值擔任角色時，主體指定的工作階段名稱。  
**可用性** – 當委託人使用 AWS 管理主控台、任何擔任角色 CLI 命令或任何 AWS STS `AssumeRole` API 操作擔任角色時，此金鑰會出現在請求中。  
您可以在角色信任政策中使用此鍵，請求您的使用者在擔任角色時提供特定的工作階段名稱。例如，您可以請求 IAM 使用者將自己的使用者名稱指定為其工作階段名稱。在 IAM 使用者擔任角色之後，活動會出現在 [AWS CloudTrail 日誌](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds)中，其工作階段名稱與其使用者名稱相符。當不同的主體使用角色時，這可讓系統管理員更容易區分角色工作階段。  
下列角色信任政策會請求 `111122223333` 帳戶中的 IAM 使用者在擔任角色時，提供其 IAM 使用者名稱作為工作階段名稱。使用條件鍵中的 `aws:username` [條件變數](reference_policies_variables.md)強制執行此需求。此政策允許 IAM 使用者擔任政策所連接的角色。此政策不允許使用暫時憑證的任何人擔任該角色，因為 `username` 變數僅供 IAM 使用者使用。  
您可以使用任何單一值條件鍵作為[變數](reference_policies_variables.md)。您無法使用多重值條件鍵做為變數。  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RoleTrustPolicyRequireUsernameForSessionName",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"AWS": "arn:aws:iam::111122223333:root"},
            "Condition": {
                "StringLike": {"sts:RoleSessionName": "prefix-${aws:username}"}
            }
        }
    ]
}
```
當管理員檢視 動作的 AWS CloudTrail 日誌時，他們可以將工作階段名稱與其帳戶中的使用者名稱進行比較。在下列範例中，名為 `matjac` 的使用者使用名為 `MateoRole` 的角色執行作業。然後，管理員可以聯絡 Mateo Jackson，他擁有名為 `matjac` 的使用者。  

```
    "assumedRoleUser": {
        "assumedRoleId": "AROACQRSTUVWRAOEXAMPLE:matjac",
        "arn": "arn:aws:sts::111122223333:assumed-role/MateoRole/matjac"
    }
```
如果您允許[使用角色進行跨帳戶存取](id_roles_common-scenarios_aws-accounts.md)，則某個帳戶中的使用者可以在另一個帳戶中擔任角色。CloudTrail 中列出的假設角色使用者 ARN 包含*角色存在*的帳號。它不包括擔任角色的使用者帳戶。使用者僅在帳戶中是唯一的。因此，建議您只使用這個方法來檢查所管理帳戶中使用者假設之角色的 CloudTrail 日誌。您的使用者可能會在多個帳戶中使用相同的使用者名稱。

**sts:SourceIdentity**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
使用此鍵，比較使用政策中指定的值擔任角色時，主體指定的來源身分。  
**可用性** – 當委託人在使用任何 AWS STS 擔任角色 CLI 命令或 AWS STS `AssumeRole` API 操作時提供來源身分時，此金鑰會出現在請求中。  
您可以在角色信任政策中使用此鍵，請求您的使用者在擔任角色時設定特定的來源身分。例如，您可以要求人力或聯合身分來指定來源身分的值。您可以將身分提供者 (IdP) 設定為使用與使用者相關聯的其中一個屬性，例如使用者名稱或電子郵件作為來源身分。然後，IdP 會在傳送的聲明或宣告中，將來源身分做為屬性傳遞 AWS。來源身分屬性的值可識別擔任該角色的使用者或應用程式。  
在使用者擔任該角色之後，活動會出現在具有已設定來源身分值的 [AWS CloudTrail 日誌](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds)中。這可讓管理員更輕鬆地判斷角色執行動作的對象或對象 AWS。您必須對 `sts:SetSourceIdentity` 動作授予許可，允許身分以設定來源身分。  
與 [`sts:RoleSessionName`](#ck_rolesessionname) 不同，在設定來源身分之後，就無法變更值。這會出現在由角色以來源身分所採取的所有動作的請求內容中。當您使用工作階段憑證來擔任另一個角色時，此值仍然存在於後續角色工作階段。從另一個角色取得及擔任角色稱為[角色鏈結](id_roles.md#iam-term-role-chaining)。  
您可以使用 [`aws:SourceIdentity`](reference_policies_condition-keys.md#condition-keys-sourceidentity)全域條件金鑰，根據後續請求中的來源身分值，進一步控制對 AWS 資源的存取。  
下列角色信任政策允許 IAM 使用者 `AdminUser` 擔任帳戶 `111122223333` 中的角色。它也會對 `AdminUser` 許可授予來設定來源身分，只要來源身分識別設定為 `DiegoRamirez`。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAdminUserAssumeRole",
            "Effect": "Allow",
            "Principal": {"AWS": " arn:aws:iam::111122223333:user/AdminUser"},
            "Action": [
                "sts:AssumeRole",
                "sts:SetSourceIdentity"
            ],
            "Condition": {
                "StringEquals": {"sts:SourceIdentity": "DiegoRamirez"}
            }
        }
    ]
}
```
若要進一步了解有關使用來源身分的詳細資訊，請參閱 [監控並控制使用擔任角色所採取的動作](id_credentials_temp_control-access_monitor.md)。

**sts:TaskPolicyArn**  
使用 [ARN 運算子](reference_policies_elements_condition_operators.md#Conditions_ARN)。  
使用此金鑰來比較 [sts:AssumeRoot](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html) 請求中的政策 ARN 與政策中指定的政策 ARN。  
**可用性**：當您使用 [sts:AssumeRoot](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html) 提出請求時，此金鑰會出現在請求中。  
管理員可以在 IAM 政策中使用此條件索引鍵，限制管理帳戶或委派管理員帳戶內的特定角色或使用者在擔任根憑證時執行特定動作。如需詳細資訊，請參閱[在 AWS Organizations 成員帳戶上執行特權任務](id_root-user-privileged-task.md)。

**sts:TransitiveTagKeys**  
使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)。  
使用此鍵，可將請求中的可轉移工作階段標籤鍵與政策中指定的內容進行比較。  
**可用性** – 當您使用臨時安全憑證提出請求時，此鍵會呈現在請求中。這些包括使用任何 assume-role 操作或 `GetFederationToken` 操作所建立的憑證。  
當您使用暫時安全憑證提出請求時，[請求內容](reference_policies_elements_condition.md#AccessPolicyLanguage_RequestContext)會包含 `aws:PrincipalTag` 內容鍵。此鍵包含[工作階段標籤](id_session-tags.md)的清單、[可轉移工作階段標籤](id_session-tags.md#id_session-tags_role-chaining)和角色標籤。可轉移工作階段標籤是在您使用工作階段憑證擔任另一個角色時，保存到所有後續工作階段的標籤。從另一個角色取得及擔任角色稱為[角色鏈結](id_roles.md#iam-term-role-chaining)。  
您可以在政策中使用此條件鍵，要求在擔任角色或與使用者聯合身分時將特定工作階段標籤設為可轉移。

# AWS 服務的動作、資源和條件索引鍵
<a name="reference_policies_actions-resources-contextkeys"></a>

每個 AWS 服務都可以定義動作、資源和條件內容索引鍵，以用於 IAM 政策。如需 AWS 服務及其動作、資源和條件內容索引鍵的清單，請參閱服務授權參考中的[動作、資源和條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)。 **