MWAAAmazon-Ausführungsrolle - Amazon Managed Workflows für Apache Airflow

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

MWAAAmazon-Ausführungsrolle

Eine Ausführungsrolle ist eine AWS Identity and Access Management (IAM) -Rolle mit einer Berechtigungsrichtlinie, die Amazon Managed Workflows for Apache Airflow die Erlaubnis erteilt, die Ressourcen anderer AWS Services in Ihrem Namen aufzurufen. Dies kann Ressourcen wie Ihren Amazon S3 S3-Bucket, Ihren AWS eigenen Schlüssel und CloudWatch Logs beinhalten. MWAAAmazon-Umgebungen benötigen eine Ausführungsrolle pro Umgebung. Auf dieser Seite wird beschrieben, wie Sie die Ausführungsrolle für Ihre Umgebung verwenden und konfigurieren, damit Amazon MWAA auf andere von Ihrer Umgebung verwendete AWS Ressourcen zugreifen kann.

Übersicht über die Ausführungsrolle

Die Erlaubnis für AmazonMWAA, andere von Ihrer Umgebung verwendete AWS Dienste zu nutzen, erhalten Sie von der Ausführungsrolle. Eine MWAA Amazon-Ausführungsrolle benötigt Berechtigungen für die folgenden AWS Dienste, die von einer Umgebung verwendet werden:

  • Amazon CloudWatch (CloudWatch) — um Apache Airflow-Metriken und -Protokolle zu senden.

  • Amazon Simple Storage Service (Amazon S3) — um den DAG Code Ihrer Umgebung und die unterstützenden Dateien (z. B. arequirements.txt) zu analysieren.

  • Amazon Simple Queue Service (AmazonSQS) — um die Apache Airflow-Aufgaben Ihrer Umgebung in eine SQS Amazon-Warteschlange zu stellen, die Amazon MWAA gehört.

  • AWS Key Management Service (AWS KMS) — für die Datenverschlüsselung Ihrer Umgebung (entweder mit einem AWS eigenen Schlüssel oder mit Ihrem vom Kunden verwalteten Schlüssel).

    Anmerkung

    Wenn Sie sich dafür entschieden haben, dass Amazon MWAA einen AWS eigenen KMS Schlüssel zur Verschlüsselung Ihrer Daten verwendet, müssen Sie in einer mit Ihrer MWAA Amazon-Ausführungsrolle verbundenen Richtlinie Berechtigungen definieren, die Zugriff auf beliebige KMS Schlüssel gewähren, die außerhalb Ihres Kontos über Amazon SQS gespeichert sind. Die folgenden beiden Bedingungen sind erforderlich, damit die Ausführungsrolle Ihrer Umgebung auf beliebige KMS Schlüssel zugreifen kann:

    • Ein KMS Schlüssel in einem Drittanbieter-Konto muss diesen kontoübergreifenden Zugriff über dessen Ressourcenrichtlinie ermöglichen.

    • Ihr DAG Code muss auf eine SQS Amazon-Warteschlange zugreifen, die mit airflow-celery- dem Drittanbieter-Konto beginnt und denselben KMS Schlüssel für die Verschlüsselung verwendet.

    Um die mit dem kontoübergreifenden Zugriff auf Ressourcen verbundenen Risiken zu minimieren, empfehlen wir Ihnen, den in Ihrem Konto hinterlegten Code zu überprüfen, DAGs um sicherzustellen, dass Ihre Workflows nicht auf willkürliche SQS Amazon-Warteschlangen außerhalb Ihres Kontos zugreifen. Darüber hinaus können Sie einen vom Kunden verwalteten KMS Schlüssel verwenden, der in Ihrem eigenen Konto gespeichert ist, um die Verschlüsselung bei Amazon zu verwaltenMWAA. Dadurch wird die Ausführungsrolle Ihrer Umgebung darauf beschränkt, nur auf den KMS Schlüssel in Ihrem Konto zuzugreifen.

    Beachten Sie, dass Sie Ihre Auswahl für eine bestehende Umgebung nicht mehr ändern können, nachdem Sie eine Verschlüsselungsoption ausgewählt haben.

Eine Ausführungsrolle benötigt außerdem Berechtigungen für die folgenden IAM Aktionen:

  • airflow:PublishMetrics— um es Amazon MWAA zu ermöglichen, den Zustand einer Umwelt zu überwachen.

Standardmäßig zugeordnete Berechtigungen

