静态加密 - Amazon Connect

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

静态加密

归类为 PII 的联系人数据,或代表由 Amazon Connect 存储的客户内容的数据,使用所拥有的加密密钥进行静 AWS KMS 态加密(即在放置、存储或保存到磁盘之前)。 AWS有关 AWS KMS 密钥的信息,请参阅什么是 AWS Key Management Service? 在《AWS Key Management Service 开发人员指南》中。对非临时存储中的联系数据进行加密,以便从 KMS 密钥生成的数据加密密钥不会在 Amazon Connect 实例之间共享。

Amazon S3 服务器端加密用于加密对话录音(语音和聊天)。通话录音、屏幕录制和转录分两个阶段存储:

  • 在联系过程中以及联系之后,但在传输之前,录音/录制临时存储在 Amazon Connect 中。

  • 录音/录制传输到您的 Amazon S3 存储桶中。

存储在您 Amazon S3 存储桶中的录音/录制和聊天转录使用在创建实例时配置的 KMS 密钥进行保护。

Amazon 静态 AppIntegrations 数据加密

当您创建使用客户托管密钥 DataIntegration 加密的时,Amazon AppIntegrations 会通过向发送CreateGrant请求来代表您创建授权 AWS KMS。中的授权 AWS KMS 用于让 Amazon AppIntegrations 访问您账户中的 KMS 密钥。

您可以随时撤销对授予的访问权限,或者取消亚马逊 AppIntegrations 对客户托管密钥的访问权限。如果您这样做,Amazon 将 AppIntegrations 无法访问由客户托管密钥加密的任何数据,这会影响依赖该数据的操作。

Amazon AppIntegrations 处理的外部应用程序数据使用您在配置期间提供的客户托管密钥在 S3 存储桶中进行静态加密。使用有时间限制且特定于用户账户的密钥对集成配置数据进行静态加密。

Amazon AppIntegrations 需要获得授权,才能使用客户托管密钥进行以下内部操作:

  • 发送GenerateDataKeyRequest AWS KMS 至,生成由您的客户托管密钥加密的数据密钥。

  • 向发送解密加密数据密钥的Decrypt请求,以便这些密钥可用于加密您的数据。 AWS KMS

Amazon Connect Cases 静态加密

Amazon Connect 案例存储的案例字段、案例评论、字段描述和模板中的所有客户提供的数据均使用存储在 AWS Key Management Service (AWS KMS) 中的加密密钥进行静态加密。

Amazon Connect Cases 服务拥有、管理、监控和轮换加密密钥(即 AWS 拥有的密钥),以满足高安全标准。案例事件流的有效负载会暂时(通常为几秒钟)存储在 Amazon 中, EventBridge 然后通过客户账户中的默认总线提供。 EventBridge 还使用 AWS 拥有的密钥对整个静态有效载荷进行加密。

Amazon Connect Customer Profiles 静态加密

Amazon Connect Customer Profiles 中存储的所有用户数据均进行静态加密。Amazon Connect 客户档案静态加密使用存储在 AWS Key Management Service (AWS KMS) 中的加密密钥对所有静态数据进行加密,从而增强安全性。此功能减少保护敏感数据时涉及的操作负担和复杂性。利用静态加密,可以构建符合严格加密合规性和法规要求的安全敏感型应用程序。

组织政策、行业或政府法规以及合规性需求通常要求使用静态加密增强数据安全性。与客户档案集成 AWS KMS ,以启用其静态加密策略。有关更多信息,请参阅《 AWS Key Management Service 开发人员指南》中的 AWS Key Management Service 概念

创建新域时,您必须提供 KMS 密钥,服务将使用该密钥对传输中的数据和静态数据进行加密。客户托管密钥由您创建、拥有和管理。您可以完全控制客户管理的密钥(AWS KMS 收费)。

通过使用 AWS 命令行界面 (AWS CLI) 或 Amazon Connect Customer Profiles 加密 API,您可以在创建新域或配置文件对象类型时指定加密密钥,也可以切换现有资源的加密密钥。当您选择客户托管密钥时,Amazon Connect Customer Profiles 将创建对客户托管密钥的授权,以授予其对客户托管密钥的访问权限。

AWS KMS 客户管理的密钥需要付费。有关定价的更多信息,请参阅 AWS KMS 定价

Amazon Q in Connect 静态加密

