As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Criptografia de dados em repouso em Step Functions
Leia o blog
Leia sobre chaves gerenciadas pelo cliente em Fortalecimento da segurança de dados com uma chave gerenciada pelo cliente AWS KMS
AWS Step Functions sempre criptografa seus dados em repouso usando criptografia transparente do lado do servidor. A criptografia de dados em repouso, por padrão, reduz a sobrecarga operacional e a complexidade envolvidas na proteção de dados confidenciais. Você pode criar aplicativos sensíveis à segurança que atendam aos rigorosos requisitos regulamentares e de conformidade de criptografia.
Embora você não possa desabilitar essa camada de criptografia ou selecionar um tipo de criptografia alternativo, você pode adicionar uma segunda camada de criptografia sobre as chaves de criptografia de AWS propriedade existentes escolhendo uma chave gerenciada pelo cliente ao criar sua máquina de estado e recursos de atividade:
-
Chaves gerenciadas pelo cliente — O Step Functions suporta 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 AWS . Como você tem controle total dessa camada de criptografia, é possível realizar tarefas como:
-
Estabelecer e manter as políticas de chave
-
Estabelecendo e mantendo IAM políticas e subsídios
-
Habilitar e desabilitar políticas de chaves
-
Alternar os materiais de criptografia de chave
-
Adicionar etiquetas
-
Criar réplicas de chaves
-
Programar chaves para exclusão
Para obter informações, consulte a chave gerenciada pelo cliente no Guia do AWS Key Management Service desenvolvedor.
-
Você pode criptografar seus dados usando uma chave gerenciada pelo cliente para máquinas e atividades de AWS Step Functions estado. Você pode configurar uma AWS KMS chave simétrica e um período de reutilização da chave de dados ao criar ou atualizar uma máquina de estado e ao criar 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 AWS KMS as chaves gerenciadas pelo cliente, você pode proteger os dados do cliente que incluem informações de saúde protegidas (PHI) contra acesso não autorizado. O Step Functions é integrado ao CloudTrail, para que você possa visualizar e auditar os eventos mais recentes no CloudTrail console no histórico de eventos.
Para obter informações sobre AWS KMS, consulte O que é AWS Key Management Service?
nota
O Step Functions ativa automaticamente a criptografia em repouso usando chaves AWS próprias, sem nenhum custo. No entanto, AWS KMS cobranças se aplicam ao usar uma chave gerenciada pelo cliente. Para obter mais informações sobre preços, consulte Preços do AWS Key Management Service
Criptografia com uma chave gerenciada pelo cliente
O Step Functions descriptografa os dados da carga útil com sua AWS KMS chave gerenciada pelo cliente antes de passá-los para 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 retornados de um serviço integrado, o Step Functions criptografa os dados com sua AWS KMS chave gerenciada pelo cliente. Você pode usar a mesma chave para aplicar a criptografia de forma consistente em vários AWS serviços.
Você pode usar uma chave gerenciada pelo cliente com os seguintes recursos:
-
State Machine - tipos de fluxo de trabalho padrão e expresso
-
Atividades
Você pode especificar a chave de dados inserindo um ID de KMS chave, que o Step Functions usa para criptografar seus dados.
-
KMSID de chave — identificador de chave para uma chave gerenciada pelo AWS KMS cliente na forma de ID de chave, chaveARN, nome de alias ou ARN alias.
Crie uma máquina de estado com uma chave gerenciada pelo cliente
Pré-requisito: antes de criar uma máquina de estado com AWS KMS chaves gerenciadas pelo cliente, seu usuário ou função deve ter AWS KMS permissões para e. DescribeKey
GenerateDataKey
Você pode executar as etapas a seguir no AWS console, por meio doAPI, ou provisionando a infraestrutura por meio AWS CloudFormation de recursos. (CloudFormation exemplos são apresentados posteriormente neste guia.)
Etapa 1: criar AWS KMS chave
Você pode criar uma chave simétrica gerenciada pelo cliente com o AWS KMS console ou AWS KMS APIs.
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 funções selecionados terão acesso para gerenciar a chave, como ativar ou desativar a chave por meio doAPI. Você também pode escolher Usuários principais. Esses usuários ou funções terão a capacidade de usar a AWS KMS chave em operações criptográficas.
Etapa 2: definir a política de AWS KMS chaves
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 chaves. Para obter informações, consulte Gerenciamento do acesso às chaves gerenciadas pelo cliente no Guia do AWS Key Management Service desenvolvedor.
Veja a seguir um exemplo de política de AWS KMS chaves do console, sem administradores de chaves ou 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::111122223333:root" }, "Action": "kms:*", "Resource": "*" } ] }
Consulte o Guia do AWS Key Management Service desenvolvedor para obter informações sobre como especificar permissões em uma política e solucionar problemas de acesso por chave.
Etapa 3: (opcional) adicionar política de chaves para criptografar registros CloudWatch
O Step Functions é integrado CloudWatch para registro e monitoramento. Você tem a opção de criptografar os dados enviados para o CloudWatch Logs. Para usar o registro criptografado, você deve fornecer acesso ao serviço de entrega de registros na política de chaves da máquina de estado para AWS KMS ações. Você pode criptografar grupos de registros usando a chave da máquina de estado ou escolher outra chave específica para o grupo de registros (por exemplo, “Chave do grupo de registros”).
Para habilitar a integração de CloudWatch registros criptografados para uma máquina de estado, você deve adicionar o seguinte à sua política de AWS KMS chaves:
{ "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
" } } } ] }
nota
A Condition
seção restringe a AWS KMS chave a um único grupo ARN de registros.
Você também deve habilitar a entrega de serviços de log para integrações com a seguinte política principal:
{ "Sid": "Enable log service delivery for integrations", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "kms:Decrypt*", "Resource": "*" }
nota
Consulte a documentação de CloudWatch registros para saber mais sobre como definir permissões na AWS KMS chave do seu grupo de registros.
Etapa 4: Criar máquina de estado
Depois de criar uma chave e configurar a política, você pode usar a chave para criar uma nova máquina de estado.
Ao criar a máquina de estado, escolha Configuração adicional e, em seguida, opte por criptografar com a chave gerenciada pelo cliente. Em seguida, você pode selecionar sua chave e definir o período de reutilização da chave de dados de 1 minuto a 15 minutos.
Opcionalmente, você pode ativar o registro definindo um nível de registro e optando por criptografar o grupo de registros com sua AWS KMS chave.
nota
Você só pode habilitar a criptografia em um novo grupo de logs no console Step Functions. Para saber como associar uma AWS KMS chave a um grupo de registros existente, consulte Associar uma AWS KMS chave a um grupo de registros.
Etapa 5: Invoque a máquina de estado criptografada com sua AWS KMS chave
Você pode invocar sua máquina de estado criptografada como faria normalmente, e seus dados serão criptografados com sua chave gerenciada pelo cliente.
Para iniciar a execução de fluxos de trabalho Standard e Asynchronous Express com chaves gerenciadas pelo cliente, sua função de execução exige permissões. kms:Decrypt
kms:GenerateDataKey
A função de execução para execução do Synchronous Express exigekms:Decrypt
. Quando você cria uma máquina de estado no console e escolhe criar uma nova função, essas permissões são incluídas automaticamente para você.
Crie uma atividade com uma chave gerenciada pelo cliente
Criar uma atividade de Step Functions com uma chave gerenciada pelo cliente é semelhante à criação de uma máquina de estado com uma chave gerenciada pelo cliente. Antes de criar uma atividade com AWS KMS chaves gerenciadas pelo cliente, seu usuário ou função só precisa de AWS KMS permissões paraDescribeKey
. 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 Step Functions Activity permanecem imutáveis. Você não pode atualizar o encryptionConfiguration
para uma atividade ARN de uma atividade existente; você deve criar um novo recurso de atividade. Os chamadores dos API endpoints da Atividade devem ter kms:DescribeKey
permissões para criar com êxito uma atividade com uma AWS KMS chave.
Quando a criptografia de chave gerenciada pelo cliente é ativada em uma tarefa de atividade, a função de execução da máquina de estado kms:GenerateDataKey
exigirá uma kms:Decrypt
permissão para a chave de atividade. Se você estiver criando essa máquina de estado a partir do console Step Functions, o recurso de criação automática de função adicionará essas permissões.
Defina políticas de AWS KMS permissão com condições
Você pode usar o contexto de criptografia nas principais políticas e IAM políticas conditions
para controlar o acesso à sua chave simétrica gerenciada pelo cliente. Para limitar o uso de uma AWS KMS chave às solicitações de Step Functions em nome de uma função específica, você pode usar a kms:ViaService
condição.
Escopo com contexto de criptografia
Um contexto de criptografia é um conjunto opcional de pares de chave/valor que pode conter informações contextuais adicionais sobre os dados.
AWS KMS usa o contexto de criptografia como dados autenticados adicionais para oferecer suporte à criptografia autenticada. Quando você inclui um contexto de criptografia em uma solicitação para criptografar dados, AWS KMS vincula o contexto de criptografia aos dados criptografados. Para descriptografar os dados, você inclui o mesmo contexto de criptografia na solicitação.
Step Functions fornece um contexto de criptografia em operações AWS KMS criptográficas, em que a chave é aws:states:stateMachineArn
para State Machines ou aws:states:activityArn
para Activities, e o valor é o recurso Amazon Resource Name (ARN).
"encryptionContext": {"aws:states:stateMachineArn": "arn:aws:states:region
:123456789012:stateMachine:state_machine_name
"}
"encryptionContext": {"aws:states:activityArn": "arn:aws:states:region
:123456789012:activity:activity_name
"}
O exemplo a seguir mostra como limitar o uso de uma AWS KMS chave para funções de execução a máquinas de estado específicas com kms:EncryptionContext
e a chave de aws:states:stateMachineArn
contexto:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow KMS Permissions for StepFunctionsWorkflowExecutions", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:aa-example-1:1234567890:key/a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa" ], "Condition": { "StringEquals": { "kms:EncryptionContext:aws:states:stateMachineArn": "arn:aws:states:aa-example-1:1234567890:stateMachine:MyStateMachine" } } } ] }
Escopo com kms: ViaService
A chave de kms:ViaService
condição limita o uso de uma AWS Key Management Service chave às solicitações de AWS serviços especificados.
O exemplo de política a seguir usa a kms:ViaService
condição para permitir que a AWS KMS chave seja usada para ações específicas somente quando a solicitação se origina de Step Functions na ca-central-1
região, 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::1234567890:role/ExampleRole" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "states.ca-central-1.amazonaws.com" } } } ] }
nota
A kms:ViaService
condição só é aplicável quando AWS KMS as permissões são exigidas pelo API chamador (por exemplo,,CreateStateMachine
, CreateActivity
GetActivityTask
, etc.). Adicionar uma kms:ViaService
condição a uma função de execução pode impedir que uma nova execução seja iniciada ou fazer com que uma execução em execução falhe.
Permissões necessárias para API chamadores
Para chamar API ações do Step Functions que retornam dados criptografados, os chamadores precisam de AWS KMS
permissões. Como alternativa, algumas API ações têm a opção (METADATA_ONLY
) de retornar somente metadados, eliminando a exigência de AWS KMS permissões. Consulte Step Functions API para obter informações.
Para que uma execução seja concluída com êxito ao usar a criptografia de chave gerenciada pelo cliente, é necessário conceder a função de execução kms:GenerateDataKey
e kms:Decrypt
as permissões para AWS KMS as chaves usadas pela máquina de estado.
A tabela a seguir mostra as AWS KMS permissões necessárias para fornecer aos API chamadores do Step Functions State Machine. Você pode fornecer as permissões na política ou IAM política de chaves para a função.
APIsusando a AWS KMS chave do State Machine | Exigido pelo chamador |
CreateStateMachine | km:DescribeKey, km: GenerateDataKey |
UpdateStateMachine | km:DescribeKey, km: 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 AWS KMS permissões que você precisa para fornecer aos API chamadores do Step Functions Activity. Você pode fornecer as permissões na política ou IAM política de chaves para a função.
APIsusando a AWS KMS chave da atividade | Exigido pelo chamador |
CreateActivity | kms: DescribeKey |
GetActivityTask | kms:Decrypt |
Quando concedo permissões ao chamador ou à função de execução?
Quando uma IAM função ou usuário chama o Step FunctionsAPI, o serviço Step Functions chama AWS KMS em nome do API chamador. Nesse caso, você deve conceder AWS KMS permissão ao API chamador. Quando uma função de execução é chamada AWS KMS diretamente, você deve conceder AWS KMS permissões sobre a função de execução.
AWS CloudFormation recursos para configuração de criptografia
AWS CloudFormation os tipos de recursos do Step Functions podem provisionar recursos de máquina de estado e atividade com configurações de criptografia.
Por padrão, o Step Functions fornece criptografia transparente do lado do servidor. Ambos AWS::StepFunctions::Activity
AWS::StepFunctions::StateMachine
aceitam uma EncryptionConfiguration
propriedade opcional que pode configurar uma AWS KMS chave gerenciada pelo cliente para criptografia no lado do servidor.
Pré-requisito: antes de criar uma máquina de estado com AWS KMS chaves gerenciadas pelo cliente, seu usuário ou função deve ter AWS KMS permissões para e. DescribeKey
GenerateDataKey
As atualizações para StateMachine requerem nenhuma interrupção. As atualizações dos recursos da atividade requerem: Substituição.
Para declarar uma EncryptionConfiguration
propriedade em seu AWS CloudFormation modelo, use a seguinte sintaxe:
JSON
{ "KmsKeyId" : String, "KmsDataKeyReusePeriodSeconds" : Integer, "Type" : String }
YAML
KmsKeyId: String KmsDataKeyReusePeriodSeconds: Integer Type: String
Properties
-
Tipo - Opção de criptografia para a máquina ou atividade de estado. Valores permitidos:
CUSTOMER_MANAGED_KMS_KEY
|AWS_OWNED_KEY
-
KmsKeyId- Alias, aliasARN, ID da chave ou chave ARN da chave de criptografia simétrica que criptografa a AWS KMS chave de dados. Para especificar uma AWS KMS chave em uma AWS conta diferente, o cliente deve usar a chave ARN ou o aliasARN. Para obter informações sobre kmsKeyId isso, consulte KeyIdnos AWS KMS documentos.
-
KmsDataKeyReusePeriodSeconds- Duração máxima pela qual SFN reutilizará as chaves de dados. Quando o período expirar, o Step Functions será chamado
GenerateDataKey
. Essa configuração só pode ser definida quando o Tipo éCUSTOMER_MANAGED_KMS_KEY
. O valor pode variar de 60 a 900 segundos. O padrão é 300 segundos.
AWS CloudFormation exemplos
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 novo recurso
A configuração da atividade é imutável e os nomes dos recursos devem ser exclusivos. Para definir chaves gerenciadas pelo cliente para criptografia, você deve criar uma nova atividade. Se você tentar alterar a configuração em seu CFN modelo para uma atividade existente, você receberá uma ActivityAlreadyExists
exceção.
Para atualizar sua atividade para incluir chaves gerenciadas pelo cliente, defina um novo nome de atividade em seu CFN modelo. Veja a seguir um exemplo que cria uma nova 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
Monitorando o uso da chave de criptografia
Quando você usa uma chave gerenciada pelo AWS KMS cliente para criptografar seus recursos do Step Functions, você pode usar CloudTrail para rastrear as solicitações enviadas pelo Step Functions. 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 registros gerados por AWS CloudTrail.
Os exemplos a seguir são CloudTrail eventos paraDecrypt
,DescribeKey
, e GenerateDataKey
para monitorar AWS KMS operações chamadas por Step Functions para acessar dados criptografados pela chave gerenciada pelo cliente:
FAQs
O que acontece se minha chave for marcada para exclusão ou excluída em AWS KMS?
Se a chave for excluída ou marcada para exclusão em AWS KMS, todas as execuções em execução relacionadas falharão. Novas execuções não podem ser iniciadas até que você remova ou altere a chave associada ao fluxo de trabalho. Depois que uma AWS KMS chave 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 AWS KMS chave for desativada AWS KMS?
Se uma AWS KMS chave for desativada AWS KMS, qualquer execução em execução relacionada falhará. Novas execuções não podem ser iniciadas. Você não pode mais descriptografar os dados criptografados com essa AWS KMS chave desativada até que ela seja reativada.
O que acontece com os eventos de alteração do status de execução enviados para 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 sua AWS KMS chave gerenciada pelo cliente.
Saiba mais
Para obter informações sobre criptografia de dados em repouso, consulte AWS Key Management Service os conceitos e as melhores práticas de segurança AWS Key Management Service no Guia do AWS Key Management Service desenvolvedor.