Jak uzyskać dostęp do sekretów API za pomocą AWS Lambda?

Jak Uzyskac Dostep Do Sekretow Api Za Pomoca Aws Lambda



Najlepsze praktyki usług AWS obejmują dwa działania, tj. Store-Retrieve i Audit-Rotate. Łącząc te dwie praktyki w jedną, AWS uruchomił Secret Manager, który pomaga użytkownikowi chronić tajne informacje dotyczące ich aplikacji. AWS Secret Manager jest szeroko stosowany do tworzenia, przechowywanie , modyfikowanie , replikowanie oraz rotacyjne dane uwierzytelniające bazy danych, klucze API, tokeny OAuth itp.

Szybki zarys

W tym artykule omówiono następujące aspekty:

Co to jest Lambda AWS?

AWS Lambda to usługa obliczeniowa umożliwiająca wykonywanie kodów w wielu środowiskach i językach bez udostępniania serwerów i zarządzania nimi. Co więcej, AWS Lambda może być uruchamiany przez wiele różnych usług AWS, takich jak wiadro S3, bramy API itp. Usługa ta automatycznie skaluje aplikację i wydajnie wykonuje kod bez konieczności instalowania przez użytkownika jakichkolwiek dodatkowych zależności.







Aby dowiedzieć się więcej o usłudze Lambda, zapoznaj się z tym artykułem tutaj: „Pierwsze kroki z AWS Lambda” .



Co to jest tajny menedżer AWS?

AWS Secret Manager umożliwia użytkownikom zabezpieczanie i szyfrowanie poufna informacja aplikacji, takich jak tokeny OAuth, dane uwierzytelniające bazy danych, interfejsy API itp. Te poufne informacje nazywane są 'sekret' . Dostęp do tych tajemnic mają wyłącznie upoważnione organy i można je zmieniać w celu zwiększenia bezpieczeństwa.



Dowiedz się więcej o przechowywaniu poświadczeń RDS w Secret Manager, odwołując się do tego artykułu: „Jak przechowywać dane uwierzytelniające Amazon RDS za pomocą Menedżera tajnych danych?”





Jak uzyskać dostęp do sekretów API w AWS przy użyciu AWS Lambda?

Lambda zapewnia wbudowaną obsługę wielu usług m.in. Wiadro S3, brama API i menedżer tajnych obiektów. Funkcji Lambda można użyć do uzyskania wartości skonfigurowanych sekretów. Korzystając z sekretów API w AWS Lambda Functions, użytkownicy mogą wchodzić w interakcję z wieloma usługami AWS. Takie sekrety API są również ważne przy autoryzacji funkcji lambda.

Aby uzyskać dostęp do kluczy API w AWS Secret Manager przy użyciu AWS Lambda, wykonaj poniższe kroki:



  • Krok 1: Utwórz sekret API
  • Krok 2: Utwórz politykę uprawnień
  • Krok 3: Utwórz rolę IAM
  • Krok 4: Utwórz rolę Lambda

Krok 1: Utwórz sekret API

Zanim uzyskamy dostęp do klucza API w AWS Secret Manager, najpierw się tego nauczymy utwórz sekret API . W tym celu należy uzyskać dostęp do „Sekretny menadżer” obsługa od Konsola zarządzania AWS:

Na Konsola główna Menedżera sekretów AWS, kliknij przycisk „Przechowuj nowy sekret” przycisk:

w „Sekretny typ” blok, wybierz „Inny rodzaj tajemnicy” opcję spośród różnych wyświetlanych opcji:

Przewiń w dół do „Pary klucz/wartość” sekcję i podaj a unikalna para klucz-wartość dla Twojego sekretu API. Do dodać więcej pary klucz-wartość , Kliknij na „Dodaj wiersz” przycisk:

Następny jest „Klucz szyfrujący” Sekcja. AWS zapewnia domyślny klucz szyfrowania dla sekretu. Jednakże użytkownik może również podać niestandardową nazwę klucza. Zachowując ustawienie domyślne, kliknij przycisk „ Następny ' przycisk:

W tym interfejsie użytkownik musi podać plik unikalna nazwa za ich tajemnicę i a opis, który jest opcjonalny pole tutaj:

Zachowując ustawienia bez zmian , przejdź dalej klikając na „ Następny ' przycisk:

Następny jest Sekcja recenzji. Aby potwierdzić wszystkie Informacja pod warunkiem, że jest prawidłowy , Kliknij na ' Sklep ” znajdujący się na dole interfejsu:

Sekret tkwił pomyślnie utworzony . Kliknij na ' Przeładować ”, aby wyświetlić nazwę sekretu na ekranie Panel :

Krok 2: Utwórz politykę uprawnień

