

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

# AWS 全域條件索引鍵
<a name="conditions-aws"></a>

AWS 定義[全域條件索引](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#AvailableKeys)鍵，這是一組政策條件索引鍵，適用於使用 IAM 進行存取控制的所有 AWS 服務。 AWS KMS 支援所有全域條件索引鍵。您可以在 AWS KMS 金鑰政策和 IAM 政策中使用它們。

例如，您可以使用 [aws:PrincipalArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalarn) 條件索引鍵，僅在請求中之主體的表示方式是條件索引鍵值中的 Amazon Resource Name (ARN) 時，允許存取 AWS KMS key (KMS 金鑰)。若要在 中支援[屬性型存取控制](abac.md) (ABAC) AWS KMS，您可以在 IAM 政策中使用 [aws：ResourceTag/*tag-key*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) 全域條件金鑰，以允許存取具有特定標籤的 KMS 金鑰。

為了協助防止服務在委託人為 AWS 服務[AWS 委託人](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services)的政策中用作混淆代理人，您可以使用 [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)或 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)全域條件金鑰。如需詳細資訊，請參閱[使用 `aws:SourceArn` 或 `aws:SourceAccount` 條件金鑰](least-privilege.md#least-privilege-source-arn)。

如需 AWS 全域條件金鑰的相關資訊，包括可用的請求類型，請參閱《*IAM 使用者指南*》中的[AWS 全域條件內容金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。如需 IAM 政策中使用全域條件索引鍵的範例，請參閱《*IAM 使用者指南*》中的[控制對請求的存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests)和[控制標籤索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys)。

下列主題提供的特殊指導，讓您能根據 IP 位址和 VPC 端點來使用條件金鑰。

**Topics**
+ [在具有 AWS KMS 許可的政策中使用 IP 地址條件](#conditions-aws-ip-address)
+ [在具有 AWS KMS 許可的政策中使用 VPC 端點條件](#conditions-aws-vpce)
+ [在 IAM 和 AWS KMS 金鑰政策中使用 IPv6 地址](#KMS-IPv6-policies)

## 在具有 AWS KMS 許可的政策中使用 IP 地址條件
<a name="conditions-aws-ip-address"></a>

您可以使用 AWS KMS 來保護[整合 AWS 服務](service-integration.md)中的資料。但是，在允許或拒絕存取的相同政策陳述式中指定 [IP 地址條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_IPAddress)或`aws:SourceIp`條件索引鍵時，請小心 AWS KMS。例如， 中的政策[AWS： AWS 根據來源 IP 拒絕存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html) 將 AWS 動作限制為來自指定 IP 範圍的請求。

考慮以下情形：

1. 您可以連接類似 的政策[AWS： AWS 根據來源 IP 拒絕存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html) 到 IAM 身分。您將 `aws:SourceIp` 條件金鑰的值設定為使用者公司的 IP 地址範圍。這個 IAM 身分還有其他連接的政策，允許他使用 Amazon EBS、Amazon EC2 和 AWS KMS。

1. 該身分嘗試將加密的 EBS 磁碟區連接到 EC2 執行個體。即使使用者有權使用所有相關的服務，這個動作仍會失敗，發生授權錯誤。

步驟 2 失敗，因為 AWS KMS 對 的解密磁碟區的加密資料金鑰請求來自與 Amazon EC2 基礎設施相關聯的 IP 地址。若要成功，請求必須來自原始使用者的 IP 地址。由於步驟 1 中的政策明確拒絕來自指定 IP 地址以外的所有請求，因此 Amazon EC2 被拒絕解密 EBS 磁碟區之加密資料金鑰的許可。

此外，當請求來自 [Amazon VPC 端點](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)時，`aws:SourceIP` 條件索引鍵無效。若要將請求限制為 VPC 端點 (包含 [AWS KMS VPC 端點](kms-vpc-endpoint.md))，請使用 `aws:SourceVpce` 或 `aws:SourceVpc` 條件金鑰。如需詳細資訊，請參閱 [Amazon VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html#vpc-endpoints-iam-access)中的 *VPC 端點 - 控制端點的使用*。

## 在具有 AWS KMS 許可的政策中使用 VPC 端點條件
<a name="conditions-aws-vpce"></a>

[AWS KMS 支援採用 PrivateLink 技術的 Amazon Virtual Private Cloud (Amazon VPC) 端點](kms-vpc-endpoint.md)。 [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Introduction.html#what-is-privatelink) 您可以在金鑰政策和 IAM 政策中使用下列[全域條件金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#AvailableKeys)，在請求來自 VPC 或使用 VPC 端點時控制對 AWS KMS 資源的存取。如需詳細資訊，請參閱[使用 VPC 端點控制對 AWS KMS 資源的存取](vpce-policy-condition.md)。
+ `aws:SourceVpc` 會限制對指定 VPC 所發出之請求的存取權。
+ `aws:SourceVpce` 會限制對指定 VPC 端點所發出之請求的存取權。

如果您使用這些條件金鑰來控制對 KMS 金鑰的存取，您可能會不小心拒絕 AWS KMS 代表您使用 AWS 的服務存取。

請注意避免 [IP 地址條件金鑰](#conditions-aws-ip-address)範例這樣的狀況。如果您將 KMS 金鑰的請求限制為 VPC 或 VPC 端點，則 AWS KMS 來自 Amazon S3 或 Amazon EBS 等整合服務的 呼叫可能會失敗。即使來源請求最終源自 VPC 或來自 VPC 端點，也會發生這種情況。

## 在 IAM 和 AWS KMS 金鑰政策中使用 IPv6 地址
<a name="KMS-IPv6-policies"></a>

嘗試 AWS KMS 透過 IPv6 存取 之前，請確保更新任何包含 IP 地址限制的金鑰和 IAM 政策，以包含 IPv6 地址範圍。未更新以處理 IPv6 地址的 IP 型政策可能會導致用戶端在開始使用 IPv6 時錯誤遺失或取得存取權。如需 KMS 存取控制的一般指引，請參閱 [KMS 金鑰存取和許可](control-access.md)。若要了解 KMS 和雙堆疊支援，請參閱 [雙堆疊端點支援](ipv6-kms.md)。

**重要**  
這些陳述式不允許任何動作。將這些陳述式與允許特定動作的其他陳述式結合使用。

下列陳述式明確拒絕存取來自 IPv4 地址`192.0.2.*`範圍之請求的所有 KMS 許可。超出此範圍的任何 IP 地址都不會明確拒絕 KMS 許可。由於所有 IPv6 地址都在拒絕範圍之外，此陳述式不會明確拒絕任何 IPv6 地址的 KMS 許可。

```
{
     "Sid": "DenyKMSPermissions",
     "Effect": "Deny",
    "Action": [
        "kms:*"
    ],
    "Resource": "*",
    "Condition": {
        "NotIpAddress": {
            "aws:SourceIp": [ 
                "192.0.2.0/24"
            ]
        }
    }
}
```

您可以修改 `Condition`元素以拒絕 IPv4 (`192.0.2.0/24`) 和 IPv6 (`2001:db8:1234::/32`) 地址範圍，如下列範例所示。

```
{
    "Sid": "DenyKMSPermissions",
    "Effect": "Deny",
    "Action": [
        "kms:*"
    ],
    "Resource": "*",
    "Condition": {
        "NotIpAddress": {
            "aws:SourceIp": [ 
                "192.0.2.0/24",
                "2001:db8:1234::/32"
            ]
        }
    }
}
```