存储在 Amazon Q in Connect 中的所有用户数据均使用 AWS Key Management Service中存储的加密密钥进行静态加密。如果您选择提供客户托管密钥,Amazon Q in Connect 会使用它对静态存储于 Amazon Q in Connect 搜索索引之外的知识内容进行加密。Amazon Q in Connect 使用每位客户的专用搜索索引,并使用 AWS 拥有的密钥 存储在中对这些索引进行静态加密 AWS Key Management Service。此外,您还可以使用 CloudTrail Amazon Q in Connect API 来审核任何数据访问权限。

AWS KMS 使用您提供的密钥时会收取费用。有关定价的更多信息,请参阅 AWS KMS 定价

Amazon Connect Voice ID 静态加密

Amazon Connect Voice ID 存储的客户声纹无法通过逆向工程来获取注册客户的语音或识别客户。Amazon Connect Voice ID 中存储的所有用户数据均进行静态加密。创建新 Voice ID 域时,您必须提供客户托管密钥,此服务将使用该密钥对您的静态数据进行加密。客户托管密钥由您创建、拥有和管理。您对该密钥拥有完全控制权。

您可以使用命令行界面 (AWS CLI) 中的update-domain AWS 命令或语音 ID API 更新UpdateDomain语音 ID 域中的 KMS 密钥。

当您更改 KMS 密钥时,将触发一个异步过程,以使用新的 KMS 密钥重新加密旧数据。此过程完成后,您的所有域的数据都将使用新的 KMS 密钥进行加密,您可以放心地停用旧密钥。有关更多信息,请参阅UpdateDomain

Voice ID 会创建对客户托管密钥的授权,以授予其对该密钥的访问权限。有关更多信息,请参阅 Amazon Connect Voice ID 如何使用 AWS KMS中的授权

以下是使用客户托管密钥进行静态加密的数据的列表:

  • 声纹:当在系统中登记发言者和注册欺诈者时生成的声纹。

  • 发言者和欺诈者音频:用于登记发言者和注册欺诈者的音频数据。

  • CustomerSpeakerID:客户在注册语音 ID SpeakerId 时提供的信息。

  • 客户提供的元数据:其中包括自由格式的字符串,例如 Domain DescriptionDomain NameJob Name 等。

AWS KMS 客户管理的密钥需要付费。有关定价的更多信息,请参阅 AWS KMS 定价

Amazon Connect Voice ID 如何使用 AWS KMS中的授权

Amazon Connect Voice ID 需要授权,才能使用客户托管密钥。创建域名时,Voice ID 会通过向发送查看CreateGrant请求来代表您创建授权 AWS KMS。需要该授权才能将客户托管密钥用于以下内部操作:

  • 向发送DescribeKey请求 AWS KMS 以验证提供的对称客户托管密钥 ID 是否有效。

  • 向 KMS 密GenerateData钥发送密钥请求以创建用于加密对象的数据密钥。

  • Decrypt 请求发送 AWS KMS 到以解密加密的数据密钥,以便它们可用于加密您的数据。

  • 在更新密钥 AWS KMS 时向发送ReEncrypt请求,以便使用新密钥对有限的数据集进行重新加密。

  • 使用 AWS KMS 密钥将文件存储在 S3 中以加密数据。

您可以随时撤销授予访问权限,或删除服务对客户托管密钥的访问权限。如果您这样做,Voice ID 将无法访问由客户托管密钥加密的任何数据,这样会影响依赖于该数据的所有操作,从而导致异步工作流中出现 AccessDeniedException 错误和故障。

适用于 Voice ID 的客户托管密钥策略

密钥策略控制对客户托管密钥的访问。每个客户托管密钥必须只有一个密钥策略,其中包含确定谁可以使用该密钥以及如何使用该密钥的声明。创建客户托管密钥时,可以指定密钥策略。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的管理对 KMS 密钥的访问

以下是一个密钥策略示例,该策略为用户提供了使用客户托管密钥调用所有 Voice ID API 所需的权限:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow key access to Amazon Connect VoiceID.", "Effect": "Allow", "Principal": { "AWS": "your_user_or_role_ARN" }, "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "voiceid.region.amazonaws.com" ] } } } ] }

有关在策略中指定权限的信息,请参阅 AWS Key Management Service 开发人员指南中的在 IAM 策略声明中指定 KMS 密钥

有关密钥访问疑难解答的信息,请参阅《 AWS Key Management Service 开发人员指南》中的密钥访问疑难解答

Voice ID 加密上下文

加密上下文是一组可选的键值对,其中包含有关数据的其他上下文信息。 AWS KMS 使用加密上下文作为其他经过身份验证的数据来支持经过身份验证的加密

