Criptografia de dados em repouso no Step Functions - AWS Step Functions

Criptografia de dados em repouso no Step Functions

Leia o blog

Leia sobre chaves gerenciadas pelo cliente em Strengthening data security with a customer-managed AWS KMS key.

O AWS Step Functions sempre criptografa os dados em repouso usando criptografia transparente do lado do servidor. A criptografia de dados em repouso por padrão reduz os custos operacionais indiretos e a complexidade envolvidos na proteção de dados confidenciais. É possível criar aplicações confidenciais que atendem a requisitos rigorosos de conformidade e regulamentação de criptografia.

Embora não seja possível desabilitar essa camada de criptografia nem selecionar um tipo alternativo de criptografia, é possível adicionar uma segunda camada de criptografia sobre as chaves de criptografia existentes pertencentes à AWS mediante a escolha de uma chave gerenciada pelo cliente ao criar recursos de máquina de estado e de atividade:

  • Chaves gerenciadas pelo cliente: o Step Functions aceita o uso de uma chave simétrica gerenciada pelo cliente que você cria, possui e gerencia para adicionar uma segunda camada de criptografia sobre a criptografia existente de propriedade da AWS. Como você tem controle total dessa camada de criptografia, você pode realizar tarefas como:

    • Estabelecer e manter as políticas de chave

    • Estabelecer e manter subsídios e IAM policies

    • Habilitar e desabilitar políticas de chaves

    • Alternar os materiais de criptografia de chave

    • Adicionar etiquetas

    • Criar réplicas de chaves

    • Chaves de agendamento para exclusão

    Para ter mais informações, consulte customer managed key no Guia do desenvolvedor do AWS Key Management Service.

É possível criptografar os dados usando uma chave gerenciada pelo cliente para máquinas de estado e atividades do AWS Step Functions. É possível configurar uma chave simétrica do AWS KMS e um período de reutilização da chave de dados quando é criada ou atualizada uma máquina de estado e quando é criada uma atividade. O histórico de execução e a definição da máquina de estado serão criptografados com a chave aplicada à máquina de estado. As entradas da atividade serão criptografadas com a chave aplicada à atividade.

Com as chaves do AWS KMS gerenciadas pelo cliente, é possível proteger os dados do cliente que incluem informações de saúde protegidas (PHI) contra acesso não autorizado. O Step Functions está integrado ao CloudTrail, para que você possa visualizar e auditar os eventos mais recentes no console do CloudTrail no histórico de eventos.

Para ter informações sobre o AWS KMS, consulte O que é o AWS Key Management Service?

nota

O Step Functions habilita automaticamente a criptografia em repouso usando chaves da AWS sem custos. No entanto, o AWS KMS faz cobranças pelo uso de uma chave gerenciada pelo cliente. Para obter mais informações sobre preços, consulte Preços do AWS Key Management Service.

Criptografar com uma chave gerenciada pelo cliente

O Step Functions descriptografa os dados da carga útil com a chave do AWS KMS gerenciada pelo cliente antes de transmiti-los a outro serviço para realizar uma tarefa. Os dados são criptografados em trânsito usando Transport Layer Security (TLS).

Quando os dados são exibidos de um serviço integrado, o Step Functions os criptografa com a chave do AWS KMS gerenciada pelo cliente. É possível usar a mesma chave para aplicar a criptografia de maneira consistente em vários serviços da AWS.

É possível usar uma chave gerenciada pelo cliente com os seguintes recursos:

  • Máquina de estado: tipos de fluxo de trabalho padrão e expresso.

  • Atividade

É possível especificar a chave de dados inserindo um ID de chave do KMS, que o Step Functions usa para criptografar os dados.

  • ID de chave do KMS: identificador de chave de uma chave do AWS KMS gerenciada pelo cliente em forma de ID de chave, ARN de chave, nome de alias ou ARN de alias.

Criar uma máquina de estado com uma chave gerenciada pelo cliente

Pré-requisito: para criar uma máquina de estado com chaves do AWS KMS gerenciadas pelo cliente, o usuário ou o perfil deve ter permissões do AWS KMS para DescribeKey e GenerateDataKey.

