Bezpieczne dane na S3 – the ultimate guide – PART 2

Bezpieczne dane na S3 – the ultimate guide –…

Lukasz Dorosz
Ponad 14 lat w branży IT. Konsultant i architekt projektów Amazon Web Services. Entuzjasta rozwiązań serverless. Współtwórca AWS User Group (3500+ osób). AWS Community HERO. Masz pytanie, napisz do mnie.
Voiced by Amazon Polly

Bezpieczne dane na S3 – to kontynuacja tego o czym pisałem w pierwszej części. Wszystko po to aby pokazać Ci jak bezpiecznie przechowywać dane na S3.



Zostań specjalistą Amazon Web Services!


Pierwszy artykuł omawiał dokładniej mechanizmy kontroli dostępów w Amazon S3 aby bezpiecznie przechowywać dane.

Teraz przyszedł czas na opcje konfiguracji uprawnień i zabezpieczeń, które uniemożliwią publikację danych na S3 do Internetu.

Uprawnienia użytkownika a bezpieczeństwo danych na S3

Pierwszym elementem, który pozwala kontrolować dostęp do konfiguracji S3 to oczywiście uprawnienia użytkownika.

Mam tutaj na myśli, co może zrobić użytkownik po zalogowaniu się do konsoli AWS. W jaki sposób i do jakich usług ma dostęp.

Skupiamy się tutaj na ustawieniach w S3, a nie dostępie do danych, które tam się znajdują.

Jednym z miejsc, gdzie można zdefiniować poziom uprawnień, to oczywiście usługa AWS Identity and Access Management (IAM)

W ramach tej usługi możemy zarządzać użytkownikami oraz definiować uprawniania, które są im przypisane.

W tym wypadku nam zależy, na odpowiednich uprawnieniach użytkownika do konfiguracji S3.

Więcej szczegółów o usłudze AWS IAM możesz dowiedzieć się z mojego ebook’a – 5 Usług Amazon Web Services które warto znać.

Zatem, idąc tym tropem, możemy stworzyć odpowiednią politykę z uprawnieniami, która uniemożliwi użytkownikom zarządzanie konfiguracją Access Control List (ACL), oraz Bucket Policies dla bucket’ów S3.

Poniżej przykład IAM Policy, która blokuje możliwość zarówno podglądu jak i konfiguracji zarówno Bucket Policy jak i ACL.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "s3:PutBucketAcl",
                "s3:PutBucketPolicy",
                "s3:GetBucketAcl",
                "s3:GetBucketPolicy"
            ],
            "Resource": "*"
        }
    ]
}

Tworząc i nakładając na użytkownika taką politykę zabieramy możliwość zmiany uprawnień w S3. Dzięki czemu nie będzie w stanie upublicznić danych.

Próba wejścia w ustawienia np. Access Control List skończy się komunikatem o braku uprawnień.

Bezpieczna dane na S3 i blokowanie dostępu do Access Control Lista

To samo będzie się działo w Bucket Policy, co daje dość dobrą metodą na kontrolę dostępu do danych na S3.

Jeszcze bardziej bezpieczne dane na S3 – opcja „Block Public Access”.

Jakiś czas temu AWS dodał jeszcze jedną opcje w samej usłudze Amazon S3 – Block Public Access.

Parametr ten można skonfigurować w dwóch miejscach:

  • Na poziomie pojedynczego bucket’u S3,
  • Na poziomie globalnych ustawień usługi Amazon S3.

Za każdym razem tworząc nowy bucket S3 możemy ustawić blokowanie (domyślnie jest WŁĄCZONA) konfiguracji ACL i Bucket Policy w trybie Public.

Jak bezpiecznie przechowywać dane na S3 konfiguracja Block Public Access na bucket S3
Blokowanie Public Access przy tworzeniu bucket’u S3

Drugim wariantem jest włącznie tej opcji w ramach całej usługi S3. Pamiętać należy, że w takim wypadku dotyczyć to będzie wszystkich bucketów w ramach konta AWS. 

Może to być korzystne dla tych, którzy chcą spełnić jakiś wymóg np. działu bezpieczeństwa na to aby żadne dane nie były publicznie dostępne.

Jak bezpiecznie przechowywać dane na S3, blokowanie public access na poziomie konta AWS
Blokowanie Public Access na poziomie konta AWS

W tym wypadku mamy pełną gwarancie, że nasze dane są bezpiecznie przechowywane na S3. Blokada ta ma wyższość nad konfiguracja:

  • Ustawień ACL oraz Bucket Policy,
  • Ustawień Public Access na poziomie bucket’ów S3,
  • Oraz uprawnień użytkownika w usłudze IAM.

Zakładam, że zapaliła Ci się teraz jeszcze jedna lampka w głowie…😎

Skoro można zmieniać te parametry, to teraz jak sprawić aby użytkownik nie mógł ich modyfikować?

Wróćmy zatem do uprawnień użytkownika.

Rozszerzę wcześniej pokazaną IAM Policę o elementy, które nie pozwolą na zmianę tych parametrów. 

Do polityki dodam jeszcze dwie akcje: 

  1. s3:PutBucketPublicAccessBlock
  2. s3:PutAccountPublicAccessBlock

