

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 VPC 终端节点控制对 Amazon KMS 资源的访问
<a name="vpce-policy-condition"></a>

当请求来自 VPC 或使用 VPC 终端节点时，您可以控制对 Amazon KMS 资源和操作的访问权限。为此，请在[密钥策略](key-policies.md)或 [IAM policy](iam-policies.md) 中使用以下[全局条件键](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#AvailableKeys)之一。
+ 使用 `aws:sourceVpce` 条件键基于 VPC 终端节点授予或限制访问。
+ 使用 `aws:sourceVpc` 条件键基于托管私有终端节点的 VPC 授予或限制访问。

**注意**  
根据您的 VPC 端点创建密钥策略和 IAM 策略时要小心。如果政策声明要求请求来自特定 VPC 或 VPC 终端节点，则代表您使用 Amazon KMS 资源的集成 Amazon 服务的请求可能会失败。有关帮助信息，请参阅 [在具有 Amazon KMS 权限的策略中使用 VPC 终端节点条件](conditions-aws.md#conditions-aws-vpce)。  
此外，当请求来自 [Amazon VPC 终端节点](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-endpoints.html)时，`aws:sourceIP` 条件键也不起作用。要限制对 VPC 端点的请求，请使用 `aws:sourceVpce` 或 `aws:sourceVpc` 条件键。有关更多信息，请参阅《Amazon PrivateLink 指南》中的 [VPC 端点和 VPC 端点服务的身份和访问管理](https://docs.amazonaws.cn/vpc/latest/privatelink/vpc-endpoints-iam.html)。**

您可以使用这些全局条件密钥来控制对 Amazon KMS keys （KMS 密钥）、别名的访问权限，以及对此类操作的访问权限 [CreateKey](https://docs.amazonaws.cn/kms/latest/APIReference/API_CreateKey.html)，这些操作不依赖于任何特定资源。

例如，以下示例密钥策略允许用户仅在请求使用指定的 VPC 终端节点时，才使用 KMS 密钥执行某些加密操作。当用户向发出请求时 Amazon KMS，会将请求中的 VPC 终端节点 ID 与策略中的`aws:sourceVpce`条件键值进行比较。如果它们不匹配，则请求会被拒绝。

要使用类似的策略，请将占位符 Amazon Web Services 账户 ID 和 VPC 终端节点 IDs 替换为账户的有效值。

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

****  

```
{
    "Id": "example-key-1",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableIAMpolicies",
            "Effect": "Allow",
            "Principal": {"AWS":["{{111122223333}}"]},
            "Action": ["kms:*"],
            "Resource": "*"
        },
        {
            "Sid": "Restrict usage to my VPC endpoint",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*"
            ],
            "Resource": "*",
            "Condition": {
                "StringNotEquals": {
                "aws:sourceVpce": "{{vpce-1234abcdf5678c90a}}"
                }
            }
        }

    ]
}
```

------

您还可以使用 `aws:sourceVpc` 条件键基于 VPC 终端节点所在的 VPC 限制对您的 KMS 密钥的访问。

以下示例密钥策略仅允许来自 `vpc-12345678` 的命令管理 KMS 密钥。另外，它只允许来自 `vpc-2b2b2b2b` 的命令使用 KMS 密钥执行加密操作。如果应用程序在一个 VPC 中运行，但您使用第二个隔离的 VPC 执行管理功能，则可以使用这样的策略。

要使用类似的策略，请将占位符 Amazon Web Services 账户 ID 和 VPC 终端节点 IDs 替换为账户的有效值。

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

****  

```
{
    "Id": "example-key-2",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAdministrativeActionsFromVPC",
            "Effect": "Allow",
            "Principal": {
                "AWS": "{{111122223333}}"
            },
            "Action": [
                "kms:Create*",
                "kms:Enable*",
                "kms:Put*",
                "kms:Update*",
                "kms:Revoke*",
                "kms:Disable*",
                "kms:Delete*",
                "kms:TagResource",
                "kms:UntagResource"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:sourceVpc": "{{vpc-12345678}}"
                }
            }
        },
        {
            "Sid": "{{AllowKeyUsageFromVPC2b2b2b2b}}",
            "Effect": "Allow",
            "Principal": {
                "AWS": "{{111122223333}}"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:sourceVpc": "{{vpc-2b2b2b2b}}"
                }
            }
        },
        {
            "Sid": "AllowReadActionsEverywhere",
            "Effect": "Allow",
            "Principal": {
                "AWS": "{{111122223333}}"
            },
            "Action": [
                "kms:Describe*",
                "kms:List*",
                "kms:Get*"
            ],
            "Resource": "*"
        }
    ]
}
```

------