É possível realizar as etapas a seguir no Console da AWS, por meio da API ou provisionando a infraestrutura por meio de recursos do CloudFormation. (Os exemplos do CloudFormation são apresentados posteriormente neste guia.)

Etapa 1: criar uma chave do AWS KMS

É possível criar uma chave simétrica gerenciada pelo cliente usando o console do AWS KMS ou as APIs do AWS KMS.

Para criar uma chave simétrica gerenciada pelo cliente

Siga as etapas de Criar uma chave simétrica gerenciada pelo cliente no Guia do desenvolvedor do AWS Key Management Service.

nota

Opcional: ao criar uma chave, você pode escolher Administradores de chaves. Os usuários ou os perfis selecionados terão acesso para gerenciar a chave, como habilitá-la ou desabilitá-la por meio da API. Também é possível escolher Usuários de chaves. Esses usuários ou perfis terão a capacidade de usar a chave do AWS KMS em operações criptográficas.

Etapa 2: definir uma política de chave do AWS KMS

As políticas de chaves controlam o acesso à chave gerenciada pelo cliente. Cada chave gerenciada pelo cliente deve ter exatamente uma política de chaves, que contém declarações que determinam quem pode usar a chave e como pode usá-la. Ao criar a chave gerenciada pelo cliente, é possível especificar uma política de chave. Para ter informações, consulte Managing access to customer managed keys no Guia do desenvolvedor do AWS Key Management Service.

Veja abaixo o exemplo de política de chave do AWS KMS no console, sem administradores de chaves nem usuários de chaves:

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

Consulte o Guia do desenvolvedor do AWS Key Management Service para ter informações sobre como especificar permissões em uma política e solucionar problemas de acesso à chave.

Etapa 3: adicionar uma política de chave para criptografar os logs do CloudWatch

O Step Functions é integrado ao CloudWatch para registro em log e monitoramento. Ao habilitar a criptografia do lado do servidor para a máquina de estado usando a própria chave do KMS e habilitar a integração ao CloudWatch Log, é necessário permitir que delivery.logs.amazonaws.com realize a ação kms:Decrypt da política de chave do AWS KMS:

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

Se você habilitar a criptografia da máquina de estado com uma chave do AWS KMS e a máquina de estado tiver a integração ao CloudWatch Logs habilitada, o perfil de execução da máquina de estado precisará da seguinte política:

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

Etapa 4: criptografar o grupo de logs do CloudWatch (opcional)

É possível habilitar a criptografia dos logs em um grupo de logs do CloudWatch usando a própria chave do AWS KMS. Para fazer isso, também é necessário adicionar a política a seguir a essa chave do AWS KMS.

nota

É possível escolher as mesmas chaves do AWS KMS ou diferentes para criptografar os logs e as definições de máquina de estado.

{ "Id": "key-consolepolicy-logging", "Version":"2012-10-17", "Statement": [ { "Sid": "Enable log service for a single log group", "Effect": "Allow", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnEquals": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:us-east-1:123456789012:log-group:LOG_GROUP_NAME" } } } ] }
nota

A seção Condition restringe a chave do AWS KMS a um único ARN de grupo de logs.

nota

Consulte a documentação do CloudWatch Logs para saber mais sobre como definir permissões na chave do AWS KMS do grupo de logs.

Etapa 5: criar uma máquina de estado

Depois que você criar uma chave e configurar a política, poderá usar a chave para criar uma máquina de estado.

Ao criar a máquina de estado, escolha Configuração adicional e opte por criptografar com a chave gerenciada pelo cliente. Depois, é possível selecionar a chave e definir o período de reutilização da chave de dados de 1 minuto a 15 minutos.

Também é possível habilitar o registro em log definindo um nível de log e optando por criptografar o grupo de logs com a chave do AWS KMS.

nota

Só é possível habilitar a criptografia em um novo grupo de logs no console do Step Functions. Para saber como associar uma chave do AWS KMS a um grupo de logs existente, consulte Associar uma chave do AWS KMS a um grupo de logs.

