Dies ist ein Gast-Blogbeitrag, der gemeinsam mit Patrick Oberherr von Contentful und Johannes Günther von Netlight Consulting verfasst wurde.
Dieser Blogbeitrag zeigt, wie die Sicherheit in einer Datenpipeline-Architektur basierend auf verbessert werden kann Amazon Managed Workflows für Apache Airflow (Amazon MWAA) und Amazon Elastic Kubernetes-Dienst (Amazon EKS) durch die Einrichtung fein abgestufter Berechtigungen, mit HashiCorp Terraform für Infrastruktur als Code.
Viele AWS-Kunden nutzen Amazon EKS zur Ausführung ihrer Daten-Workloads. Zu den Vorteilen von Amazon EKS gehören unterschiedliche Rechen- und Speicheroptionen je nach Workload-Anforderungen, eine höhere Ressourcenauslastung durch die gemeinsame Nutzung der zugrunde liegenden Infrastruktur und eine lebendige Open-Source-Community, die speziell entwickelte Erweiterungen bereitstellt. Der Daten zu EKS Das Projekt bietet eine Reihe von Vorlagen und anderen Ressourcen, um Kunden den Einstieg in diese Reise zu erleichtern. Es enthält eine Beschreibung der Verwendung Amazon MWAA als Jobplaner.
Inhaltlich ist AWS-Kunde und AWS Partner Network (APN)-Partner. Hinter den Kulissen seines Software-as-a-Service (SaaS)-Produkts, der Contentful Composable Content Platform, nutzt Contentful Erkenntnisse aus Daten, um Geschäftsentscheidungen und das Kundenerlebnis zu verbessern. Zufrieden engagiert Netzlicht, ein APN-Beratungspartner, hilft bei der Einrichtung einer Datenplattform zum Sammeln dieser Erkenntnisse.
Die meisten Anwendungs-Workloads von Contentful laufen auf Amazon EKS, und das Wissen über diesen Service und Kubernetes ist in der Organisation weit verbreitet. Aus diesem Grund hat sich das Data-Engineering-Team von Contentful entschieden, Datenpipelines auch auf Amazon EKS zu betreiben. Für die Arbeit Planung, begannen sie mit einem selbst betriebenen Apache Airflow auf einem Amazon EKS-Cluster und wechselten später zu Amazon MWAA, um den Engineering- und Betriebsaufwand zu reduzieren. Die Arbeit Ausführung blieb bei Amazon EKS.
Contentful betreibt mithilfe dieser Infrastruktur eine komplexe Datenpipeline, einschließlich der Aufnahme aus mehreren Datenquellen und verschiedenen Transformationsjobs, beispielsweise mithilfe von dbt. Die gesamte Pipeline nutzt eine einzige Amazon MWAA-Umgebung und einen einzelnen Amazon EKS-Cluster. Bei einer Vielzahl von Workloads in einer einzigen Umgebung ist es notwendig, Folgendes anzuwenden Prinzip des geringsten Privilegs, um sicherzustellen, dass einzelne Aufgaben oder Komponenten nur über die spezifischen Berechtigungen verfügen, die sie zum Funktionieren benötigen.
Durch die Segmentierung der Berechtigungen nach Rollen und Verantwortlichkeiten konnte das Data-Engineering-Team von Contentful eine robustere und sicherere Datenverarbeitungsumgebung schaffen, die für die Wahrung der Integrität und Vertraulichkeit der verarbeiteten Daten unerlässlich ist.
In diesem Blogbeitrag gehen wir durch die Einrichtung der Infrastruktur von Grund auf und die Bereitstellung einer Beispielanwendung mit Terraform, dem bevorzugten Tool von Contentful für Infrastructure-as-Code.
Voraussetzungen:
Um diesem Blogbeitrag folgen zu können, müssen Sie die neueste Version der folgenden Tools installiert haben:
Über uns
In diesem Blogbeitrag erstellen Sie eine Beispielanwendung mit der folgenden Infrastruktur:
Der Beispiel-Airflow-Workflow listet Objekte im Quell-Bucket auf und speichert diese Liste vorübergehend mit Airflow XComsund schreibt die Liste als Datei in den Ziel-Bucket. Diese Anwendung wird mithilfe von Amazon EKS-Pods ausgeführt, die von einer Amazon MWAA-Umgebung geplant werden. Sie stellen den EKS-Cluster und die MWAA-Umgebung in einem bereit virtuelle private Cloud (VPC) und wenden Sie Berechtigungen mit der geringsten Berechtigung auf die EKS-Pods an, die Sie verwenden IAM-Rollen für Dienstkonten. Der Konfigurations-Bucket für Amazon MWAA enthält Laufzeitanforderungen sowie den Anwendungscode, der eine angibt Luftstromgerichteter azyklischer Graph (DAG).
Initialisieren Sie das Projekt und erstellen Sie Buckets
Erstellen Sie eine Datei main.tf
mit folgendem Inhalt in einem leeren Verzeichnis:
Diese Datei definiert die Terraform AWS-Anbieter sowie den Quell- und Ziel-Bucket, deren Namen exportiert werden AWS Systems Manager-Parameter. Außerdem wird Terraform angewiesen, ein leeres Objekt mit dem Namen hochzuladen dummy.txt
in den Quell-Bucket, wodurch die Airflow-Beispielanwendung, die wir später erstellen werden, beim Auflisten des Bucket-Inhalts ein Ergebnis erhält.
Initialisieren Sie das Terraform-Projekt und laden Sie die Modulabhängigkeiten herunter, indem Sie den folgenden Befehl ausgeben:
Erstellen Sie die Infrastruktur:
Terraform fordert Sie auf, Änderungen an der Umgebung zu bestätigen und beginnt dann mit der Bereitstellung von Ressourcen in AWS. Nach erfolgreicher Bereitstellung sollte die folgende Erfolgsmeldung angezeigt werden:
VPC erstellen
Erstellen Sie eine neue Datei vpc.tf
im gleichen Verzeichnis wie main.tf
und füge folgendes ein:
Diese Datei definiert die VPC, ein virtuelles Netzwerk, das später den Amazon EKS-Cluster und die Amazon MWAA-Umgebung hosten wird. Beachten Sie, dass wir ein verwenden vorhandenen Terraform Modulen Hierzu wird beispielsweise die Konfiguration der zugrunde liegenden Netzwerkressourcen umschlossen Subnetze, Routentabellen und NAT-Gateways.
Laden Sie das VPC-Modul herunter:
Stellen Sie die neuen Ressourcen bereit:
Beachten Sie, welche Ressourcen erstellt werden. Durch die Verwendung des VPC-Moduls in unserer Terraform-Datei wird ein Großteil der zugrunde liegenden Komplexität bei der Definition unserer Infrastruktur beseitigt, aber es ist immer noch nützlich zu wissen, was genau bereitgestellt wird.
Beachten Sie, dass Terraform jetzt Ressourcen verarbeitet, die wir in beiden Dateien definiert haben. main.tf
und vpc.tf
, weil Terraform alles beinhaltet .tf
Dateien im aktuellen Arbeitsverzeichnis.
Erstellen Sie die Amazon MWAA-Umgebung
Erstellen Sie eine neue Datei mwaa.tf
und fügen Sie folgenden Inhalt ein:
Wie zuvor verwenden wir ein bestehendes Modul um Konfigurationsaufwand für die Amazon MWAA-Umgebung zu sparen. Das Modul erstellt auch den Konfigurations-Bucket, den wir zur Angabe des verwenden Laufzeitabhängigkeit der Anwendung (Apache-Airflow-CNCF-Kubernetes) In der requirements.txt
Datei. Dieses Paket, in Kombination mit dem vorinstallierten Paket Apache-Airflow-Amazon, ermöglicht die Interaktion mit Amazon EKS.
Laden Sie das MWAA-Modul herunter:
Stellen Sie die neuen Ressourcen bereit:
Dieser Vorgang dauert 20–30 Minuten.
Erstellen Sie den Amazon EKS-Cluster
Erstellen Sie eine Datei eks.tf
mit folgendem Inhalt:
Um den Cluster selbst zu erstellen, nutzen wir die Vorteile Amazon EKS-Blueprints für Terraform Projekt. Wir definieren außerdem eine verwaltete Knotengruppe mit einem Knoten als Zielgröße. Beachten Sie, dass bei schwankender Auslastung die Skalierung Ihres Clusters erforderlich ist Karpenter Anstelle des oben gezeigten Ansatzes mit verwalteten Knotengruppen wird die Clusterskalierung flexibler. Wir haben verwaltete Knotengruppen hauptsächlich wegen der einfachen Konfiguration verwendet.
Wir definieren die Identität, die die Amazon MWAA-Ausführungsrolle geht davon aus, dass in Kubernetes das verwendet wird map_roles
Variable. Nach der Konfiguration des Terraform Kubernetes-Anbieter, erteilen wir der Amazon MWAA-Ausführungsrolle Berechtigungen zum Verwalten von Pods im Cluster.
Laden Sie das EKS Blueprints for Terraform-Modul herunter:
Stellen Sie die neuen Ressourcen bereit:
Dieser Vorgang dauert etwa 12 Minuten.
Erstellen Sie IAM-Rollen für Dienstkonten
Erstellen Sie eine Datei roles.tf
mit folgendem Inhalt:
Diese Datei definiert zwei Kubernetes-Dienstkonten: source-bucket-reader-sa
und destination-bucket-writer-sa
und ihre Berechtigungen für die AWS-API mithilfe von IAM-Rollen für Dienstkonten (IRSA). Auch hier verwenden wir ein Modul aus dem Amazon EKS Blueprints for Terraform-Projekt, um die IRSA-Konfiguration zu vereinfachen. Beachten Sie, dass beide Rollen nur die Mindestberechtigungen erhalten, die sie benötigen, definiert durch AWS IAM-Richtlinien.
Laden Sie das neue Modul herunter:
Stellen Sie die neuen Ressourcen bereit:
Erstellen Sie die DAG
Erstellen Sie eine Datei dag.py
Definieren des Airflow DAG:
Die DAG ist so definiert, dass sie nach einem stündlichen Zeitplan mit zwei Aufgaben ausgeführt wird read_bucket
mit Dienstkonto source-bucket-reader-sa
und write_bucket
mit Dienstkonto destination-bucket-writer-sa
, hintereinander herlaufend. Beide werden mit dem ausgeführt EksPodOperator, das für die Planung der Aufgaben auf Amazon EKS verantwortlich ist, mithilfe von AWS CLI Docker-Image um Befehle auszuführen. Die erste Aufgabe listet Dateien im Quell-Bucket auf und schreibt die Liste in Airflow XCom. Die zweite Aufgabe liest die Liste von XCom und speichert sie im Ziel-Bucket. Notiere dass der service_account_name
Der Parameter unterscheidet, was jede Aufgabe tun darf.
Erstellen Sie eine Datei dag.tf
So laden Sie den DAG-Code in den Amazon MWAA-Konfigurations-Bucket hoch:
Stellen Sie die Änderungen bereit:
Die Amazon MWAA-Umgebung importiert die Datei automatisch aus dem S3-Bucket.
Führen Sie den DAG . aus
Navigieren Sie in Ihrem Browser zu Amazon MWAA-Konsole und wählen Sie Ihre Umgebung aus. Wählen Sie in der oberen rechten Ecke aus Öffnen Sie die Airflow-Benutzeroberfläche . Sie sollten Folgendes sehen:
Um die DAG auszulösen, in der Aktionen Wählen Sie in der Spalte „Abspielen“ das Wiedergabesymbol aus und wählen Sie dann aus DAG auslösen. Klicken Sie auf den DAG-Namen, um den DAG-Lauf und seine Ergebnisse zu erkunden.
Navigieren Sie zu der Amazon S3-Konsole und wählen Sie den Bucket aus, der mit „destination“ beginnt. Es sollte eine Datei enthalten list.json
kürzlich erstellt von der write_bucket
Aufgabe. Laden Sie die Datei herunter, um ihren Inhalt zu erkunden, eine JSON-Liste mit einem einzigen Eintrag.
Aufräumen
Für die Ressourcen, die Sie in dieser exemplarischen Vorgehensweise erstellt haben, fallen AWS-Kosten an. Um die erstellten Ressourcen zu löschen, geben Sie den folgenden Befehl ein:
Und genehmigen Sie die Änderungen im Terraform-CLI-Dialogfeld.
Zusammenfassung
In diesem Blogbeitrag haben Sie erfahren, wie Sie die Sicherheit Ihrer auf Amazon MWAA und Amazon EKS ausgeführten Datenpipeline verbessern können, indem Sie die Berechtigungen jeder einzelnen Aufgabe einschränken.
Um tiefer einzutauchen, verwenden Sie das in dieser exemplarischen Vorgehensweise erstellte Arbeitsbeispiel, um das Thema weiter zu untersuchen: Was passiert, wenn Sie das entfernen? service_account_name
Parameter aus einer Airflow-Aufgabe? Was passiert, wenn Sie die Dienstkontonamen in den beiden Aufgaben austauschen?
Der Einfachheit halber haben wir in dieser exemplarischen Vorgehensweise eine flache Dateistruktur mit Terraform- und Python-Dateien in einem einzigen Verzeichnis verwendet. Wir haben uns nicht daran gehalten Standardmodulstruktur von Terraform vorgeschlagen, was allgemein empfohlen wird. In einem realen Projekt kann die Aufteilung des Projekts in mehrere Terraform-Projekte oder -Module auch die Flexibilität, Geschwindigkeit und Unabhängigkeit zwischen Teams erhöhen, die verschiedene Teile der Infrastruktur besitzen.
Stellen Sie abschließend sicher, dass Sie das studieren Daten zu EKS Dokumentation, die weitere wertvolle Ressourcen für die Ausführung Ihrer Datenpipeline auf Amazon EKS bereitstellt, sowie die Amazon MWAA und Apache-Luftstrom Dokumentation zur Umsetzung eigener Anwendungsfälle. Schauen Sie sich das konkret an Beispiel Implementierung eines Terraform-Moduls für Amazon MWAA und Amazon EKS, das einen ausgereifteren Ansatz für die Amazon EKS-Konfiguration und die automatische Knotenskalierung sowie die Vernetzung enthält.
Wenn Sie Fragen haben, können Sie einen neuen Thread starten AWS re:Post oder zu erreichen AWS-Support.
Über die Autoren
Ulrich Hinze ist Lösungsarchitekt bei AWS. Er arbeitet mit Softwareunternehmen zusammen, um cloudbasierte Lösungen auf AWS zu entwickeln und zu implementieren. Bevor er zu AWS kam, arbeitete er mehr als acht Jahre lang für AWS-Kunden und -Partner in den Bereichen Softwareentwicklung, Beratung und Architektur.
Patrick Oberherr ist Staff Data Engineer bei Contentful mit mehr als vier Jahren Erfahrung bei AWS und mehr als zehn Jahren im Datenbereich. Bei Contentful ist er für die Infrastruktur und den Betrieb des Datenstapels verantwortlich, der auf AWS gehostet wird.
Johannes Günther ist ein Cloud- und Datenberater bei Netlight mit mehr als 5 Jahren Erfahrung bei AWS. Er hat Kunden aus verschiedenen Branchen bei der Entwicklung nachhaltiger Cloud-Plattformen unterstützt und ist AWS-zertifiziert.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- PlatoData.Network Vertikale generative KI. Motiviere dich selbst. Hier zugreifen.
- PlatoAiStream. Web3-Intelligenz. Wissen verstärkt. Hier zugreifen.
- PlatoESG. Kohlenstoff, CleanTech, Energie, Umwelt, Solar, Abfallwirtschaft. Hier zugreifen.
- PlatoHealth. Informationen zu Biotechnologie und klinischen Studien. Hier zugreifen.
- Quelle: https://aws.amazon.com/blogs/big-data/set-up-fine-grained-permissions-for-your-data-pipeline-using-mwaa-and-eks/
- :hast
- :Ist
- :nicht
- $UP
- 1
- 10
- 100
- 12
- 16
- 2023
- 27
- 41
- 8
- 9
- a
- Fähig
- Über Uns
- oben
- Nach
- Konto
- Trading Konten
- anerkennen
- über
- Aktionen
- azyklisch
- hinzugefügt
- haften
- Vorteil
- Vorteilen
- Nach der
- aufs Neue
- gegen
- Alle
- entlang
- ebenfalls
- Amazon
- Amazon Web Services
- an
- und
- Ein anderer
- jedem
- Apache
- Bienen
- Anwendung
- Bewerbung
- Ansatz
- genehmigen
- Architektur
- SIND
- AS
- übernimmt
- At
- Genehmigung
- automatische
- Im Prinzip so, wie Sie es von Google Maps kennen.
- verfügbar
- ein Weg
- AWS
- AWS-zertifiziert
- AWS-Kunde
- basierend
- weil
- Bevor
- hinter
- hinter den Kulissen
- Sein
- zwischen
- Blog
- beide
- Browser
- Geschäft
- aber
- by
- CAN
- Fälle
- Zertifzierte
- geändert
- Änderungen
- Wahl
- Auswählen
- klicken Sie auf
- Kunden
- Cloud
- Cluster
- Code
- Kolonne
- Kombination
- community
- Unternehmen
- abschließen
- Komplex
- Komplexität
- Komponenten
- Berechnen
- Vertraulichkeit
- Konfiguration
- Konsul (Console)
- Berater
- Consulting
- enthalten
- enthält
- Inhalt
- Content-Plattform
- Ecke
- und beseitigen Muskelschwäche
- Kosten
- erstellen
- erstellt
- schafft
- Strom
- Kunde
- Customer Experience
- Kunden
- TAG
- technische Daten
- Dateningenieur
- Datenplattform
- Datenverarbeitung
- datetime
- entschieden
- Decision Making
- tiefer
- definieren
- definiert
- Definiert
- Definition
- Abhängigkeiten
- Abhängigkeit
- Abhängig
- einsetzen
- Einsatz
- Bereitstellen
- Einsatz
- Beschreibung
- Entwerfen
- Reiseziel
- zerstört
- Dialog
- DID
- anders
- gerichtet
- tauchen
- verschieden
- do
- Docker
- Dokumentation
- herunterladen
- Zeichnung
- jeder
- erleichtern
- Echo
- Anstrengung
- leer
- ermöglicht
- beschäftigt
- Ingenieur
- Entwicklung
- Gewährleistung
- Eintrag
- Arbeitsumfeld
- essential
- Äther (ETH)
- genau
- Beispiel
- Austausch-
- ausführen
- ausgeführt
- Ausführung
- ERFAHRUNGEN
- ERKUNDEN
- Erweiterungen
- falsch
- Feld
- Reichen Sie das
- Mappen
- Vorname
- Wohnung
- Flexibilität
- flexibel
- folgen
- Folgende
- Aussichten für
- für
- Funktion
- weiter
- sammeln
- allgemein
- bekommen
- GitHub
- ABSICHT
- Graph
- Gruppe an
- Gruppen
- GUEST
- Gastblog
- Griffe
- das passiert
- Haben
- he
- Hilfe
- dazu beigetragen,
- höher
- Gastgeber
- gehostet
- Ultraschall
- Hilfe
- HTML
- HTTPS
- IAM
- Identitätsschutz
- if
- implementieren
- Umsetzung
- importieren
- Importe
- zu unterstützen,
- in
- das
- Dazu gehören
- Einschließlich
- Erhöhung
- Unabhängigkeit
- Krankengymnastik
- Branchen
- Infrastruktur
- innerhalb
- Einblicke
- beantragen müssen
- Integrität
- Interaktion
- Schnittstelle
- in
- Problem
- Ausgabe
- IT
- SEINE
- selbst
- Job
- Jobs
- Beitritt
- Reise
- jpg
- JSON
- Wesentliche
- Art
- Wissen
- Wissen
- Kubernetes
- später
- neueste
- gelernt
- am wenigsten
- Gefällt mir
- Liste
- listing
- Listen
- Belastung
- aus einer regionalen
- protokolliert
- aussehen
- Aufrechterhaltung
- um
- MACHT
- verwalten
- verwaltet
- Manager
- reifen
- Kann..
- Nachricht
- Metadaten
- Minimum
- Minuten
- Modulen
- Module
- mehr
- viel
- mehrere
- Name
- Namens
- Namen
- Navigieren
- notwendig,
- Need
- Bedürfnisse
- Netzwerk
- Vernetzung
- Neu
- Knoten
- beachten
- jetzt an
- Objekt
- Objekte
- of
- on
- EINEM
- einzige
- Open-Source-
- Betrieb
- Einkauf & Prozesse
- Betreiber
- Optionen
- or
- Organisation
- Andere
- UNSERE
- Möglichkeiten für das Ausgangssignal:
- besitzen
- Paket
- Parameter
- Partner
- Partnernetzwerk
- Teile
- Patch
- Weg
- Patrick
- Berechtigungen
- Pipeline
- Plattform
- Plattformen
- Plato
- Datenintelligenz von Plato
- PlatoData
- Play
- Schoten
- Datenschutzrichtlinien
- Porträt
- Post
- in erster Linie
- privat
- Verarbeitung
- Produkt
- Profil
- Projekt
- Projekte
- vorgeschlage
- Versorger
- Anbieter
- bietet
- Python
- Fragen
- RE
- erreichen
- erhalten
- kürzlich
- empfohlen
- Veteran
- Region
- entfernen
- Voraussetzungen:
- Ressourcen
- Ressourcennutzung
- Downloads
- Verantwortlichkeiten
- für ihren Verlust verantwortlich.
- Folge
- Die Ergebnisse
- robust
- Rollen
- Rollen
- Regel
- Führen Sie
- Laufen
- läuft
- SaaS
- gleich
- Speichern
- Skalieren
- Skalierung
- Szenen
- Zeitplan
- vorgesehen
- Planung
- kratzen
- Zweite
- Verbindung
- Sicherheitdienst
- sehen
- Modellreihe
- Lösungen
- kompensieren
- Einstellung
- Shares
- ,,teilen"
- sollte
- gezeigt
- Konzerte
- Einfachheit
- vereinfachen
- Single
- einzelne Umgebung
- Größe
- klein
- Software
- Softwareentwicklung
- Lösungen
- Quelle
- Quellen
- spezifisch
- speziell
- Geschwindigkeit
- Stapel
- Unser Team
- Anfang
- begonnen
- Beginnen Sie
- beginnt
- Erklärung
- Immer noch
- Lagerung
- Speichermöglichkeiten
- Läden
- Struktur
- Studie
- Fach
- Erfolg
- erfolgreich
- sicher
- nachhaltiger
- schaltet
- Symbol
- Systeme und Techniken
- Nehmen
- gemacht
- nimmt
- Target
- Aufgabe
- und Aufgaben
- Team
- Teams
- erzählt
- Vorlagen
- Terraform
- Text
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- Die Quelle
- ihr
- dann
- Diese
- vom Nutzer definierten
- fehlen uns die Worte.
- Durch
- zu
- Zeichen
- Werkzeug
- Werkzeuge
- Top
- Thema
- Transformation
- auslösen
- was immer dies auch sein sollte.
- XNUMX
- tippe
- zugrunde liegen,
- Aktualisierung
- auf
- -
- benutzt
- Mitglied
- Benutzerschnittstelle
- verwendet
- Verwendung von
- wertvoll
- Wert
- Variable
- verschiedene
- Version
- lebendig
- Assistent
- Spaziergang
- Walkthrough
- wurde
- we
- Netz
- Web-Services
- GUT
- Was
- wann
- welche
- ganze
- deren
- warum
- weit verbreitet
- werden wir
- mit
- gearbeitet
- Arbeitsablauf.
- Workflows
- arbeiten,
- Jahr
- U
- Ihr
- Zephyrnet