Rôle MWAA d'exécution Amazon - Amazon Managed Workflows for Apache Airflow

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Rôle MWAA d'exécution Amazon

Un rôle d'exécution est un rôle AWS Identity and Access Management (IAM) doté d'une politique d'autorisations qui autorise Amazon Managed Workflows for Apache Airflow à invoquer les ressources d'autres AWS services en votre nom. Cela peut inclure des ressources telles que votre compartiment Amazon S3, votre cléAWS détenue et vos CloudWatch journaux. Les MWAA environnements Amazon ont besoin d'un rôle d'exécution par environnement. Cette rubrique décrit comment utiliser et configurer le rôle d'exécution pour votre environnement afin de permettre à Amazon d'accéder MWAA à d'autres AWS ressources utilisées par votre environnement.

Vue d'ensemble des rôles d'exécution

L'autorisation permettant MWAA à Amazon d'utiliser d'autres AWS services utilisés par votre environnement est obtenue à partir du rôle d'exécution. Un rôle MWAA d'exécution Amazon doit être autorisé à accéder aux AWS services suivants utilisés par un environnement :

  • Amazon CloudWatch (CloudWatch) — pour envoyer les métriques et les journaux d'Apache Airflow.

  • Amazon Simple Storage Service (Amazon S3) : pour analyser le code de votre environnement et les fichiers DAG de support (tels que a). requirements.txt

  • Amazon Simple Queue Service (AmazonSQS) : pour mettre en file d'attente les tâches Apache Airflow de votre environnement dans une SQS file d'attente Amazon appartenant à AmazonMWAA.

  • AWS Key Management Service (AWS KMS) — pour le chiffrement des données de votre environnement (à l'aide d'une cléAWS détenue ou de votre clé gérée par le client).

    Note

    Si vous avez choisi qu'Amazon MWAA utilise une KMS clé AWS détenue pour chiffrer vos données, vous devez définir des autorisations dans une politique attachée à votre rôle d'MWAAexécution Amazon qui accorde l'accès à des KMS clés arbitraires stockées en dehors de votre compte via AmazonSQS. Les deux conditions suivantes sont requises pour que le rôle d'exécution de votre environnement puisse accéder à des KMS clés arbitraires :

    • Une KMS clé dans un compte tiers doit autoriser cet accès entre comptes via sa politique de ressources.

    • Votre DAG code doit accéder à une SQS file d'attente Amazon commençant par airflow-celery- le compte tiers et utilisant la même KMS clé pour le chiffrement.

    Afin d'atténuer les risques associés à l'accès aux ressources entre comptes, nous vous recommandons de consulter le code placé dans votre dossier afin de vous assurer que vos flux de travail n'accèdent pas DAGs à des SQS files d'attente Amazon arbitraires en dehors de votre compte. En outre, vous pouvez utiliser une KMS clé gérée par le client stockée dans votre propre compte pour gérer le chiffrement sur AmazonMWAA. Cela limite le rôle d'exécution de votre environnement à accéder uniquement à la KMS clé de votre compte.

    N'oubliez pas qu'une fois que vous avez choisi une option de chiffrement, vous ne pouvez pas modifier votre sélection pour un environnement existant.

Un rôle d'exécution doit également être autorisé pour effectuer les IAM actions suivantes :

  • airflow:PublishMetrics— pour permettre MWAA à Amazon de surveiller l'état de santé d'un environnement.

Autorisations attachées par défaut

Vous pouvez utiliser les options par défaut de la MWAA console Amazon pour créer un rôle d'exécution et une cléAWS détenue, puis suivre les étapes de cette page pour ajouter des politiques d'autorisation à votre rôle d'exécution.

  • Lorsque vous choisissez l'option Créer un nouveau rôle sur la console, Amazon MWAA attache les autorisations minimales requises par un environnement à votre rôle d'exécution.

  • Dans certains cas, Amazon MWAA attache le maximum d'autorisations. Par exemple, nous vous recommandons de choisir l'option sur la MWAA console Amazon pour créer un rôle d'exécution lorsque vous créez un environnement. Amazon MWAA ajoute automatiquement les politiques d'autorisation pour tous les groupes de CloudWatch logs en utilisant le modèle regex dans le rôle d'exécution as "arn:aws:logs:your-region:your-account-id:log-group:airflow-your-environment-name-*".

Comment ajouter l'autorisation d'utiliser d'autres AWS services

Amazon ne MWAA peut pas ajouter ou modifier des politiques d'autorisation à un rôle d'exécution existant après la création d'un environnement. Vous devez mettre à jour votre rôle d'exécution avec les politiques d'autorisation supplémentaires requises par votre environnement. Par exemple, si vous avez DAG besoin d'accéder à AWS Glue, Amazon ne MWAA peut pas détecter automatiquement que ces autorisations sont requises par votre environnement, ni les ajouter à votre rôle d'exécution.

Vous pouvez ajouter des autorisations à un rôle d'exécution de deux manières :

  • En modifiant la JSON politique de votre rôle d'exécution en ligne. Vous pouvez utiliser les exemples de documents de JSON stratégie présentés sur cette page pour compléter ou remplacer la JSON politique de votre rôle d'exécution sur la IAM console.

  • En créant une JSON politique pour un AWS service et en l'associant à votre rôle d'exécution. Vous pouvez suivre les étapes de cette page pour associer un nouveau document de JSON politique pour un AWS service à votre rôle d'exécution sur la IAM console.

En supposant que le rôle d'exécution soit déjà associé à votre environnement, Amazon MWAA peut commencer à utiliser les politiques d'autorisation ajoutées immédiatement. Cela signifie également que si vous supprimez les autorisations requises d'un rôle d'exécution, vous DAGs risquez d'échouer.

