Dobre praktyki: zabezpieczenie zasobów usługi Amazon Location

1 kwietnia 2022

Dane lokalizacyjne są szczegółowo analizowane przez ekspertów ds. bezpieczeństwa. Znajomość aktualnej pozycji osoby, pojazdu lub zasobu może zapewnić branżom wiele korzyści, niezależnie od tego, czy można zrozumieć, gdzie znajduje się aktualna dostawa, ile osób znajduje się w obiekcie, czy też zoptymalizować trasy dla floty pojazdów. W tym poście wyjaśniono, w jaki sposób Amazon Web Services (AWS) pomaga chronić dane o lokalizacji podczas przesyłania i w spoczynku oraz w jaki sposób można wykorzystać dodatkowe funkcje zabezpieczeń, aby zapewnić bezpieczeństwo i zgodność informacji.

Ogólne rozporządzenie o ochronie danych (RODO/GDPR) definiuje dane osobowe jako „wszelkie informacje dotyczące zidentyfikowanej lub możliwej do zidentyfikowania osoby fizycznej (…), takie jak imię i nazwisko, numer identyfikacyjny, dane o lokalizacji, identyfikator online lub jeden lub więcej czynników specyficznych - fizyczna, fizjologiczna, genetyczna, psychiczna, ekonomiczna, kulturowa lub społeczna tożsamość tej osoby fizycznej.” Ponadto wiele firm chce poprawić przejrzystość dla użytkowników, wyraźnie określając, kiedy dana aplikacja chce nie tylko śledzić ich pozycję i dane, ale także udostępniać te informacje innym aplikacjom i witrynom. Twoja organizacja musi szybko dostosować się do tych zmian, aby zachować bezpieczną pozycję w konkurencyjnym środowisku.

1 czerwca 2021 r. AWS udostępnił klientom usługę Amazon Location Service. Dzięki usłudze Amazon Location możesz tworzyć aplikacje, które udostępniają mapy i punkty szczególne, konwertują adresy ulic na współrzędne geograficzne, obliczają trasy, śledzą zasoby i wywołują działania w oparciu o lokalizację. Usługa umożliwia dostęp do danych o lokalizacji za pomocą narzędzi programistycznych oraz szybsze przenoszenie aplikacji do produkcji dzięki funkcjom monitorowania i zarządzania.

W tym poście pokażemy Ci funkcje, które Amazon Location zapewnia, aby zapewnić bezpieczeństwo Twoich danych, wraz z dobrymi praktykami, których możesz przestrzegać, aby osiągnąć poziom bezpieczeństwa, do którego dąży Twoja organizacja.

Kontrola danych i prawa do danych

Amazon Location opiera się na globalnych zaufanych dostawcach Esri i HERE Technologies, aby dostarczać klientom wysokiej jakości dane lokalizacyjne. Funkcje takie jak mapy, miejsca i trasy są dostarczane przez tych partnerów AWS, dzięki czemu rozwiązania mogą mieć dane, które są nie tylko dokładne, ale także stale aktualizowane.

AWS anonimizuje i szyfruje dane o lokalizacji w spoczynku oraz podczas ich przesyłania do systemów partnerskich. Jednocześnie strony trzecie nie mogą sprzedawać Twoich danych ani wykorzystywać ich do celów reklamowych, zgodnie z warunkami świadczenia usług. Pomaga to chronić poufne informacje, chronić prywatność użytkowników i zmniejszać ryzyko związane ze zgodnością w organizacji. Aby dowiedzieć się więcej, zapoznaj się z dokumentacją dotyczącą bezpieczeństwa i kontroli danych lokalizacyjnych Amazon.

Intergracje

Operacjonalizacja rozwiązań opartych na lokalizacji może być zniechęcająca. Konieczne jest nie tylko zbudowanie rozwiązania, ale także zintegrowanie go z pozostałymi aplikacjami zbudowanymi w AWS. Amazon Location ułatwia ten proces z punktu widzenia bezpieczeństwa, integrując się z usługami, które przyspieszają proces rozwoju, wzmacniając aspekty bezpieczeństwa rozwiązania.

Szyfrowanie