Para iniciar com êxito a execução de fluxos de trabalho padrão e expressos assíncronos com chaves gerenciadas pelo cliente, o perfil de execução exige permissões kms:Decrypt e kms:GenerateDataKey. O perfil para execução de expresso assíncrono exige kms:Decrypt. Quando você cria uma máquina de estado no console e escolhe Criar um perfil, essas permissões são incluídas automaticamente para você.

Veja abaixo um exemplo de política de perfil de execução:

{ "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" ] } } } ] }

Etapa 6: invocar a máquina de estado criptografada com a chave do AWS KMS

É possível invocar a máquina de estado criptografada como é feito normalmente, e os dados serão criptografados com a chave gerenciada pelo cliente.

Criar uma atividade com uma chave gerenciada pelo cliente

A criação de uma atividade do Step Functions com uma chave gerenciada pelo cliente é semelhante à criação de uma máquina de estado com uma chave gerenciada pelo cliente. Para criar uma atividade com chaves do AWS KMS gerenciadas pelo cliente, o usuário ou o perfil só precisa de permissões do AWS KMS para DescribeKey. Durante a criação da atividade, você escolhe a chave e define os parâmetros de configuração de criptografia.

Observe que os recursos da atividade do Step Functions permanecem imutáveis. Não é possível atualizar a encryptionConfiguration de um ARN de atividade existente; é necessário criar um recurso de atividade. Os chamadores para os endpoints de API de atividade devem ter permissões kms:DescribeKey para criar com êxito uma atividade com uma chave do AWS KMS.

Quando a criptografia de chave gerenciada pelo cliente está habilitada em uma tarefa de atividade, o perfil de execução da máquina de estado exige uma permissão kms:GenerateDataKey e kms:Decrypt para a chave de atividade. Se você estiver criando essa máquina de estado no console do Step Functions, o recurso de criação automática de perfil adicionará essas permissões.

{ "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" ] } } } ] }

Definir políticas de permissão do AWS KMS com condições

É possível usar o contexto de criptografia nas políticas de chave e nas políticas do IAM como conditions e controlar o acesso à chave simétrica gerenciada pelo cliente. Para limitar o uso de uma chave do AWS KMS às solicitações do Step Functions em nome de um perfil específico, é possível usar a condição kms:ViaService.

Definir o escopo com contexto de criptografia

Um contexto de criptografia é um conjunto opcional de pares chave-valor que pode conter informações contextuais adicionais sobre os dados.

AWS KMSO usa o contexto de criptografia como dados autenticados adicionais para viabilizar a criptografia autenticada. Quando você inclui um contexto de criptografia em uma solicitação para criptografar dados, o AWS KMS vincula de forma criptográfica o contexto da criptografia aos dados criptografados. Para descriptografar os dados, você inclui o mesmo contexto de criptografia na solicitação.

O Step Functions fornece um contexto de criptografia em operações criptográficas do AWS KMS, nas quais a chave é aws:states:stateMachineArn para máquinas de estado ou aws:states:activityArn para atividades, e o valor é o recurso nome do recurso da Amazon (ARN).

"encryptionContext": {"aws:states:stateMachineArn": "arn:aws:states:region:account-id:stateMachine:stateMachineName"}
"encryptionContext": {"aws:states:activityArn": "arn:aws:states:region:account-id:activity:activityName"}

O seguinte exemplo mostra como limitar o uso de uma chave do AWS KMS para perfis de execução a máquinas de estado específicas com kms:EncryptionContext e a chave de contexto aws:states:stateMachineArn:

