Función de MWAA ejecución de Amazon - Amazon Managed Workflows para Apache Airflow

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.

Función de MWAA ejecución de Amazon

Un rol de ejecución es un rol AWS Identity and Access Management (IAM) con una política de permisos que otorga a Amazon Managed Workflows for Apache Airflow permiso para invocar los recursos de otros AWS servicios en su nombre. Esto puede incluir recursos como su depósito de Amazon S3, su AWS clave propia y sus CloudWatch registros. MWAALos entornos de Amazon necesitan una función de ejecución por entorno. En este tema se describe cómo usar y configurar la función de ejecución de su entorno para permitir que Amazon acceda MWAA a otros AWS recursos utilizados por su entorno.

Información general sobre los roles de ejecución

El permiso para MWAA que Amazon utilice otros AWS servicios utilizados por su entorno se obtiene del rol de ejecución. Un rol de MWAA ejecución de Amazon necesita permiso para los siguientes AWS servicios utilizados por un entorno:

  • Amazon CloudWatch (CloudWatch): para enviar métricas y registros de Apache Airflow.

  • Amazon Simple Storage Service (Amazon S3): para analizar el código DAG de su entorno y los archivos auxiliares (como requirements.txt un).

  • Amazon Simple Queue Service (AmazonSQS): para poner en cola las tareas de Apache Airflow de su entorno en una SQS cola de Amazon propiedad de Amazon. MWAA

  • AWS Key Management Service (AWS KMS): para el cifrado de datos de su entorno (mediante una clave propia o una clave AWS gestionada por el cliente).

    nota

    Si has elegido que Amazon MWAA utilice una AWS KMS clave propia para cifrar tus datos, debes definir los permisos en una política adjunta a tu función de MWAA ejecución en Amazon que conceda acceso a KMS claves arbitrarias almacenadas fuera de tu cuenta a través de AmazonSQS. Para que la función de ejecución de su entorno pueda acceder a KMS claves arbitrarias, se requieren las dos condiciones siguientes:

    • KMSLa clave de una cuenta de terceros debe permitir el acceso de esta cuenta cruzada a través de su política de recursos.

    • Tu DAG código debe acceder a una SQS cola de Amazon que comienza con airflow-celery- la cuenta de terceros y utiliza la misma KMS clave para el cifrado.

    Para mitigar los riesgos asociados con el acceso a los recursos entre cuentas, te recomendamos revisar el código colocado en tu cuenta DAGs para asegurarte de que tus flujos de trabajo no accedan a SQS colas arbitrarias de Amazon ajenas a tu cuenta. Además, puedes usar una KMS clave gestionada por el cliente almacenada en tu propia cuenta para gestionar el cifrado en AmazonMWAA. Esto limita la función de ejecución de su entorno para acceder únicamente a la KMS clave de su cuenta.

    Tenga en cuenta que una vez que haya elegido una opción de cifrado, ya no podrá cambiar su elección para los entornos existentes.

Un rol de ejecución también necesita permiso para realizar las siguientes IAM acciones:

  • airflow:PublishMetrics— permitir que Amazon MWAA supervise la salud de un medio ambiente.

Permisos que se asocian de forma predeterminada

Puedes usar las opciones predeterminadas de la MWAA consola de Amazon para crear una función de ejecución y una clave AWS propia y, a continuación, seguir los pasos de esta página para añadir políticas de permisos a tu función de ejecución.

  • Cuando eliges la opción Crear un nuevo rol en la consola, Amazon MWAA asigna los permisos mínimos que necesita un entorno a tu rol de ejecución.

  • En algunos casos, Amazon MWAA asigna los permisos máximos. Por ejemplo, recomendamos elegir la opción en la MWAA consola de Amazon para crear un rol de ejecución al crear un entorno. Amazon MWAA añade automáticamente las políticas de permisos para todos los grupos de CloudWatch registros mediante el patrón regex en la función de ejecución as. "arn:aws:logs:your-region:your-account-id:log-group:airflow-your-environment-name-*"

¿Cómo añadir permisos para usar otros servicios? AWS

Amazon no MWAA puede añadir ni editar políticas de permisos a un rol de ejecución existente después de crear un entorno. Por ello, deberá actualizar su rol de ejecución con las políticas de permisos adicionales que necesite su entorno. Por ejemplo, si DAG necesita acceso a AWS Glue, Amazon no MWAA puede detectar automáticamente que estos permisos son necesarios para su entorno ni añadirlos a su función de ejecución.