Amazon Location domyślnie używa kluczy należących do AWS, aby automatycznie szyfrować dane umożliwiające identyfikację osób. Klucze AWS owned keys to zbiór kluczy usługi AWS Key Management Service (AWS KMS), których usługa AWS jest właścicielem i którymi zarządza, do użytku na wielu kontach AWS. Chociaż klucze należące do AWS nie znajdują się na Twoim koncie AWS, Amazon Location może użyć powiązanych kluczy należących do AWS, aby chronić zasoby na Twoim koncie.

Jeśli klienci zdecydują się używać własnych kluczy, mogą skorzystać z AWS KMS do przechowywania własnych kluczy szyfrowania i użyć ich do dodania drugiej warstwy szyfrowania do geofencingu i danych śledzenia.

Uwierzytelnianie i autoryzacja

Amazon Location integruje się również z AWS Identity and Access Management (IAM), dzięki czemu możesz używać jego polityk opartych na tożsamości, do określania dozwolonych lub zabronionych działań i zasobów, a także warunków, w których działania są dozwolone lub zabronione w Amazon Location. Ponadto w przypadku akcji, które wymagają nieuwierzytelnionego dostępu, możesz użyć nieuwierzytelnionych ról uprawnień.

Jako rozszerzenie IAM,  Amazon Cognito może być opcją, jeśli potrzebujesz zintegrować swoje rozwiązanie z klientem front-end, który uwierzytelnia użytkowników za pomocą własnego procesu. W takim przypadku możesz użyć Cognito do obsługi uwierzytelniania, autoryzacji i zarządzania użytkownikami. Możesz używać puli nieuwierzytelnionych tożsamości Cognito z usługą Amazon Location jako sposobu na pobieranie przez aplikacje tymczasowych poświadczeń AWS z ograniczonym zakresem. Aby dowiedzieć się więcej o konfigurowaniu Cognito z usługą Amazon Location, zapoznaj się z wpisem Dodaj mapę do swojej strony internetowej za pomocą usługi Amazon Location Service.

Ogranicz zakres nieuwierzytelnionych ról do domeny

Tworząc aplikację, która umożliwia użytkownikom wykonywanie czynności, takich jak pobieranie kafelków mapy, wyszukiwanie interesujących miejsc, aktualizowanie pozycji urządzeń i obliczanie tras bez konieczności ich uwierzytelniania, można skorzystać z ról nieuwierzytelnionych.

W przypadku korzystania z nieuwierzytelnionych ról w celu uzyskania dostępu do zasobów lokalizacji Amazon, można dodać dodatkowy warunek, aby ograniczyć dostęp do zasobów do odnośnika HTTP określonego w politykach. Wartość kontekstu żądania aws:referer jest dostarczana przez obiekt wywołujący w nagłówku HTTP i jest uwzględniana w żądaniu przeglądarki internetowej.

Poniżej znajduje się przykład polityki, która umożliwia dostęp do zasobu Map przy użyciu warunku aws:referer, ale tylko wtedy, gdy żądanie pochodzi z domeny example.com.