Comment associer un nouveau rôle d'exécution

Vous pouvez modifier le rôle d'exécution de votre environnement à tout moment. Si aucun nouveau rôle d'exécution n'est déjà associé à votre environnement, suivez les étapes de cette page pour créer une nouvelle politique de rôle d'exécution et associez le rôle à votre environnement.

Créer un rôle

Par défaut, Amazon MWAA crée une cléAWS propre pour le chiffrement des données et un rôle d'exécution en votre nom. Vous pouvez choisir les options par défaut sur la MWAA console Amazon lorsque vous créez un environnement. L'image suivante montre l'option par défaut permettant de créer un rôle d'exécution pour un environnement.

Il s'agit d'une image avec l'option par défaut permettant de créer un nouveau rôle.

Afficher et mettre à jour une politique de rôle d'exécution

Vous pouvez consulter le rôle d'exécution de votre environnement sur la MWAA console Amazon et mettre à jour la JSON politique du rôle sur la IAM console.

Pour mettre à jour une politique de rôle d'exécution
  1. Ouvrez la page Environnements sur la MWAA console Amazon.

  2. Choisissez un environnement.

  3. Choisissez le rôle d'exécution dans le volet Autorisations pour ouvrir la page des autorisations dansIAM.

  4. Choisissez le nom du rôle d'exécution pour ouvrir la politique d'autorisations.

  5. Choisissez Modifier la politique.

  6. Choisissez l'JSONonglet.

  7. Mettez à jour votre JSON politique.

  8. Choisissez Review policy (Examiner une politique).

  9. Sélectionnez Enregistrer les modifications.

Joindre une JSON politique pour utiliser d'autres AWS services

Vous pouvez créer une JSON politique pour un AWS service et l'associer à votre rôle d'exécution. Par exemple, vous pouvez joindre la JSON politique suivante pour accorder un accès en lecture seule à toutes les ressources de. AWS Secrets Manager

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource":[ "*" ] } ] }
Pour associer une politique à votre rôle d'exécution
  1. Ouvrez la page Environnements sur la MWAA console Amazon.

  2. Choisissez un environnement.

  3. Choisissez votre rôle d'exécution dans le volet Autorisations.

  4. Choisissez Attach Policies (Attacher des politiques).

  5. Choisissez Create Policy (Créer une politique).

  6. Choisissez JSON.

  7. Collez la JSON politique.

  8. Choisissez Suivant : Tags, Suivant : Révision.

  9. Entrez un nom descriptif (tel queSecretsManagerReadPolicy) et une description pour la politique.

  10. Choisissez Create Policy (Créer une politique).

Accorder l'accès au compartiment Amazon S3 avec un blocage d'accès public au niveau du compte

Vous souhaiterez peut-être bloquer l'accès à tous les compartiments de votre compte en utilisant l'opération PutPublicAccessBlockAmazon S3. Lorsque vous bloquez l'accès à tous les compartiments de votre compte, votre rôle d'exécution de l'environnement doit inclure l's3:GetAccountPublicAccessBlockaction dans une politique d'autorisation.

L'exemple suivant illustre la politique que vous devez associer à votre rôle d'exécution lorsque vous bloquez l'accès à tous les compartiments Amazon S3 de votre compte.

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

Pour plus d'informations sur la restriction de l'accès à vos compartiments Amazon S3, consultez la section Blocage de l'accès public à votre espace de stockage Amazon S3 dans le guide de l'utilisateur d'Amazon Simple Storage Service.

Utiliser les connexions Apache Airflow

Vous pouvez également créer une connexion Apache Airflow et spécifier votre rôle d'exécution et son rôle ARN dans votre objet de connexion Apache Airflow. Pour en savoir plus, consultez Gestion des connexions à Apache Airflow.

Exemples JSON de politiques pour un rôle d'exécution

Les exemples de politiques d'autorisation présentés dans cette section présentent deux politiques que vous pouvez utiliser pour remplacer la politique d'autorisation utilisée pour votre rôle d'exécution existant ou pour créer un nouveau rôle d'exécution à utiliser pour votre environnement. Ces politiques contiennent des ARN espaces réservés aux ressources pour les groupes de journaux Apache Airflow, un compartiment Amazon S3 et un environnement Amazon MWAA.

Nous vous recommandons de copier l'exemple de stratégie, de remplacer l'exemple ARNs ou les espaces réservés, puis d'utiliser la JSON stratégie pour créer ou mettre à jour un rôle d'exécution. Par exemple, remplacer {your-region} parus-east-1.

Exemple de politique pour une clé gérée par le client

L'exemple suivant montre une politique de rôle d'exécution que vous pouvez utiliser pour une clé gérée par le client.

{ "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" ] } } } ] }

Ensuite, vous devez autoriser Amazon MWAA à assumer ce rôle afin d'effectuer des actions en votre nom. Cela peut être fait en ajoutant "airflow.amazonaws.com" des principes de "airflow-env.amazonaws.com" service à la liste des entités fiables pour ce rôle d'exécution à l'aide de la IAM console, ou en plaçant ces principaux de service dans le document de politique d'assume le rôle pour ce rôle d'exécution via la commande IAM create-role à l'aide du. AWS CLI Vous trouverez ci-dessous un exemple de document relatif à la politique d'acceptation des rôles :

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

Attachez ensuite la JSON politique suivante à votre clé gérée par le client. Cette politique utilise le préfixe de clé de kms:EncryptionContextcondition pour autoriser l'accès à votre groupe de journaux Apache Airflow dans 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}:*" } } }

Exemple de politique pour une clé AWS détenue

L'exemple suivant montre une politique de rôle d'exécution que vous pouvez utiliser pour une cléAWS détenue.

{ "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" ] } } } ] }

Quelle est la prochaine étape ?