View a markdown version of this page

Ruolo di esecuzione di Amazon MWAA - Amazon Managed Workflows for Apache Airflow

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Ruolo di esecuzione di Amazon MWAA

Un ruolo di esecuzione è un ruolo AWS Identity and Access Management (IAM) con una politica di autorizzazioni che concede ad Amazon Managed Workflows for Apache Airflow il permesso di richiamare le risorse di altri servizi per tuo conto. AWS Ciò può includere risorse come il bucket Amazon S3, la chiave proprietaria e i log. AWS CloudWatch Gli ambienti Amazon MWAA richiedono un ruolo di esecuzione per ambiente. Questo argomento descrive come utilizzare e configurare il ruolo di esecuzione per il tuo ambiente per consentire ad Amazon MWAA di accedere ad altre AWS risorse utilizzate dal tuo ambiente.

Panoramica del ruolo di esecuzione

L'autorizzazione per Amazon MWAA di utilizzare altri AWS servizi utilizzati dal tuo ambiente deriva dal ruolo di esecuzione. Un ruolo di esecuzione di Amazon MWAA richiede l'autorizzazione per i seguenti AWS servizi utilizzati da un ambiente:

  • Amazon CloudWatch (CloudWatch) — per inviare metriche e log di Apache Airflow.

  • Amazon Simple Storage Service (Amazon S3): per analizzare il codice DAG del tuo ambiente e i file di supporto (ad esempio un). requirements.txt

  • Amazon Simple Queue Service (Amazon SQS): per mettere in coda le attività Apache Airflow del tuo ambiente in una coda Amazon SQS di proprietà di Amazon MWAA.

  • AWS Key Management Service (AWS KMS) — per la crittografia dei dati del tuo ambiente (utilizzando una chiave di proprietà o la tua chiave). AWS Customer-managed

    Nota

    Se hai scelto Amazon MWAA di utilizzare una chiave KMS di AWS proprietà per crittografare i tuoi dati, devi definire le autorizzazioni in una policy allegata al tuo ruolo di esecuzione di Amazon MWAA che concedano l'accesso a chiavi KMS arbitrarie archiviate all'esterno del tuo account tramite Amazon SQS. Affinché il ruolo di esecuzione del tuo ambiente possa accedere a chiavi KMS arbitrarie, sono necessarie le due condizioni seguenti:

    • Una chiave KMS in un account di terze parti deve consentire l'accesso tra account tramite la relativa politica delle risorse.

    • Il codice DAG deve accedere a una coda Amazon SQS che inizia con airflow-celery- l'account di terze parti e utilizza la stessa chiave KMS per la crittografia.

    Per mitigare i rischi associati all'accesso alle risorse da più account, ti consigliamo di esaminare il codice inserito nei tuoi DAG per assicurarti che i tuoi flussi di lavoro non accedano a code Amazon SQS arbitrarie esterne al tuo account. Inoltre, puoi utilizzare una chiave KMS gestita dal cliente e memorizzata nel tuo account per gestire la crittografia su Amazon MWAA. Ciò limita il ruolo di esecuzione del tuo ambiente all'accesso solo alla chiave KMS del tuo account.

    Tieni presente che dopo aver scelto un'opzione di crittografia, non puoi modificare la selezione per un ambiente esistente.

Un ruolo di esecuzione richiede anche l'autorizzazione per le seguenti azioni IAM:

  • airflow:PublishMetrics— per consentire ad Amazon MWAA di monitorare lo stato di un ambiente.

Autorizzazioni allegate per impostazione predefinita

Puoi utilizzare le opzioni predefinite sulla console Amazon MWAA per creare un ruolo di esecuzione e una chiave di AWS proprietà, quindi utilizzare i passaggi indicati in questa pagina per aggiungere policy di autorizzazione al tuo ruolo di esecuzione.

  • Quando scegli l'opzione Crea nuovo ruolo sulla console, Amazon MWAA attribuisce le autorizzazioni minime necessarie a un ambiente al tuo ruolo di esecuzione.

  • In alcuni casi, Amazon MWAA assegna le autorizzazioni massime. Ad esempio, consigliamo di scegliere l'opzione sulla console Amazon MWAA per creare un ruolo di esecuzione durante la creazione di un ambiente. Amazon MWAA aggiunge automaticamente le politiche di autorizzazione per tutti i gruppi di CloudWatch Logs utilizzando il modello regex nel ruolo di esecuzione as. "arn:aws:logs:us-east-1:111122223333:log-group:airflow-your-environment-name-*"

