Step Functions 中的静态数据加密 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Step Functions 中的静态数据加密

阅读博客

在 “使用客户管理的密钥加强数据安全” 中了解客户管理 Amazon KMS 的密钥

Amazon Step Functions 始终使用透明的服务器端加密来加密您的静态数据。默认情况下,静态数据加密可降低保护敏感数据的运营开销和复杂性。您可以构建符合严格加密合规性和法规要求的安全敏感型应用程序。

尽管您无法禁用此加密层或选择其他加密类型,但您可以在创建状态机和活动资源时选择客户管理的密钥,从而在现有 Amazon 拥有的加密密钥上添加第二层加密:

  • 客户托管密钥 — Step Functions 支持使用您创建、拥有和管理的对称客户托管密钥,以便在现有 Amazon 拥有的加密基础上添加第二层加密。由于您可以完全控制这层加密,因此可以执行以下任务:

    • 制定和维护关键策略

    • 制订和维护 IAM 策略和授权

    • 启用和禁用密钥策略

    • 轮换加密材料

    • 添加标签

    • 创建密钥别名

    • 安排密钥删除

    有关信息,请参阅《Amazon Key Management Service 开发人员指南》中的 customer managed key

您可以使用客户管理的 Amazon Step Functions 状态机和活动密钥对数据进行加密。在创建或更新状态机以及创建 Act ivit y 时,您可以配置对称 Amazon KMS 密钥和数据密钥的重复使用周期。执行历史记录和状态机定义将使用应用于状态机的密钥进行加密。活动输入将使用应用于活动的密钥进行加密。

使用客户托管 Amazon KMS 密钥,您可以保护包含受保护健康信息 (PHI) 的客户数据免遭未经授权的访问。Step Functions 与集成 CloudTrail,因此您可以在 CloudTrail 控制台中查看和审核事件历史记录中的最新事件。

有关信息 Amazon KMS,请参阅什么是 Amazon Key Management Service?

注意

Step Functions 使用 Amazon 自有密钥自动启用静态加密,不收取任何费用。但是,使用客户管理的密钥需要 Amazon KMS 付费。有关定价的信息,请参阅 Amazon Key Management Service 定价

使用客户自主管理型密钥进行加密

Step Functions 使用您的客户托管 Amazon KMS 密钥解密负载数据,然后将其传递给其他服务以执行任务。数据在传输过程中使用传输层安全 (TLS) 进行加密。

当从集成服务返回数据时,Step Functions 会使用您的客户托管 Amazon KMS 密钥对数据进行加密。您可以使用相同的密钥对许多 Amazon 服务进行一致的加密。

可以将客户自主管理型密钥与以下资源结合使用:

  • 状态机:标准和快速工作流程类型

  • 活动

您可以通过输入密钥 ID 来指定数据密钥,St KMS e p Functions 使用该密钥来加密您的数据。

  • KMS密钥 ID — Amazon KMS 客户托管密钥的密钥标识符,其形式为密钥 ID、密钥ARN、别名或别名ARN。

使用客户自主管理型密钥创建状态机

先决条件:在使用客户托管 Amazon KMS 密钥创建状态机之前,您的用户或角色必须拥有DescribeKey和的 Amazon KMS 权限GenerateDataKey

您可以在 Amazon 控制台中、通过或通过 Amazon CloudFormation 资源配置基础架构来执行以下步骤。API (CloudFormation 示例将在本指南的后面部分介绍。)

步骤 1:创建 Amazon KMS 密钥

您可以使用 Amazon KMS 控制台或 Amazon KMS APIs创建对称的客户托管密钥。

创建对称的客户托管密钥

按照《Amazon Key Management Service 开发人员指南》中创建对称的客户托管密钥的步骤进行操作。

注意

可选:创建密钥时,可以选择密钥管理员。选定的用户或角色将被授予管理密钥的访问权限,例如通过启用或禁用密钥API。也可以选择密钥用户。这些用户或角色将被授予在加密操作中使用 Amazon KMS 密钥的能力。

步骤 2:设置 Amazon KMS 密钥策略

