Perfil de execução do Amazon MWAA - Amazon Managed Workflows for Apache Airflow

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á.

Perfil de execução do Amazon MWAA

Uma função de execução é uma função AWS Identity and Access Management (IAM) com uma política de permissões que concede permissão ao Amazon Managed Workflows for Apache Airflow para invocar os recursos de outros AWS serviços em seu nome. Isso pode incluir recursos como seu bucket do Amazon S3, chave AWS própria e CloudWatch registros. Os ambientes do Amazon MWAA precisam de um perfil de execução por ambiente. Esta página descreve como usar e configurar a função de execução do seu ambiente para permitir que o Amazon MWAA acesse outros AWS recursos usados pelo seu ambiente.

Visão geral do perfil de execução

A permissão para o Amazon MWAA usar outros AWS serviços usados pelo seu ambiente é obtida da função de execução. Uma função de execução do Amazon MWAA precisa de permissão para os seguintes AWS serviços usados por um ambiente:

  • Amazon CloudWatch (CloudWatch) — para enviar métricas e registros do Apache Airflow.

  • Amazon Simple Storage Service (Amazon S3): para analisar o código DAG e os arquivos de suporte do seu ambiente (como requirements.txt).

  • Amazon Simple Queue Service (Amazon SQS): para enfileirar as tarefas do Apache Airflow do seu ambiente em uma fila do Amazon SQS pertencente ao Amazon MWAA.

  • AWS Key Management Service (AWS KMS) — para a criptografia de dados do seu ambiente (usando uma chave AWS própria ou sua chave gerenciada pelo cliente).

    nota

    Se você optou pelo Amazon MWAA para usar uma chave KMS AWS gerenciada para criptografar seus dados, então você deve definir permissões em uma política anexada à sua função de execução do Amazon MWAA que conceda acesso a chaves KMS arbitrárias armazenadas fora da sua conta via Amazon SQS. As duas condições a seguir são necessárias para que o perfil de execução do seu ambiente acesse chaves KMS arbitrárias:

    • Uma chave KMS em uma conta de terceiros precisa permitir esse acesso entre contas por meio da política de recursos deles.

    • Seu código DAG precisa acessar uma fila do Amazon SQS que começa com airflow-celery- na conta de terceiros e usa a mesma chave KMS para criptografia.

    Para mitigar os riscos associados ao acesso entre contas para recursos, recomendamos analisar o código inserido em seus DAGs para garantir que seus fluxos de trabalho não estejam acessando filas arbitrárias do Amazon SQS fora da sua conta. Além disso, você pode usar uma chave KMS gerenciada pelo cliente armazenada em sua própria conta para gerenciar a criptografia no Amazon MWAA. Isso limita o perfil de execução do seu ambiente para acessar somente a chave KMS em sua conta.

    Lembre-se de que depois de escolher uma opção de criptografia, você não poderá alterar sua seleção para um ambiente existente.

Um perfil de execução também precisa de permissão para as seguintes ações do IAM:

  • airflow:PublishMetrics: para permitir que o Amazon MWAA monitore a integridade de um ambiente.

Permissões anexadas por padrão

Você pode usar as opções padrão no console do Amazon MWAA para criar um perfil de execução e uma chave pertencente àAWS, e então usar as etapas desta página para adicionar políticas de permissão ao seu perfil de execução.

  • Quando você escolhe a opção Criar novo perfil no console, o Amazon MWAA atribui as permissões mínimas necessárias para um ambiente ao seu perfil de execução.

  • Em alguns casos, o Amazon MWAA atribui as permissões máximas. Por exemplo, recomendamos escolher a opção no console do Amazon MWAA para criar um perfil de execução ao criar um ambiente. O Amazon MWAA adiciona automaticamente as políticas de permissões para todos os grupos de CloudWatch registros usando o padrão regex na função de execução como. "arn:aws:logs:your-region:your-account-id:log-group:airflow-your-environment-name-*"

Como adicionar permissão para usar outros AWS serviços

O Amazon MWAA não pode adicionar ou editar políticas de permissão em um perfil de execução existente após a criação de um ambiente. Você deve atualizar seu perfil de execução com políticas de permissão adicionais que sejam necessárias pelo seu ambiente. Por exemplo, se seu DAG exigir acesso ao AWS Glue, o Amazon MWAA não poderá detectar automaticamente essas permissões exigidas pelo seu ambiente nem adicionar as permissões à sua função de execução.

Você pode adicionar permissões a um perfil de execução de duas formas:

  • Ao modificar a política JSON para seu perfil de execução em linha. Você pode usar os exemplos de documentos de política JSON nesta página para adicionar ou substituir a política JSON da seu perfil de execução no console do IAM.

  • Ao criar uma política JSON para um AWS serviço e anexá-la à sua função de execução. Você pode usar as etapas desta página para associar um novo documento de política JSON para um AWS serviço à sua função de execução no console do IAM.

Supondo que o perfil de execução já esteja associada ao seu ambiente, o Amazon MWAA pode começar a usar as políticas de permissão adicionadas imediatamente. Isso também significa que, se você remover as permissões necessárias de um perfil de execução, seus DAGs poderão falhar.

