1. Przegląd
Cloud KMS to hostowana w chmurze usługa zarządzania kluczami, która umożliwia zarządzanie kluczami kryptograficznymi dla usług w chmurze w taki sam sposób jak w przypadku usług lokalnych. Obsługuje szyfrowanie, odszyfrowywanie, podpisywanie i weryfikację przy użyciu różnych typów i źródeł kluczy, w tym Cloud HSM w przypadku kluczy opartych na sprzęcie. Z tego samouczka dowiesz się, jak szyfrować i odszyfrowywać dane za pomocą symetrycznych kluczy Cloud KMS.
You will learn
- Jak włączyć Cloud KMS API
- Jak utworzyć pęk kluczy Cloud KMS
- Jak utworzyć klucz kryptograficzny Cloud KMS do szyfrowania i odszyfrowywania symetrycznego
- Jak obracać symetryczny klucz CryptoKey Cloud KMS
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. (Jeśli nie masz jeszcze konta Gmail lub G Suite, musisz je utworzyć).
Zapamiętaj identyfikator projektu, czyli unikalną nazwę we wszystkich projektach Google Cloud (podana powyżej nazwa jest już zajęta i nie będzie działać w Twoim przypadku). W dalszej części tego laboratorium będzie on nazywany PROJECT_ID.
- Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów Google Cloud.
Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Wykonaj instrukcje z sekcji „Czyszczenie”, w której znajdziesz informacje o tym, jak wyłączyć zasoby, aby uniknąć naliczenia opłat po zakończeniu tego samouczka. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie Cloud Shell
W tym module użyjesz Cloud Shell, czyli bezpłatnego zwirtualizowanego środowiska działającego w Google Cloud. W konsoli GCP kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:
Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:
Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. O ile nie podano inaczej, wszystkie polecenia uruchamiaj w tym shellu.
3. Włączanie usługi Cloud KMS
Zanim zaczniesz korzystać z Cloud KMS, musisz najpierw włączyć tę usługę w projekcie. Wystarczy to zrobić raz w przypadku każdego projektu. Aby włączyć usługę Cloud KMS, uruchom to polecenie:
$ gcloud services enable cloudkms.googleapis.com \
--project "${GOOGLE_CLOUD_PROJECT}"
Włączenie tej opcji może potrwać około minuty. Po zakończeniu polecenie zgłosi powodzenie.
4. Tworzenie klucza KMS
Utwórz pęk kluczy Cloud KMS. W Cloud KMS pęk kluczy to logiczny zbiór kluczy kryptograficznych. Klucznik zawiera metadane kluczy, takie jak ich lokalizacja. Utwórz pęk kluczy o nazwie my-keyring w regionie global:
$ gcloud kms keyrings create "my-keyring" \
--location "global"
Teraz w utworzonym pęku kluczy utwórz klucz kryptograficzny o nazwie my-symmetric-key i przeznaczeniu encryption.
$ gcloud kms keys create "my-symmetric-key" \
--location "global" \
--keyring "my-keyring" \
--purpose "encryption"
5. Szyfrowanie danych
Utwórz plik z danymi do zaszyfrowania i użyj narzędzia wiersza poleceń gcloud, aby zaszyfrować dane w pliku:
$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key" \
--plaintext-file ./data.txt \
--ciphertext-file ./data.txt.enc
Zaszyfrowane dane (zwane też „szyfrogramem”) są zapisywane w data.txt.enc na dysku. Jeśli otworzysz plik data.txt.enc, zauważysz, że zawiera on dziwne, niedrukowalne znaki. Dzieje się tak, ponieważ wynikowe dane są w formacie binarnym.
Podczas przechowywania tekstu zaszyfrowanego w bazie danych lub przesyłania go w ramach żądania HTTP może być konieczne zakodowanie danych. Popularnym mechanizmem kodowania jest base64.
Cloud KMS nie przechowuje żadnego z dostarczonych przez Ciebie tekstów jawnych. Musisz zapisać ten tekst szyfrowany w bezpiecznym miejscu, ponieważ będzie on potrzebny do pobrania wartości w formie tekstu jawnego.
6. Odszyfrowywanie danych
Odszyfruj tekst zaszyfrowany w pliku za pomocą narzędzia wiersza poleceń gcloud:
$ gcloud kms decrypt \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key" \
--plaintext-file - \
--ciphertext-file ./data.txt.enc
Narzędzie wiersza poleceń gcloud odczytuje tekst zaszyfrowany z pliku i odszyfrowuje go za pomocą Cloud KMS. Zwróć uwagę, że w tym przykładzie argument --plaintext-file ma wartość -. To polecenie spowoduje wydrukowanie wyniku w terminalu.gcloud
Konsola wyświetli wartość my-contents, czyli tę samą wartość w postaci zwykłego tekstu z pliku powyżej.
7. Rotacja kluczy
W Cloud KMS klucz kryptograficzny to w rzeczywistości zbiór wersji klucza kryptograficznego. Możesz tworzyć nowe wersje klucza kryptograficznego, aby przeprowadzać rotację klucza. Cloud KMS może też automatycznie wykonywać rotację kluczy zgodnie z harmonogramem.
Aby ręcznie przeprowadzić rotację klucza, utwórz nową wersję klucza kryptograficznego i ustaw ją jako wersję podstawową:
$ gcloud kms keys versions create \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key" \
--primary
Wszystkie przyszłe żądania szyfrowania danych będą korzystać z tego nowego klucza. Starsze klucze są nadal dostępne do odszyfrowywania danych, które zostały wcześniej zaszyfrowane za ich pomocą. Cloud KMS automatycznie określa odpowiedni klucz odszyfrowywania na podstawie podanego tekstu zaszyfrowanego. Nie musisz określać, której wersji klucza kryptograficznego użyć do odszyfrowania.
Aby zapobiec odszyfrowywaniu w Cloud KMS wartości tekstu zaszyfrowanego, które zostały zaszyfrowane przy użyciu starszej wersji klucza kryptograficznego, możesz wyłączyć lub zniszczyć tę wersję klucza kryptograficznego. Wyłączenie jest operacją odwracalną, a zniszczenie jest nieodwracalne. Aby wyłączyć wersję:
$ gcloud kms keys versions disable "1" \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key"
8. Gratulacje!
Interfejs Cloud KMS API został włączony, klucz szyfrowania symetrycznego został utworzony, a dane zostały zaszyfrowane i odszyfrowane. Cloud KMS to zaawansowana usługa, a szyfrowanie i odszyfrowywanie to tylko niektóre z jej funkcji.
Czyszczenie danych
Jeśli skończysz eksplorowanie, rozważ usunięcie projektu.
- Otwórz konsolę Cloud Platform.
- Wybierz projekt, który chcesz zamknąć, a potem kliknij „Usuń” u góry. Spowoduje to zaplanowanie usunięcia projektu.
Więcej informacji
Licencja
To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.