Acceso a un entorno de Amazon MWAA - Amazon Managed Workflows para Apache Airflow

Acceso a un entorno de Amazon MWAA

Para usar Amazon Managed Workflows para Apache Airflow, debe usar una cuenta y entidades de IAM que dispongan de los permisos necesarios. En esta página, se describen las políticas de acceso que puede asociar a su equipo de desarrollo y a los usuarios de Apache Airflow en relación con su entorno de Amazon Managed Workflows para Apache Airflow.

Recomendamos usar credenciales temporales y configurar identidades federadas con grupos y roles para acceder a sus recursos de Amazon MWAA. Como práctica recomendada, aconsejamos que no asocie directamente las políticas a los usuarios de IAM. En su lugar, defina grupos o roles para proporcionar acceso temporal a los recursos de AWS.

Un rol de IAM es una identidad de IAM que puede crear en su cuenta y que tiene permisos específicos. Un rol de IAM es similar a un usuario de IAM en que se trata de una identidad de AWS con políticas de permisos que determinan lo que la identidad puede hacer y lo que no en AWS. No obstante, en lugar de asociarse exclusivamente a una persona, la intención es que cualquier usuario pueda asumir un rol que necesite. Además, un rol no tiene asociadas credenciales a largo plazo estándar, como una contraseña o claves de acceso. En su lugar, cuando se asume un rol, este proporciona credenciales de seguridad temporales para la sesión de rol.

Para asignar permisos a identidades federadas, cree un rol y defina permisos para este. Cuando se autentica una identidad federada, se asocia la identidad al rol y se le conceden los permisos define el rol. Para obtener información acerca de roles de federación, consulte Crear un rol para un proveedor de identidad de terceros (federación) en la Guía de usuario de IAM. Si utiliza el IAM Identity Center, debe configurar un conjunto de permisos. IAM Identity Center correlaciona el conjunto de permisos con un rol en IAM para controlar a qué pueden acceder las identidades después de autenticarse. Para obtener información acerca de los conjuntos de permisos, consulta Conjuntos de permisos en la Guía del usuario de AWS IAM Identity Center.

Puede utilizar un rol de IAM de su cuenta para conceder otros permisos de Cuenta de AWS de acceso a los recursos de su cuenta. Encontrará un ejemplo de ello en la sección Tutorial: delegar el acceso entre Cuentas de AWS con roles de IAM de la guía del usuario de IAM.

Funcionamiento

No todas las entidades de AWS Identity and Access Management (IAM) pueden acceder a los recursos y servicios que se utilizan en un entorno de Amazon MWAA. Deberá crear una política que conceda permiso a los usuarios de Apache Airflow para acceder a estos recursos. Por ejemplo, deberá conceder acceso a su equipo de desarrollo de Apache Airflow.

Amazon MWAA usa estas políticas para validar si un usuario tiene los permisos necesarios para realizar una acción concreta en la consola de AWS o a través de las API que usa un entorno determinado.

Puede utilizar las políticas JSON de este tema para crear una política para sus usuarios de Apache Airflow en IAM, para asociarla después a un usuario, grupo o rol en IAM.

  • AmazonMWAAFullConsoleAccess: utilice esta política para conceder permiso para configurar un entorno en la consola de Amazon MWAA.

  • AmazonMWAAFullApiAccess: utilice esta política para conceder acceso a todas las API de Amazon MWAA que se utilizan para administrar un entorno.

  • AmazonMWAAReadOnlyAccess: use esta política para conceder acceso para ver los recursos que usa un entorno en la consola de Amazon MWAA.

  • AmazonMWAAWebServerAccess: use esta política para conceder acceso al servidor web de Apache Airflow.

  • AmazonMWAAAirflowCliAccess: utilice esta política para conceder acceso para ejecutar los comandos de la CLI de Apache Airflow.

Para dar acceso, agregue permisos a los usuarios, grupos o roles:

Política de acceso completo a la consola: AmazonMWAAFullConsoleAccess

Es posible que un usuario deba acceder a la política de permisos de AmazonMWAAFullConsoleAccess si necesita configurar un entorno en la consola de Amazon MWAA.

nota

Su política de acceso completo a la consola debe incluir permisos para realizar la acción iam:PassRole. Esto permitirá al usuario transferir roles vinculados a servicios y roles de ejecución a Amazon MWAA. Amazon MWAA asumirá estos roles para poder llamar a otros servicios de AWS en su nombre. En el ejemplo siguiente se utiliza la clave de condición iam:PassedToService para especificar la entidad principal del servicio de Amazon MWAA (airflow.amazonaws.com) como servicio al que se le puede transferir un rol.