{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowKeyManagement", "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" } } } ] }

Definir o escopo com kms:ViaService

A chave de condição kms:ViaService limita o uso de uma chave do AWS Key Management Service para solicitações provenientes de serviços da AWS especificados.

O seguinte exemplo de política usa a condição kms:ViaService para permitir que a chave do AWS KMS seja usada para ações específicas somente quando a solicitação provém do Step Functions na região us-east-1, agindo em nome do 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" } } } ] }
nota

A condição kms:ViaService só é aplicável quando as permissões do AWS KMS são exigidas pelo chamador de API (por exemplo, CreateStateMachine, CreateActivity, GetActivityTask etc.). Adicionar uma condição kms:ViaService a um perfil de execução pode impedir que uma nova execução seja iniciada ou causar a falha de uma execução em andamento.

Permissões necessárias para chamadores de API

Para chamar ações de API do Step Functions que exibem dados criptografados, os chamadores precisam de permissões do AWS KMS. Como alternativa, algumas ações de API têm uma opção (METADATA_ONLY) para exibir somente metadados, eliminando a exigência de permissões do AWS KMS. Consulte a API do Step Functions para ter informações.

Para que uma execução seja concluída com êxito ao usar a criptografia de chave gerenciada pelo cliente, é necessário conceder ao perfil de execução as permissões kms:GenerateDataKey e kms:Decrypt para chaves do AWS KMS usadas pela máquina de estado.

A tabela a seguir mostra as permissões do AWS KMS que você precisa fornecer aos chamadores de API do Step Functions para as APIs usando uma chave do AWS KMS de uma máquina de estado. É possível fornecer as permissões à política de chave ou à política do IAM do perfil.

APIs usando a chave do AWS KMS da máquina de estado Exigido pelo chamador
CreateStateMachine kms:DescribeKey, kms:GenerateDataKey
UpdateStateMachine kms:DescribeKey, kms:GenerateDataKey
DescribeStateMachine kms:Decrypt
DescribeStateMachineForExecution kms:Decrypt
StartExecution --
StartSyncExecution kms:Decrypt
SendTaskSuccess --
SendTaskFailure --
StopExecution --
RedriveExecution --
DescribeExecution kms:Decrypt
GetExecutionHistory kms:Decrypt

A tabela a seguir mostra as permissões do AWS KMS que você precisa fornecer aos chamadores de API do Step Functions para as APIs usando uma chave do AWS KMS de uma atividade. É possível fornecer as permissões na política de chave ou na política do IAM do perfil.

APIs usando a chave do AWS KMS da atividade Exigido pelo chamador
CreateActivity kms:DescribeKey
GetActivityTask kms:Decrypt
Quando conceder permissões ao chamador ou ao perfil de execução?

Quando um perfil ou um usuário do IAM chama a API do Step Functions, o serviço Step Functions chama o AWS KMS em nome do chamador da API. Nesse caso, é necessário conceder a permissão do AWS KMS ao chamador da API. Quando um perfil de execução chama o AWS KMS diretamente, é necessário conceder permissões do AWS KMS ao perfil de execução.

Recursos do CloudFormation para configuração de criptografia

Os tipos de recurso do CloudFormation para o Step Functions podem provisionar recursos de máquina de estado e de atividade com configurações de criptografia.

Por padrão, o Step Functions fornece criptografia transparente do lado do servidor. Tanto AWS::StepFunctions::Activity quanto AWS::StepFunctions::StateMachine aceitam uma propriedade EncryptionConfiguration opcional que pode configurar uma chave do AWS KMS gerenciada pelo cliente para criptografia do lado do servidor.

Pré-requisito: para criar uma máquina de estado com chaves do AWS KMS gerenciadas pelo cliente, o usuário ou o perfil deve ter permissões do AWS KMS para DescribeKey e GenerateDataKey.

As atualizações de StateMachine requerem ausência de interrupções. As atualizações dos recursos da atividade requerem Substituição.

Para declarar uma propriedade EncryptionConfiguration no modelo do CloudFormation, use a seguinte sintaxe:

JSON

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

YAML

KmsKeyId: String KmsDataKeyReusePeriodSeconds: Integer Type: String

Propriedades

  • Tipo: opção de criptografia para a máquina de estado ou a atividade. Valores permitidos: CUSTOMER_MANAGED_KMS_KEY | AWS_OWNED_KEY

  • KmsKeyId: alias, ARN de alias, ID de chave ou ARN da chave do AWS KMS de criptografia simétrica que criptografa a chave de dados. Para especificar uma chave do AWS KMS em outra conta da AWS, o cliente deve usar o ARN da chave ou do alias. Para ter informações sobre kmsKeyId, consulte KeyId na documentação do AWS KMS.

  • KmsDataKeyReusePeriodSeconds: duração máxima pela qual o SFN reutilizará as chaves de dados. Quando o período expirar, o Step Functions chamará GenerateDataKey. Essa configuração só pode ser definida quando o Tipo é CUSTOMER_MANAGED_KMS_KEY. O valor pode variar de sessenta a novecentos segundos. O padrão é 300 segundos.

CloudFormationExemplos da

Exemplo: StateMachine com chave gerenciada pelo cliente

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

Exemplo: atividade com chave gerenciada pelo cliente

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

A atualização da criptografia de uma atividade requer a criação de um recurso.

A configuração da atividade é imutável e os nomes dos recursos devem ser exclusivos. Para definir chaves gerenciadas pelo cliente para criptografia, é necessário criar uma atividade. Se você tentar alterar a configuração no modelo do CFN para uma atividade existente, receberá uma exceção ActivityAlreadyExists.

Para atualizar a atividade e incluir chaves gerenciadas pelo cliente, defina um novo nome de atividade no modelo do CFN. Abaixo é apresentado um exemplo que cria uma atividade com uma configuração de chave gerenciada pelo cliente:

Definição de atividade existente

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

Nova definição de atividade

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

Monitorar o uso de chaves de criptografia

Ao usar uma chave do AWS KMS gerenciada pelo cliente para criptografar os recursos do Step Functions, é possível usar o CloudTrail para rastrear as solicitações enviadas pelo Step Functions ao AWS KMS.

Também é possível usar o contexto de criptografia em registros e logs de auditoria para identificar como a chave gerenciada pelo cliente está sendo usada. O contexto de criptografia também aparece nos logs gerados pelo AWS CloudTrail.

Os exemplos a seguir são eventos do CloudTrail referentes a Decrypt, DescribeKey e GenerateDataKey para monitorar operações do AWS KMS chamadas pelo Step Functions para acessar dados criptografados pela chave gerenciada pelo cliente.

Decrypt

Quando você acessa uma máquina de chave ou uma atividade, o Step Functions chama a operação Decrypt para usar a chave de dados criptografados armazenada para acessar os dados criptografados.

O evento de exemplo a seguir registra a operação 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

O Step Functions usa a operação DescribeKey para verificar se a chave do AWS KMS gerenciada pelo cliente associada à máquina de estado ou à atividade existe na conta e na região.

O evento de exemplo a seguir registra a operação 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

Quando você habilita uma chave do AWS KMS gerenciada pelo cliente para a máquina de estado ou a atividade, o Step Functions envia uma solicitação GenerateDataKey para ter uma chave de dados para a definição ou os dados de execução da máquina de estado criptografada.

O evento de exemplo a seguir registra a operação 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" }

Perguntas frequentes

O que acontece se minha chave for marcada para exclusão ou excluída no AWS KMS?

Se a chave for excluída ou marcada para exclusão no AWS KMS, qualquer execução em andamento relacionada falhará. Novas execuções não podem ser iniciadas até que você remova ou altere a chave associada ao fluxo de trabalho. Depois que uma chave do AWS KMS for excluída, todos os dados criptografados associados à execução do fluxo de trabalho permanecerão criptografados e não poderão mais ser descriptografados, tornando os dados irrecuperáveis.

O que acontece se uma chave do AWS KMS for desabilitada no AWS KMS?

Se uma chave do AWS KMS for desabilitada no AWS KMS, qualquer execução em andamento relacionada falhará. Novas execuções não podem ser iniciadas. Não é possível mais descriptografar os dados com essa chave do AWS KMS desabilitada até que ela seja reabilitada.

O que acontece com os eventos de alteração do status de execução enviados ao EventBridge?

A entrada, a saída, o erro e a causa da execução não serão incluídos em eventos de alteração do status de execução de fluxos de trabalho criptografados usando a chave do AWS KMS gerenciada pelo cliente.

Saiba mais

Para ter informações sobre criptografia de dados em repouso, consulte AWS Key Management Service concepts e security best practices for AWS Key Management Service no Guia do desenvolvedor do AWS Key Management Service.