Ruolo di MWAA esecuzione di Amazon - 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 MWAA esecuzione di Amazon

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 l'autorizzazione a richiamare le risorse di altri servizi per tuo conto. AWS Ciò può includere risorse come il bucket Amazon S3, la chiave AWS proprietaria e i log. CloudWatch MWAAGli ambienti Amazon 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 a utilizzare altri AWS servizi utilizzati dal tuo ambiente viene ottenuta dal ruolo di esecuzione. Un ruolo di MWAA esecuzione di Amazon 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) Simple Storage Service (Amazon S3): per analizzare il codice DAG dell'ambiente e i file di supporto (ad esempio a). requirements.txt

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

  • AWS Key Management Service (AWS KMS) — per la crittografia dei dati del tuo ambiente (utilizzando una chiave AWS proprietaria o una chiave gestita dal cliente).

    Nota

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

    • Una KMS chiave in un account di terze parti deve consentire questo accesso su più account tramite la relativa politica delle risorse.

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

    Per mitigare i rischi associati all'accesso alle risorse su più account, ti consigliamo di rivedere il codice inserito nel tuo account DAGs per assicurarti che i tuoi flussi di lavoro non accedano a SQS code Amazon arbitrarie al di fuori del tuo account. Inoltre, puoi utilizzare una KMS chiave gestita dal cliente memorizzata nel tuo account per gestire la crittografia su AmazonMWAA. Ciò limita il ruolo di esecuzione del tuo ambiente all'accesso solo alla KMS chiave 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 inoltre l'autorizzazione per le seguenti IAM azioni:

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

Autorizzazioni allegate per impostazione predefinita

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

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

  • In alcuni casi, Amazon assegna MWAA le autorizzazioni massime. Ad esempio, ti consigliamo di scegliere l'opzione sulla MWAA console Amazon per creare un ruolo di esecuzione quando crei 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 come. "arn:aws:logs:your-region:your-account-id:log-group:airflow-your-environment-name-*"

Come aggiungere l'autorizzazione all'uso di altri servizi AWS

Amazon non MWAA 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 politiche di autorizzazione aggiuntive necessarie al tuo ambiente. Ad esempio, se DAG richiedi l'accesso a AWS Glue, Amazon non MWAA può rilevare automaticamente che tali autorizzazioni sono richieste dal tuo ambiente o aggiungere le autorizzazioni al tuo ruolo di esecuzione.

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

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

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

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 necessarie da un ruolo di esecuzione, DAGs potresti 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 proprio ambiente, utilizzare i passaggi riportati in questa pagina per creare una nuova politica relativa al ruolo di esecuzione e associare il ruolo al proprio 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 MWAA console Amazon 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.

Visualizza e aggiorna una politica sul ruolo di esecuzione

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

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

  2. Scegli un ambiente.

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

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

  5. Selezionare Edit policy (Modifica policy).

  6. Scegli la JSONscheda.

  7. Aggiorna la tua JSON politica.

  8. Scegli Verifica policy.

  9. Scegli Save changes (Salva modifiche).

Allega una JSON politica per utilizzare altri AWS servizi

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

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

  2. Scegli un ambiente.

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

  4. Scegli Collega policy.

  5. Scegli Create Policy (Crea policy).

  6. Scegli JSON.

  7. Incolla la JSON politica.

  8. Scegli Avanti: Tag, Avanti: Revisione.

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

  10. Scegli Create Policy (Crea policy).

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

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

L'esempio seguente mostra la politica che devi associare al tuo ruolo di esecuzione quando blocchi l'accesso a tutti i bucket Amazon S3 nel tuo account.

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

Per ulteriori informazioni sulla limitazione dell'accesso ai tuoi bucket Amazon S3, consulta Bloccare l'accesso pubblico allo storage Amazon S3 nella Guida per l'utente di Amazon Simple Storage Service.

Usa le connessioni Apache Airflow

Puoi anche creare una connessione Apache Airflow e specificare il tuo ruolo di esecuzione e il relativo ARN nell'oggetto di connessione Apache Airflow. Per ulteriori informazioni, consulta Gestione delle connessioni ad Apache Airflow.

JSONPolitiche di esempio per un ruolo di esecuzione

I criteri di autorizzazione di esempio in questa sezione mostrano due criteri che è possibile utilizzare per sostituire i criteri di autorizzazione utilizzati per il ruolo di esecuzione esistente o per creare un nuovo ruolo di esecuzione da utilizzare per l'ambiente. Queste politiche contengono ARN segnaposti Resource per i gruppi di log Apache Airflow, un bucket Amazon S3 e un ambiente Amazon. MWAA

Ti consigliamo di copiare la policy di esempio, sostituire l'esempio o i segnaposto e quindi utilizzare la policy per creare ARNs o aggiornare un ruolo di esecuzione. JSON Ad esempio, sostituendo con. {your-region} us-east-1

Esempio di politica per una chiave gestita dal cliente

L'esempio seguente mostra una politica del ruolo di esecuzione che è possibile utilizzare per una chiave gestita dal 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" ] } } } ] }

Successivamente, devi consentire MWAA ad Amazon di assumere questo ruolo per eseguire azioni per tuo conto. Ciò può essere fatto aggiungendo "airflow.amazonaws.com" i responsabili del "airflow-env.amazonaws.com" servizio all'elenco delle entità attendibili per questo ruolo di esecuzione utilizzando la IAM console o inserendo questi principali di servizio nel documento sulla politica di assunzione del ruolo per questo ruolo di esecuzione tramite il comando IAM create-role utilizzando il. AWS CLI Di seguito è riportato un esempio di documento sulla politica relativa all'assunzione del ruolo:

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

Quindi allega la seguente JSON politica alla tua chiave gestita dal cliente. Questo criterio utilizza il prefisso kms:EncryptionContextcondition key per consentire l'accesso al gruppo di log di Apache Airflow in 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}:*" } } }

Esempio di politica per una chiave di proprietà AWS

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

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

Fasi successive