密钥政策控制对客户托管密钥的访问。每个客户托管式密钥必须只有一个密钥策略,其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管式密钥时,可以指定密钥策略。有关信息,请参阅《Amazon Key Management Service 开发人员指南》中的 Managing access to customer managed keys

以下是控制台中的 Amazon KMS 密钥策略示例,不包括密钥管理员密钥用户

{ "Version": "2012-10-17", "Id": "key-consolepolicy-1", "Statement": [ { "Sid": "Enable IAM User Permissions for the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" } ] }

有关 specifying permissions in a policytroubleshooting key access 的更多信息,请参阅《Amazon Key Management Service 开发人员指南》

步骤 3:添加密钥策略以加密 CloudWatch 日志

Step Functions 与集成在一起, CloudWatch 用于记录和监控。当您使用自己的密KMS钥为状态机启用服务器端加密并启用 CloudWatch 日志集成时,必须delivery.logs.amazonaws.com允许根据 Amazon KMS 密钥策略执行kms:Decrypt操作:

{ "Sid": "Enable log service delivery for integrations", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*" }

如果您使用 Amazon KMS 密钥启用状态机加密,并且状态机启用了 CloudWatch 日志集成,则状态机的执行角色需要以下策略:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKMSPermissionForCloudWatchLogGroup", "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": "arn:aws:kms:region:accountId:key/keyId", "Condition": { "StringEquals": { "kms:EncryptionContext:SourceArn": "arn:aws:logs:region:accountId:*" } } } ] }

步骤 4:加密 CloudWatch 日志组(可选)

您可以使用自己的密 Amazon KMS 钥对日志组中的 CloudWatch 日志启用加密。为此,您还必须向该 Amazon KMS 密钥添加以下策略。

注意

您可以选择相同或不同的 Amazon KMS 密钥来加密日志和状态机定义。

{ "Id": "key-consolepolicy-logging", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable log service for a single log group", "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnEquals": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:log-group:log-group-name" } } } ] }
注意

Condition部分将 Amazon KMS 密钥限制为单个日志组ARN。

步骤 5:创建状态机

创建密钥并设置策略后,可以使用该密钥来创建新的状态机。

创建状态机时,选择其它配置,然后选择使用客户自主管理型密钥进行加密。然后,可以选择密钥,并设置数据密钥的重用期(从 1 分钟到 15 分钟)。

或者,您可以通过设置日志级别并选择使用您的密 Amazon KMS 钥加密日志组来启用日志记录。

注意

只能在 Step Functions 控制台中对新的日志组启用加密。要了解如何将 Amazon KMS 密钥与现有日志组关联,请参阅将 Amazon KMS 密钥与日志组关联。

要使用客户自主管理型密钥成功启动标准工作流程和异步快速工作流程的执行,您的执行角色需要 kms:Decryptkms:GenerateDataKey 权限。同步快速执行的执行角色需要 kms:Decrypt。当您在控制台中创建状态机并选择创建新角色时,这些权限将自动包含在内。

以下是示例执行角色策略:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKMSPermissionsForStepFunctionsWorkflowExecutions", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/keyId" ], "Condition": { "StringEquals": { "kms:EncryptionContext:aws:states:stateMachineArn": [ "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName" ] } } } ] }

步骤 6:调用用您的 Amazon KMS 密钥加密的状态机

可以像往常一样调用加密的状态机,而数据将使用客户自主管理型密钥进行加密。

使用客户自主管理型密钥创建活动

使用客户自主管理型密钥创建 Step Functions 活动与使用客户自主管理型密钥创建状态机类似。在使用客户托管 Amazon KMS 密钥创建活动之前,您的用户或角色只需要 Amazon KMS 权限DescribeKey。在创建活动期间,可以选择密钥并设置加密配置参数。

请注意,Step Functions 活动资源保持不可变。您无法更新现有encryptionConfigurationARN活动的活动;必须创建新的活动资源。活动API端点的来电者必须拥有成功使用 Amazon KMS 密钥创建活动的kms:DescribeKey权限。