Como associar um novo perfil de execução

Você pode alterar o perfil de execução do seu ambiente a qualquer momento. Se um novo perfil de execução ainda não estiver associado ao seu ambiente, use as etapas desta página para criar uma nova política de perfil de execução e associar o perfil ao seu ambiente.

Criar uma nova função

Por padrão, o Amazon MWAA cria uma chave pertencente àAWS para criptografia de dados e um perfil de execução em seu nome. Você pode escolher as opções padrão no console do Amazon MWAA ao criar um ambiente. A imagem a seguir mostra a opção padrão para criar um perfil de execução para um ambiente.

Esta é uma imagem com a opção padrão para criar um novo perfil.

Visualizar e atualizar uma política de perfil de execução

Você pode visualizar o perfil de execução do seu ambiente no console do Amazon MWAA e atualizar a política JSON do perfil no console do IAM.

Para anexar uma política de perfil de execução
  1. Abra a página Ambientes no console do Amazon MWAA.

  2. Escolha um ambiente.

  3. Escolha o perfil de execução no painel Permissões para abrir a página de permissões no IAM.

  4. Escolha o nome do perfil de execução para abrir a política de permissões.

  5. Escolha Editar política.

  6. Selecione a guia JSON.

  7. Atualize sua política JSON.

  8. Escolha Revisar política.

  9. Escolha Salvar alterações.

Anexe uma política JSON para usar outros serviços AWS

Você pode criar uma política JSON para um AWS serviço e anexá-la à sua função de execução. Por exemplo, você pode anexar a política JSON a seguir para conceder acesso de somente leitura a todos os recursos do AWS Secrets Manager.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource":[ "*" ] } ] }
Para anexar a política ao seu perfil de execução
  1. Abra a página Ambientes no console do Amazon MWAA.

  2. Escolha um ambiente.

  3. Escolha sua função de execução no painel Permissões.

  4. Escolha Anexar políticas.

  5. Escolha Criar política.

  6. Selecione JSON.

  7. Cole a política de JSON.

  8. Selecione Próximo: tags e Próximo: revisar.

  9. Insira um nome descritivo (como SecretsManagerReadPolicy) e uma descrição para a política.

  10. Escolha Criar política.

Concede acesso ao bucket do Amazon S3 com bloqueio de acesso público no nível da conta

Talvez você queira bloquear o acesso a todos os buckets em sua conta usando a operação PutPublicAccessBlock do Amazon S3. Quando você bloqueia o acesso a todos os buckets em sua conta, seu perfil de execução do ambiente deve incluir a ação s3:GetAccountPublicAccessBlock em uma política de permissão.

O exemplo a seguir demonstra a política que você deve anexar ao seu perfil de execução ao bloquear o acesso a todos os buckets do Amazon S3 em sua conta.

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

Para obter mais informações sobre como restringir o acesso aos seus buckets do Amazon S3, consulte Bloquear o acesso público ao seu armazenamento do Amazon S3 no Guia do usuário do Amazon Simple Storage Service.

Use conexões do Apache Airflow

Você também pode criar uma conexão do Apache Airflow e especificar seu perfil de execução e ARN dele no objeto de conexão do Apache Airflow. Para saber mais, consulte Como gerenciar conexões com o Apache Airflow.

Exemplos de políticas JSON para um perfil de execução

Os exemplos de políticas de permissão nesta seção mostram duas políticas que você pode usar para substituir a política de permissões usada para seu perfil de execução existente ou para criar um novo perfil de execução e usá-la em seu ambiente. Essas políticas contêm espaços reservados de ARN de recursos para grupos de log do Apache Airflow, um bucket Amazon S3 e um ambiente do Amazon MWAA.

Recomendamos copiar o exemplo de política, substituir os exemplos de ARNs ou espaços reservados e, em seguida, usar a política JSON para criar ou atualizar um perfil de execução. Por exemplo, substituindo {your-region} por us-east-1.

Exemplo de política para uma chave gerenciada pelo cliente

O exemplo a seguir mostra uma política de perfil de execução que você pode usar para uma chave gerenciada pelo cliente.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "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" ] } } } ] }

Em seguida, você precisa permitir que o Amazon MWAA assuma esse perfil a fim de realizar ações em seu nome. Isso pode ser feito ao adicionar entidades principais de serviço "airflow.amazonaws.com" e "airflow-env.amazonaws.com" à lista de entidades confiáveis para esse perfil de execução usando o console do IAM ou colocando essas entidades principais de serviço no documento de política do perfil assumido para esse perfil de execução por meio do comando create-role de IAM com a AWS CLI. Um exemplo de documento de política do perfil assumido pode ser encontrado a seguir:

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

Em seguida, anexe a seguinte política JSON à sua chave gerenciada pelo cliente. Essa política usa o prefixo de chave de kms:EncryptionContextcondição para permitir o acesso ao seu grupo de registros do Apache Airflow em 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}:*" } } }

Exemplo de política para uma AWS chave própria

O exemplo a seguir mostra uma política de perfil de execução que você pode usar para uma chave pertencente à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": "*" }, { "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" ] } } } ] }

Próximas etapas