在请求中包含加密上下文以加密数据时, AWS KMS 将加密上下文绑定到加密的数据。要解密数据,您必须在请求中包含相同的加密上下文。

语音 ID 在所有 AWS KMS 加密操作中使用相同的加密上下文,其中密钥为aws:voiceid:domain:arn,值为资源亚马逊资源名称 (ARN) Amazon 资源名称 (ARN) Amazon 资源名称 (AR N)。

"encryptionContext": { "aws:voiceid:domain:arn": "arn:aws:voiceid:us-west-2:111122223333:domain/sampleDomainId" }

您还可以在审核记录和日志中使用加密上下文来确定客户托管密钥的使用情况。加密上下文还会显示在 CloudTrail 或 Amazon Logs 生成的 CloudWatch 日志中。

使用加密上下文控制对客户托管密钥的访问

您可以使用密钥策略和 IAM 策略中的加密上下文作为条件来控制对您的对称客户托管密钥的访问。您也可以在授予中使用加密上下文约束。

Amazon Connect Voice ID 在授权中使用加密上下文约束来控制对您账户或区域中客户托管密钥的访问。授权约束要求授权允许的操作使用指定的加密上下文。

以下是密钥策略声明示例,用于授予对特定加密上下文的客户托管密钥的访问权限。此策略语句中的条件要求授权具有指定加密上下文的加密上下文约束。

{ "Sid": "Enable DescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "Enable CreateGrant", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:"aws:voiceid:domain:arn": "arn:aws:voiceid:us-west-2:111122223333:domain/sampleDomainId"" } } }

监控 Voice ID 的加密密钥

当您将 AWS KMS 客户托管密钥与语音 ID 一起使用时,您可以使用AWS CloudTrailAmazon CloudWatch Logs 来跟踪语音 ID 发送到的请求 AWS KMS。

以下示例是 Voice ID 为访问由客户托管密钥加密的数据而调用的CreateGrant操作的示例 AWS CloudTrail 事件:

CreateGrant
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROA5STZEFPSZEOW7NP3X:SampleUser1", "arn": "arn:aws:sts::111122223333:assumed-role/SampleRole/SampleUser", "accountId": "111122223333", "accessKeyId": "AAAAAAA1111111EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROA5STZEFPSZEOW7NP3X", "arn": "arn:aws:iam::111122223333:role/SampleRole", "accountId": "111122223333", "userName": "SampleUser" }, "webIdFederationData": {}, "attributes": { "creationDate": "2021-09-14T23:02:23Z", "mfaAuthenticated": "false" } }, "invokedBy": "voiceid.amazonaws.com" }, "eventTime": "2021-09-14T23:02:50Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "SampleIpAddress", "userAgent": "Example Desktop/1.0 (V1; OS)", "requestParameters": { "constraints": { "encryptionContextSubset": { "aws:voiceid:domain:arn": "arn:aws:voiceid:us-west-2:111122223333:domain/sampleDomainId" } }, "retiringPrincipal": "voiceid.amazonaws.com", "keyId": "arn:aws:kms:us-west-2:111122223333:key/44444444-3333-2222-1111-EXAMPLE11111", "operations": [ "CreateGrant", "Decrypt", "DescribeKey", "GenerateDataKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo" ], "granteePrincipal": "voiceid.amazonaws.com " }, "responseElements": { "grantId": "00000000000000000000000000000cce47be074a8c379ed39f22b155c6e86af82" }, "requestID": "ed0fe4ab-305b-4388-8adf-7e8e3a4e80fe", "eventID": "31d0d7c6-ce5b-4caf-901f-025bf71241f6", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/00000000-1111-2222-3333-9999999999999" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
DescribeKey
{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "voiceid.amazonaws.com" }, "eventTime": "2021-10-13T15:12:39Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-west-2", "sourceIPAddress": "voiceid.amazonaws.com", "userAgent": "voiceid.amazonaws.com", "requestParameters": { "keyId": "alias/sample-key-alias" }, "responseElements": null, "requestID": "ed0fe4ab-305b-4388-8adf-7e8e3a4e80fe", "eventID": "31d0d7c6-ce5b-4caf-901f-025bf71241f6", "readOnly": true, "resources": [{ "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/00000000-1111-2222-3333-9999999999999" }], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
Decrypt
{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "voiceid.amazonaws.com" }, "eventTime": "2021-10-12T23:59:34Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "voiceid.amazonaws.com", "userAgent": "voiceid.amazonaws.com", "requestParameters": { "encryptionContext": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/44444444-3333-2222-1111-EXAMPLE11111", "encryptionContext": { "aws:voiceid:domain:arn": "arn:aws:voiceid:us-west-2:111122223333:domain/sampleDomainId" }, "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "ed0fe4ab-305b-4388-8adf-7e8e3a4e80fe", "eventID": "31d0d7c6-ce5b-4caf-901f-025bf71241f6", "readOnly": true, "resources": [{ "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/00000000-1111-2222-3333-9999999999999" }], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "sharedEventID": "35d58aa1-26b2-427a-908f-025bf71241f6", "eventCategory": "Management" }
GenerateDataKeyWithoutPlaintext
{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "voiceid.amazonaws.com" }, "eventTime": "2021-10-13T00:26:41Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKeyWithoutPlaintext", "awsRegion": "us-west-2", "sourceIPAddress": "voiceid.amazonaws.com", "userAgent": "voiceid.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/44444444-3333-2222-1111-EXAMPLE11111", "encryptionContext": { "aws:voiceid:domain:arn": "arn:aws:voiceid:us-west-2:111122223333:domain/sampleDomainId" }, "keySpec": "AES_256" }, "responseElements": null, "requestID": "ed0fe4ab-305b-4388-8adf-7e8e3a4e80fe", "eventID": "31d0d7c6-ce5b-4caf-901f-025bf71241f6", "readOnly": true, "resources": [{ "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/00000000-1111-2222-3333-9999999999999" }], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "sharedEventID": "35d58aa1-26b2-427a-908f-025bf71241f6", "eventCategory": "Management" }
ReEncrypt
{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "voiceid.amazonaws.com" }, "eventTime": "2021-10-13T00:59:05Z", "eventSource": "kms.amazonaws.com", "eventName": "ReEncrypt", "awsRegion": "us-west-2", "sourceIPAddress": "voiceid.amazonaws.com", "userAgent": "voiceid.amazonaws.com", "requestParameters": { "destinationEncryptionContext": { "aws:voiceid:domain:arn": "arn:aws:voiceid:us-west-2:111122223333:domain/sampleDomainId" }, "destinationKeyId": "arn:aws:kms:us-west-2:111122223333:key/44444444-3333-2222-1111-EXAMPLE11111", "sourceEncryptionAlgorithm": "SYMMETRIC_DEFAULT", "sourceAAD": "SampleSourceAAAD+JXBmH+ZJNM73BfHE/dwQALXp7Sf44VwvoJOrLj", "destinationAAD": "SampleDestinationAAAD+JXBmH+ZJNM73BfHE/dwQALXp7Sf44VwvoJOrLj", "sourceEncryptionContext": { "aws:voiceid:domain:arn": "arn:aws:voiceid:us-west-2:111122223333:domain/sampleDomainId" }, "destinationEncryptionAlgorithm": "SYMMETRIC_DEFAULT", "sourceKeyId": "arn:aws:kms:us-west-2:111122223333:key/55555555-3333-2222-1111-EXAMPLE22222" }, "responseElements": null, "requestID": "ed0fe4ab-305b-4388-8adf-7e8e3a4e80fe", "eventID": "31d0d7c6-ce5b-4caf-901f-025bf71241f6", "readOnly": true, "resources": [{ "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/00000000-1111-2222-3333-9999999999999" }, { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/00000000-1111-2222-3333-7777777777777" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "sharedEventID": "35d58aa1-26b2-427a-908f-025bf71241f6", "eventCategory": "Management" }

出站活动

为了出站活动,Amazon Pinpoint 会将客户的电话号码和相关属性传递给 Amazon Connect。在 Amazon Connect 上,它们始终使用客户托管密钥或 AWS 拥有的密钥进行静态加密。出站活动数据按 Amazon Connect 实例 ID 进行隔离,并使用特定于实例的密钥进行加密。

当您加入出站活动时,您可以提供自己的客户托管密钥。

该服务使用此客户托管密钥对敏感数据进行静态加密。客户托管密钥由您创建、拥有和管理。您对客户托管密钥拥有全部控制权

如果您不提供自己的客户托管密钥,则出站活动会使用 AWS 拥有的密钥 特定于您的 Amazon Connect 实例的静态敏感数据进行加密。

AWS KMS 客户管理的密钥需要付费。有关定价的更多信息,请参阅 AWS KMS 定价

预测、容量规划和调度

在创建预测、容量计划和计划时,所有数据都使用存储在中的 AWS 拥有的密钥 加密密钥进行静态加密 AWS Key Management Service。