对活动任务启用客户自主管理型密钥加密后,状态机执行角色将需要对于活动密钥的 kms:GenerateDataKeykms:Decrypt 权限。如果您是从 Step Functions 控制台创建此状态机,则自动角色创建功能将添加这些权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKMSPermissionsForStepFunctionsActivities", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/keyId" ], "Condition": { "StringEquals": { "kms:EncryptionContext:aws:states:activityArn": [ "arn:aws:states:us-east-1:123456789012:activity:activityName" ] } } } ] }

用条件缩小 Amazon KMS 权限策略的范围

您可以使用密钥策略和IAM策略中的加密上下文conditions来控制对称客户托管密钥的访问权限。要将 Amazon KMS 密钥的使用限制为代表特定角色从 Step Functions 发出的请求,您可以使用kms:ViaService条件。

使用加密上下文限定范围

加密上下文是一组可选的键值对,包含有关数据的其他上下文信息。

Amazon KMS 使用加密上下文作为其他经过身份验证的数据来支持经过身份验证的加密。当您在加密数据的请求中包含加密上下文时,会将加密上下文 Amazon KMS 绑定到加密数据。要解密数据,您必须在请求中包含相同的加密上下文。

Step Functions 提供了 Amazon KMS 加密操作中的加密上下文,其中密钥aws:states:stateMachineArnaws:states:activityArn用于状态机或活动,值为资源 Amazon 资源名称 (ARN)。

"encryptionContext": {"aws:states:stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName"}
"encryptionContext": {"aws:states:activityArn": "arn:aws:states:us-east-1:123456789012:activity:activityName"}

以下示例说明如何使用aws:states:stateMachineArn上下文 Amazon KMS 密钥将执行角色的密钥限制在特定的状态机上:kms:EncryptionContext

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow KMS Permissions for StepFunctionsWorkflowExecutions", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/keyId" ], "Condition": { "StringEquals": { "kms:EncryptionContext:aws:states:stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName" } } } ] }

用范围界定 kms: ViaService

kms:ViaService条件密钥将密 Amazon Key Management Service 钥的使用限制为来自指定 Amazon 服务的请求。

以下示例策略使用kms:ViaService条件,仅当请求来自该区域的 Step Functions 时,才允许将 Amazon KMS 密钥用于特定操作,并代表该ca-central-1区域的 Step Functions: ExampleRole

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow access for Key Administrators in a region", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ExampleRole" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "states.us-east-1.amazonaws.com" } } } ] }
注意

kms:ViaService条件仅在API调用者需要 Amazon KMS 权限时适用(例如CreateStateMachineCreateActivityGetActivityTask、等)。向执行角色添加 kms:ViaService 条件,可能会阻止新的执行启动或导致正在运行的执行失败。

来API电者所需的权限

要调用返回加密数据的 Step Functions API 操作,调用者需要 Amazon KMS 权限。或者,某些API操作具有仅返回元数据的选项 (METADATA_ONLY),从而取消了对 Amazon KMS 权限的要求。有关信息,请参阅 Step Func API tions。

为了在使用客户托管密钥加密时成功完成执行,需要授予执行角色kms:GenerateDataKey以及状态机使用的 Amazon KMS 密钥的kms:Decrypt权限。

下表显示了您需要向 Step Function API s 调用者提供的APIs使用状态机 Amazon KMS 密钥的 Amazon KMS 权限。您可以为角色提供密钥策略或IAM策略的权限。

APIs使用状态机的密 Amazon KMS 钥 调用方需要
CreateStateMachine kms:DescribeKey, kms:GenerateDataKey
UpdateStateMachine kms:DescribeKey, kms:GenerateDataKey
DescribeStateMachine kms:解密
DescribeStateMachineForExecution kms:解密
StartExecution --
StartSyncExecution kms:解密
SendTaskSuccess --
SendTaskFailure --
StopExecution --
RedriveExecution --
DescribeExecution kms:解密
GetExecutionHistory kms:解密

下表显示了你需要向 Step Function API s 调用者提供的APIs使用活动 Amazon KMS 密钥的 Amazon KMS 权限。您可以在密钥策略或IAM策略中为角色提供权限。

APIs使用活动密 Amazon KMS 钥 调用方需要
CreateActivity kms:DescribeKey
GetActivityTask kms:解密
何时向调用方或执行角色授予权限?