Sie können die Standardoptionen auf der MWAA Amazon-Konsole verwenden, um eine Ausführungsrolle und einen AWS eigenen Schlüssel zu erstellen. Verwenden Sie dann die Schritte auf dieser Seite, um Ihrer Ausführungsrolle Berechtigungsrichtlinien hinzuzufügen.

  • Wenn Sie in der Konsole die Option Neue Rolle erstellen wählen, ordnet Amazon MWAA Ihrer Ausführungsrolle die für eine Umgebung erforderlichen Mindestberechtigungen zu.

  • In einigen Fällen MWAA fügt Amazon die maximalen Berechtigungen hinzu. Wir empfehlen beispielsweise, beim Erstellen einer Umgebung die Option auf der MWAA Amazon-Konsole auszuwählen, um eine Ausführungsrolle zu erstellen. Amazon MWAA fügt die Berechtigungsrichtlinien für alle CloudWatch Logs-Gruppen automatisch hinzu, indem es das Regex-Muster in der Ausführungsrolle als verwendet. "arn:aws:logs:your-region:your-account-id:log-group:airflow-your-environment-name-*"

Wie füge ich die Erlaubnis zur Nutzung anderer Dienste hinzu AWS

Amazon MWAA kann einer vorhandenen Ausführungsrolle keine Berechtigungsrichtlinien hinzufügen oder bearbeiten, nachdem eine Umgebung erstellt wurde. Sie müssen Ihre Ausführungsrolle mit zusätzlichen Berechtigungsrichtlinien aktualisieren, die für Ihre Umgebung erforderlich sind. Wenn Sie beispielsweise Zugriff auf DAG benötigen AWS Glue, MWAA kann Amazon nicht automatisch erkennen, dass diese Berechtigungen für Ihre Umgebung erforderlich sind, oder die Berechtigungen Ihrer Ausführungsrolle hinzufügen.

Sie können einer Ausführungsrolle auf zwei Arten Berechtigungen hinzufügen:

  • Indem Sie die JSON Richtlinie für Ihre Ausführungsrolle direkt ändern. Sie können die JSONBeispiel-Richtliniendokumente auf dieser Seite verwenden, um die JSON Richtlinie für Ihre Ausführungsrolle auf der IAM Konsole entweder zu ergänzen oder zu ersetzen.

  • Indem Sie eine JSON Richtlinie für einen AWS Dienst erstellen und sie Ihrer Ausführungsrolle zuordnen. Mithilfe der Schritte auf dieser Seite können Sie Ihrer Ausführungsrolle auf der IAM Konsole ein neues JSON Richtliniendokument für einen AWS Dienst zuordnen.

Unter der Annahme, dass die Ausführungsrolle bereits mit Ihrer Umgebung verknüpft ist, MWAA kann Amazon sofort damit beginnen, die hinzugefügten Berechtigungsrichtlinien zu verwenden. Das bedeutet auch, dass Ihre Ausführung fehlschlagen DAGs kann, wenn Sie einer Ausführungsrolle alle erforderlichen Berechtigungen entziehen.

Wie ordnet man eine neue Ausführungsrolle zu

Sie können die Ausführungsrolle für Ihre Umgebung jederzeit ändern. Wenn Ihrer Umgebung noch keine neue Ausführungsrolle zugeordnet ist, verwenden Sie die Schritte auf dieser Seite, um eine neue Ausführungsrollenrichtlinie zu erstellen und die Rolle Ihrer Umgebung zuzuordnen.

Create a new role (Neue Rolle erstellen)

Standardmäßig MWAA erstellt Amazon in Ihrem Namen AWS einen eigenen Schlüssel für die Datenverschlüsselung und eine Ausführungsrolle. Sie können die Standardoptionen auf der MWAA Amazon-Konsole auswählen, wenn Sie eine Umgebung erstellen. Die folgende Abbildung zeigt die Standardoption zum Erstellen einer Ausführungsrolle für eine Umgebung.

Dies ist ein Bild mit der Standardoption zum Erstellen einer neuen Rolle.

Eine Ausführungsrollenrichtlinie anzeigen und aktualisieren

Sie können die Ausführungsrolle für Ihre Umgebung auf der MWAA Amazon-Konsole anzeigen und die JSON Richtlinie für die Rolle auf der IAM Konsole aktualisieren.

Um eine Richtlinie für eine Ausführungsrolle zu aktualisieren
  1. Öffnen Sie die Seite Umgebungen auf der MWAA Amazon-Konsole.

  2. Wählen Sie eine Umgebung aus.

  3. Wählen Sie im Bereich „Berechtigungen“ die Ausführungsrolle aus, in der die Seite mit den Berechtigungen geöffnet werden sollIAM.

  4. Wählen Sie den Namen der Ausführungsrolle, um die Berechtigungsrichtlinie zu öffnen.

  5. Wählen Sie Edit policy (Richtlinie bearbeiten).

  6. Wählen Sie die JSONRegisterkarte.

  7. Aktualisieren Sie Ihre JSON Richtlinie.

  8. Wählen Sie Richtlinie prüfen.

  9. Wählen Sie Änderungen speichern.

Hängen Sie eine JSON Richtlinie an, um andere AWS Dienste zu nutzen

