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 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 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 a utilizzare altri AWS servizi utilizzati dal tuo ambiente viene ottenuta 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) 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 (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 proprietaria o una AWS chiave gestita dal cliente).
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 Amazon MWAA che conceda 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 questo accesso su più account tramite la relativa politica delle risorse.
-
Il codice DAG deve accedere a una coda Amazon SQS che inizia
airflow-celery-
con l'account di terze parti e utilizza la stessa chiave KMS 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 flussi di lavoro non accedano a code arbitrarie di Amazon SQS al di fuori del tuo account. Inoltre, puoi utilizzare una chiave KMS gestita dal cliente 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 inoltre 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 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 MWAA assegna le autorizzazioni massime. Ad esempio, consigliamo di scegliere l'opzione sulla console Amazon MWAA 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 MWAA non può aggiungere o modificare policy di autorizzazione a un ruolo di esecuzione esistente dopo la creazione di un ambiente. È necessario aggiornare il ruolo di esecuzione con politiche di autorizzazione aggiuntive necessarie al proprio ambiente. Ad esempio, se il tuo DAG richiede l'accesso a AWS Glue, Amazon MWAA non 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 politica JSON per il ruolo di esecuzione in linea. Puoi utilizzare i documenti di esempio sulla policy JSON in questa pagina per aggiungere o sostituire la politica 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 di 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 necessarie da un ruolo di esecuzione, potresti fallire. DAGs
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 console Amazon MWAA quando crei un ambiente. L'immagine seguente mostra l'opzione predefinita per creare un ruolo di esecuzione per un ambiente.

Visualizza e aggiorna una politica sul ruolo di esecuzione
Puoi visualizzare il 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 del ruolo di esecuzione
-
Apri la pagina Ambienti
sulla console Amazon MWAA. -
Scegli un ambiente.
-
Scegli il ruolo di esecuzione nel riquadro Autorizzazioni per aprire la pagina delle autorizzazioni in IAM.
-
Scegli il nome del ruolo di esecuzione per aprire la politica delle autorizzazioni.
-
Selezionare Edit policy (Modifica policy).
-
Scegli la scheda JSON.
-
Aggiorna la tua policy JSON.
-
Scegli Verifica policy.
-
Scegli Save changes (Salva modifiche).
Allega una policy JSON per utilizzare altri servizi AWS
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
{ "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
-
Apri la pagina Ambienti
sulla console Amazon MWAA. -
Scegli un ambiente.
-
Scegli il tuo ruolo di esecuzione nel riquadro Autorizzazioni.
-
Scegli Collega policy.
-
Scegliere Create Policy (Crea policy).
-
Scegli JSON.
-
Incolla la policy JSON.
-
Scegli Avanti: Tag, Avanti: Revisione.
-
Inserisci un nome descrittivo (ad esempio
SecretsManagerReadPolicy
) e una descrizione per la politica. -
Scegliere 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 PutPublicAccessBlock
Amazon S3. Quando blocchi l'accesso a tutti i bucket del tuo account, il ruolo di esecuzione dell'ambiente deve includere l's3:GetAccountPublicAccessBlock
azione 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
È 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, consulta Gestione delle connessioni ad Apache Airflow.
Esempi di politiche JSON 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 policy contengono segnaposti Resource ARN 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 il campione ARNs o i segnaposto, quindi utilizzare la policy JSON per creare o aggiornare un ruolo di esecuzione. 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 ad Amazon MWAA 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 console IAM o inserendo questi principali di servizio nel documento sulla politica di assume role per questo ruolo di esecuzione tramite il comando IAM create-role utilizzando il. AWS CLI Di seguito è riportato un esempio di documento relativo alla 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 politica JSON alla tua chiave gestita dal cliente. Questo criterio utilizza il prefisso kms:EncryptionContext
condition 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
-
Scopri le autorizzazioni necessarie a te e ai tuoi utenti di Apache Airflow per accedere al tuo ambiente. Accesso a un ambiente Amazon MWAA
-
Ulteriori informazioni su Utilizzo di chiavi gestite dal cliente per la crittografia.
-
Esplora altri esempi di policy gestite dai clienti.