{

  "Version": "2012-10-17",

  "Statement": [

    {

      "Sid": "MapsReadOnly",

      "Effect": "Allow",

      "Action": [

        "geo:GetMapStyleDescriptor",

        "geo:GetMapGlyphs",

        "geo:GetMapSprites",

        "geo:GetMapTile"

      ],

      "Resource": "arn:aws:geo:us-west-2:111122223333:map/MyMap",

      "Condition": {

        "StringLike": {

          "aws:Referer": "https://www.example.com/*"

        }

      }

    }

Aby dowiedzieć się więcej o aws:referer i innych warunkach globalnych, zobacz artykuł AWS global condition context keys.

Szyfrowanie trackera i geofence za pomocą kluczy zarządzanych przez klienta za pomocą AWS KMS

Podczas tworzenia zasobów tracker/geofence można użyć symetrycznego klucza zarządzanego przez klienta, aby dodać drugą warstwę szyfrowania do danych geofencingu i śledzenia. Ponieważ masz pełną kontrolę nad tym kluczem, możesz ustanawiać i utrzymywać własne polityki uprawnień IAM, zarządzać rotacją kluczy oraz planować usuwanie kluczy.

Po utworzeniu zasobów za pomocą kluczy zarządzanych przez klienta, geometria stref geofence i wszystkie pozycje powiązane ze śledzonym urządzeniem będą miały dwie warstwy szyfrowania. W kolejnych sekcjach zobaczysz, jak utworzyć klucz i użyć go do zaszyfrowania własnych danych.

Utwórz klucz symetryczny AWS KMS

Najpierw musisz stworzyć politykę klucza, która ograniczy klucz AWS KMS, aby umożliwić dostęp podmiotom upoważnionym do korzystania z lokalizacji Amazon oraz podmiotom upoważnionym do zarządzania kluczem. Aby uzyskać więcej informacji na temat określania uprawnień w politykach, zobacz przewodnik AWS KMS Developer Guide.

Tworzenie key policy

Utwórz plik polityk  JSON, używając następujących polityk jako odniesienia. Ta polityka dotycząca kluczy umożliwia lokalizacji Amazon udzielanie dostępu do Twojego klucza KMS tylko wtedy, gdy jest on wywoływany z Twojego konta AWS. Działa to poprzez połączenie warunków kms:ViaService i kms:CallerAccount . W poniższych politykach zastąp us-west-2 wybranym regionem AWS, a wartość kms:CallerAccount identyfikatorem konta AWS. Dostosuj oświadczenie KMS Key Administrators tak, aby odzwierciedlały faktycznych głównych administratorów kluczy, w tym Ciebie. Szczegółowe informacje na temat korzystania z elementu Principal można znaleźć w dokumentacji elementów polityk AWS JSON.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Amazon Location",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "kms:DescribeKey",
        "kms:CreateGrant"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "geo.us-west-2.amazonaws.com",
          "kms:CallerAccount": "111122223333"
        }
      }
    },
    {
      "Sid": "Allow access for Key Administrators",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/KMSKeyAdmin"
      },
      "Action": [
        "kms:Create*",
        "kms:Describe*",
        "kms:Enable*",
        "kms:List*",
        "kms:Put*",
        "kms:Update*",
        "kms:Revoke*",
        "kms:Disable*",
        "kms:Get*",
        "kms:Delete*",
        "kms:TagResource",
        "kms:UntagResource",
        "kms:ScheduleKeyDeletion",
        "kms:CancelKeyDeletion"
      ],
      "Resource": "*"
    }
  ]
}

W kolejnych krokach użyjesz AWS Command Line Interface (AWS CLI). Upewnij się, że masz zainstalowaną najnowszą wersję, postępując zgodnie z dokumentacją AWS CLI.

Wskazówka: AWS CLI uzna region zdefiniowany jako domyślny podczas etapów konfiguracji, ale możesz zastąpić tę konfigurację, dodając –region <twój region> na końcu każdego wiersza polecenia w poniższym poleceniu. Upewnij się również, że Twój użytkownik ma odpowiednie uprawnienia do wykonywania tych działań.

Tworzenie klucza symetrycznego

Teraz utwórz klucz symetryczny w AWS KMS, uruchamiając polecenie create-key i przekazując plik polityk utworzony w poprzednim kroku.

aws kms create-key –policy file://<your JSON policy file>

Alternatywnie możesz utworzyć klucz symetryczny przy użyciu konsoli AWS KMS z poprzednią polityką kluczy.

Po uruchomieniu polecenia powinieneś zobaczyć następujące dane wyjściowe. Zanotuj wartość KeyId.

{
  "KeyMetadata": {
    "Origin": "AWS_KMS",
    "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
    "Description": "",
    "KeyManager": "CUSTOMER",
    "Enabled": true,
    "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
    "KeyUsage": "ENCRYPT_DECRYPT",
    "KeyState": "Enabled",
    "CreationDate": 1502910355.475,
    "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "AWSAccountId": "111122223333",
    "MultiRegion": false
    "EncryptionAlgorithms": [
      "SYMMETRIC_DEFAULT"
    ],
  }
}

Tworzenie narzędzia Amazon Location tracker i zasobów gromadzenia danych geofence

