Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cifrado de datos en reposo en Step Functions
Lea el blog
Lea acerca de las claves administradas por el cliente en Fortalecer la seguridad de los datos con una clave administrada por el cliente AWS KMS
AWS Step Functions siempre cifra los datos en reposo mediante un cifrado transparente del lado del servidor. El cifrado de los datos en reposo de forma predeterminada reduce la sobrecarga operativa y la complejidad que implica la protección de los datos confidenciales. Puede crear aplicaciones sensibles a la seguridad que cumplan con los estrictos requisitos normativos y de conformidad con el cifrado.
Si bien no puede deshabilitar esta capa de cifrado ni seleccionar un tipo de cifrado alternativo, puede añadir una segunda capa de cifrado sobre las claves de cifrado que ya AWS posee. Para ello, elija una clave gestionada por el cliente al crear su máquina de estado y sus recursos de actividad:
-
Claves administradas por el cliente: Step Functions admite el uso de una clave simétrica administrada por el cliente que usted crea, posee y administra para agregar una segunda capa de cifrado sobre el cifrado de AWS propiedad existente. Como usted tiene el control total de este cifrado, puede realizar dichas tareas como:
-
Establecer y mantener políticas de claves
-
Establecer y mantener IAM políticas y subvenciones
-
Habilitar y deshabilitar políticas de claves
-
Rotar el material criptográfico
-
Agregar etiquetas.
-
Crear alias de clave
-
Programar la eliminación de claves
Para obtener más información, consulte la clave administrada por el cliente en la Guía para AWS Key Management Service desarrolladores.
-
Puede cifrar sus datos con una clave gestionada por el cliente para las máquinas y actividades AWS Step Functions estatales. Puede configurar una AWS KMS clave simétrica y un período de reutilización de la clave de datos al crear o actualizar una máquina de estados y al crear una actividad. El historial de ejecución y la definición de la máquina de estados se cifrarán con la clave aplicada a la máquina de estados. Las entradas de la actividad se cifrarán con la clave aplicada a la actividad.
Con AWS KMS las claves administradas por el cliente, puede proteger los datos de los clientes, incluida la información de salud protegida (PHI), contra el acceso no autorizado. Step Functions está integrado con CloudTrail, por lo que puede ver y auditar los eventos más recientes de la CloudTrail consola en el historial de eventos.
Para obtener más información AWS KMS, consulte ¿Qué es AWS Key Management Service?
nota
Step Functions permite automáticamente el cifrado en reposo utilizando claves AWS propias sin coste alguno. Sin embargo, se aplican AWS KMS cargos cuando se utiliza una clave gestionada por el cliente. Para obtener información sobre precios, consulte Precios de AWS Key Management Service
Cifrar con una clave gestionada por el cliente
Step Functions descifra los datos de la carga útil con la AWS KMS clave gestionada por el cliente antes de pasarlos a otro servicio para realizar una tarea. Los datos se cifran en tránsito mediante Transport Layer Security ()TLS.
Cuando los datos se devuelven desde un servicio integrado, Step Functions los cifra con la AWS KMS clave gestionada por el cliente. Puede usar la misma clave para aplicar el cifrado de manera uniforme en muchos AWS servicios.
Puede utilizar una clave gestionada por el cliente con los siguientes recursos:
-
State Machine: tipos de flujo de trabajo estándar y exprés
-
Actividad
Puede especificar la clave de datos introduciendo un identificador de KMS clave, que Step Functions utiliza para cifrar los datos.
-
KMSID de clave: identificador de clave de una clave gestionada por el AWS KMS cliente en forma de identificador de clave, claveARN, nombre de alias o aliasARN.
Cree una máquina de estados con una clave gestionada por el cliente
Requisito previo: antes de poder crear una máquina de estados con AWS KMS claves administradas por el cliente, su usuario o rol debe tener AWS KMS permisos para DescribeKey
yGenerateDataKey
.
Puede realizar los siguientes pasos en la AWS consola, a través de los API recursos o aprovisionando la infraestructura mediante AWS CloudFormation recursos. (CloudFormation los ejemplos se presentan más adelante en esta guía).
Paso 1: Crear la AWS KMS clave
Puede crear una clave simétrica gestionada por el cliente con la AWS KMS consola o AWS KMS APIs.
Para crear una clave simétrica administrada por el cliente
Siga los pasos para crear una clave simétrica gestionada por el cliente que se indican en la Guía para desarrolladores de AWS Key Management Service .
nota
Opcional: al crear una clave, puede elegir administradores de claves. Los usuarios o roles seleccionados tendrán acceso a administrar la clave, por ejemplo, habilitando o deshabilitando la clave a través delAPI. También puede elegir Usuarios clave. A estos usuarios o roles se les concederá la posibilidad de utilizar la AWS KMS clave en operaciones criptográficas.
Paso 2: Defina la política AWS KMS clave
Las políticas de clave controlan el acceso a la clave administrada por el cliente. Cada clave administrada por el cliente debe tener exactamente una política de clave, que contiene instrucciones que determinan quién puede usar la clave y cómo puede utilizarla. Cuando crea la clave administrada por el cliente, puede especificar una política de clave. Para obtener más información, consulte Administrar el acceso a las claves administradas por el cliente en la Guía para AWS Key Management Service desarrolladores.
El siguiente es un ejemplo de una política de AWS KMS claves de la consola, sin administradores clave ni usuarios clave:
{ "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 la Guía para AWS Key Management Service desarrolladores para obtener información sobre cómo especificar los permisos en una política y solucionar problemas de acceso clave.
Paso 3: (opcional) Agregue una política de claves para cifrar CloudWatch los registros
Step Functions está integrado CloudWatch para el registro y la supervisión. Tiene la opción de cifrar los datos enviados a CloudWatch Logs. Para utilizar el registro cifrado, debe proporcionar acceso al servicio de entrega de registros en la política estatal de claves de máquina a AWS KMS las acciones. Puede cifrar los grupos de registros con la clave de máquina de estado o puede elegir otra clave específica para el grupo de registros (por ejemplo, la «clave del grupo de registros»).
Para habilitar la integración de CloudWatch registros cifrados en una máquina de estado, debe agregar lo siguiente a su política de AWS KMS claves:
{ "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
La Condition
sección restringe la AWS KMS clave a un único grupo ARN de registros.
También debe habilitar la prestación del servicio de registro para las integraciones con la siguiente política clave:
{ "Sid": "Enable log service delivery for integrations", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "kms:Decrypt*", "Resource": "*" }
nota
Consulte la documentación de CloudWatch registros para obtener más información sobre cómo configurar los permisos en la AWS KMS clave de su grupo de registros.
Paso 4: Crear una máquina de estados
Una vez que haya creado una clave y configurado la política, puede utilizarla para crear una nueva máquina de estados.
Al crear la máquina de estados, elija Configuración adicional y, a continuación, elija cifrar con una clave administrada por el cliente. A continuación, puede seleccionar su clave y establecer el período de reutilización de la clave de datos de 1 minuto a 15 minutos.
Si lo desea, puede habilitar el registro configurando un nivel de registro y eligiendo cifrar el grupo de registros con su AWS KMS clave.
nota
Solo puede habilitar el cifrado en un grupo de registros nuevo en la consola Step Functions. Para obtener información sobre cómo asociar una AWS KMS clave a un grupo de registros existente, consulte Asociar una AWS KMS clave a un grupo de registros.
Paso 5: invoque la máquina de estado cifrada con su AWS KMS clave
Puede invocar su máquina de estado cifrada como lo haría normalmente y sus datos se cifrarán con la clave gestionada por el cliente.
Para iniciar una ejecución de flujos de trabajo estándar y flujos de trabajo exprés asíncronos con claves administradas por el cliente, su función de ejecución requiere permisos y requisitos. kms:Decrypt
kms:GenerateDataKey
La función de ejecución para la ejecución de Synchronous Express requiere. kms:Decrypt
Al crear una máquina de estados en la consola y elegir crear un nuevo rol, estos permisos se incluyen automáticamente.
Cree una actividad con una clave gestionada por el cliente
Crear una actividad de Step Functions con una clave gestionada por el cliente es similar a crear una máquina de estados con una clave gestionada por el cliente. Para poder crear una actividad con AWS KMS claves administradas por el cliente, tu usuario o rol solo necesita AWS KMS permisos para hacerloDescribeKey
. Durante la creación de la actividad, usted elige la clave y establece los parámetros de configuración del cifrado.
Tenga en cuenta que los recursos de actividad de Step Functions permanecen inmutables. No puede actualizar una actividad encryptionConfiguration
ARN de una actividad existente; debe crear un nuevo recurso de actividad. Las personas que llamen a los API puntos finales de la actividad deben tener kms:DescribeKey
permisos para crear correctamente una actividad con una AWS KMS clave.
Cuando el cifrado por clave gestionada por el cliente está habilitado en una tarea de actividad, la función de ejecución de la máquina estatal requerirá un kms:GenerateDataKey
kms:Decrypt
permiso para la clave de actividad. Si está creando esta máquina de estados desde la consola Step Functions, la función de creación automática de roles añadirá estos permisos.
Limite las políticas de AWS KMS permisos con condiciones
Puede utilizar el contexto de cifrado en las políticas y IAM políticas clave conditions
para controlar el acceso a su clave simétrica gestionada por el cliente. Para limitar el uso de una AWS KMS clave a las solicitudes de Step Functions en nombre de un rol específico, puedes usar la kms:ViaService
condición.
Definir el alcance con el contexto de cifrado
Un contexto de cifrado es un conjunto opcional de pares clave-valor que pueden contener información contextual adicional sobre los datos.
AWS KMS utiliza el contexto de cifrado como datos autenticados adicionales para respaldar el cifrado autenticado. Al incluir un contexto de cifrado en una solicitud de cifrado de datos, AWS KMS vincula el contexto de cifrado a los datos cifrados. Para descifrar los datos, debe incluir el mismo contexto de cifrado en la solicitud.
Step Functions proporciona un contexto de cifrado en las operaciones AWS KMS criptográficas, donde la clave es aws:states:stateMachineArn
para State Machines o aws:states:activityArn
para Activities, y el valor es el 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
"}
El siguiente ejemplo muestra cómo limitar el uso de una AWS KMS clave para funciones de ejecución a máquinas de estado específicas con kms:EncryptionContext
la clave 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" } } } ] }
Definir el alcance con kms: ViaService
La clave de kms:ViaService
condición limita el uso de una AWS Key Management Service clave a las solicitudes de AWS servicios específicos.
El siguiente ejemplo de política usa la kms:ViaService
condición para permitir que la AWS KMS clave se use para acciones específicas solo cuando la solicitud se origina en Step Functions de la ca-central-1
región, actuando en nombre de: 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
La kms:ViaService
condición solo se aplica cuando la API persona que llama requiere AWS KMS permisos (por ejemplo,,,CreateStateMachine
, CreateActivity
GetActivityTask
, etc.). Añadir una kms:ViaService
condición a una función de ejecución puede impedir que se inicie una nueva ejecución o provocar un error en una ejecución en ejecución.
Permisos necesarios para las API personas que llaman
Para llamar a las API acciones de Step Functions que devuelven datos cifrados, las personas que llaman necesitan AWS KMS
permisos. Como alternativa, algunas API acciones tienen una opción (METADATA_ONLY
) para devolver solo metadatos, lo que elimina la necesidad de AWS KMS permisos. Consulte Step Functions API para obtener más información.
Para que una ejecución se complete correctamente cuando se utiliza el cifrado de claves gestionado por el cliente, la máquina de estado debe conceder la función de ejecución kms:GenerateDataKey
y utilizar los kms:Decrypt
permisos para AWS KMS las claves.
En la siguiente tabla se muestran los AWS KMS permisos que necesita para proporcionar a las personas que API llaman a Step Functions State Machine. Puede proporcionar los permisos en la política clave o en la IAM política del rol.
APIsutilizando la AWS KMS clave de State Machine | Requerido por la persona que llama |
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 |
En la siguiente tabla se muestran los AWS KMS permisos que necesitas para proporcionar a las personas que API llaman a Step Functions Activity. Puede proporcionar los permisos en la política clave o en la IAM política del rol.
APIsutilizando la AWS KMS clave de Activity | Requerido por la persona que llama |
CreateActivity | km: DescribeKey |
GetActivityTask | kms:Decrypt |
¿Cuándo concedo permisos al rol de persona que llama o de ejecución?
Cuando un IAM rol o un usuario llama a Step FunctionsAPI, el servicio Step Functions llama AWS KMS en nombre de la API persona que llama. En este caso, debe conceder el AWS KMS permiso a la API persona que llama. Cuando un rol de ejecución llama AWS KMS directamente, debes conceder AWS KMS permisos al rol de ejecución.
AWS CloudFormation recursos para la configuración de cifrado
AWS CloudFormation los tipos de recursos de Step Functions pueden aprovisionar recursos de estado, máquina y actividad con configuraciones de cifrado.
De forma predeterminada, Step Functions proporciona un cifrado transparente del lado del servidor. Ambos AWS::StepFunctions::Activity
AWS::StepFunctions::StateMachine
aceptan una EncryptionConfiguration
propiedad opcional que puede configurar una AWS KMS clave administrada por el cliente para el cifrado del lado del servidor.
Requisito previo: antes de poder crear una máquina de estados con AWS KMS claves administradas por el cliente, su usuario o rol debe tener AWS KMS permisos para DescribeKey
y. GenerateDataKey
Las actualizaciones no StateMachine requieren interrupciones. Las actualizaciones de los recursos de la actividad requieren: reemplazo.
Para declarar una EncryptionConfiguration
propiedad en la AWS CloudFormation plantilla, utilice la siguiente sintaxis:
JSON
{ "KmsKeyId" : String, "KmsDataKeyReusePeriodSeconds" : Integer, "Type" : String }
YAML
KmsKeyId: String KmsDataKeyReusePeriodSeconds: Integer Type: String
Propiedades
-
Tipo: opción de cifrado para la máquina o actividad de estado. Valores permitidos:
CUSTOMER_MANAGED_KMS_KEY
|AWS_OWNED_KEY
-
KmsKeyId- Alias, aliasARN, identificador de clave o clave ARN de la clave de cifrado simétrico que cifra la AWS KMS clave de datos. Para especificar una AWS KMS clave en una AWS cuenta diferente, el cliente debe usar la clave ARN o el alias. ARN Para obtener información al respecto kmsKeyId, consulte KeyIdlos AWS KMS documentos.
-
KmsDataKeyReusePeriodSeconds- Duración máxima durante la que se SFN reutilizarán las claves de datos. Cuando el período expire, Step Functions llamará
GenerateDataKey
. Esta configuración solo se puede establecer cuando Type esCUSTOMER_MANAGED_KMS_KEY
. El valor puede oscilar entre 60 y 900 segundos. El valor predeterminado es de 300 segundos.
AWS CloudFormation ejemplos
Ejemplo: StateMachine con clave gestionada por el 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
Ejemplo: actividad con clave gestionada por el 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
La actualización del cifrado de una actividad requiere la creación de un recurso nuevo
La configuración de la actividad es inmutable y los nombres de los recursos deben ser únicos. Para configurar las claves de cifrado administradas por el cliente, debes crear una nueva actividad. Si intentas cambiar la configuración de tu CFN plantilla para una actividad existente, recibirás una ActivityAlreadyExists
excepción.
Para actualizar tu actividad para incluir las claves gestionadas por el cliente, establece un nuevo nombre de actividad en la CFN plantilla. A continuación se muestra un ejemplo que crea una nueva actividad con una configuración de clave gestionada por el cliente:
Definición de actividad 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
Nueva definición de actividad
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
Supervisar el uso de la clave de cifrado
Cuando utilizas una clave gestionada por el AWS KMS cliente para cifrar tus recursos de Step Functions, puedes utilizarla CloudTrail para realizar un seguimiento de las solicitudes que Step Functions envía AWS KMS.
También puede utilizar el contexto de cifrado en registros de auditoría y en registros para identificar cómo se utiliza la clave administrada por el cliente. El contexto de cifrado también aparece en los registros generados por AWS CloudTrail.
Los siguientes ejemplos son CloudTrail eventos para Decrypt
DescribeKey
, y GenerateDataKey
para monitorear AWS KMS las operaciones llamadas por Step Functions para acceder a los datos cifrados por la clave administrada por el cliente:
FAQs
¿Qué ocurre si mi clave está marcada para ser eliminada o si se borra dentro? AWS KMS
Si la clave se borra o se marca para su eliminación en AWS KMS, se producirá un error en cualquier ejecución relacionada con ella. No se pueden iniciar nuevas ejecuciones hasta que elimines o cambies la clave asociada al flujo de trabajo. Tras eliminar una AWS KMS clave, todos los datos cifrados asociados a la ejecución del flujo de trabajo permanecerán cifrados y ya no se podrán descifrar, lo que hará que los datos sean irrecuperables.
¿Qué ocurre si una AWS KMS clave está deshabilitada? AWS KMS
Si una AWS KMS clave está deshabilitada AWS KMS, cualquier ejecución relacionada con ella fallará. No se pueden iniciar nuevas ejecuciones. Ya no podrá descifrar los datos cifrados con esa AWS KMS clave deshabilitada hasta que se vuelva a activar.
¿Qué ocurre con los eventos de cambio de estado de ejecución enviados a? EventBridge
La entrada, el resultado, el error y la causa de la ejecución no se incluirán en los eventos de cambio de estado de ejecución de los flujos de trabajo cifrados con la AWS KMS clave gestionada por el cliente.
Más información
Para obtener información sobre el cifrado de datos en reposo, consulte AWS Key Management Service los conceptos y las prácticas recomendadas de seguridad AWS Key Management Service en la Guía para AWS Key Management Service desarrolladores.