Puede añadir permisos a un rol de ejecución de dos maneras:

  • Modificando la JSON política de su función de ejecución en línea. Puede utilizar los ejemplos de documentos de JSON política de esta página para añadir o reemplazar la JSON política de su función de ejecución en la IAM consola.

  • Creando una JSON política para un AWS servicio y adjuntándola a tu función de ejecución. Puede seguir los pasos de esta página para asociar un nuevo documento de JSON política para un AWS servicio a su función de ejecución en la IAM consola.

Suponiendo que la función de ejecución ya esté asociada a su entorno, Amazon MWAA puede empezar a utilizar las políticas de permisos añadidas de forma inmediata. Esto también significa que si eliminas los permisos necesarios de una función de ejecución, es DAGs posible que no lo consigas.

Cómo asociar un nuevo rol de ejecución

Se puede cambiar el rol de ejecución de un entorno en cualquier momento. Si aún no ha asociado un nuevo rol de ejecución a su entorno, siga los pasos que se indican en esta página para crear una política para el nuevo rol de ejecución y asociarlo a su entorno.

Creación de un nuevo rol

De forma predeterminada, Amazon MWAA crea una AWS clave propia para el cifrado de datos y una función de ejecución en tu nombre. Puedes elegir las opciones predeterminadas en la MWAA consola de Amazon al crear un entorno. La imagen siguiente muestra la opción predeterminada que debe escogerse para crear un rol de ejecución para un entorno.

Imagen con la opción predeterminada para crear un nuevo rol.

Consulta y actualización de la política de un rol de ejecución

Puede ver el rol de ejecución de su entorno en la MWAA consola de Amazon y actualizar la JSON política del rol en la IAM consola.

Pasos para asociar la política a un rol de ejecución
  1. Abre la página Entornos en la MWAA consola de Amazon.

  2. Seleccione un entorno.

  3. Elija la función de ejecución en el panel de permisos para abrir la página de permisosIAM.

  4. Elija el nombre del rol de ejecución para abrir la política de permisos.

  5. Elija Editar política.

  6. Elija la pestaña JSON.

  7. Actualice su JSON política.

  8. Elija Revisar política.

  9. Elija Guardar cambios.

Adjunta una JSON política para usar otros AWS servicios

Puede crear una JSON política para un AWS servicio y adjuntarla a su función de ejecución. Por ejemplo, puede adjuntar la siguiente JSON política para conceder acceso de solo lectura a todos los recursos del mismo. AWS Secrets Manager

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource":[ "*" ] } ] }
Pasos para asociar la política a un rol de ejecución
  1. Abre la página Entornos en la MWAA consola de Amazon.

  2. Seleccione un entorno.

  3. Elija su rol de ejecución en el panel Permisos.

  4. Seleccione Asociar políticas.

  5. Elija Crear política.

  6. Elija JSON.

  7. Pegue la JSON política.

  8. Elija Siguiente: Etiquetas y Siguiente: Consultar.

  9. Indique un nombre descriptivo (por ejemplo, “SecretsManagerReadPolicy”) y una descripción para la política.

  10. Elija Crear política.

Cómo conceder acceso al bucket de Amazon S3 con un bloqueo de acceso público a nivel de cuenta

Es posible que quiera bloquear el acceso a todos los buckets de su cuenta mediante la operación PutPublicAccessBlock en Amazon S3. Al bloquear el acceso a todos los buckets de su cuenta, el rol de ejecución de su entorno debe incluir la acción s3:GetAccountPublicAccessBlock en una política de permisos.

El ejemplo siguiente muestra la política que debe asociar a su rol de ejecución si bloquea el acceso a todos los buckets de Amazon S3 de su cuenta.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetAccountPublicAccessBlock", "Resource": "*" } ] }

Para más información acerca de cómo restringir el acceso a los buckets de Amazon S3, consulte Bloquear el acceso público a su almacenamiento de Amazon S3 en la Guía del usuario de Amazon Simple Storage Service.

Uso de las conexiones de Apache Airflow

También puede crear una conexión de Apache Airflow y especificar su función de ejecución y la encontrará ARN en su objeto de conexión de Apache Airflow. Para obtener más información, consulte Administración de las conexiones a Apache Airflow.

Ejemplos de JSON políticas para una función de ejecución

En esta sección se muestran dos ejemplos de políticas de permisos que puede utilizar para sustituir la que emplea para su rol de ejecución actual o bien para crear un nuevo rol de ejecución y utilizarlas para su entorno. Estas políticas contienen ARN marcadores de posición de recursos para grupos de registros de Apache Airflow, un bucket de Amazon S3 y un entorno de Amazon MWAA.