Aby utworzyć zasób Amazon Location tracker, który wykorzystuje AWS KMS dla drugiej warstwy szyfrowania, uruchom następujące polecenie, przekazując identyfikator klucza z poprzedniego kroku.

aws location \

      create-tracker \

      --tracker-name "MySecureTracker" \

      --kms-key-id "1234abcd-12ab-34cd-56ef-1234567890ab"

Oto dane wyjściowe tego polecenia.

{

    "CreateTime": "2021-07-15T04:54:12.913000+00:00",

    "TrackerArn": "arn:aws:geo:us-west-2:111122223333:tracker/MySecureTracker",

    "TrackerName": "MySecureTracker"

}

Podobnie, aby utworzyć kolekcję geofence za pomocą własnych kluczy symetrycznych KMS, uruchom następujące polecenie, modyfikując również identyfikator klucza.

aws location \

      create-geofence-collection \

      --collection-name "MySecureGeofenceCollection" \

      --kms-key-id "1234abcd-12ab-34cd-56ef-1234567890ab"

Oto dane wyjściowe tego polecenia.

{

    "CreateTime": "2021-07-15T04:54:12.913000+00:00",

    "TrackerArn": "arn:aws:geo:us-west-2:111122223333:geofence-collection/MySecureGeoCollection",

    "TrackerName": "MySecureGeoCollection"

}

Postępując zgodnie z tymi krokami, dodałeś drugą warstwę szyfrowania do swojej kolekcji geofence i tracker.

Dobre praktyki dotyczące retencji danych

Trackery i kolekcje geofence są przechowywane i nigdy nie opuszczają Twojego konta AWS bez Twojej zgody, ale mają różne cykle życia w Amazon Location.

Trackery przechowują pozycje urządzeń i zasobów, które są śledzone w formacie długości/szerokości geograficznej. Pozycje te są przechowywane przez serwis przez 30 dni, zanim zostaną automatycznie usunięte. Jeśli jest to potrzebne do celów historycznych, możesz przenieść te dane do innej warstwy przechowywania danych i zastosować odpowiednie zabezpieczenia oparte na modelu współodpowiedzialności.

Kolekcje Geofence przechowują podane przez Ciebie geometrie, dopóki nie zdecydujesz się na ich usunięcie, dzięki czemu możesz używać szyfrowania za pomocą kluczy zarządzanych przez AWS lub własnych kluczy, aby zachować je tak długo, jak to konieczne.

Sprawdzone metody śledzenia zasobów i przechowywania lokalizacji

Po utworzeniu trackera, możesz rozpocząć wysyłanie aktualizacji lokalizacji, korzystając z zestawów front-end SDKs Amazon Location lub wywołując interfejs BatchUpdateDevicePosition API.

W obu przypadkach musisz podać co najmniej szerokość i długość geograficzną, czas, w którym urządzenie znajdowało się w tej pozycji, oraz unikalny identyfikator urządzenia, który reprezentuje śledzony zasób.

Ochrona identyfikatorów urządzenia

ID urządzenia może być dowolnym wybranym ciągiem, dlatego należy zastosować środki zapobiegające używaniu niektórych identyfikatorów. Oto kilka przykładów tego, czego należy unikać:

  • Imiona i nazwiska
  • Nazwy obiektów
  • Dokumenty, takie jak prawa jazdy czy numery ubezpieczenia społecznego
  • Adresy E-mail
  • Adresy
  • Numery telefonów

Dokładność długości i szerokości geograficznej

Współrzędne szerokości i długości geograficznej wyrażają precyzję w stopniach, przedstawianą jako ułamki dziesiętne, przy czym każde miejsce dziesiętne reprezentuje inną miarę odległości (w przypadku pomiaru na równiku).

Amazon Location obsługuje dokładność do sześciu miejsc po przecinku (0.000001), co odpowiada około 11 cm lub 4,4 cala na równiku. Możesz ograniczyć liczbę miejsc dziesiętnych w parze szerokości i długości geograficznej wysyłanej do modułu śledzącego w oparciu o wymaganą precyzję, zwiększając zasięg lokalizacji i zapewniając dodatkową prywatność użytkownikom.

Rysunek 1 przedstawia parę szerokości i długości geograficznej, z poziomem szczegółowości związanym z miejscami dziesiętnymi.

