Paweł Łukasiewicz
2024-05-15
Paweł Łukasiewicz
2024-05-15
Udostępnij Udostępnij Kontakt
Wprowadzenie

DynamoDB używa danych podanych przez użytkownika do uwierzytelniania żądań. Poświadczenia te są wymagane i muszą zawierać uprawnienia do dostępu do zasobów AWS. Uprawnienia te obejmują praktycznie każdy aspekt DynamoDB, aż do drobnych cech wykonywanych operacji czy funkcjonalności.

Rodzaje uprawnień

W tej sekcji omówimy różne rodzaje uprawnień i dostępu do zasobów w DynamoDB. Pierwszy z nich to uwierzytelnianie użytkowników.

Uwierzytelnianie użytkowników

Podczas rejestracji podaliśmy hasło oraz adres e-mail, które służą jako dane uwierzytelniające typu root. DynamoDB kojarzy te dane z Twoim kontem AWS i używa ich do udzielenia pełnego dostępu do wszystkich zasobów.

AWS zaleca używanie poświadczeń typu root tylko do tworzenia konta administratora. Dzięki temu możemy potem tworzyć konta użytkowników IAM z mniejszymi uprawnieniami. Użytkownicy Ci, to inne konta tworzone w ramach głównego konta. Ich uprawnienia obejmują dostęp do bezpiecznych stron i pewnie niestandardowe uprawienia takie jak modyfikacja tabeli.

W ramach kont możemy również przydzielić klucze dostępu, które są kolejną opcją dla dodatkowych kont i pozwalając na zarządzanie dostępem. Klucze takie pozwalają np. na integrację z Pulumi, oprogramowaniem za pomocą którego zarządzanie całą infrastrukturą AWS staję się prostsze – wszystko w myśl zasady Infrastructure As a Code.

Administracja

Zasoby AWS pozostają własnością konta. Polityki uprawnień regulują uprawnienia przyznawane do tworzenia lub dostępu do zasobów. Administratorzy wiążą polityki uprawnień z tożsamościami IAM, tj. rolami, grupami, użytkownikami i usługami. Dołączają również uprawnienia do zasobów.

Uprawnienia określają użytkowników, zasoby i akcje.

Operacje i zasoby

Tabele pozostają głównymi zasobami w DynamoDB. Pod-zasoby służą jako dodatkowe zasoby, np. strumienie i indeksy. Zasoby te używają unikalnych nazw, niektóre z nich zostały wymienione poniżej:

Typ ARN (Amazon Resource Name)
Stream arn:aws:dynamodb:region:account-id:table/table-name/stream/stream-label
Index arn:aws:dynamodb:region:account-id:table/table-name/index/index-name
Table arn:aws:dynamodb:region:account-id:table/table-name

Właśność

Właściciel zasobu jest zdefiniowany jako konto AWS, które zdefiniowało zasób lub główne konto podmiotu odpowiedzialnego za uwierzytelnianie żądania podczas tworzenia zasobu. Spójrzcie jak działa to w przypadku DynamoDB:

  • używając poświadczeń root do utworzenia tabeli Twoje konto pozostaje właścicielem zasobu;
  • tworząc konto użytkownika IAM i nadając mu uprawnienia do tworzenia tabeli, Twoje konto pozostaje właścicielem zasobu;
  • tworząc użytkownika IAM i nadając mu, a także każdemu, kto może przejąć tę role, uprawienia do tworzenia tabeli, Twoje konto pozostaje właścicielem zasobów.

Zarządzanie dostępem do zasobów

Zarządzanie dostępem wymaga głównie zwrócenia uwagi na politykę uprawnień opisującą użytkowników i dostęp do zasobów. Polityki są kojarzone z tożsamościami IAM lub zasobami. DynamoDB obsługuje jednak tylko polityki oparte na tożsamości IAM.

Polityki oparte na tożsamościach (IAM) pozwalają na nadawanie uprawnień w następujący sposób:

  • dołączanie uprawnień do użytkowników lub grup;
  • dołączanie uprawnień do ról dla uprawnień między kontami.

Możemy również wyróżnić inne polityki dostępu, które oparte są na zasobach. Zaliczamy do nich polityki pozwalające na dostęp do takich elementów infrastruktury jak S3.

Elementy polityki

Polityki definiują akcje, zasoby i zleceniodawców oraz nadają uprawnienia do wykonywania tych operacji. Musimy pamiętać, że operacje API mogą wymagać uprawnień dla wielu akcji:

  • zasób - identyfikowany przez unikalny ARN;
  • akcja - słowa kluczowe identyfikują te operacje na zasobach oraz to czy pozwolić (allow) czy zabronić (deny) dostępu;
  • efekt - określa efekt dla użytkownika żądającego wykonania akcji, tj. zezwolenie lub odmowa, przy czym odmowa jest domyśla;
  • principal - identyfikuje użytkownika przypisanego do polityki.

Warunki

Przy przyznawaniu uprawnień można określić warunki, kiedy polityki stają się aktywne, np. w określonym dniu. Warunki możemy wyrażać za pomocą kluczy warunków, które obejmują klucze systemowe AWS i klucze DynamoDB.

Uprawnienia konsoli

Użytkownik wymaga pewnych podstawowych uprawnień, aby korzystać z konsoli. Wymagane są również uprawnienia do konsoli w innych standardowych usługach takich jak np. CloudWatch, zarządzanie tożsamością i dostępem, usługa powiadomień czy funkcja Lambda.

Jeśli polityka IAM okaże się zbyt ograniczona to użytkownik nie będzie mógł korzystać z konsoli. Nie trzeba się również martwić o uprawnienia użytkowników dla osób jedynie korzystających z CLI lub API.

Powszechnie używane polityki IAM

AWS pokrywa powszechne operacje w uprawnieniach za pomocą samodzielnych polityk zarządzanych przez IAM. Zapewniają one klucze uprawnienia pozwalające na uniknięcie głębokiej analizy tego co musimy przyznać któremu użytkownikowi:

  • AmazonDynamoDBReadOnlyAccess - daje dostęp tylko do odczytu za pośrednictwem konsoli;
  • AmazonDynamoDBFullAccess - daje pełny dostęp za pośrednictwem konsoli;
  • AmazonDynamoDBFullAccesswithDataPipeline - daje pełny dostęp przez konsolę i pozwala na eksport/import za pomocą Data Pipeline (jest to eksport/import danych do/z tabeli, pliku czy z S3).
Możemy oczywiście tworzyć niestandardowe polityki.