本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon VPC Lattice 中的数据保护
责任共担模式 AWS 分担责任模型
传输中加密
VPC Lattice 是一项完全托管的服务,由控制面板和数据面板组成。每个面板在服务中都有不同的用途。控制面板提供了用于创建、读取/描述、更新、删除和列出(CRUDL)资源的管理 API(例如,CreateService
和 UpdateService
)。与 VPC Lattice 控制面板的通信在传输过程中受 TLS 保护。数据面板是 VPC Lattice 的调用 API,提供服务之间的互连。TLS 还对与 VPC Lattice 数据面板的通信进行加密。密码套件和协议版本使用 VPC Lattice 提供的默认值,并且不可配置。有关更多信息,请参阅 VPC Lattice 服务的 HTTPS 侦听器。
静态加密
默认情况下,静态数据加密有助于降低保护敏感数据的操作开销和复杂性。同时,还支持构建符合严格加密合规性和监管要求的安全应用程序。
具有 Amazon S3 托管密钥的服务器端加密(SSE-S3)
当您使用具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)时,每个对象均使用唯一密钥加密。作为额外的保护,将使用定期轮换的根密钥加密密钥本身。Simple Storage Service (Amazon S3) 服务器端加密使用可用的最强数据块密码之一 [即 256 位高级加密标准 (AES-256) GCM] 来加密您的数据。对于在使用 AES-GCM 之前加密的对象,仍支持使用 AES-CBC 来解密这些对象。有关更多信息,请参阅使用 Amazon S3 管理的加密密钥(SSE-S3)进行服务器端加密。
如果您为 VPC Lattice 访问日志的 S3 存储桶启用使用 Amazon S3 托管的加密密钥 (SSE-S3) 的服务器端加密,则会在每个访问日志文件存储在 S3 存储桶中之前 AWS 自动对其进行加密。有关更多信息,请参阅亚马逊 CloudWatch 用户指南中的发送到 Amazon S3 的日志。
使用存储在 AWS KMS (SSE- AWS KMS KMS) 中的密钥进行服务器端加密
使用 AWS KMS 密钥进行服务器端加密 (SSE-KMS) 与 SSE-S3 类似,但使用此服务还有一些额外的好处和费用。使用 AWS KMS 密钥有单独的权限,可提供额外的保护,防止未经授权访问您的 Amazon S3 中的对象。SSE-KMS 还将为您提供审计跟踪记录,显示您的 AWS KMS 密钥何时被谁使用。有关更多信息,请参阅使用 AWS Key Management Service (SSE-KMS)进行服务器端加密。
证书私有密钥的加密和解密
您的 ACM 证书和私钥使用别名为 aw s/acm 的 AWS 托管 KMS 密钥进行加密。您可以在 AWS KMS 控制台的 “ AWS 托管密钥” 下查看带有此别名的密钥 ID。
VPC Lattice 不会直接访问您的 ACM 资源。它使用 AWS TLS 连接管理器来保护和访问您的证书的私钥。当您使用 ACM 证书创建 VPC Lattice 服务时,VPC Lattice 会将您的证书与 AWS TLS Connection Manager 关联。这是通过使用前缀为 aws/ ac AWS KMS m 的 AWS 托管密钥创建授权来完成的。授权是一种策略工具,允许 TLS Connection Manager 在加密操作中使用 KMS 密钥。授权允许被授权主体(TLS Connection Manager)对 KMS 密钥调用指定授权操作,以解密证书的私有密钥。TLS Connection Manager 使用证书和解密(明文)私有密钥,与 VPC Lattice 服务的客户端建立安全连接(SSL/TLS 会话)。当证书与 VPC Lattice 服务取消关联时,该授权就会失效。
如果要删除对 KMS 密钥的访问权限,我们建议您使用或update-service
命令从服务中替换 AWS Management Console 或删除证书 AWS CLI。
VPC Lattice 的加密上下文
加密上下文是一组可选的键值对,其中包含有关您的私钥可能用于什么的额外上下文信息。 AWS KMS 将加密上下文绑定到加密数据,并将其用作其他经过身份验证的数据以支持经过身份验证的加密。
当您的 TLS 密钥与 VPC Lattice 和 TLS Connection manager 一起使用时,VPC Latrice 服务的名称将包含在用于静态加密密钥的加密上下文中。您可以通过查看 CloudTrail 日志中的加密上下文(如下一节所示)或查看 ACM 控制台中的 “关联资源” 选项卡,来验证您的证书和私钥用于哪个 VPC Lattice 服务。
要解密数据,在请求中包含相同的加密上下文。VPC Lattice 在所有 AWS KMS 加密操作中使用相同的加密环境,其中密钥为aws:vpc-lattice:arn
,值为 VPC 莱迪思服务的亚马逊资源名称 (ARN)。
下面的示例显示操作输出中的加密上下文,例如 CreateGrant
:
"encryptionContextEquals": {
"aws:acm:arn": "arn:aws:acm:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"aws:vpc-lattice:arn": "arn:aws:vpc-lattice:us-west-2:111122223333:service/svc-0b23c1234567890ab"
}
监控 VPC Lattice 的加密密钥
当您在VPC莱迪思服务中使用 AWS 托管密钥时,您可以使用AWS CloudTrail来跟踪VPC Lattice发送到的请求。 AWS KMS
CreateGrant
当您将 ACM 证书添加到 VPC Lattice 服务时,系统会代表您发送 CreateGrant
请求,使 TLS Connection Manager 能够解密与 ACM 证书关联的私有密钥
您可以在 >> 事件历史记录 CloudTrail CreateGrant
>> 中将该CreateGrant
操作作为事件查看。
以下是该CreateGrant
操作事件历史记录中的示例 CloudTrail 事件记录:
{
"eventVersion": "1.08",
"userIdentity": {
"type": "IAMUser",
"principalId": "EX_PRINCIPAL_ID",
"arn": "arn:aws:iam::111122223333:user/Alice",
"accountId": "111122223333",
"accessKeyId": "EXAMPLE_KEY_ID",
"sessionContext": {
"sessionIssuer": {
"type": "IAMUser",
"principalId": "EX_PRINCIPAL_ID",
"arn": "arn:aws:iam::111122223333:user/Alice",
"accountId": "111122223333",
"userName": "Alice"
},
"webIdFederationData": {},
"attributes": {
"creationDate": "2023-02-06T23:30:50Z",
"mfaAuthenticated": "false"
}
},
"invokedBy": "acm.amazonaws.com"
},
"eventTime": "2023-02-07T00:07:18Z",
"eventSource": "kms.amazonaws.com",
"eventName": "CreateGrant",
"awsRegion": "us-west-2",
"sourceIPAddress": "acm.amazonaws.com",
"userAgent": "acm.amazonaws.com",
"requestParameters": {
"granteePrincipal": "tlsconnectionmanager.amazonaws.com",
"keyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
"operations": [
"Decrypt"
],
"constraints": {
"encryptionContextEquals": {
"aws:acm:arn": "arn:aws:acm:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"aws:vpc-lattice:arn": "arn:aws:vpc-lattice:us-west-2:111122223333:service/svc-0b23c1234567890ab"
}
},
"retiringPrincipal": "acm.us-west-2.amazonaws.com"
},
"responseElements": {
"grantId": "f020fe75197b93991dc8491d6f19dd3cebb24ee62277a05914386724f3d48758",
"keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
},
"requestID": "ba178361-8ab6-4bdd-9aa2-0d1a44b2974a",
"eventID": "8d449963-1120-4d0c-9479-f76de11ce609",
"readOnly": false,
"resources": [
{
"accountId": "111122223333",
"type": "AWS::KMS::Key",
"ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"eventCategory": "Management"
}
在上面的 CreateGrant
示例中,您会注意到,被授权主体是 TLS Connection Manager,加密上下文具有 VPC Lattice 服务 ARN。
ListGrants
您可以使用 KMS 密钥 ID 和账户 ID 来调用 ListGrants
API。这将为您提供指定 KMS 密钥的所有授权列表。有关更多信息,请参阅ListGrants。
在中使用以下ListGrants
命令 AWS CLI 查看所有授权的详细信息:
aws kms list-grants —key-id
your-kms-key-id
您的输出应类似于以下示例:
{
"Grants": [
{
"Operations": [
"Decrypt"
],
"KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"Name": "IssuedThroughACM",
"RetiringPrincipal": "acm.us-west-2.amazonaws.com",
"GranteePrincipal": "tlsconnectionmanager.amazonaws.com",
"GrantId": "f020fe75197b93991dc8491d6f19dd3cebb24ee62277a05914386724f3d48758",
"IssuingAccount": "arn:aws:iam::111122223333:root",
"CreationDate": "2023-02-06T23:30:50Z",
"Constraints": {
"encryptionContextEquals": {
"aws:acm:arn": "arn:aws:acm:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"aws:vpc-lattice:arn": "arn:aws:vpc-lattice:us-west-2:111122223333:service/svc-0b23c1234567890ab"
}
}
}
]
}
在上面的 ListGrants
示例中,您会注意到,被授权主体是 TLS Connection Manager,加密上下文具有 VPC Lattice 服务 ARN。
Decrypt
VPC Lattice 使用 TLS Connection Manager 调用 Decrypt
操作来解密您的私有密钥,以便在您的 VPC Lattice 服务中提供 TLS 连接。您可以在 >> 事件历史记录 CloudTrail >> 中将该Decrypt
操作作为事件查看Decrypt
。
以下是该Decrypt
操作事件历史记录中的示例 CloudTrail 事件记录:
{
"eventVersion": "1.08",
"userIdentity": {
"type": "AWSService",
"invokedBy": "tlsconnectionmanager.amazonaws.com"
},
"eventTime": "2023-02-07T00:07:23Z",
"eventSource": "kms.amazonaws.com",
"eventName": "Decrypt",
"awsRegion": "us-west-2",
"sourceIPAddress": "tlsconnectionmanager.amazonaws.com",
"userAgent": "tlsconnectionmanager.amazonaws.com",
"requestParameters": {
"encryptionContext": {
"aws:acm:arn": "arn:aws:acm:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"aws:vpc-lattice:arn": "arn:aws:vpc-lattice:us-west-2:111122223333:service/svc-0b23c1234567890ab"
},
"encryptionAlgorithm": "SYMMETRIC_DEFAULT"
},
"responseElements": null,
"requestID": "12345126-30d5-4b28-98b9-9153da559963",
"eventID": "abcde202-ba1a-467c-b4ba-f729d45ae521",
"readOnly": true,
"resources": [
{
"accountId": "111122223333",
"type": "AWS::KMS::Key",
"ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"sharedEventID": "abcde202-ba1a-467c-b4ba-f729d45ae521",
"eventCategory": "Management"
}