Rysunek 1: Szczegóły dokładności dziesiętnej geolokalizacji

Rysunek 1: Szczegóły dokładności dziesiętnej geolokalizacji

Filtrowanie pozycji

AWS wprowadził filtrowanie pozycji jako opcję dla trackerów w usłudze Amazon Location, która umożliwia redukcję kosztów i zmniejsza jitter spowodowany niedokładnymi aktualizacjami lokalizacji urządzenia.

  • Filtrowanie DistanceBased ignoruje aktualizacje lokalizacji, w przypadku których urządzenia przemieściły się na odległość mniejszą niż 30 metrów (98,4 stopy).
  • Filtrowanie TimeBasedocenia każdą aktualizację lokalizacji względem połączonych kolekcji stref geofence, ale nie każda aktualizacja lokalizacji jest przechowywana. Jeśli częstotliwość aktualizacji przekracza 30 sekund, dla każdego ID urządzenia jest przechowywana tylko jedna aktualizacja na 30 sekund.
  • Filtrowanie AccuracyBased ignoruje aktualizacje lokalizacji, jeśli przebyta odległość była mniejsza niż zmierzona dokładność zapewniana przez urządzenie.

Korzystając z opcji filtrowania, możesz zmniejszyć liczbę wysyłanych i przechowywanych aktualizacji lokalizacji, zmniejszając w ten sposób dostarczany poziom szczegółowości lokalizacji i zwiększając poziom prywatności.

Logowanie i monitorowanie

Amazon Location integruje się z usługami AWS, które zapewniają obserwowalność niezbędną do spełnienia standardów bezpieczeństwa Twojej organizacji.

Aby rejestrować wszystkie działania podjęte przez użytkowników, role lub usługi AWS, które uzyskują dostęp do Amazon Location, rozważ użycie AWS CloudTrail. CloudTrail zapewnia informacje o tym, kto uzyskuje dostęp do Twoich zasobów, wyszczególniając identyfikator konta, identyfikator główny, źródłowy adres IP, znacznik czasu i inne. Ponadto Amazon CloudWatch pomaga zbierać i analizować metryki związane z zasobami Amazon Location. CloudWatch pozwala również na tworzenie alarmów w oparciu o predefiniowane progi liczby połączeń. Alarmy te mogą tworzyć powiadomienia za pośrednictwem usługi Amazon Simple Notification Service (Amazon SNS), aby automatycznie ostrzegać zespoły odpowiedzialne za badanie nieprawidłowości.

Podsumowanie

Dla firmy AWS, bezpieczeństwo jest priorytetem. W tym przypadku bezpieczeństwo i zgodność są wspólną odpowiedzialnością AWS i klienta, przy czym AWS jest odpowiedzialny za ochronę infrastruktury, która obsługuje wszystkie usługi oferowane w chmurze AWS. Klient przyjmuje na siebie odpowiedzialność za wykonanie wszystkich niezbędnych konfiguracji zabezpieczeń dla rozwiązań, które buduje na infrastrukturze AWS.

W tym poście poznałeś elementy sterujące i bariery ochronne, które Amazon Location zapewnia, aby zapewnić klientom prywatność i ochronę danych. Dowiedziałeś się również o innych mechanizmach, których możesz użyć, aby poprawić swoją postawę bezpieczeństwa.

Rozpocznij tworzenie własnych bezpiecznych rozwiązań geolokalizacyjnych, postępując zgodnie z Amazon Location Developer Guide i dowiedz się więcej o tym, jak usługa radzi sobie z bezpieczeństwem, czytając tematy dotyczące bezpieczeństwa.

źródło:AWS

Case Studies
Referencje

Hostersi zrealizowali usługi konsultingowe z zakresu doboru odpowiedniej bazy danych w Amazon Web Services oraz pomyślnie przeprowadzili migrację bazy danych MySQL do Amazon Aurora. 

Tomasz Ślązok
CTO Landingi
W skrócie o nas
Specjalizujemy się w dostarczaniu rozwiązań IT w obszarach projektowania infrastruktury serwerowej, wdrażania chmury obliczeniowej, opieki administracyjnej i bezpieczeństwa danych.