当IAM角色或用户调用 Step Functions 时API,Step Functions 服务会 Amazon KMS 代表调API用者进行调用。在这种情况下,您必须向API呼叫者授予 Amazon KMS 权限。当执行角色 Amazon KMS 直接调用时,必须授予对执行角色的 Amazon KMS 权限。

Amazon CloudFormation 用于加密配置的资源

Amazon CloudFormation Step Functions 的资源类型可以使用加密配置来配置状态机和活动资源。

默认情况下,Step Functions 提供透明的服务器端加密。两者都AWS::StepFunctions::ActivityAWS::StepFunctions::StateMachine接受一个可选EncryptionConfiguration属性,该属性可以为服务器端加密配置客户托管 Amazon KMS 密钥。

先决条件:在使用客户托管 Amazon KMS 密钥创建状态机之前,您的用户或角色必须拥有DescribeKey和的 Amazon KMS 权限GenerateDataKey

更新到 StateMachine 需要不中断。对活动资源的更新要求:替换

要在 Amazon CloudFormation 模板中声明EncryptionConfiguration属性,请使用以下语法:

JSON

{ "KmsKeyId" : String, "KmsDataKeyReusePeriodSeconds" : Integer, "Type" : String }

YAML

KmsKeyId: String KmsDataKeyReusePeriodSeconds: Integer Type: String

属性

  • Type:状态机或活动的加密选项。允许的值CUSTOMER_MANAGED_KMS_KEY | AWS_OWNED_KEY

  • KmsKeyId-加密数据密钥的对称加密密钥ARN的别名ARN、别名、 Amazon KMS 密钥 ID 或密钥。要在其他 Amazon 账户中指定 Amazon KMS 密钥,客户必须使用该密钥ARN或别名ARN。有关信息 kmsKeyId,请参阅 Amazon KMS 文档KeyId中的。

  • KmsDataKeyReusePeriodSeconds-重复使用数据密钥的最长持续时间。SFN期限到期后,Step Functions 将调用 GenerateDataKey。只有当 TypeCUSTOMER_MANAGED_KMS_KEY 时,才能设置此设置。值的范围可以介于 60-900 秒之间。默认为 300 秒。

Amazon CloudFormation 例子

示例: StateMachine 使用客户托管密钥

AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a Step Functions State Machine. Resources: MyStateMachine: Type: AWS::StepFunctions::StateMachine Properties: StateMachineName: HelloWorld-StateMachine Definition: StartAt: PassState States: PassState: Type: Pass End: true RoleArn: !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/example" EncryptionConfiguration: KmsKeyId: !Ref MyKmsKey KmsDataKeyReusePeriodSeconds: 100 Type: CUSTOMER_MANAGED_KMS_KEY MyKmsKey: Type: AWS::KMS::Key Properties: Description: Symmetric KMS key used for encryption/decryption

示例:使用客户自主管理型密钥的活动

AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a Step Functions Activity. Resources: Activity: Type: AWS::StepFunctions::Activity Properties: Name: ActivityWithKmsEncryption EncryptionConfiguration: KmsKeyId: !Ref MyKmsKey KmsDataKeyReusePeriodSeconds: 100 Type: CUSTOMER_MANAGED_KMS_KEY MyKmsKey: Type: AWS::KMS::Key Properties: Description: Symmetric KMS key used for encryption/decryption

更新活动的加密要求创建新资源

活动配置是不可变的,并且资源名称必须唯一。要设置客户自主管理型密钥来进行加密,必须创建新活动。如果您尝试更改CFN模板中现有活动的配置,则会收到ActivityAlreadyExists异常消息。

要更新您的活动以包含客户管理的密钥,请在CFN模板中设置一个新的活动名称。以下示例显示了使用客户自主管理型密钥配置创建新活动的示例:

现有活动定义

AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a new Step Functions Activity. Resources: Activity: Type: AWS::StepFunctions::Activity Properties: Name: ActivityName EncryptionConfiguration: Type: AWS_OWNED_KEY

新活动定义

AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a Step Functions Activity. Resources: Activity: Type: AWS::StepFunctions::Activity Properties: Name: ActivityWithKmsEncryption EncryptionConfiguration: KmsKeyId: !Ref MyKmsKey KmsDataKeyReusePeriodSeconds: 100 Type: CUSTOMER_MANAGED_KMS_KEY MyKmsKey: Type: AWS::KMS::Key Properties: Description: Symmetric KMS key used for encryption/decryption

监控加密密钥使用情况

当您使用 Amazon KMS 客户托管密钥加密您的 Step Functions 资源时,您可以使用 CloudTrail来跟踪 Step Functions 发送到的请求 Amazon KMS。

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

以下示例是DecryptDescribeKey、和GenerateDataKey监控 Step Functions 为访问由客户托管密钥加密的数据而调用的 Amazon KMS 操作 CloudTrail 的事件:

Decrypt

当您访问加密的状态机或活动时,Step Functions 会调用 Decrypt 操作,以便使用存储的加密数据密钥来访问加密的数据。

以下示例事件记录了 Decrypt 操作:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Admin" }, "attributes": { "creationDate": "2024-07-05T21:06:27Z", "mfaAuthenticated": "false" } }, "invokedBy": "states.amazonaws.com" }, "eventTime": "2024-07-05T21:12:21Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "aa-example-1", "sourceIPAddress": "states.amazonaws.com", "userAgent": "states.amazonaws.com", "requestParameters": { "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "keyId": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "encryptionContext": { "aws:states:stateMachineArn": "arn:aws:states:aa-example-1:111122223333:stateMachine:example1" } }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
DescribeKey

Step Functions 使用 DescribeKey 操作,来验证与状态机或活动关联的 Amazon KMS 客户自主管理型密钥是否存在于账户和区域中。

以下示例事件记录了 DescribeKey 操作:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Admin" }, "attributes": { "creationDate": "2024-07-05T21:06:27Z", "mfaAuthenticated": "false" } }, "invokedBy": "states.amazonaws.com" }, "eventTime": "2024-07-05T21:12:21Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "aa-example-1", "sourceIPAddress": "states.amazonaws.com", "userAgent": "states.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management", "sessionCredentialFromConsole": "true" }
GenerateDataKey

当您为状态机或活动启用 Amazon KMS 客户托管密钥时,Step Functions 会发送GenerateDataKey请求以获取加密状态机定义或执行数据的数据密钥。

以下示例事件记录了 GenerateDataKey 操作:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "attributes": { "creationDate": "2024-07-05T21:06:27Z", "mfaAuthenticated": "false" } }, "invokedBy": "states.amazonaws.com" }, "eventTime": "2024-07-05T21:12:21Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "aa-example-1", "sourceIPAddress": "states.amazonaws.com", "userAgent": "states.amazonaws.com", "requestParameters": { "keySpec": "AES_256", "encryptionContext": { "aws:states:stateMachineArn": "arn:aws:states:aa-example-1:111122223333:stateMachine:example1" }, "keyId": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

FAQs

如果我的密钥在 Amazon KMS中标记为待删除或已被删除,会发生什么?

如果密钥在中被删除或标记为删除 Amazon KMS,则任何相关的运行执行都将失败。在您移除或更改与工作流程关联的密钥之前,无法开始新的执行。删除 Amazon KMS 密钥后,与工作流程执行相关的所有加密数据都将保持加密状态,无法再解密,从而使数据无法恢复。

如果 Amazon KMS 密钥在中被禁用会 Amazon KMS怎样?

如果在中禁用了 Amazon KMS 密钥 Amazon KMS,则任何相关的运行执行都将失败。无法启动新的执行。在重新启用该禁用密 Amazon KMS 钥之前,您无法再解密使用该禁用密钥加密的数据。

发送到的执行状态变更事件会怎 EventBridge样?

使用您的客户托管 Amazon KMS 密钥加密的工作流程的执行状态更改事件将不包括执行输入、输出、错误和原因。

了解更多

有关静态数据加密的信息,请参阅《Amazon Key Management Service 开发人员指南》中的 Amazon Key Management Service conceptssecurity best practices for Amazon Key Management Service