1. Omówienie
Cloud KMS to hostowana w chmurze usługa zarządzania kluczami, która umożliwia zarządzanie kluczami kryptograficznymi w usługach w chmurze tak samo jak lokalnie. Obejmuje obsługę szyfrowania, odszyfrowywania, podpisywania i weryfikacji przy użyciu różnych typów kluczy i źródeł, w tym Cloud HSM w przypadku kluczy obsługiwanych sprzętowo. Z tego samouczka dowiesz się, jak szyfrować i odszyfrowywać dane przy użyciu symetrycznych kluczy Cloud KMS.
Zobacz,
- Jak włączyć interfejs Cloud KMS API
- Jak utworzyć pęk kluczy Cloud KMS
- Jak utworzyć klucz kryptograficzny Cloud KMS do szyfrowania i odszyfrowywania symetrycznego
- Jak wykonać rotację symetrycznego klucza kryptograficznego Cloud KMS
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail lub G Suite, musisz je utworzyć.
Zapamiętaj identyfikator projektu, unikalną nazwę we wszystkich projektach Google Cloud (powyższa nazwa jest już zajęta i nie będzie Ci odpowiadać). W dalszej części tego ćwiczenia w Codelabs będzie ona określana jako PROJECT_ID
.
- Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Google Cloud.
Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Postępuj zgodnie z instrukcjami podanymi w sekcji „Czyszczenie” W tym samouczku znajdziesz wskazówki, jak wyłączyć zasoby, aby uniknąć naliczania opłat. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.
Uruchamianie Cloud Shell
W tym ćwiczeniu w Codelabs wykorzystasz Cloud Shell – bezpłatne zwirtualizowane środowisko działające w Google Cloud. W konsoli GCP kliknij ikonę Cloud Shell na górnym pasku narzędzi:
Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno pojawić się coś takiego:
Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, znacząco zwiększając wydajność sieci i uwierzytelnianie. Uruchom wszystkie polecenia z tej powłoki, chyba że otrzymasz inne instrukcje.
3. Włącz usługę Cloud KMS
Aby móc używać Cloud KMS, musisz najpierw włączyć tę usługę w swoim 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 funkcji może potrwać około minuty. Po zakończeniu polecenia wskaże się jego powodzenie.
4. Utwórz klucz KMS
utworzyć pęk kluczy Cloud KMS; W Cloud KMS pęk kluczy to logiczny zbiór kluczy kryptograficznych. Pęk kluczy zawiera metadane dotyczące 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 utwórz klucz kryptograficzny o nazwie my-symmetric-key
o celu encryption
w utworzonym właśnie pęku kluczy.
$ gcloud kms keys create "my-symmetric-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "encryption"
5. Zaszyfruj dane
Utwórz plik z danymi do zaszyfrowania i użyj narzędzia wiersza poleceń gcloud
, by 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 (nazywane też „tekstem szyfrowanym”) są zapisywane na dysku data.txt.enc
. Po otwarciu pliku data.txt.enc
zauważysz, że zawiera on dziwne znaki niedrukowalne. Wynika to z faktu, że uzyskane dane mają format binarny.
Przechowywanie tekstu zaszyfrowanego w bazie danych lub przesyłanie go w ramach żądania HTTP może wymagać zakodowania danych. Popularnym mechanizmem kodowania jest base64.
Cloud KMS nie przechowuje żadnego z podanego przez Ciebie tekstu zwykłego. Musisz zapisać ten tekst szyfrowany w bezpiecznej lokalizacji, ponieważ będzie on potrzebny do pobrania wartości zwykłego tekstu.
6. Odszyfrowywanie danych
Odszyfruj tekst szyfrowany z 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 przy użyciu Cloud KMS. Zwróć uwagę na to, że w tym przykładzie argument --plaintext-file
ma postać -
. Dzięki temu gcloud
wydrukuje wynik w terminalu.
Konsola wyświetli wartość my-contents
, która jest taka sama jak wartość w postaci zwykłego tekstu z pliku powyżej.
7. Wykonaj rotację kluczy
W Cloud KMS klucz kryptograficzny jest w rzeczywistości zbiorem wersji klucza kryptograficznego. Możesz utworzyć nowe wersje klucza kryptograficznego, aby wykonać rotację kluczy. Cloud KMS może też automatycznie wykonywać rotację kluczy zgodnie z harmonogramem.
Aby wykonać rotację klucza ręcznie, utwórz nową wersję klucza kryptograficznego i ustaw go 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ą używać tego nowego klucza. Starsze klucze nadal będą 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 szyfrowania – nie musisz określać, której wersji klucza kryptograficznego chcesz użyć do odszyfrowania.
Aby zapobiec odszyfrowaniu za pomocą Cloud KMS wartości tekstu zaszyfrowanego zaszyfrowanych przy użyciu starszej wersji klucza kryptograficznego, możesz wyłączyć lub zniszczyć tę wersję klucza kryptograficznego. Wyłączenie jest nieodwracalne, natomiast zniszczenie jest trwałe. Aby wyłączyć wersję:
$ gcloud kms keys versions disable "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key"
8. Gratulacje!
Udało Ci się włączyć interfejs Cloud KMS API, utworzyć klucz szyfrowania symetrycznego oraz zaszyfrować i odszyfrować dane. Cloud KMS to zaawansowana usługa, a szyfrowanie i odszyfrowywanie w jej działaniu nie jest niczym niezwykłym.
Czyszczenie danych
Po zakończeniu analizy rozważ usunięcie projektu.
- Otwórz konsolę Cloud Platform.
- Wybierz projekt, który chcesz wyłączyć, a potem kliknij „Usuń” na górze ekranu. Spowoduje to zaplanowanie usunięcia projektu.
Więcej informacji
Licencja
To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.