Zacznij od precyzyjnej kontroli dostępu w Amazon Elasticsearch Service
Usługa Amazon Elasticsearch Service (Amazon ES) zapewnia precyzyjną kontrolę dostępu, dostarczaną przez dodatek Open Distro for Elasticsearch security plugin. Wtyczka ta dodaje uwierzytelnienie dla Kibana oraz kontrolę dostępu na poziomie klastra, indeksu, dokumentu i pola, które mogą pomóc w zabezpieczeniu danych. Obecnie istnieje wiele różnych sposobów na skonfigurowanie domeny Amazon ES, aby zapewnić kontrolę dostępu. Artykuł ten oferuje podstawowe informacje o konfiguracji, którą mogą pomóc w rozpoczęciu używania usługi.
Rysunek 1 zawiera szczegółowe informacje na temat uwierzytelniania i kontroli dostępu w Amazon ES. Lewa połowa wykresu przedstawia szczegółowo różne metody uwierzytelniania. Patrząc poziomo, żądania pochodzą albo z Kibany, albo bezpośrednio z REST API. Podczas korzystania z Kibany można użyć ekranu logowania dostarczonego przez wtyczkę Open Distro, dostawcę tożsamości SAML lub Amazon Cognito.
Każda z tych metod prowadzi do uzyskania uwierzytelnionej tożsamości: dostawcy SAML poprzez odpowiedź, Amazon Cognito poprzez AWS Identity and Access Management (IAM), oraz Open Distro poprzez wewnętrzny user identity. Kiedy stosowane jest API REST, można użyć podpisu żądania AWS Signature V4 (SigV4 signing), lub uwierzytelnić nazwę użytkownika i hasło. Można również wysyłać nieuwierzytelniony ruch, jednak domena ES powinna być skonfigurowana tak, aby odrzucać cały taki ruch (w ramach dobrej praktyki).
Po prawej stronie schematu znajdują się szczegóły dotyczące punktów kontroli dostępu. Można rozważyć obsługę kontroli dostępu w dwóch fazach, aby lepiej to zrozumieć: uwierzytelnianie brzegowe przez IAM i uwierzytelnianie w domenie Amazon ES przez wtyczkę bezpieczeństwa Open Distro.
Po pierwsze, zapytania z Kibany lub bezpośrednie żądania API muszą dotrzeć do endpointu domeny. Jeśli zastosowane zostały dobre praktyki, a domena znajduje się w Amazon Virtual Private Cloud (VPC), można użyć grup bezpieczeństwa Amazon Elastic Compute Cloud (Amazon EC2), aby zezwolić lub uniemożliwić ruch w oparciu o pochodzący adres IP lub grupę bezpieczeństwa instancji Amazon EC2. Dobra praktyka obejmuje uprawnienia least privilege w oparciu o ACL dla podsieci oraz ograniczenia ingress/egress w ramach security groups. W tym artykule założono, że żądania są oczekiwane, spełniają kryteria kontroli dostępu i mogą dotrzeć do domeny.
Gdy żądanie dotrze do endpointu, może być anonimowe lub może zawierać informacje o tożsamości i uwierzytelnieniu, jak opisano wcześniej. Każda domena Amazon ES posiada politykę IAM opartą na zasobach. Dzięki tej polityce można zezwolić lub odmówić ruchu w oparciu o tożsamość IAM dołączoną do żądania. Kiedy polityka określa tożsamość IAM, Amazon ES ocenia żądanie na podstawie dozwolonych Actions w tej polityce i zezwala lub odrzuca żądanie.
Jeśli żądanie nie posiada dołączonej tożsamości IAM (SAML lub nazwa użytkownika i hasło), powinno się pozostawić politykę domeny otwartą i przekazać ruch do mechanizmu kontroli dostępu w Amazon ES. Powinno się jednakże stosować IAM security best practices i dodać dodatkowe ograniczenia IAM do Amazon ES po utworzeniu domeny.
Rozszerzenie bezpieczeństwa w Open Distro for Elasticsearch posiada własną wewnętrzną bazę użytkowników oraz obsługuje kontrolę dostępu dla wszystkich użytkowników. Kiedy ruch dotrze do klastra Elasticsearch, wtyczka weryfikuje każdą informację o nazwie użytkownika i haśle w wewnętrznej bazie danych, aby zidentyfikować użytkownika i nadać mu odpowiednie uprawnienia. Jeśli żądanie zawiera informacje o tożsamości z roli SAML lub IAM, należy ją zmapować na role lub użytkowników, którzy zostali stworzeni w ramach Open Distro.
W dokumentacjach Amazon ES documentation oraz Open Distro for Elasticsearch documentation można uzyskać więcej szczegółowych informacji na temat wszystkich powyższych punktów. W tym artykule opisane jest podstawowa konfiguracja dla nowej domeny.
Konfiguracja konsoli
Konsola Amazon ES udostępnia kreator, który umożliwia konfigurację i rekonfigurację domeny Amazon ES. Krok 1 oferuje możliwość wyboru kilku predefiniowanych konfiguracji, które są używane przez kreatora. W kroku 2 należy wybrać instancje do wdrożenia w domenie. W kroku 3 należy skonfigurować zabezpieczenia. Ten artykuł skupia się na kroku 3. Warto zobaczyć również tutorial using an IAM master user oraz using an HTTP-authenticated master user.
Uwaga: Z precyzyjnej kontroli dostępu można korzystać z Elasticsearch w wersji 6.8 i nowszej.
Ustawienie punktu końcowego
Amazon ES nadaje nazwę DNS, która rozwiązuje się do adresu IP używanego do wysyłania ruchu do klastra Elasticsearch. Adres IP może znajdować się w przestrzeni publicznych IP lub może być rozwiązywany na adres IP w VPC. Chociaż z precyzyjną kontrolą dostępu istnieje możliwość zabezpieczenia klastra nawet wtedy, gdy punkt końcowy jest publicznym adresem IP, AWS zaleca użycie dostępu VPC jako opcji bardziej bezpiecznej. Pokazane jest to na rysunku 2.
Dzięki punktowi końcowemu w VPC, używać można grup bezpieczeństwa do kontrolowania i ograniczania dostępu do endpointów domeny Amazon ES. Należy pamiętać o zasadzie least privilege podczas konfigurowania dostępu do grup bezpieczeństwa.
Uruchomienie kontroli dostępu fine-grained
Należy włączyć kontrolę dostępu fine-grained. Pokazano to na rysunku 3.
Konfiguracja master user
Dla domeny Amazon ES , master user jest utożsamiany z administratorem. Użytkownik ten może ustawić dodatkowych użytkowników we wtyczce bezpieczeństwa Amazon ES, przypisać im role i uprawnienia do tych ról. Można wybrać nazwę użytkownika i uwierzytelnienie hasłem dla administratora lub użyć tożsamości IAM. Uwierzytelnianie za pomocą nazwy użytkownika i hasła, pokazane na rysunku 4, jest prostsze do skonfigurowania i - z silnym hasłem - może zapewnić wystarczający poziom bezpieczeństwa w zależności od przypadku użycia.
AWS zaleca przestrzeganie zasad swojej organizacji dotyczących długości i złożoności haseł. Jeśli hasło to zostanie zgubione, można wrócić do dashboardu domeny w konsoli AWS Management Console i zresetować je. Dane te będą również używane do zalogowania się do Kibana. Zgodnie z dobrymi praktykami w zakresie wyboru master usera, powinno się korzystać z IAM master user po zakończeniu konfiguracji.
Uwaga: Siła hasła zależy od długości hasła, złożoności znaków (np. dużych i małych liter, cyfr i znaków specjalnych) oraz nieprzewidywalności, która zmniejsza prawdopodobieństwo odgadnięcia lub złamania hasła na przestrzeni czasu.
Kiedy nie należy włączać uwierzytelniania Amazon Cognito
Kiedy używasz Kibany, Amazon ES dostarcza możliwość logowania. Obecnie istnieją trzy możliwości wyboru źródła ekranu logowania:
- Wtyczka bezpieczeństwa Open Distro
- Amazon Cognito
- System zgodny z SAML-em
Można zastosować kontrolę typu fine-grained niezależnie od sposobu logowania. Konfiguracja tej kontroli dostępu dla użytkownika głównego i dodatkowych użytkowników jest jednak najprostsza, jeśli korzysta się z rozwiązań dostarczonych za pomocą wtyczki bezpieczeństwa Open Distro. Po pierwszym logowaniu, a także po skonfigurowaniu dodatkowych użytkowników, należy rozważyć migrację do Cognito lub SAML, aby skorzystać z dodatkowych zabezpieczeń, jakie oferują. Aby umożliwić logowanie od Open Distro, należy wyłączyć autoryzację Amazon Cognito, jak pokazano na rysunku 5.
Jeśli planowana jest integracja z dostawcą usług identyfikacyjnych SAML, należy zaznaczyć pole wyboru Prepare SAML authentication. Konfiguracja zostanie zakończona, gdy domena jest aktywna.
Stosowanie polityki otwartego dostępu
Podczas tworzenia domeny, dołącza się do niej politykę IAM, która kontroluje, czy ruch musi być podpisany za pomocą AWS SigV4 request signing. Polityki wykorzystujące tożsamość IAM wymagają, aby używano podpisu AWS SigV4 do uwierzytelniania żądań. Domena wysyła ruch do IAM, który uwierzytelnia podpisane żądania i przypisuje im użytkownika lub rolę. Domena i IAM stosują zasady kontroli dostępu i albo akceptują ruch albo go odrzucają.
Kiedy używana jest kontrola dostępu fine-grained, ruch jest również uwierzytelniany przez wtyczkę bezpieczeństwa Amazon ES, co sprawia, że uwierzytelnianie IAM jest nadmiarowe. Należy stworzyć zasadę open access, jak pokazano na rysunku 7, która nie określa tożsamości, a więc nie wymaga podpisywania żądąń. Jest to akceptowalne, gdyż można wybrać wymaganie uwierzytelnionej tożsamości dla całego ruchu. Wtyczka bezpieczeństwa uwierzytelnia ruch jak wyżej, zapewniając kontrolę dostępu w oparciu o wewnętrzną bazę danych.
Dane szyfrowane
Amazon ES zapewnia możliwość szyfrowania danych in transit oraz at rest dla dowolnej domeny. Po włączeniu kontroli dostępu fine-grained, należy zastosować szyfrowanie z zaznaczeniem odpowiednich pól wyboru (automatycznie i bez możliwości zmiany). Należą do nich zabezpieczenia Transport Layer Security (TLS) dla zapytań do domeny i dla ruchu między węzłami w domenie oraz szyfrowanie danych at rest za pomocą usługi AWS Key Management Service (KMS). Przedstawiono to na rysunku 8.
Dostęp do Kibana
Po zakończeniu tworzenia domeny w kreatorze, aktywacja trwa około 10 minut. Status można monitorować w konsoli, przechodząc do zakładki Overview w dashboardzie Amazon ES. Gdy Domain Status zmieni się na Active, można otworzyć adres URL Kibany . Jeśli utworzono domenę w VPC, należy umożliwić dostęp do endpointu Kibany przez proxy, VPN, tunel SSH itp. Aby zalogować się do Kibany, jak pokazano na rysunku 9, należy użyć nazwy użytkownika i hasła, które zostały wcześniej skonfigurowane. Jak opisano powyżej, używanie użytkownika master powinno ograniczać się tylko do konfiguracji dodatkowych użytkowników-administratorów, użytkowników z dostępem tylko do odczytu i innych.
Podsumowanie
Gratulacje, dzięki temu artykułowi znasz już podstawowe kroki, aby umożliwić minimalną konfigurację dostępu do domeny Amazon ES za pomocą użytkownika master user. Możesz sprawdzić ustawienia kontroli dostępu w zakładce Security w konsoli Kibany. Tutaj można dodać dodatkowych użytkowników, przypisać im uprawnienia, mapować użytkowników IAM do ról bezpieczeństwa itp.
Źródło: https://aws.amazon.com/blogs/aws/