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 no 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 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 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
-
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
-
Programar chaves para exclusão
Para ter mais informações, consulte customer managed key no Guia do desenvolvedor do AWS Key Management Service .
-
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
Criptografar 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.
É 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.
-
Atividades
É possível especificar a chave de dados inserindo um ID de chave do KMS, que o Step Functions usa para criptografar os dados.
-
ID da chave KMS — identificador da chave gerenciada pelo AWS KMS cliente na forma de ID da chave, ARN da chave, nome do alias ou ARN do alias.
Criar 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 realizar as etapas a seguir no AWS console, por meio da API 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 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 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 chave. Para ter informações, consulte Managing access to customer managed keys no Guia do desenvolvedor do AWS Key Management Service .
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 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 política de chaves para criptografar registros CloudWatch
O Step Functions é integrado CloudWatch para registro e monitoramento. Ao habilitar a criptografia do lado do servidor para sua máquina de estado usando sua própria chave KMS e habilitar a integração de CloudWatch registros, você deve permitir delivery.logs.amazonaws.com
a kms:Decrypt
ação de sua política de chaves: 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 AWS KMS chave e sua máquina de estado tiver a integração de CloudWatch registros ativada, a função 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:
region
:accountId
:key/keyId
", "Condition": { "StringEquals": { "kms:EncryptionContext:SourceArn": "arn:aws:logs:region
:accountId
:*" } } } ] }
Etapa 4: Criptografar grupo de CloudWatch registros (opcional)
Você pode ativar a criptografia dos registros em um grupo de CloudWatch registros usando sua própria AWS KMS chave. Para fazer isso, você também deve adicionar a política a seguir a essa AWS KMS chave.
nota
Você pode escolher AWS KMS chaves iguais ou diferentes para criptografar seus registros e suas 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.
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 ARN do grupo de registros.
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 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.
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
Só é possível habilitar a criptografia em um novo grupo de logs no console do 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.
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: Invoque a máquina de estado criptografada com sua AWS KMS chave
É 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. 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 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 da Activity API 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 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"
]
}
}
}
]
}
Avalie as políticas de AWS KMS permissão 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 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.
Definir 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 máquinas de estado ou aws:states:activityArn
para atividades, e o valor é o recurso Amazon Resource Name (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"}
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:us-east-1:123456789012:key/keyId"
],
"Condition": {
"StringEquals": {
"kms:EncryptionContext:aws:states:stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName"
}
}
}
]
}
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::123456789012:role/ExampleRole"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": "states.us-east-1.amazonaws.com"
}
}
}
]
}
nota
A kms:ViaService
condição só é aplicável quando AWS KMS as permissões são exigidas pelo chamador da 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 da API têm uma opção (METADATA_ONLY
) para retornar somente metadados, eliminando a exigência de AWS KMS permissões. 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 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 que você precisa fornecer aos chamadores da API Step Functions para APIs usar a AWS KMS chave 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 AWS KMS chave do State Machine | Exigido pelo chamador |
CreateStateMachine | kms:DescribeKey, kms:GenerateDataKey |
UpdateStateMachine | kms:DescribeKey, kms:GenerateDataKey |
DescribeStateMachine | kms:Descriptografar |
DescribeStateMachineForExecution | kms:Descriptografar |
StartExecution | -- |
StartSyncExecution | kms:Descriptografar |
SendTaskSuccess | -- |
SendTaskFailure | -- |
StopExecution | -- |
RedriveExecution | -- |
DescribeExecution | kms:Descriptografar |
GetExecutionHistory | kms:Descriptografar |
A tabela a seguir mostra as AWS KMS permissões que você precisa fornecer aos chamadores da API Step Functions para APIs usar a AWS KMS chave 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 AWS KMS chave da atividade | Exigido pelo chamador |
CreateActivity | kms:DescribeKey |
GetActivityTask | kms:Descriptografar |
Quando conceder permissões ao chamador ou ao perfil de execução?
Quando uma função ou usuário do IAM chama a API Step Functions, o serviço Step Functions chama AWS KMS em nome do chamador da API. Nesse caso, você deve conceder AWS KMS permissão ao chamador da API. 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 de estado ou a atividade. Valores permitidos:
CUSTOMER_MANAGED_KMS_KEY
|AWS_OWNED_KEY
-
KmsKeyId- Alias, alias ARN, ID da chave ou ARN da chave de criptografia AWS KMS simétrica que criptografa a chave de dados. Para especificar uma AWS KMS chave em uma AWS conta diferente, o cliente deve usar o ARN da chave ou o alias ARN. Para obter informações sobre kmsKeyId isso, consulte KeyIdnos AWS KMS documentos.
-
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.
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 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
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 logs gerados pelo 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 no AWS KMS?
Se a chave for excluída ou marcada para exclusão em AWS KMS, qualquer execução em execução 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 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 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 .