To jest gościnny post na blogu, którego współautorem są Patrick Oberherr z Contentful i Johannes Günther z Netlight Consulting.
W tym wpisie na blogu pokazano, jak poprawić bezpieczeństwo w architekturze potoku danych opartej na Przepływy pracy zarządzane przez Amazon dla Apache Airflow (Amazon MWAA) i Usługa Amazon Elastic Kubernetes (Amazon EKS) ustawiając szczegółowe uprawnienia, używając Terraforma HashiCorp dla infrastruktury jako kod.
Wielu klientów AWS korzysta z Amazon EKS do wykonywania swoich zadań związanych z danymi. Zalety Amazon EKS obejmują różne opcje obliczeń i przechowywania w zależności od potrzeb w zakresie obciążenia, większe wykorzystanie zasobów poprzez współdzielenie podstawowej infrastruktury oraz tętniącą życiem społeczność open source, która zapewnia specjalnie zaprojektowane rozszerzenia. The Dane na temat EKS-u Project udostępnia szereg szablonów i innych zasobów, które pomogą klientom rozpocząć tę podróż. Zawiera opis użytkowania Amazon MWAA jako narzędzie do planowania zadań.
Zadowolony jest klientem AWS i partnerem AWS Partner Network (APN). Za kulisami produktu Software-as-a-Service (SaaS), platformy treści Contentful Composable Content, firma Contentful wykorzystuje wnioski z danych w celu usprawnienia procesu podejmowania decyzji biznesowych i obsługi klienta. Treść zaangażowana Światło sieciowe, partnera konsultingowego APN, o pomoc w skonfigurowaniu platformy danych umożliwiającej gromadzenie tych spostrzeżeń.
Większość obciążeń aplikacji Contentful działa na Amazon EKS, a wiedza na temat tej usługi i Kubernetesa jest powszechna w organizacji. Dlatego zespół inżynierii danych Contentful zdecydował się uruchomić potoki danych również na Amazon EKS. Dla pracy szeregowaniezaczęli od samodzielnego Apache Airflow w klastrze Amazon EKS, a później przeszli na Amazon MWAA, aby zmniejszyć koszty prac inżynieryjnych i operacyjnych. Praca egzekucja pozostał na Amazon EKS.
Contentful uruchamia złożony potok danych przy użyciu tej infrastruktury, w tym pozyskiwania danych z wielu źródeł i różnych zadań transformacji, na przykład przy użyciu dbt. Cały rurociąg korzysta z jednego środowiska Amazon MWAA i jednego klastra Amazon EKS. Przy zróżnicowanym zestawie obciążeń w jednym środowisku konieczne jest zastosowanie zasada najmniejszego przywileju, zapewniając, że poszczególne zadania lub komponenty mają tylko określone uprawnienia potrzebne do działania.
Segmentując uprawnienia według ról i obowiązków, zespół inżynierii danych firmy Contentful był w stanie stworzyć solidniejsze i bezpieczniejsze środowisko przetwarzania danych, które jest niezbędne do utrzymania integralności i poufności przetwarzanych danych.
W tym poście na blogu opisujemy konfigurowanie infrastruktury od podstaw i wdrażanie przykładowej aplikacji przy użyciu Terraform, wybranego przez firmę Contentful narzędzia do obsługi infrastruktury w postaci kodu.
Wymagania wstępne
Aby móc śledzić ten wpis na blogu, musisz mieć zainstalowaną najnowszą wersję następujących narzędzi:
Przegląd
W tym poście na blogu utworzysz przykładową aplikację z następującą infrastrukturą:
Przykładowy przepływ pracy Airflow wyświetla listę obiektów w zasobniku źródłowym i tymczasowo przechowuje tę listę za pomocą XCom przepływu powietrzai zapisuje listę jako plik w zasobniku docelowym. Ta aplikacja jest uruchamiana przy użyciu kapsuł Amazon EKS zaplanowanych przez środowisko Amazon MWAA. Wdrażasz klaster EKS i środowisko MWAA w pliku wirtualna chmura prywatna (VPC) i zastosuj uprawnienia o najniższych uprawnieniach do kapsuł EKS przy użyciu Role uprawnień dla kont usługi. Zasobnik konfiguracji dla Amazon MWAA zawiera wymagania dotyczące środowiska wykonawczego, a także kod aplikacji określający plik Wykres acykliczny ukierunkowany na przepływ powietrza (DAG).
Zainicjuj projekt i utwórz segmenty
Utwórz plik main.tf
z następującą zawartością w pustym katalogu:
Ten plik definiuje Dostawca Terraform AWS a także segment źródłowy i docelowy, których nazwy są eksportowane jako Parametry Menedżera Systemów AWS. Mówi także Terraformowi, aby przesłał pusty obiekt o nazwie dummy.txt
do zasobnika źródłowego, dzięki czemu przykładowa aplikacja Airflow, którą utworzymy później, otrzyma wynik podczas wyświetlania zawartości zasobnika.
Zainicjuj projekt Terraform i pobierz zależności modułów, wydając następujące polecenie:
Utwórz infrastrukturę:
Terraform poprosi Cię o potwierdzenie zmian w środowisku, a następnie rozpocznie wdrażanie zasobów w AWS. Po pomyślnym wdrożeniu powinien zostać wyświetlony następujący komunikat o powodzeniu:
Utwórz VPC
Utwórz nowy plik vpc.tf
w tym samym katalogu co main.tf
i wstawić, co następuje:
Ten plik definiuje VPC, sieć wirtualną, która będzie później hostować klaster Amazon EKS i środowisko Amazon MWAA. Pamiętaj, że używamy Przede wszystkim system został opracowany Terraform moduł w tym celu obejmuje konfigurację podstawowych zasobów sieciowych, takich jak podsieci, tablice tras, bramki NAT.
Pobierz moduł VPC:
Wdróż nowe zasoby:
Zwróć uwagę, które zasoby są tworzone. Dzięki zastosowaniu modułu VPC w naszym pliku Terraform znaczna część podstawowej złożoności zostaje wyeliminowana podczas definiowania naszej infrastruktury, ale nadal warto wiedzieć, co dokładnie jest wdrażane.
Zauważ, że Terraform obsługuje teraz zasoby, które zdefiniowaliśmy w obu plikach, main.tf
i vpc.tf
, ponieważ Terraform obejmuje wszystko .tf
pliki w bieżącym katalogu roboczym.
Utwórz środowisko Amazon MWAA
Utwórz nowy plik mwaa.tf
i wstaw następującą treść:
Podobnie jak poprzednio, używamy an istniejący moduł aby zaoszczędzić wysiłek konfiguracyjny dla środowiska Amazon MWAA. Moduł tworzy także zasobnik konfiguracyjny, którego używamy do określenia zależność środowiska uruchomieniowego aplikacji (apache-airflow-cncf-kubernetes) w requirements.txt
plik. Ten pakiet w połączeniu z pakietem preinstalowanym apache-airflow-amazon, umożliwia interakcję z Amazon EKS.
Pobierz moduł MWAA:
Wdróż nowe zasoby:
Wykonanie tej operacji zajmuje 20–30 minut.
Utwórz klaster Amazon EKS
Utwórz plik eks.tf
o następującej treści:
Aby utworzyć sam klaster, korzystamy z Plany Amazon EKS dla Terraform projekt. Definiujemy również zarządzaną grupę węzłów z jednym węzłem jako rozmiarem docelowym. Należy pamiętać, że w przypadku zmiennego obciążenia skalowanie klastra za pomocą Stolarz zamiast pokazanego powyżej podejścia do zarządzanej grupy węzłów, skalowanie klastra jest bardziej elastyczne. Użyliśmy zarządzanych grup węzłów przede wszystkim ze względu na łatwość konfiguracji.
Definiujemy tożsamość, którą Rola egzekucyjna Amazon MWAA zakłada w Kubernetes przy użyciu map_roles
zmienny. Po skonfigurowaniu Dostawca Terraform Kubernetes, nadajemy roli wykonawczej Amazon MWAA uprawnienia do zarządzania podami w klastrze.
Pobierz moduł EKS Blueprints for Terraform:
Wdróż nowe zasoby:
Wykonanie tej operacji zajmuje około 12 minut.
Utwórz role uprawnień dla kont usług
Utwórz plik roles.tf
o następującej treści:
Ten plik definiuje dwa konta usługi Kubernetes, source-bucket-reader-sa
i destination-bucket-writer-sa
i ich uprawnienia w stosunku do interfejsu API AWS, przy użyciu ról IAM dla kont usług (IRSA). Ponownie używamy modułu z projektu Amazon EKS Blueprints for Terraform, aby uprościć konfigurację IRSA. Należy pamiętać, że obie role otrzymują tylko minimalne uprawnienia, których potrzebują, zdefiniowane za pomocą Zasady uprawnień AWS.
Pobierz nowy moduł:
Wdróż nowe zasoby:
Utwórz DAG
Utwórz plik dag.py
zdefiniowanie DAG przepływu powietrza:
Zdefiniowano, że DAG działa według harmonogramu godzinowego i obejmuje dwa zadania read_bucket
z kontem serwisowym source-bucket-reader-sa
i write_bucket
z kontem serwisowym destination-bucket-writer-sa
, biegając jeden za drugim. Oba są uruchamiane przy użyciu EksPodOperator, który jest odpowiedzialny za planowanie zadań w Amazon EKS, korzystając z Obraz dokera AWS CLI do uruchamiania poleceń. Pierwsze zadanie wyświetla listę plików w zasobniku źródłowym i zapisuje listę do Airflow XCom. Drugie zadanie odczytuje listę z XCom i przechowuje ją w zasobniku docelowym. Należy pamiętać, że service_account_name
Parametr różnicuje, co każde zadanie może zrobić.
Utwórz plik dag.tf
aby przesłać kod DAG do zasobnika konfiguracyjnego Amazon MWAA:
Wdróż zmiany:
Środowisko Amazon MWAA automatycznie importuje plik z segmentu S3.
Uruchom DAG
W przeglądarce przejdź do Konsola Amazon MWAA i wybierz swoje środowisko. W prawym górnym rogu wybierz Otwórz interfejs przepływu powietrza . Powinieneś zobaczyć następujące informacje:
Aby uruchomić DAG, w Akcje kolumnie wybierz symbol odtwarzania, a następnie wybierz Wyzwalaj DAG. Kliknij nazwę DAG, aby zapoznać się z przebiegiem DAG i jego wynikami.
Nawiguj do Konsola Amazon S3 i wybierz segment zaczynający się od „miejsce docelowe”. Powinien zawierać plik list.json
niedawno utworzony przez write_bucket
zadanie. Pobierz plik, aby poznać jego zawartość – listę JSON z jednym wpisem.
Sprzątać
Zasoby utworzone w tym przewodniku wiążą się z kosztami platformy AWS. Aby usunąć utworzone zasoby, wydaj następującą komendę:
I zatwierdź zmiany w oknie dialogowym Terraform CLI.
Wnioski
W tym poście na blogu dowiedziałeś się, jak poprawić bezpieczeństwo potoku danych działającego na Amazon MWAA i Amazon EKS, zawężając uprawnienia każdego pojedynczego zadania.
Aby zagłębić się w temat, skorzystaj z działającego przykładu utworzonego w tym przewodniku i dokładniej zgłębij temat: Co się stanie, jeśli usuniesz plik service_account_name
parametr z zadania Airflow? Co się stanie, jeśli zamienisz nazwy kont usług w obu zadaniach?
Dla uproszczenia w tym przewodniku użyliśmy płaskiej struktury plików z plikami Terraform i Python w jednym katalogu. Nie przestrzegaliśmy standardowa struktura modułu zaproponowane przez Terraform, co jest ogólnie zalecane. W prawdziwym projekcie podzielenie projektu na wiele projektów lub modułów Terraform może również zwiększyć elastyczność, szybkość i niezależność między zespołami posiadającymi różne części infrastruktury.
Na koniec koniecznie przestudiuj Dane na temat EKS-u dokumentacja, która zapewnia inne cenne zasoby do uruchamiania potoku danych na Amazon EKS, a także Amazonka MWAA i Przepływ powietrza Apache dokumentacja do wdrażania własnych przypadków użycia. Konkretnie spójrz na to przykładowa realizacja modułu Terraform dla Amazon MWAA i Amazon EKS, który zawiera bardziej dojrzałe podejście do konfiguracji Amazon EKS i automatycznego skalowania węzłów, a także sieci.
Jeśli masz jakieś pytania, możesz rozpocząć nowy wątek AWS w sprawie:Post lub dotrzeć do Wsparcie AWS.
O autorach
Ulrich Hinze jest architektem rozwiązań w AWS. Współpracuje z firmami zajmującymi się oprogramowaniem przy projektowaniu i wdrażaniu rozwiązań opartych na chmurze na platformie AWS. Przed dołączeniem do AWS pracował dla klientów i partnerów AWS w zakresie inżynierii oprogramowania, konsultingu i architektury przez ponad 8 lat.
Patryka Oberherra jest inżynierem danych w firmie Contentful z ponad 4-letnim doświadczeniem w AWS i ponad 10-letnim doświadczeniem w dziedzinie danych. W Contentful odpowiada za infrastrukturę i działanie stosu danych hostowanego na platformie AWS.
Johannesa Günthera jest konsultantem ds. chmury i danych w Netlight z ponad 5-letnim stażem w AWS. Pomagał klientom z różnych branż w projektowaniu zrównoważonych platform chmurowych i posiada certyfikat AWS.
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- PlatoData.Network Pionowe generatywne AI. Wzmocnij się. Dostęp tutaj.
- PlatoAiStream. Inteligencja Web3. Wiedza wzmocniona. Dostęp tutaj.
- PlatonESG. Węgiel Czysta technologia, Energia, Środowisko, Słoneczny, Gospodarowanie odpadami. Dostęp tutaj.
- Platon Zdrowie. Inteligencja w zakresie biotechnologii i badań klinicznych. Dostęp tutaj.
- Źródło: https://aws.amazon.com/blogs/big-data/set-up-fine-grained-permissions-for-your-data-pipeline-using-mwaa-and-eks/
- :ma
- :Jest
- :nie
- $W GÓRĘ
- 1
- 10
- 100
- 12
- 16
- 2023
- 27
- 41
- 8
- 9
- a
- Zdolny
- O nas
- powyżej
- Stosownie
- Konto
- Konta
- uznać
- w poprzek
- działania
- acykliczny
- w dodatku
- przylegać
- Korzyść
- Zalety
- Po
- ponownie
- przed
- Wszystkie kategorie
- wzdłuż
- również
- Amazonka
- Amazon Web Services
- an
- i
- Inne
- każdy
- Apache
- api
- Zastosowanie
- Aplikuj
- podejście
- Zatwierdzać
- architektura
- SĄ
- AS
- zakłada
- At
- autoryzacja
- automatycznie
- automatycznie
- dostępny
- z dala
- AWS
- Certyfikat AWS
- Klient AWS
- na podstawie
- bo
- zanim
- za
- za kulisami
- jest
- pomiędzy
- Blog
- obie
- przeglądarka
- biznes
- ale
- by
- CAN
- Etui
- Dyplomowani
- zmieniony
- Zmiany
- wybór
- Dodaj
- kliknij
- klientów
- Chmura
- Grupa
- kod
- Kolumna
- połączenie
- społeczność
- Firmy
- kompletny
- kompleks
- kompleksowość
- składniki
- obliczać
- poufność
- systemu
- Konsola
- konsultant
- consulting
- zawierać
- zawiera
- zawartość
- platforma treści
- Corner
- skorygowania
- Koszty:
- Stwórz
- stworzony
- tworzy
- Aktualny
- klient
- doświadczenie klienta
- Klientów
- DZIEŃ
- dane
- inżynier danych
- Platforma danych
- analiza danych
- data i godzina
- postanowiła
- Podejmowanie decyzji
- głębiej
- określić
- zdefiniowane
- Definiuje
- definiowanie
- Zależności
- Zależność
- W zależności
- rozwijać
- wdrażane
- wdrażanie
- Wdrożenie
- opis
- projektowanie
- miejsce przeznaczenia
- zniszczony
- Dialog
- ZROBIŁ
- różne
- skierowany
- nurkować
- inny
- do
- Doker
- dokumentacja
- pobieranie
- rysunek
- każdy
- łatwość
- przegapić
- wysiłek
- pusty
- Umożliwia
- zaangażowany
- inżynier
- Inżynieria
- zapewnienie
- wejście
- Środowisko
- niezbędny
- Eter (ETH)
- dokładnie
- przykład
- wymiana
- wykonać
- wykonany
- egzekucja
- doświadczenie
- odkryj
- rozszerzenia
- fałszywy
- pole
- filet
- Akta
- i terminów, a
- mieszkanie
- Elastyczność
- elastycznie
- obserwuj
- następujący
- W razie zamówieenia projektu
- od
- funkcjonować
- dalej
- zbierać
- ogólnie
- otrzymać
- GitHub
- Dać
- wykres
- Zarządzanie
- Grupy
- Gość
- Blog gościa
- Uchwyty
- dzieje
- Have
- he
- pomoc
- pomógł
- wyższy
- gospodarz
- hostowane
- W jaki sposób
- How To
- HTML
- HTTPS
- IAM
- tożsamość
- if
- wdrożenia
- wykonawczych
- importować
- import
- podnieść
- in
- zawierać
- obejmuje
- Włącznie z
- Zwiększać
- niezależność
- indywidualny
- przemysłowa
- Infrastruktura
- wewnątrz
- spostrzeżenia
- zamiast
- integralność
- wzajemne oddziaływanie
- Interfejs
- najnowszych
- problem
- wydawanie
- IT
- JEGO
- samo
- Praca
- Oferty pracy
- łączący
- podróż
- jpg
- json
- Klawisz
- Uprzejmy
- Wiedzieć
- wiedza
- Kubernetes
- później
- firmy
- dowiedziałem
- najmniej
- lubić
- Lista
- wymienianie kolejno
- wykazy
- załadować
- miejscowy
- zalogowany
- Popatrz
- utrzymanie
- robić
- WYKONUJE
- zarządzanie
- zarządzane
- kierownik
- dojrzały
- Może..
- wiadomość
- Metadane
- minimum
- minuty
- moduł
- Moduły
- jeszcze
- dużo
- wielokrotność
- Nazwa
- O imieniu
- Nazwy
- Nawigacja
- niezbędny
- Potrzebować
- wymagania
- sieć
- sieci
- Nowości
- węzeł
- noty
- już dziś
- przedmiot
- obiekty
- of
- on
- ONE
- tylko
- open source
- działanie
- operacje
- operatorzy
- Opcje
- or
- organizacja
- Inne
- ludzkiej,
- na zewnątrz
- wydajność
- własny
- pakiet
- parametr
- partnerem
- sieć partnerska
- wzmacniacz
- strony
- Łata
- ścieżka
- Patrick
- uprawnienia
- rurociąg
- Platforma
- Platformy
- plato
- Analiza danych Platona
- PlatoDane
- Grać
- pods
- polityka
- portret
- Post
- głównie
- prywatny
- przetwarzanie
- Produkt
- Profil
- projekt
- projektowanie
- zaproponowane
- dostawca
- dostawców
- zapewnia
- Python
- pytania
- RE
- dosięgnąć
- otrzymać
- niedawno
- Zalecana
- zmniejszyć
- region
- usunąć
- wymagania
- Zasób
- utylizacja zasobów
- Zasoby
- obowiązki
- odpowiedzialny
- dalsze
- Efekt
- krzepki
- Rola
- role
- Zasada
- run
- bieganie
- działa
- SaaS
- taki sam
- Zapisz
- Skala
- skalowaniem
- Sceny
- rozkład
- zaplanowane
- szeregowanie
- zadraśnięcie
- druga
- bezpieczne
- bezpieczeństwo
- widzieć
- Serie
- usługa
- Usługi
- zestaw
- ustawienie
- Akcje
- dzielenie
- powinien
- pokazane
- Targi
- prostota
- upraszczać
- pojedynczy
- pojedyncze środowisko
- Rozmiar
- mały
- Tworzenie
- Inżynieria oprogramowania
- Rozwiązania
- Źródło
- Źródła
- specyficzny
- swoiście
- prędkość
- stos
- Personel
- początek
- rozpoczęty
- Startowy
- rozpocznie
- Zestawienie sprzedaży
- Nadal
- przechowywanie
- opcje przechowywania
- sklep
- Struktura
- Badanie
- przedmiot
- sukces
- udany
- pewnie
- zrównoważone
- przełączane
- symbol
- systemy
- Brać
- Zadania
- trwa
- cel
- Zadanie
- zadania
- zespół
- Zespoły
- mówi
- Szablony
- Terraform
- XNUMX
- że
- Połączenia
- Źródło
- ich
- następnie
- Te
- one
- to
- Przez
- do
- żeton
- narzędzie
- narzędzia
- Top
- aktualny
- Transformacja
- wyzwalać
- prawdziwy
- drugiej
- rodzaj
- zasadniczy
- Aktualizacja
- na
- posługiwać się
- używany
- Użytkownik
- Interfejs użytkownika
- zastosowania
- za pomocą
- Cenny
- wartość
- zmienna
- różnorodny
- wersja
- wibrujący
- Wirtualny
- spacer
- solucja
- była
- we
- sieć
- usługi internetowe
- DOBRZE
- Co
- jeśli chodzi o komunikację i motywację
- który
- cały
- którego
- dlaczego
- rozpowszechniony
- będzie
- w
- pracował
- workflow
- przepływów pracy
- pracujący
- lat
- ty
- Twój
- zefirnet