Pierwszy nie pozwala na zmianę na poziomie S3 bucket’u, a druga na poziomie konta AWS.

Teraz moja IAM Police’a wygląda tak:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "s3:PutAccountPublicAccessBlock",
                "s3:PutBucketPublicAccessBlock",
                "s3:PutBucketAcl",
                "s3:PutBucketPolicy",
                "s3:GetBucketAcl",
                "s3:GetBucketPolicy"
            ],
            "Resource": "*"
        }
    ]
}

Użytkownik, któremu taka polityka została przypisana nie będzie miał możliwości zmiany parametrów Public Access.

jak bezpiecznie przechowywać dane na s3 blokowana zmiany ustawień Public Access

Czy to wszystko?

Wydawać się może, że już wszystko mamy zabezpieczone. Przygotowaliśmy konfigurację, która blokuje:

  1. Możliwość zmiany konfiguracji Access Control List.
  2. Zmianę konfiguracji Bucket Policy.
  3. Opcje zmiany parametrów mechanizmu blokującego Public Access.

Super Admin a bezpieczeństwo danych na S3

Właśnie, a co z administratorami, którzy mają pełny dostęp do konta AWS.

Przygotowana polityka działa na poziomie IAM Policy. Komukolwiek ją przypiszemy, to zawsze gdzieś jest administrator, który ma pełne uprawnienia. Pytanie czy taki admin wie jak bezpiecznie przechowywać dane na S3?

W szczególnych przypadkach, dla klientów, którzy muszą mieć pewność, że dane na ich koncie są bezpieczne i niedostępne publicznie takie coś może nie wystarczać.

Tak więc, co można jeszcze zrobić?

Tutaj z pomocą może przyjść usługa AWS Organizations. Serwis, ten przeznaczony jest do zarządzania kontami AWS. Sprawdza się tam, gdzie używanych jest więcej kont AWS.

Jedną z funkcjonalności w ramach AWS Organizations są Service Control Policies (SCPs). Polityki te bardzo podobne do tych w IAM, nakładane są na tzw. Organizations Units (OU) lub bezpośrednio na konta AWS.

SCP mają za zadanie zapewnić konfigurację, która jest zgodna z przyjętymi założeniami. Stosuję się w nich jedynie definicje typu Effect: Deny czyli zabraniamy wykonywanie konkretnych akcji.

W ten sposób nakładając SCP na całe konto AWS, zablokujemy wszystkim użytkownikom (nawet tym z full access) wykonywanie zmian, które są w niej opisane.

Planując strukturę kont AWS, można podzielić to tak, że dla systemów, których dane NIGDY nie powinny być wystawiony do internetu będzie stworzone dedykowane konto AWS.

Na takie konto nałożone zostaną polityki SCP, które zagwarantują nam, że konkretne akcje konfiguracyjne zostaną zablokowane. To się może tyczyć oczywiście różnych usług nie tylko S3.

Aby zablokować zmianę parametrów Public Access S3 na poziomie całego konta, wystarczy przypisać w AWS Organizations odpowiednią politykę SCP.

Przykłada takiej polityki:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:PutBucketPublicAccessBlock",
                "s3:PutAccountPublicAccessBlock"
            ],
            "Resource": "*",
            "Effect": "Deny",
            }
        }
    ]
}

Po jej zastosowaniu, nawet użytkownik z pełnymi uprawnieniami nie będzie w stanie zmienić ustawień Public Access.

Podsumowanie

Doszliśmy w ten sposób do końca. Poniższy obrazek podsumowywuje to co pokazałem w obydwu artykułach.

W całokształcie mamy następujące opcje:

  • Na poziomie S3 bucket’u kontrola uprawnień poprzez ACL oraz Bucket Policies. 
  • W ramach usługi Amazon S3 mamy możliwość blokować ustawienia Public Access (w ACL lub Bucket Policy) dla pojedynczego bucket’u lub całego konta AWS.
  • Z wykorzystaniem IAM Policy możemy zabronić dostęp do konfiguracji ACL i Bucket Policies. Dodatkowo możemy zablokować zmianę parametrów Public Access.
  • Jeśli zależy nam na 100% pewności, że nikt nie upubliczni danych, możemy zablokować to na poziomie AWS Organization z wykorzystaniem Service Control Policies.

Kontrolując uprawnienia z wykorzystaniem SCP należy pamiętać o dobrym dokumentowaniu tych polityk. Z poziomu samego konta AWS nie widać co zostało na nie nałożone.

Generuje to potencjalny problem, że osoba nieświadoma tych polityk będzie zmagała się z brakiem dostępu (Access Deny) nie znając dokładnego powodu.

Mimo to zachęcam Cię do stosowanie SCP w sytuacjach, które wymagają ograniczenia pewnych rzeczy na poziome całego konta.

Kończąc już, pokazałem Ci jakie opcje zabezpieczeń są w S3 oraz gdzie i jak je stosować. 

Teraz również Ty możesz bezpiecznie przechowywać dane na S3.

Cheers!



5 USŁUG AWS, KTÓRE WARTO POZNAĆ.