Come aggiungere l'autorizzazione per utilizzarne altri AWS services

Amazon MWAA non può aggiungere o modificare politiche di autorizzazione a un ruolo di esecuzione esistente dopo la creazione di un ambiente. Devi aggiornare il tuo ruolo di esecuzione con le politiche di autorizzazione aggiuntive necessarie al tuo ambiente. Ad esempio, se il tuo DAG richiede l'accesso a AWS Glue, Amazon MWAA non è in grado di rilevare automaticamente che queste autorizzazioni sono richieste dal tuo ambiente o di aggiungere le autorizzazioni al tuo ruolo di esecuzione.

Puoi aggiungere autorizzazioni a un ruolo di esecuzione in due modi:

  • Modificando in linea la policy JSON per il ruolo di esecuzione. Puoi utilizzare i documenti di policy JSON di esempio in questa pagina per aggiungere o sostituire la policy JSON del tuo ruolo di esecuzione sulla console IAM.

  • Creando una policy JSON per un AWS servizio e associandola al tuo ruolo di esecuzione. Puoi utilizzare i passaggi indicati in questa pagina per associare un nuovo documento di policy JSON per un AWS servizio al tuo ruolo di esecuzione sulla console IAM.

Supponendo che il ruolo di esecuzione sia già associato al tuo ambiente, Amazon MWAA può iniziare a utilizzare immediatamente le politiche di autorizzazione aggiunte. Ciò significa anche che se rimuovi le autorizzazioni richieste da un ruolo di esecuzione, i tuoi DAG potrebbero fallire.

Come associare un nuovo ruolo di esecuzione

Puoi modificare il ruolo di esecuzione per il tuo ambiente in qualsiasi momento. Se un nuovo ruolo di esecuzione non è già associato al tuo ambiente, utilizza i passaggi in questa pagina per creare una nuova politica del ruolo di esecuzione e associare il ruolo al tuo ambiente.

Crea un nuovo ruolo

Per impostazione predefinita, Amazon MWAA crea una chiave AWS proprietaria per la crittografia dei dati e un ruolo di esecuzione per tuo conto. Puoi scegliere le opzioni predefinite sulla console Amazon MWAA quando crei un ambiente. L'immagine seguente mostra l'opzione predefinita per creare un ruolo di esecuzione per un ambiente.

Questa è un'immagine con l'opzione predefinita per creare un nuovo ruolo.
Importante

Quando si crea un nuovo ruolo di esecuzione, non riutilizzare il nome di un ruolo di esecuzione eliminato. I nomi univoci possono aiutare a prevenire i conflitti e garantire una corretta gestione delle risorse.

Accedere e aggiornare una politica relativa ai ruoli di esecuzione

Puoi accedere al ruolo di esecuzione per il tuo ambiente sulla console Amazon MWAA e aggiornare la policy JSON per il ruolo sulla console IAM.

Per aggiornare una politica sui ruoli di esecuzione
  1. Apri la pagina Ambienti sulla console Amazon MWAA.

  2. Scegli un ambiente.

  3. Scegli il ruolo di esecuzione nel riquadro Autorizzazioni per aprire la pagina delle autorizzazioni in IAM.

  4. Scegli il nome del ruolo di esecuzione per aprire la policy delle autorizzazioni.

  5. Selezionare Edit policy (Modifica policy).

  6. Scegli la scheda JSON.

  7. Aggiorna la tua politica JSON.

  8. Scegliere Esamina policy.

  9. Scegli Save changes (Salva modifiche).

Allega una policy JSON per utilizzarne altre AWS services

Puoi creare una policy JSON per un AWS servizio e collegarla al tuo ruolo di esecuzione. Ad esempio, puoi allegare la seguente politica JSON per concedere l'accesso in sola lettura a tutte le risorse in. AWS Secrets Manager

JSON
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource":[ "*" ] } ] }
Per allegare una policy al tuo ruolo di esecuzione
  1. Apri la pagina Ambienti sulla console Amazon MWAA.

  2. Scegli un ambiente.

  3. Scegli il tuo ruolo di esecuzione nel riquadro Autorizzazioni.

  4. Scegli Collega policy.

  5. Scegli Crea policy.

  6. Scegli JSON.

  7. Incolla la policy JSON.

  8. Scegli Avanti: Tag, Avanti: Revisione.

  9. Inserisci un nome descrittivo (ad esempioSecretsManagerReadPolicy) e una descrizione per la politica.

  10. Scegli Crea policy.

