

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

# 使用 VPC 端點控制對 AWS KMS 資源的存取
<a name="vpce-policy-condition"></a>

當請求來自 VPC 或使用 VPC 端點時，您可以控制對 AWS KMS 資源和操作的存取。為此，請使用[金鑰政策](key-policies.md)或 [IAM 政策](iam-policies.md)的下列其中一個[全域條件索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#AvailableKeys)。
+ 使用 `aws:sourceVpce` 條件索引鍵，以根據 VPC 端點來授予或限制存取。
+ 使用 `aws:sourceVpc` 條件索引鍵，以根據託管私有端點的 VPC 來授予或限制存取。

**注意**  
根據 VPC 端點建立金鑰政策和 IAM 政策時，請務必謹慎執行。如果政策陳述式要求請求來自特定 VPC 或 VPC 端點，則來自代表您使用 AWS KMS 資源之整合 AWS 服務的請求可能會失敗。如需協助，請參閱 [在具有 AWS KMS 許可的政策中使用 VPC 端點條件](conditions-aws.md#conditions-aws-vpce)。  
此外，當請求來自 [Amazon VPC 端點](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)時，`aws:sourceIP` 條件索引鍵無效。若要限制對 VPC 端點的請求，請使用 `aws:sourceVpce` 或 `aws:sourceVpc` 條件金鑰。如需詳細資訊，請參閱《AWS PrivateLink 指南》**中的[VPC 端點和 VPC 端點服務的身分與存取管理](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-iam.html) 

您可以使用這些全域條件金鑰來控制對 AWS KMS keys (KMS 金鑰）、別名和 操作的存取，例如不依賴任何特定資源的 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)。

例如，以下範例金鑰政策只在請求使用指定 VPC 端點時，才允許使用者執行某些密碼編譯操作。當使用者向 提出請求時 AWS KMS，請求中的 VPC 端點 ID 會與政策中的`aws:sourceVpce`條件索引鍵值進行比較。如果不相符，則會拒絕請求。

若要使用這類政策，請將預留位置 AWS 帳戶 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 來執行管理功能，您可能會使用如下的政策。

若要使用這類政策，請將預留位置 AWS 帳戶 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": "*"
        }
    ]
}
```

------