Jak stworzyć politykę AWS IAM za pomocą Terraform

Jak stworzyć politykę AWS IAM za pomocą Terraform
W AWS usługa IAM służy do kontrolowania dostępu do usług i zasobów AWS. Potrzebuje bardzo dogłębnej wiedzy, aby skonfigurować zasady IAM, aby zapewnić minimalne przywileje dla systemów i zasobów AWS.

Zbudowany w celu rozwiązania infrastruktury jako Code (IAC), Terraform obsługuje wielu dostawców usług w chmurze. Jest to narzędzie open source opracowane przez Hashicorp. Korzystając z IAC, możemy zarządzać konfiguracją infrastruktury za pomocą plików konfiguracyjnych. Na przykład możemy wdrażać, aktualizować i zarządzać naszą infrastrukturą, definiując wymagane zasoby.

W tym przewodniku zobaczymy, w jaki sposób możemy utworzyć użytkownika AWS i dołączyć do niego zasady za pomocą Terraform. Zacznijmy najpierw od instalacji Terraform na Ubuntu 20.04.

Instalowanie Terraform

Hashicorp zapewnia oficjalny pakiet Terraform dla Ubuntu/Debian, Centos/Rhel, Fedora i Amazon Linux. Oprócz tego utrzymuje również skompilowane wstępnie binarne i można go również opracować ze źródła. Do tego przewodnika używamy domyślnego pakietu dostarczonego przez repozytorium pakietu Debian, aby zainstalować Terraform na Ubuntu 20.04.

Krok 1. Zainstaluj pakiety GNUPG, oprogramowanie-properties i curl, aby zweryfikować podpis GPG Hashicorp i zainstaluj wymagane repozytorium:

$ sudo apt-get aktualizacja && sudo apt-get install -y gnupg oprogramowanie-properties-common curl

Krok 2. Dodaj klawisz Hashicorp GPG za pomocą polecenia:

$ curl -fssl https: // apt.wydania.Hashicorp.com/gpg | sudo apt-key add -

Krok 3. Kontynuuj, dodając wymagane repozytorium.

$ sudo apt-add-repozytory „deb [arch = amd64] https: // apt.wydania.Hashicorp.com $ (lsb_release -cs) main ”

Krok 4. Uruchom polecenie aktualizacji, aby dodać repozytorium i zainstalować TerraForm.

$ sudo apt-get aktualizacja && sudo apt-get instaluj terraform

Krok 5. Sprawdź, czy Terraform jest zainstalowany przez uruchamianie polecenia:

$ terraform -version

Nasz terraform jest instalowany na naszym komputerze lokalnym, dzięki czemu możemy kontynuować nasze zadanie w pracy z AWS. Jak wspomniano wcześniej, Terraform używa kilku plików konfiguracyjnych do dostarczania zasobów. Każdy z tych plików musi znajdować się w odpowiednim folderze/katalogu roboczym. Utwórzmy katalog w tym celu.

Zrób folder zawierający pliki konfiguracyjne i zmień katalog na ten folder:

$ mkdir linuxhint-terraform && cd Linuxhint-Terraform

1. Tworzenie użytkownika IAM za pomocą Terraform

Mamy teraz tylko jednego użytkownika IAM:

Zrobimy teraz „user_create.tf„Plik, który będzie używany do tworzenia naszego użytkownika„ Demouser ”:

$ nano user_create.tf

Teraz umieść w nim następującą konfigurację:

Terraform
wymagane_providers
AWS =
Źródło = "Hashicorp/AWS"
wersja = "~> 3.27 "


wymagane_wersja = "> = 0.14.9 "

Dostawca „AWS”
region = „US-East-1”
access_key = "your_access_key_for_current_user"
secret_key = "your_secret_key_for_current_user"

Zasób „AWS_IAM_USER” „NEW_USER”
name = "Demouser"

Zasób „AWS_IAM_ACCESS_KEY” „ACCK”
User = AWS_IAM_USER.nowy użytkownik.nazwa

Wyjście „secret_key”
wartość = AWS_IAM_ACCESS_KEY.ACCK.sekret
wrażliwy = prawda

wyjście „Access_Key”
wartość = AWS_IAM_ACCESS_KEY.ACCK.ID

Tworzenie zasady i dołączanie go do użytkownika IAM za pomocą Terraform

Utworzymy listę S3 wszystkich zasad i dołączymy ją do naszego użytkownika IAM. Teraz dołącz powyższy plik do tego kodu:

Zasób „aws_iam_user_policy” „IAM”
name = "test"
User = AWS_IAM_USER.nowy użytkownik.nazwa
Polityka = <
„Wersja”: „2012-10-17”,
"Oświadczenie": [

„Efekt”: „Pozwól”,
„Action”: „S3: ListallMyBuckets”,
„Zasób”: „*”

]

