AWS HealthScribe 的静态数据加密
默认情况下,AWS HealthScribe 提供了静态加密,旨在使用 AWS HealthScribe 托管式 AWS Key Management Service(AWS KMS)密钥保护敏感客户数据。默认情况下,静态数据加密有助于降低保护敏感数据的操作开销和复杂性。此外,它还支持构建符合严格加密合规性和监管要求的安全应用程序。在创建 AWS HealthScribe 转录作业或启动流时,您可以指定客户自主管理型密钥。这将额外增加一层加密保护。
-
AWS HealthScribe 托管式 AWS KMS 密钥 – AWS HealthScribe 默认使用 AWS HealthScribe 托管式 AWS Key Management Service(AWS KMS)密钥自动加密中间文件。您无法禁用此加密层或选择其他加密类型。您无法查看、管理或使用密钥,也无法审计其使用情况。但是,无需采取任何措施或更改任何计划即可保护用于加密数据的密钥。
-
客户自主管理型密钥 – AWS HealthScribe 支持使用您创建、拥有和管理的对称客户自主管理型密钥,以在 AWS 拥有的现有加密基础上额外增加一层加密。由于您可以完全控制这层加密,因此可以执行以下任务:
-
制定和维护关键策略
-
制订和维护 IAM 策略和授权
-
启用和禁用密钥策略
-
轮换加密材料
-
添加标签
-
创建密钥别名
-
计划删除密钥
有关更多信息,请参阅 AWS Key Management Service Developer Guide 中的 customer managed key。
-
注意
AWS HealthScribe 使用 AWS 拥有的密钥自动启用静态加密,以免费保护个人身份数据。不过,使用客户管理型密钥时,会收取 AWS KMS 费用。有关定价的更多信息,请参阅 AWS Key Management Service 定价
有关 AWS KMS 的更多信息,请参阅什么是 AWS Key Management Service。
为 AWS HealthScribe 指定客户管理型密钥
您可以将客户自主管理型密钥指定为转录作业或流式处理的第二层加密。
对于转录作业,您需要在 StartMedicalScribeJob API 操作的 OutputEncryptionKMSKeyId 中指定密钥。
-
对于流式处理,您需要在 MedicalScribeConfigurationEvent 的 MedicalScribeEncryptionSettings 中指定密钥。
AWS KMS 加密上下文
AWS KMS 加密上下文是纯文本、非机密键值对的映射。该映射表示经过身份验证的额外数据(称为加密上下文对),它为数据提供额外的安全层。AWSHealthScribe 需要使用对称加密密钥加密 AWS HealthScribe 输出,并将其存储到客户指定的 Amazon S3 存储桶中。要了解更多信息,请参阅 AWS KMS 中的非对称密钥。
创建加密上下文对时,请勿包含敏感信息。加密上下文不是秘密的 - 它在 CloudTrail 日志中以明文形式显示(因此,您可以使用它识别加密操作并进行分类)。加密上下文对可以包含特殊字符,如下划线 (_)、短划线 (-)、斜杠(/、\)和冒号 (:)。
提示
将加密上下文对中的值与正在加密的数据关联会很有用。尽管此操作并非必需,但我们建议您使用与加密内容相关的非敏感元数据,例如文件名、标头值或未加密的数据库字段。
要在 API 中使用输出加密,请在 StartMedicalScribeJob 操作中设置 KMSEncryptionContext 参数。要为输出加密操作提供加密上下文,OutputEncryptionKMSKeyId 参数必须引用对称 AWS KMS 密钥 ID。
对于流式处理,您需要在 MedicalScribeConfigurationEvent 的 MedicalScribeEncryptionSettings 中为 KmsEncryptionContext 指定键值对。
您可以将 AWS KMS 条件键与 IAM 策略一起使用,以根据加密操作请求中使用的加密上下文控制对对称加密 AWS KMS 密钥的访问。有关示例加密上下文策略,请参阅 AWS KMS 加密上下文策略。
使用加密上下文是可选操作,但建议使用。有关更多信息,请参阅加密上下文。
AWS HealthScribe 加密上下文
AWS HealthScribe 在所有 AWS Key Management Service 加密操作中使用相同的加密上下文。加密上下文是字符串到字符串的映射,可以根据需要对其进行自定义。
"encryptionContext": { "ECKey": "ECValue" ... }
对于 AWS HealthScribe 流,下面是默认服务生成的加密上下文。它会将此上下文应用于您提供的任何加密上下文。
"encryptionContext": { "aws:<region>:transcribe:medical-scribe:session-id": "1234abcd-12ab-34cd-56ef-123456SAMPLE" }
对于 AWS HealthScribe 转录作业,下面是默认服务生成的加密上下文。它会将此上下文应用于您提供的任何加密上下文。
"encryptionContext": { "aws:<region>:transcribe:medical-scribe:job-name": "<job-name>", "aws:<region>:transcribe:medical-scribe:start-time-epoch-ms": "<job-start-time>" }
如果您不提供任何加密上下文,则只有服务生成的加密上下文会用于所有 AWS KMS 加密操作。
使用加密环境监控 AWS HealthScribe
使用对称的客户自主管理型密钥加密 AWS HealthScribe 中的静态数据时,您还可以使用审计记录和日志中的加密上下文来识别客户自主管理型密钥的使用情况。加密上下文还会显示在 AWS CloudTrail 生成的日志或 CloudWatch Logs 中。
使用加密上下文控制对客户托管密钥的访问
您可以使用密钥政策和 IAM 策略中的加密上下文作为条件来控制对您的对称客户托管密钥的访问。
以下是密钥政策声明示例,用于授予对特定加密上下文的客户托管密钥的访问权限。此策略语句中的条件要求 KMS 密钥的使用具有指定了加密上下文的加密上下文约束。
监控适用于 AWS HealthScribe 的加密密钥
当您将 AWS Key Management Service 客户自主管理型密钥与 AWS HealthScribe 一起使用时,您可以使用 AWS CloudTrail 或 CloudWatch Logs 来跟踪 AWS HealthScribe 发送到 AWS KMS 的请求。
下面是您可以使用的 CloudTrail 加密和解密事件,利用这两种事件,您可以监控 AWS HealthScribe 对您的客户自主管理型密钥的使用情况。
Encrypt
{ "eventVersion":"1.09", "userIdentity":{ "type":"AssumedRole", "principalId":"AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn":"arn:aws:sts::123456789012:assumed-role/Admin/Sampleuser01", "accountId":"123456789012", "accessKeyId":"AKIAIOSFODNN7EXAMPLE3", "sessionContext":{ "sessionIssuer":{ "type":"Role", "principalId":"AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn":"arn:aws:sts::123456789012:assumed-role/Admin/Sampleuser01", "accountId":"123456789012", "userName":"Admin" }, "attributes":{ "creationDate":"2024-08-16T01:10:05Z", "mfaAuthenticated":"false" } }, "invokedBy":"transcribe.streaming.amazonaws.com" }, "eventTime":"2024-08-16T01:10:05Z", "eventSource":"kms.amazonaws.com", "eventName":"Encrypt", "awsRegion":"us-east-1", "sourceIPAddress":"transcribe.streaming.amazonaws.com", "userAgent":"transcribe.streaming.amazonaws.com", "requestParameters":{ "encryptionContext":{ "aws:us-east-1:transcribe:medical-scribe:session-id":"1234abcd-12ab-34cd-56ef-123456SAMPLE" }, "encryptionAlgorithm":"SYMMETRIC_DEFAULT", "keyId":"1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements":null, "requestID":"cbe0ac33-8cca-49e5-9bb5-dc2b8dfcb389", "eventID":"1b9fedde-aa96-48cc-9dd9-a2cce2964b3c", "readOnly":true, "resources":[ { "accountId":"123456789012", "type":"AWS::KMS::Key", "ARN":"arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType":"AwsApiCall", "managementEvent":true, "recipientAccountId":"123456789012", "eventCategory":"Management" }
Decrypt
{ "eventVersion":"1.09", "userIdentity":{ "type":"AssumedRole", "principalId":"AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn":"arn:aws:sts::123456789012:assumed-role/Admin/Sampleuser01", "accountId":"123456789012", "accessKeyId":"AKIAIOSFODNN7EXAMPLE3", "sessionContext":{ "sessionIssuer":{ "type":"Role", "principalId":"AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn":"arn:aws:sts::123456789012:assumed-role/Admin/Sampleuser01", "accountId":"123456789012", "userName":"Admin" }, "attributes":{ "creationDate":"2024-08-16T20:47:04Z", "mfaAuthenticated":"false" } }, "invokedBy":"transcribe.streaming.amazonaws.com" }, "eventTime":"2024-08-16T20:47:04Z", "eventSource":"kms.amazonaws.com", "eventName":"Decrypt", "awsRegion":"us-east-1", "sourceIPAddress":"transcribe.streaming.amazonaws.com", "userAgent":"transcribe.streaming.amazonaws.com", "requestParameters":{ "keyId":"mrk-de27f019178f4fbf86512ab03ba860be", "encryptionAlgorithm":"SYMMETRIC_DEFAULT", "encryptionContext":{ "aws:us-east-1:transcribe:medical-scribe:session-id":"1234abcd-12ab-34cd-56ef-123456SAMPLE" } }, "responseElements":null, "requestID":"8b7fb865-48be-4e03-ac3d-e7bee3ba30a1", "eventID":"68b7a263-d410-4701-9e2b-20c196628966", "readOnly":true, "resources":[ { "accountId":"123456789012", "type":"AWS::KMS::Key", "ARN":"arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType":"AwsApiCall", "managementEvent":true, "recipientAccountId":"123456789012", "eventCategory":"Management" }