Concedi l'accesso al bucket Amazon S3 con un blocco di accesso pubblico a livello di account

Potresti voler bloccare l'accesso a tutti i bucket del tuo account utilizzando l'operazione Amazon S3. PutPublicAccessBlock Quando blocchi l'accesso a tutti i bucket del tuo account, il ruolo di esecuzione dell'ambiente deve includere l's3:GetAccountPublicAccessBlockazione in una policy di autorizzazione.

L'esempio seguente dimostra la policy da allegare al ruolo di esecuzione per bloccare l'accesso a tutti i bucket Amazon S3 nel tuo account.

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

Per ulteriori informazioni sulla limitazione dell'accesso ai bucket Amazon S3, consulta la sezione Bloccare l'accesso pubblico allo storage Amazon S3 nella Amazon Simple Storage Service User Guide.

Usa le connessioni Apache Airflow

È inoltre possibile creare una connessione Apache Airflow e specificare il ruolo di esecuzione e il relativo ARN nell'oggetto di connessione Apache Airflow. Per ulteriori informazioni, fare riferimento a. Gestione delle connessioni ad Apache Airflow

Esempi di politiche JSON per un ruolo di esecuzione

È possibile utilizzare i due criteri di autorizzazione di esempio in questa sezione per sostituire i criteri di autorizzazione utilizzati per il ruolo di esecuzione esistente o per creare un nuovo ruolo di esecuzione da utilizzare per il proprio ambiente. Queste policy contengono segnaposto Resource ARN per i gruppi di log di Apache Airflow, un bucket Amazon S3 e un ambiente Amazon MWAA. Crea un ambiente Amazon MWAA

Consigliamo di copiare la policy di esempio, sostituire gli ARN o i segnaposto di esempio, quindi utilizzare la policy JSON per creare o aggiornare un ruolo di esecuzione.

Esempio di politica per una chiave gestita dal cliente

L'esempio seguente presenta una politica del ruolo di esecuzione che è possibile utilizzare per una Customer-managed chiave.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "s3:ListAllMyBuckets", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject*", "s3:GetBucket*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents", "logs:GetLogEvents", "logs:GetLogRecord", "logs:GetLogGroupFields", "logs:GetQueryResults", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-east-1:111122223333: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:us-east-1:*:airflow-celery-*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/your-kms-cmk-id", "Condition": { "StringLike": { "kms:ViaService": [ "sqs.us-east-1.amazonaws.com", "s3.us-east-1.amazonaws.com" ] } } } ] }

Successivamente, devi consentire ad Amazon MWAA di assumere questo ruolo per eseguire azioni per tuo conto. Questo può essere fatto aggiungendo "airflow.amazonaws.com" i "airflow-env.amazonaws.com" service principal all'elenco delle entità fidate per questo ruolo di esecuzione utilizzando la console IAM o inserendo questi service principal nel documento della policy di assunzione del ruolo per questo ruolo di esecuzione tramite il comando IAM https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html create-role utilizzando il. AWS CLI Fai riferimento al seguente esempio di documento sulla politica di assunzione del ruolo:

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

Quindi allega la seguente politica JSON alla tua Customer-managed chiave. Questa policy utilizza il prefisso della chiave di kms:EncryptionContext condizione per consentire l'accesso al gruppo di log di Apache Airflow in Logs. CloudWatch

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

Esempio di politica per un AWS-chiave di proprietà

L'esempio seguente presenta una politica del ruolo di esecuzione che è possibile utilizzare per una chiave AWS di proprietà.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "airflow:PublishMetrics", "Resource": "arn:aws:airflow:us-east-1:111122223333:environment/{your-environment-name}" }, { "Effect": "Deny", "Action": "s3:ListAllMyBuckets", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject*", "s3:GetBucket*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents", "logs:GetLogEvents", "logs:GetLogRecord", "logs:GetLogGroupFields", "logs:GetQueryResults", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-east-1:111122223333: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:us-east-1:*:airflow-celery-*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt" ], "NotResource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringLike": { "kms:ViaService": [ "sqs.us-east-1.amazonaws.com" ] } } } ] }

Fasi successive