EOF

Ten plik zawiera całą konfigurację do wdrożenia za pomocą Terraform. Wystarczy zastąpić odważny tekst własnymi szczegółami konfiguracji. Zbadajmy każdą z sekcji użytych w powyższym pliku:

  • Terraform - definiuje ustawienia Terraform. „Wymagane dostawcy” definiuje dostawcę do użycia z Terraform, a „źródło” jest opcjonalnym parametrem nazwy hosta, przestrzeni nazw i typu dostawcy. W powyższym kodzie źródło jest zdefiniowane jako 'Hashicorp/AWS ' które podobnie jak wszyscy dostawcy są instalowane z rejestru Terraform. Powyższy dostawca wskazuje 'rejestr.Terraform.IO/HASHICORP/AWS '.

Atrybut wersji definiuje wersję dostawcy, której chcesz użyć.

  • Dostawca - to faktycznie określa, z którą platformą chmurową zamierzasz wchodzić w interakcje (AWS, Azure, GCP itp.). Kontroluje to również region, w którym wdrażasz zasoby i poświadczenia bezpieczeństwa dla użytkownika.
  • Zasób - obejmuje komponenty, które budują infrastrukturę taką jak bazy danych, pamięć, sieć itp. Pierwszy ciąg, tutaj „AWS_Instance”, definiuje typ zasobu, a drugi definiuje niestandardową nazwę, której chcesz użyć. Te dwa łączą się, tworząc unikalny identyfikator zasobu, dla E.G. Tutaj „AWS_IAM_ACCESS_KEY.ACCK.sekret' to identyfikator zasobów (id). W ten sam sposób możemy również dołączyć rozmiary maszyn, nazwy obrazów dysku lub identyfikatory VPC.

Aby zweryfikować lub zweryfikować konfigurację, użyj polecenia:

$ Terraform potwierdza

Inicjowanie katalogu Terraform

Aby pobrać i zainstalować dostawcę, który zdefiniowaliśmy w naszej konfiguracji i innych plikach, musimy zainicjować katalog zawierający ten plik:

$ Terraform init

Jak widać na powyższym zdjęciu, nasze polecenie init jest udane i są tutaj również nowe pliki. Jest też jeszcze jedno polecenie: „Plan Terraform”. Chociaż używanie go nie jest obowiązkowe, ma pewne korzyści. Na przykład.:

1. Możesz zobaczyć, jak Akcje, które Terraform będzie wykonywać.

2. Może wskazywać błędy składniowe w plikach konfiguracyjnych.

Terraform nie wspomina o tym poleceniu w dokumentacji, ponieważ po uruchomieniu polecenia „Terraform”, ten sam plan zostanie ponownie przedstawiony.

Budowanie infrastruktury

Aby zbudować naszą infrastrukturę, użyj polecenia:

$ Terraform Zastosuj

Najpierw wyprowadzi to plan wykonania opisujący zadania, które Terraform wykona, aby wprowadzić stan infrastruktury do tej zdefiniowanej w pliku konfiguracyjnym. Następnie zatrzyma się i poprosi o potwierdzenie planu kontynuowania. Jeśli wszystko jest ustawione zgodnie z pragnieniem, wpisz „tak”, aby kontynuować:

Jeśli jesteś gotowy, wpisz „Tak”. Zauważ, że ukończenie procesu zajmuje trochę czasu. Po zakończeniu tego procesu pojawi się poniższa wiadomość:

Aby wyświetlić poświadczenia bezpieczeństwa, otwórz „Terraform.plik tfstate 'i poszukaj atrybutu wartości pod „secret_key” i „access_key”:

W Twojej konsoli zarządzania IAM AWS użytkownik IAM zostanie tam wymieniony:

Aby sprawdzić, które zasady są dołączone do tego użytkownika IAM, kliknij nazwę użytkownika IAM. Z poniższego zrzutu ekranu widzimy, że lub „Demouser” ma zasadę „testową” załączoną z tym samym uprawnieniem, które dołączyliśmy wcześniej w pliku Terraform.

Weryfikacja polityki

Aby sprawdzić, czy nasza załączona zasada działa zgodnie z oczekiwaniami, połącz się z użytkownikiem IAM i uruchom polecenie:

$ AWS S3 LS

Jeśli wszystko zostało skonfigurowane poprawnie, zobaczysz listę swoich wiader:

Niszczenie zasobów

Po zakończeniu i nie potrzebujesz już utworzonych zasobów AWS, możesz po prostu je usunąć za pomocą polecenia:

$ Terraform niszczy

Wniosek

W tym przewodniku dowiedzieliśmy się o dołączeniu zasady IAM do użytkownika AWS za pomocą Terraform. Możesz także spróbować dołączyć różne zasady do użytkownika lub rolę w ten sam sposób.