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á.
MWAAFunção de execução da Amazon
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 MWAA ambientes da Amazon precisam de uma função 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 MWAA a Amazon acesse outros AWS recursos usados pelo seu ambiente.
Sumário
Visão geral do perfil de execução
A permissão para MWAA a Amazon usar outros AWS serviços usados pelo seu ambiente é obtida da função de execução. Uma função de MWAA execução da Amazon 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 e os arquivos de suporte DAG do seu ambiente (como a).
requirements.txt
-
Amazon Simple Queue Service (AmazonSQS) — para enfileirar as tarefas do Apache Airflow do seu ambiente em uma SQS fila da Amazon de propriedade da 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 por usar uma KMS chave AWS própria MWAA para criptografar seus dados, você deve definir permissões em uma política anexada à sua função de MWAA execução da Amazon que conceda acesso a KMS chaves arbitrárias armazenadas fora da sua conta via Amazon. SQS As duas condições a seguir são necessárias para que a função de execução do seu ambiente acesse KMS chaves arbitrárias:
-
Uma KMS chave em uma conta de terceiros precisa permitir esse acesso entre contas por meio de sua política de recursos.
-
Seu DAG código precisa acessar uma SQS fila da Amazon que começa
airflow-celery-
na conta de terceiros e usa a mesma KMS chave para criptografia.
Para mitigar os riscos associados ao acesso entre contas aos recursos, recomendamos revisar o código colocado em você DAGs para garantir que seus fluxos de trabalho não estejam acessando filas arbitrárias da Amazon SQS fora da sua conta. Além disso, você pode usar uma KMS chave gerenciada pelo cliente armazenada em sua própria conta para gerenciar a criptografia na AmazonMWAA. Isso limita a função de execução do seu ambiente para acessar somente a KMS chave 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.
-
Uma função de execução também precisa de permissão para as seguintes IAM ações:
-
airflow:PublishMetrics
— para permitir que MWAA a Amazon monitore a saúde de um meio ambiente.
Permissões anexadas por padrão
Você pode usar as opções padrão no MWAA console da Amazon para criar uma função de execução e uma chave AWS própria e, em seguida, usar as etapas desta página para adicionar políticas de permissão à sua função de execução.
-
Quando você escolhe a opção Criar nova função no console, a Amazon MWAA atribui as permissões mínimas necessárias para um ambiente à sua função de execução.
-
Em alguns casos, a Amazon MWAA atribui o máximo de permissões. Por exemplo, recomendamos escolher a opção no MWAA console da Amazon para criar uma função de execução ao criar um ambiente. A Amazon MWAA adiciona as políticas de permissões para todos os grupos de CloudWatch registros automaticamente 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
A Amazon não MWAA pode adicionar ou editar políticas de permissão em uma função 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 você DAG precisar acessar AWS Glue, a Amazon não MWAA 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 JSON política de sua função de execução em linha. Você pode usar os exemplos JSONde documentos de política nesta página para adicionar ou substituir a JSON política de sua função de execução no IAM console.
-
Ao criar uma JSON política 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 JSON de política para um AWS serviço à sua função de execução no IAM console.
Supondo que a função de execução já esteja associada ao seu ambiente, a 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 uma função de execução, DAGs poderá 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, a Amazon MWAA cria uma AWS chave própria para criptografia de dados e uma função de execução em seu nome. Você pode escolher as opções padrão no MWAA console da Amazon ao criar um ambiente. A imagem a seguir mostra a opção padrão para criar um perfil de execução para um ambiente.
Visualizar e atualizar uma política de perfil de execução
Você pode visualizar a função de execução do seu ambiente no MWAA console da Amazon e atualizar a JSON política da função no IAM console.
Para anexar uma política de perfil de execução
-
Abra a página Ambientes
no MWAA console da Amazon. -
Escolha um ambiente.
-
Escolha a função de execução no painel Permissões para abrir a página de permissões emIAM.
-
Escolha o nome do perfil de execução para abrir a política de permissões.
-
Escolha Editar política.
-
Escolha a JSONguia.
-
Atualize sua JSON política.
-
Escolha Revisar política.
-
Escolha Salvar alterações.
Anexe uma JSON política para usar outros AWS serviços
Você pode criar uma JSON política para um AWS serviço e anexá-la à sua função de execução. Por exemplo, você pode anexar a JSON política a seguir para conceder acesso somente de 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
-
Abra a página Ambientes
no MWAA console da Amazon. -
Escolha um ambiente.
-
Escolha sua função de execução no painel Permissões.
-
Escolha Anexar políticas.
-
Escolha Criar política.
-
Escolha JSON.
-
Cole a JSON política.
-
Selecione Próximo: tags e Próximo: revisar.
-
Insira um nome descritivo (como
SecretsManagerReadPolicy
) e uma descrição para a política. -
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 sua função de execução e ela ARN no objeto de conexão do Apache Airflow. Para saber mais, consulte Como gerenciar conexões com o Apache Airflow.
Exemplos de JSON políticas para uma função 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 ARN espaços reservados de recursos para grupos de log do Apache Airflow, um bucket Amazon S3 e um ambiente Amazon. MWAA
Recomendamos copiar o exemplo de política, substituir a amostra ARNs ou os espaços reservados e, em seguida, usar a JSON política para criar ou atualizar uma função 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": [
"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"
] } } } ] }
Em seguida, você precisa permitir que MWAA a Amazon assuma essa função para realizar ações em seu nome. Isso pode ser feito adicionando "airflow.amazonaws.com"
diretores de "airflow-env.amazonaws.com"
serviço à lista de entidades confiáveis para essa função de execução usando o IAM console ou colocando esses diretores de serviço no documento de política de assumir função para essa função de execução por meio do comando IAM create-role usando o. 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 JSON política à sua chave gerenciada pelo cliente. Essa política usa o prefixo de chave de kms:EncryptionContext
condiçã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": ["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" ] } } } ] }
Próximas etapas
-
Saiba mais sobre as permissões necessárias que você e seus usuários do Apache Airflow precisam para acessar seu ambiente em Acessando um MWAA ambiente da Amazon.
-
Saiba mais sobre o Como usar chaves gerenciadas pelo cliente para criptografia.
-
Explore mais exemplos de políticas gerenciadas pelo cliente.