Para obtener más información acerca de iam:PassRole, consulte cómo conceder permisos a un usuario para transferir un rol a un servicio de AWS en la guía del usuario de IAM.

Utilice la siguiente política si desea crear y administrar sus entornos de Amazon MWAA mediante una Clave propiedad de AWS para el cifrado en reposo.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "airflow:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": "airflow.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:ListRoles" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:CreatePolicy" ], "Resource": "arn:aws:iam::111122223333:policy/service-role/MWAA-Execution-Policy*" }, { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:CreateRole" ], "Resource": "arn:aws:iam::111122223333:role/service-role/AmazonMWAA*" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/AWSServiceRoleForAmazonMWAA" }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListAllMyBuckets", "s3:ListBucket", "s3:ListBucketVersions" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:PutObject", "s3:GetEncryptionConfiguration" ], "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeRouteTables" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateSecurityGroup" ], "Resource": "arn:aws:ec2:*:*:security-group/airflow-security-group-*" }, { "Effect": "Allow", "Action": [ "kms:ListAliases" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:CreateVpcEndpoint", "Resource": [ "arn:aws:ec2:*:*:vpc-endpoint/*", "arn:aws:ec2:*:*:vpc/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*" ] } ] }

Utilice la siguiente política si desea crear y administrar sus entornos de Amazon MWAA mediante una clave administrada por el cliente para el cifrado en reposo. Para utilizar una clave administrada por el cliente, la entidad principal de IAM debe tener permiso para acceder a los recursos de AWS KMS mediante la clave almacenada en su cuenta.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "airflow:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": "airflow.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:ListRoles" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:CreatePolicy" ], "Resource": "arn:aws:iam::111122223333:policy/service-role/MWAA-Execution-Policy*" }, { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:CreateRole" ], "Resource": "arn:aws:iam::111122223333:role/service-role/AmazonMWAA*" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/AWSServiceRoleForAmazonMWAA" }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListAllMyBuckets", "s3:ListBucket", "s3:ListBucketVersions" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:PutObject", "s3:GetEncryptionConfiguration" ], "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeRouteTables" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateSecurityGroup" ], "Resource": "arn:aws:ec2:*:*:security-group/airflow-security-group-*" }, { "Effect": "Allow", "Action": [ "kms:ListAliases" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:ListGrants", "kms:CreateGrant", "kms:RevokeGrant", "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:*:111122223333:key/YOUR_KMS_ID" }, { "Effect": "Allow", "Action": "ec2:CreateVpcEndpoint", "Resource": [ "arn:aws:ec2:*:*:vpc-endpoint/*", "arn:aws:ec2:*:*:vpc/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*" ] } ] }

Política de acceso completo a la consola y a las API: AmazonMWAAFullApiAccess

Es posible que un usuario deba obtener acceso a la política de permisos AmazonMWAAFullApiAccess en caso de tener que acceder a todas las API de Amazon MWAA que se usan para administrar un entorno. Esta política no otorga permisos para acceder a la interfaz de usuario de Apache Airflow.

nota

Las políticas de acceso completo a las API deben incluir permisos para realizar la acción iam:PassRole. Esto permitirá al usuario transferir roles vinculados a servicios y roles de ejecución a Amazon MWAA. Amazon MWAA asumirá estos roles para poder llamar a otros servicios de AWS en su nombre. En el ejemplo siguiente se utiliza la clave de condición iam:PassedToService para especificar la entidad principal del servicio de Amazon MWAA (airflow.amazonaws.com) como servicio al que se le puede transferir un rol.

Para obtener más información acerca de iam:PassRole, consulte cómo conceder permisos a un usuario para transferir un rol a un servicio de AWS en la guía del usuario de IAM.

Utilice la siguiente política si desea crear y administrar sus entornos de Amazon MWAA mediante una Clave propiedad de AWS para el cifrado en reposo.

JSON
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"airflow:*", "Resource":"*" }, { "Effect":"Allow", "Action":[ "iam:PassRole" ], "Resource":"*", "Condition":{ "StringLike":{ "iam:PassedToService":"airflow.amazonaws.com" } } }, { "Effect":"Allow", "Action":[ "iam:CreateServiceLinkedRole" ], "Resource":"arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/AWSServiceRoleForAmazonMWAA" }, { "Effect":"Allow", "Action":[ "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeRouteTables" ], "Resource":"*" }, { "Effect":"Allow", "Action":[ "s3:GetEncryptionConfiguration" ], "Resource":"arn:aws:s3:::*" }, { "Effect":"Allow", "Action":"ec2:CreateVpcEndpoint", "Resource":[ "arn:aws:ec2:*:*:vpc-endpoint/*", "arn:aws:ec2:*:*:vpc/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Effect":"Allow", "Action":[ "ec2:CreateNetworkInterface" ], "Resource":[ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*" ] } ] }

Utilice la siguiente política si desea crear y administrar sus entornos de Amazon MWAA mediante una clave administrada por el cliente para el cifrado en reposo. Para utilizar una clave administrada por el cliente, la entidad principal de IAM debe tener permiso para acceder a los recursos de AWS KMS mediante la clave almacenada en su cuenta.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "airflow:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": "airflow.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/AWSServiceRoleForAmazonMWAA" }, { "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeRouteTables" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:ListGrants", "kms:CreateGrant", "kms:RevokeGrant", "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:*:111122223333:key/YOUR_KMS_ID" }, { "Effect": "Allow", "Action": [ "s3:GetEncryptionConfiguration" ], "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": "ec2:CreateVpcEndpoint", "Resource": [ "arn:aws:ec2:*:*:vpc-endpoint/*", "arn:aws:ec2:*:*:vpc/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*" ] } ] }

Política de acceso de solo lectura a la consola: AmazonMWAAReadOnlyAccess

Es posible que un usuario deba obtener acceso a la política de permisos AmazonMWAAReadOnlyAccess si necesita ver los recursos que usa un entorno en la página de detalles del entorno de la consola de Amazon MWAA. Esta política no permite al usuario crear nuevos entornos, editar los existentes ni ver la UI de Apache Airflow.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "airflow:ListEnvironments", "airflow:GetEnvironment", "airflow:ListTagsForResource" ], "Resource": "*" } ] }

Política de acceso a la interfaz de usuario de Apache Airflow: AmazonMWAAWebServerAccess

Es posible que un usuario deba obtener acceso a la política de permisos AmazonMWAAWebServerAccess si necesita acceder a la UI de Apache Airflow. Esta política no permite al usuario ver los entornos de la consola de Amazon MWAA ni usar las API de Amazon MWAA para realizar acciones. Especifique el rol Admin, Op, User, Viewer o Public en {airflow-role} para personalizar el nivel de acceso del usuario al token web. Para obtener más información, consulte la sección Roles predeterminados en la guía de referencia de Apache Airflow.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "airflow:CreateWebLoginToken", "Resource": [ "arn:aws:airflow:us-east-1:111122223333:role/{your-environment-name}/{airflow-role}" ] } ] }
nota

Política de acceso a la API de REST de Apache Airflow: AmazonMWAARestAPIAccess.

Para acceder a la API de REST de Apache Airflow, debe otorgar el permiso airflow:InvokeRestApi en su política de IAM. En el siguiente ejemplo de política, especifique el rol de Admin, Op, User, Viewer o Public en {airflow-role} para personalizar el nivel de acceso del usuario. Para obtener más información, consulte la sección Roles predeterminados en la guía de referencia de Apache Airflow.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowMwaaRestApiAccess", "Effect": "Allow", "Action": "airflow:InvokeRestApi", "Resource": [ "arn:aws:airflow:us-east-1:111122223333:role/{your-environment-name}/{airflow-role}" ] } ] }
nota
  • Mientras configura un servidor web privado, la acción InvokeRestApi no se puede invocar desde fuera de una nube privada virtual (VPC). Puede utilizar la clave aws:SourceVpc para aplicar un control de acceso más detallado para esta operación. Para obtener más información, consulte aws:SourceVpc

  • El campo Resource en esta política puede usarse para especificar los roles de control de acceso basado en roles de Apache Airflow para el entorno de Amazon MWAA. Sin embargo, no admite el ARN (nombre de recurso de Amazon) del entorno de Amazon MWAA en el campo Resource de la política.

Política de la CLI de Apache Airflow: AmazonMWAAAirflowCliAccess

Es posible que un usuario deba obtener acceso a la política de permisos AmazonMWAAAirflowCliAccess si necesita ejecutar comandos de la CLI de Apache Airflow (por ejemplo trigger_dag). Esta política no permite al usuario ver los entornos de la consola de Amazon MWAA ni usar las API de Amazon MWAA para realizar acciones.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "airflow:CreateCliToken" ], "Resource": "arn:aws:airflow:us-east-1:111122223333:environment/${EnvironmentName}" } ] }

Creación de una política JSON

Puede crear la política JSON y asociarla a su usuario, rol o grupo en la consola de IAM. Los siguientes pasos describen cómo crear la política JSON en IAM.

Pasos para crear la política JSON
  1. Abra la página Políticas en la consola de IAM.

  2. Elija Crear política.

  3. Seleccione la pestaña JSON.

  4. Añada su política JSON.

  5. Elija Revisar política.

  6. Introduzca un valor en el campo de texto Nombre y Descripción (opcional).

    Por ejemplo, puede asignar a la política el nombre “AmazonMWAAReadOnlyAccess”.

  7. Elija Crear política.

Ejemplo de caso de uso para asociar políticas a un grupo de desarrolladores

Supongamos que utiliza un grupo de IAM denominado “AirflowDevelopmentGroup” para aplicar permisos a todos los desarrolladores de su equipo de desarrollo de Apache Airflow. Estos usuarios deberán obtener acceso a las políticas de permisos de AmazonMWAAFullConsoleAccess, AmazonMWAAAirflowCliAccess y AmazonMWAAWebServerAccess. En esta sección se describe cómo crear un grupo en IAM, cómo crear y asociar estas políticas y cómo vincular el grupo a un usuario de IAM. En los siguientes pasos, se presupone que usa una clave propiedad de AWS.

Pasos para crear la política AmazonMWAAFullConsoleAccess
  1. Descargue la política de acceso AmazonMWAAFullConsoleAccess.

  2. Abra la página Políticas en la consola de IAM.

  3. Elija Crear política.

  4. Seleccione la pestaña JSON.

  5. Pegue la política JSON de AmazonMWAAFullConsoleAccess.

  6. Sustituya los valores siguientes:

    1. 123456789012: la identificación de su Cuenta de AWS (por ejemplo, 0123456789)

    2. {your-kms-id}: el identificador único de una clave administrada por el cliente, solo en caso de que utilice una clave administrada por el cliente para el cifrado en reposo.

  7. Elija Consultar política.

  8. En Nombre, escriba “AmazonMWAAFullConsoleAccess.

  9. Elija Crear política.

Pasos para crear la política AmazonMWAAWebServerAccess
  1. Descargue la política de acceso a AmazonMWAAWebServerAccess.

  2. Abra la página Políticas en la consola de IAM.

  3. Elija Crear política.

  4. Seleccione la pestaña JSON.

  5. Pegue la política JSON de AmazonMWAAWebServerAccess.

  6. Sustituya los valores siguientes:

    1. us-east-1: la región de su entorno de Amazon MWAA (por ejemplo, us-east-1)

    2. 123456789012: la identificación de su Cuenta de AWS (por ejemplo, 0123456789)

    3. {your-environment-name}: el nombre de su entorno de Amazon MWAA (por ejemplo, MyAirflowEnvironment).

    4. {airflow-role}: el rol predeterminado del Admin en Apache Airflow.

  7. Elija Revisar política.

  8. En Nombre, escriba “AmazonMWAAWebServerAccess.

  9. Elija Crear política.

Pasos para crear la política AmazonMWAAAirflowCliAccess
  1. Descargue la política de acceso AmazonMWAAAirflowCliAccess.

  2. Abra la página Políticas en la consola de IAM.

  3. Elija Crear política.

  4. Seleccione la pestaña JSON.

  5. Pegue la política JSON de AmazonMWAAAirflowCliAccess.

  6. Elija Consultar política.

  7. En Nombre, escriba “AmazonMWAAAirflowCliAccess.

  8. Elija Crear política.

Pasos para crear los grupos
  1. Abra la Página del grupo de registros en la consola de IAM.

  2. Escriba un nombre de AirflowDevelopmentGroup.

  3. Elija Paso siguiente.

  4. Escriba “AmazonMWAA” en Filtrar para filtrar los resultados.

  5. Elija las tres políticas que ha creado.

  6. Elija Paso siguiente.

  7. Elija Crear grupo.

Pasos para asociarlas a un usuario
  1. Abra la página Users en la consola de IAM.

  2. Elija un usuario.

  3. Elija Grupos.

  4. Elija Añadir usuario al grupo o grupos.

  5. Elija el AirflowDevelopmentGroup.

  6. Elija Añadir a grupos.

Siguientes pasos