Sie können eine JSON Richtlinie für einen AWS Dienst erstellen und sie Ihrer Ausführungsrolle zuordnen. Sie können beispielsweise die folgende JSON Richtlinie anhängen, um nur Lesezugriff auf alle Ressourcen in zu gewähren. AWS Secrets Manager

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource":[ "*" ] } ] }
So fügen Sie Ihrer Ausführungsrolle eine Richtlinie hinzu
  1. Öffnen Sie die Seite Umgebungen auf der MWAA Amazon-Konsole.

  2. Wählen Sie eine Umgebung aus.

  3. Wählen Sie im Bereich „Berechtigungen“ Ihre Ausführungsrolle aus.

  4. Wählen Sie Richtlinien anfügen.

  5. Wählen Sie Create Policy (Richtlinie erstellen) aus.

  6. Wählen Sie JSON.

  7. Fügen Sie die JSON Richtlinie ein.

  8. Wählen Sie Weiter: Schlagworte, Weiter: Überprüfung.

  9. Geben Sie einen aussagekräftigen Namen (z. B.SecretsManagerReadPolicy) und eine Beschreibung für die Richtlinie ein.

  10. Wählen Sie Create Policy (Richtlinie erstellen) aus.

Gewähren Sie Zugriff auf den Amazon S3 S3-Bucket mit Sperrung des öffentlichen Zugriffs auf Kontoebene

Möglicherweise möchten Sie den Zugriff auf alle Buckets in Ihrem Konto mithilfe des PutPublicAccessBlockAmazon S3 S3-Vorgangs sperren. Wenn Sie den Zugriff auf alle Buckets in Ihrem Konto sperren, muss Ihre Umgebungsausführungsrolle die s3:GetAccountPublicAccessBlock Aktion in einer Berechtigungsrichtlinie enthalten.

Das folgende Beispiel zeigt die Richtlinie, die Sie Ihrer Ausführungsrolle zuordnen müssen, wenn Sie den Zugriff auf alle Amazon S3 S3-Buckets in Ihrem Konto blockieren.

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

Weitere Informationen zur Beschränkung des Zugriffs auf Ihre Amazon S3 S3-Buckets finden Sie unter Blockieren des öffentlichen Zugriffs auf Ihren Amazon S3 S3-Speicher im Amazon Simple Storage Service-Benutzerhandbuch.

Verwenden Sie Apache Airflow-Verbindungen

Sie können auch eine Apache Airflow-Verbindung erstellen und Ihre Ausführungsrolle angeben und sie ARN in Ihrem Apache Airflow-Verbindungsobjekt angeben. Weitere Informationen hierzu finden Sie unter Verbindungen zu Apache Airflow verwalten.

JSONBeispielrichtlinien für eine Ausführungsrolle

Die Beispielberechtigungsrichtlinien in diesem Abschnitt zeigen zwei Richtlinien, mit denen Sie die für Ihre bestehende Ausführungsrolle verwendete Berechtigungsrichtlinie ersetzen oder eine neue Ausführungsrolle erstellen und für Ihre Umgebung verwenden können. Diese Richtlinien enthalten ARNRessourcenplatzhalter für Apache Airflow-Protokollgruppen, einen Amazon S3 S3-Bucket und eine MWAAAmazon-Umgebung.

Wir empfehlen, die Beispielrichtlinie zu kopieren, das Beispiel ARNs oder die Platzhalter zu ersetzen und dann die JSON Richtlinie zu verwenden, um eine Ausführungsrolle zu erstellen oder zu aktualisieren. Zum Beispiel das Ersetzen {your-region} durchus-east-1.

Beispielrichtlinie für einen vom Kunden verwalteten Schlüssel

Das folgende Beispiel zeigt eine Ausführungsrollenrichtlinie, die Sie für einen vom Kunden verwalteten Schlüssel verwenden können.

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

Als Nächstes müssen Sie Amazon erlauben, diese Rolle MWAA zu übernehmen, um Aktionen in Ihrem Namen durchzuführen. Dies kann geschehen, indem "airflow.amazonaws.com" Sie mithilfe der IAM Konsole "airflow-env.amazonaws.com" Service Principals zur Liste der vertrauenswürdigen Entitäten für diese Ausführungsrolle hinzufügen oder indem Sie diese Service Principals über den Befehl create-role mit dem Befehl IAM create-role in das Richtliniendokument „Rolle übernehmen“ für diese Ausführungsrolle aufnehmen. AWS CLI Ein Beispiel für ein Dokument mit der Richtlinie „Rolle übernehmen“ finden Sie unten:

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

Fügen Sie dann Ihrem vom Kunden verwalteten Schlüssel die folgende JSON Richtlinie bei. Diese Richtlinie verwendet das kms:EncryptionContextBedingungsschlüsselpräfix, um den Zugriff auf Ihre Apache Airflow-Protokollgruppe in CloudWatch Logs zu ermöglichen.

{ "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}:*" } } }

Beispielrichtlinie für einen AWS eigenen Schlüssel

Das folgende Beispiel zeigt eine Ausführungsrollenrichtlinie, die Sie für einen AWS eigenen Schlüssel verwenden können.

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

Als nächstes