Recomendamos copiar la política de ejemplo, sustituir la muestra ARNs o los marcadores de posición y, a continuación, utilizarla para crear o actualizar un rol de ejecución. JSON Por ejemplo, puede sustituir {your-region} por us-east-1.

Ejemplo de política de claves para una clave administrada por el cliente

El siguiente ejemplo muestra la política de un rol de ejecución que puede utilizar para una clave administrada por el cliente.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "s3:ListAllMyBuckets", "Resource": [ "arn:aws:s3:::{your-s3-bucket-name}", "arn:aws:s3:::{your-s3-bucket-name}/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject*", "s3:GetBucket*", "s3:List*" ], "Resource": [ "arn:aws:s3:::{your-s3-bucket-name}", "arn:aws:s3:::{your-s3-bucket-name}/*" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents", "logs:GetLogEvents", "logs:GetLogRecord", "logs:GetLogGroupFields", "logs:GetQueryResults" ], "Resource": [ "arn:aws:logs:{your-region}:{your-account-id}:log-group:airflow-{your-environment-name}-*" ] }, { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "s3:GetAccountPublicAccessBlock" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "cloudwatch:PutMetricData", "Resource": "*" }, { "Effect": "Allow", "Action": [ "sqs:ChangeMessageVisibility", "sqs:DeleteMessage", "sqs:GetQueueAttributes", "sqs:GetQueueUrl", "sqs:ReceiveMessage", "sqs:SendMessage" ], "Resource": "arn:aws:sqs:{your-region}:*:airflow-celery-*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt" ], "Resource": "arn:aws:kms:{your-region}:{your-account-id}:key/{your-kms-cmk-id}", "Condition": { "StringLike": { "kms:ViaService": [ "sqs.{your-region}.amazonaws.com", "s3.{your-region}.amazonaws.com" ] } } } ] }

A continuación, debes permitir que Amazon MWAA asuma esta función para poder realizar acciones en tu nombre. Para ello, puede añadir "airflow.amazonaws.com" los directores de "airflow-env.amazonaws.com" servicio a la lista de entidades de confianza para este rol de ejecución mediante la IAM consola, o bien incluir estos directores de servicio en el documento de política de asunción de roles para este rol de ejecución mediante el comando create-role mediante el comando IAM create-role. AWS CLI A continuación, encontrará un ejemplo de documento de política de asunción de roles:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": ["airflow.amazonaws.com","airflow-env.amazonaws.com"] }, "Action": "sts:AssumeRole" } ] }

A continuación, adjunte la siguiente JSON política a la clave gestionada por el cliente. Esta política utiliza el prefijo clave de kms:EncryptionContextcondición para permitir el acceso a su grupo de registros de Apache Airflow en Logs. CloudWatch

{ "Sid": "Allow logs access", "Effect": "Allow", "Principal": { "Service": "logs.{your-region}.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:{your-region}:{your-account-id}:*" } } }

Ejemplo de política para una clave propia AWS

El siguiente ejemplo muestra la política de un rol de ejecución que puede utilizar para una clave propiedad de AWS.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "airflow:PublishMetrics", "Resource": "arn:aws:airflow:{your-region}:{your-account-id}:environment/{your-environment-name}" }, { "Effect": "Deny", "Action": "s3:ListAllMyBuckets", "Resource": [ "arn:aws:s3:::{your-s3-bucket-name}", "arn:aws:s3:::{your-s3-bucket-name}/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject*", "s3:GetBucket*", "s3:List*" ], "Resource": [ "arn:aws:s3:::{your-s3-bucket-name}", "arn:aws:s3:::{your-s3-bucket-name}/*" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents", "logs:GetLogEvents", "logs:GetLogRecord", "logs:GetLogGroupFields", "logs:GetQueryResults" ], "Resource": [ "arn:aws:logs:{your-region}:{your-account-id}:log-group:airflow-{your-environment-name}-*" ] }, { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "s3:GetAccountPublicAccessBlock" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "cloudwatch:PutMetricData", "Resource": "*" }, { "Effect": "Allow", "Action": [ "sqs:ChangeMessageVisibility", "sqs:DeleteMessage", "sqs:GetQueueAttributes", "sqs:GetQueueUrl", "sqs:ReceiveMessage", "sqs:SendMessage" ], "Resource": "arn:aws:sqs:{your-region}:*:airflow-celery-*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt" ], "NotResource": "arn:aws:kms:*:{your-account-id}:key/*", "Condition": { "StringLike": { "kms:ViaService": [ "sqs.{your-region}.amazonaws.com" ] } } } ] }

Siguientes pasos