Amazon VPC Lattice 中的数据保护 - Amazon VPC Lattice

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

Amazon VPC Lattice 中的数据保护

责任共担模式 AWS 分担责任模型适用于 Amazon VPC Lattice 中的数据保护。如本模型所述 AWS ,负责保护运行所有内容的全球基础架构 AWS Cloud。您负责维护对托管在此基础设施上的内容的控制。此内容包括您所使用的 AWS 服务 的安全配置和管理任务。有关数据隐私的更多信息,请参阅数据隐私常见问题有关欧洲数据保护的信息,请参阅 AWS 安全性博客 上的 AWS 责任共担模式和 GDPR 博客文章。

传输中加密

VPC Lattice 是一项完全托管的服务,由控制面板和数据面板组成。每个面板在服务中都有不同的用途。控制面板提供了用于创建、读取/描述、更新、删除和列出(CRUDL)资源的管理 API(例如,CreateServiceUpdateService)。与 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" }