Do stworzyć politykę uprawnień, Uzyskać dostęp do Usługa IAM z konsoli zarządzania AWS:

Z pasek boczny IAM usługi, kliknij „ Zasady ' opcja:

Na Konsola zasad , Kliknij na „Utwórz politykę” przycisk:

Dowiedz się więcej o zasadach uprawnień AWS, korzystając z tego artykułu: „Przykłady zasad uprawnień AWS”

Następny jest „Określ uprawnienia” Sekcja. Wyszukaj i wybierz „Sekretny menadżer” praca:

Przewiń w dół do „Działania dozwolone” blok. Tutaj, na różnych poziomach dostępu, dotknij „ Czytać ' opcja. Wybierz „Wszystkie akcje odczytu” opcja włącz wszystkie odczyty usługi związane z tą polisą:

Przewiń w dół do ' Zasoby ” i kliknij przycisk „Dodaj ARN” opcja:

Przejdź z powrotem do Pulpit menedżera tajnych aplikacji AWS i kliknij nazwę sekretu. Skopiuj „ RNA ”tajemnicy znajdującej się pod „ Tajny ARN ” z wyświetlonego interfejsu:

Na Konsola teraz , wklej skopiowany ARN w „ RNA ' pole:

Przed kliknięciem na „Dodaj ARN” przycisk, kliknij przycisk 'To konto' przycisk, aby potwierdzić, że sekrety znajdują się na tym samym koncie. Po skonfigurowaniu ustawień kliknij przycisk „Dodaj ARN” przycisk:

Po konfigurowanie wszystkie ustawienia polityki, kliknij „ Następny ' przycisk:

w Sekcje zawierające szczegółowe informacje o zasadach , podaj nazwę polisy w polu „ Nazwa polityki ' pole:

Kliknij na ' Utwórz politykę ' przycisk:

The polityka został stworzony z powodzeniem :

Krok 3: Utwórz rolę IAM

W tej sekcji utwórz rolę IAM zawierającą wymagane uprawnienia funkcji Lambda w celu uzyskania dostępu do wpisów tajnych. W tym celu kliknij przycisk „ Role ” na pasku bocznym roli IAM, a następnie dotknij opcji „Utwórz rolę” przycisk z interfejsu:

Po kliknięciu na „Utwórz rolę” przycisk, wyświetli się następujący interfejs. Wybierz „Usługa AWS” opcję spośród następujących opcji, ponieważ będziemy to dołączać Rola JA z funkcją lambda:

w 'Przypadek użycia' sekcję, przeszukaj Serwis Lambdy i wybierz to. Uderz w ' Następny ” na dole interfejsu, aby przejść dalej:

Na następny interfejs , wyszukaj nazwę Nazwa polityki które skonfigurowaliśmy wcześniej. Z wyświetlonych wyników wybierz nazwa zasady:

Kliknij ' Następny przycisk ” na dole interfejs, aby kontynuować:

Podaj A unikalny identyfikator dla Twojego Rola JA w następującym podświetlonym polu:

Utrzymanie reszta ustawień jako domyślna , Kliknij na „Utwórz rolę” przycisk, przewijając w dół interfejsu:

Rola była z powodzeniem Utworzony:

Aby dowiedzieć się więcej na temat tworzenia roli IAM w AWS, zapoznaj się z tym artykułem: „Jak utworzyć role IAM w AWS” .

Krok 4: Utwórz funkcję Lambda

Następnym krokiem jest utworzenie funkcji Lambda. Ta funkcja lambda będzie zawierać rolę IAM i po wykonaniu uzyska wartość kluczy tajnych. Aby uzyskać dostęp do usługi Lambda, wyszukaj „ lambda ” w pasku wyszukiwania Konsola zarządzania AWS . Kliknij nazwę usługi w wynikach, aby przejść do konsoli:

W początkowym interfejsie usługi Lambda kliknij przycisk „Utwórz funkcję” przycisk:

Spowoduje to wyświetlenie „Utwórz funkcję” interfejs. Wybierz „Autor od zera” opcję i przejdź dalej, podając nazwę dla Funkcja Lambdy w podświetlonym polu:

w Pole czasu wykonania , Wybierz ' Pythona 3.9 ' środowisko:

Poniżej Sekcja czasu wykonawczego , tam jest „Zmień domyślną rolę wykonawczą” Sekcja. Wybierz „Użyj istniejącej roli” opcję, a następnie określ rolę w pliku „Istniejąca rola” pole:

W tym samym interfejsie dotknij „Utwórz funkcję” przycisk na dole interfejsu:

Aby dowiedzieć się więcej na temat tworzenia funkcji Lambda, zapoznaj się z tym artykułem: „Jak utworzyć funkcję lambda w środowisku wykonawczym Pythona” .

Funkcja Lambda została utworzona. Kolejnym krokiem jest podanie kodu do funkcji Lambda. Kiedy ten kod zostanie wykonany, wyświetli wartości Tajny menedżer:

import json
import boto3
import baza64
z botocore'a. wyjątki import Błąd klienta

def lambda_handler ( wydarzenie , kontekst ) :
środowisko = wydarzenie [ „środowisko” ]
nazwa_sekretu = „shmaster19/%s/klawisz” % środowisko
nazwa_regionu = „ap-południowy wschód-1”

sesja = boto3. sesja . Sesja ( )
klient = sesja. klient (
Nazwa serwisu = „zarządca tajemnic” ,
nazwa_regionu = nazwa_regionu
)

próbować :
sekretna_wartość_odpowiedzi = klient. get_secret_value (
Sekretny identyfikator = nazwa_sekretu
)
z wyjątkiem ClientError jako błędu :
wydrukować ( błąd )
w przeciwnym razie :
Jeśli „Sekretny ciąg” W sekretna_wartość_odpowiedzi :
sekret = json. masa ( sekretna_wartość_odpowiedzi [ „Sekretny ciąg” ] )
powrót sekret
w przeciwnym razie :
dekodowany_sekret_binarny = baza64. dekodowanie b64 ( sekretna_wartość_odpowiedzi [ „Sekretny plik binarny” ] )
powrót dekodowany_sekret_binarny
  • importuj jsona: używany do wykonywania operacji JSON.
  • importuj boto3: to SDK do komunikacji pomiędzy AWS i Pythonem.
  • importuj base64: Służy do wykonywania funkcji kodowania i dekodowania danych binarnych jako Base64.
  • importuj błąd klienta: Umożliwia to użytkownikom obsługę wyjątków w pisanym kodzie.
  • nazwa_sekretu: W tej zmiennej podaj nazwę swojego sekretu. Zauważ, że ten sekret zawiera '%S' . Dzieje się tak, gdy użytkownik ma wiele kluczy o podobnym formacie. Na przykład, jeśli użytkownik utworzył dwa sekrety, np. „apikey/programista/klucz” I „apikey/produkt/klucz” . Następnie w '%S' , jeśli użytkownik poda „ rozw ”, funkcja Lambda zapewni klucz rozwoju (apikey/dev/key) i odwrotnie.
  • boto. sesja.Sesja(): umożliwia użytkownikom tworzenie klientów usług i odpowiedzi.
  • nazwa_regionu: Podaj nazwę regionu, w którym skonfigurowany jest klucz tajny AWS.
  • Odpowiedź na tajną wartość: W tej zmiennej używamy „ klient.get_secret_value ” funkcja, która zwróci wartość sekretu.
  • Decoded_binary_secert: Po uzyskaniu wartości sekretu zostanie on dalej rozszyfrowany formacie podstawowym 64 .

Po wklejeniu kodu do funkcji Lambda kliknij przycisk „ Wdrożyć ”, aby zapisać i zastosować zmiany:

Krok 5: Testowanie kodu

W tej części bloga sprawdzimy, czy kod działa, czy nie. W tym celu kliknij przycisk „ Test ” po pomyślnym wdrożeniu zmian w funkcji Lambda:

W następnym interfejsie podaj plik nazwa testu wydarzenie w 'Nazwa wydarzenia' pole:

Przewiń w dół do Sekcja zdarzenia JSON , określić ' śr ” i podaj wartość w formacie JSON. „ wartość ” klucza zostanie przekazany do '%S' . Ponieważ określone przez nas tajemnice zawierają „ rozw wartość, „ rozw ” wartość jest przekazywana do „ śr ' zmienny. Funkcja Lambda zidentyfikuje sekret podczas wykonywania kodu, ponieważ w kodzie podany jest identyfikator konkretnego sekretu. Po określeniu szczegółów kliknij przycisk „ Ratować ' przycisk:

Po pomyślnym utworzeniu wydarzenia kliknij przycisk „ Test ' przycisk:

Mamy tutaj pomyślnie uzyskane wartość naszego określonego sekretu:

To wszystko z tego przewodnika.

Wniosek

Aby uzyskać dostęp do kluczy API w Secret Manager przy użyciu Lambda, najpierw utwórz sekret API, zasady IAM, rolę i funkcję Lambda, a następnie wykonaj kod funkcji. Funkcje Lambda można wywołać w celu uzyskania wartości Menedżera sekretów AWS, podając identyfikator sekretu podczas wykonywania kodu. W tym artykule znajdują się wskazówki krok po kroku dotyczące uzyskiwania dostępu do kluczy API w AWS Secret Manager przy użyciu AWS Lambda.