Klucze szyfrowania zarządzane przez klienta (CMEK)

Domyślnie wszystkie dane w spoczynku w Cloud Firestore są szyfrowane przy użyciu domyślnego szyfrowania Google. Cloud Firestore obsługuje to szyfrowanie i zarządza nim bez konieczności podejmowania przez Ciebie dodatkowych działań.

Jeśli masz określone wymagania dotyczące zgodności lub przepisów związanych z kluczami, które chronią Twoje dane, możesz używać kluczy szyfrowania zarządzanych przez klienta (CMEK) w Cloud Firestore. Zamiast Google zarządzającego kluczami szyfrowania, które chronią Twoje dane, Twoja baza danych Cloud Firestore jest chroniona za pomocą klucza, który kontrolujesz i którym zarządzasz w Cloud Key Management Service (Cloud KMS).

Na tej stronie opisano klucze CMEK dla usługi Cloud Firestore. Więcej informacji o kluczach CMEK, w tym o tym, kiedy i dlaczego warto je włączyć, znajdziesz w tej dokumentacji Cloud KMS:

Instrukcje wykonywania zadań związanych z kluczami CMEK za pomocą Cloud Firestore znajdziesz w artykule Używanie kluczy CMEK.

Funkcje

Ceny

Cloud KMS nalicza opłaty za koszt klucza i wszelkie operacje kryptograficzne wykonywane przy jego użyciu. Więcej informacji znajdziesz w cenniku Cloud KMS.

Opłaty za koszty operacji są naliczane, gdy Cloud Firestore prosi klucz Cloud KMS o wykonanie operacji szyfrowania lub odszyfrowywania. Operacja szyfrowania/odszyfrowywania za pomocą klucza zarządzanego przez klienta odbywa się co 5 minut i nie jest synchronizowana z żądaniami bazy danych. Koszty są zwykle niskie, biorąc pod uwagę oczekiwaną liczbę operacji kryptograficznych generowanych przez Cloud Firestore. Koszty logów kontrolnych Cloud są dodatkowym wydatkiem, ale powinny być ogólnie niskie, biorąc pod uwagę oczekiwaną liczbę operacji kryptograficznych.

Korzystanie z bazy danych chronionej kluczami CMEK nie wiąże się z dodatkowymi kosztami Cloud Firestore, a cennik Cloud Firestore nadal obowiązuje.

Jeśli unieważnisz klucz do bazy danych, koszt przechowywania zostanie naliczony na podstawie rozmiaru z ostatniego dnia, w którym klucz był dostępny. Będziesz nadal ponosić koszty przechowywania danych w bazie danych o tym rozmiarze, dopóki baza danych nie zostanie usunięta lub klucz nie stanie się ponownie dostępny.

Co jest chronione za pomocą kluczy CMEK

Gdy tworzysz bazę danych Cloud Firestore chronioną za pomocą klucza CMEK, klucz Cloud KMS jest używany do ochrony danych w spoczynku. Obejmuje to dane przechowywane na dysku lub dysku flash, w tym indeksy i kopie zapasowe. Obowiązują pewne wyjątki. Te typy danych są szyfrowane za pomocą domyślnego szyfrowania Google, a nie klucza CMEK:

  • Dane w ruchu lub w pamięci
  • Metadane bazy danych

Jak jest obsługiwany stan niedostępności klucza

Operacje szyfrowania i odszyfrowywania nie są wykonywane przy każdym żądaniu danych. Zamiast tego system Cloud Firestore co 5 minut odpytuje Cloud KMS, aby sprawdzić, czy klucz jest nadal dostępny, a następnie wykonuje operacje szyfrowania i odszyfrowywania, jeśli klucz jest dostępny.

Jeśli system wykryje, że klucz jest niedostępny, w ciągu 10 minut wszystkie kolejne wywołania bazy danych Cloud Firestore, w tym odczyty, zapisy i zapytania, zwrócą błąd FAILED_PRECONDITION z komunikatem The customer-managed encryption key required by the requested resource is not accessible.

Jeśli baza danych ma zasady dotyczące czasu życia danych (TTL) i gdy klucz jest niedostępny, upłyną terminy ważności, usuwanie danych przez TTL zostanie opóźnione do momentu przywrócenia klucza. Jeśli w bazie danych są wykonywane długo trwające operacje, zostaną one dotknięte w następujący sposób:

  • Operacje importu lub eksportu danych zostaną zatrzymane i oznaczone jako Failed. Jeśli klucz zostanie przywrócony, nieudane operacje nie zostaną ponowione.
  • Operacje tworzenia indeksu i operacje włączania nowych zasad TTL przestaną być wykonywane. Zatrzymane operacje zostaną ponowione, jeśli klucz zostanie przywrócony.

Klucze są uznawane za niedostępne w każdej sytuacji, w której celowo uniemożliwiono usłudze Cloud Firestore dostęp do klucza. Obejmuje to m.in.:

Jeśli klucz zostanie przywrócony, operacja odpytywania wykryje, że jest on ponownie dostępny. Dostęp zostanie ponownie włączony, zwykle w ciągu kilku minut, ale w rzadkich przypadkach może to potrwać do kilku godzin. Pamiętaj, że niektóre operacje na kluczach Cloud KMS, takie jak wyłączenie lub zniszczenie klucza, mogą potrwać do 3 godzin. Cloud Firestore nie wykrywa żadnych zmian, dopóki nie zostaną one wprowadzone w Cloud KMS.

Przywrócenie klucza obejmuje następujące działania (w zależności od sytuacji):

  • ponowne włączenie wyłączonej wersji klucza,
  • przywrócenie zniszczonej wersji klucza, Przed trwałym zniszczeniem wersja klucza jest planowana do zniszczenia. Klucz możesz przywrócić tylko w okresie, gdy wersja klucza jest zaplanowana do zniszczenia. Nie można przywrócić klucza, który został już trwale zniszczony.
  • Ponowne przyznawanie agentowi usługi Cloud Firestore uprawnień dostępu do klucza.

Kwestie dotyczące rotacji kluczy

Gdy wykonasz rotację klucza CMEK, Cloud Firestore ponownie zaszyfruje bazę danych za pomocą najnowszej wersji podstawowej klucza CMEK. Podczas procesu ponownego szyfrowania zachowaj dostępność zarówno starej, jak i nowej wersji klucza. Po zakończeniu ponownego szyfrowania wyłączenie lub usunięcie starych wersji klucza CMEK nie spowoduje wyłączenia dostępu do bazy danych, ponieważ jest ona zaszyfrowana za pomocą nowej wersji klucza podstawowego.

Możesz też wyświetlić wersje kluczy, które są używane do ochrony bazy danych. Więcej informacji znajdziesz w artykule Wyświetlanie używanego klucza.

Najważniejsze kwestie dotyczące kluczy zewnętrznych

Gdy używasz klucza Cloud EKM, Google nie ma kontroli nad dostępnością klucza zarządzanego zewnętrznie w systemie partnera zarządzającego zewnętrznymi kluczami.

Jeśli klucz zarządzany zewnętrznie jest niedostępny, Cloud Firestore nadal obsługuje pełne operacje na bazie danych z możliwie największą dokładnością przez maksymalnie godzinę.

Jeśli po godzinie usługa Cloud Firestore nadal nie może połączyć się z Cloud KMS, Cloud Firestore zaczyna przełączać bazę danych w tryb offline jako środek ochronny. Wywołania bazy danych będą kończyć się błędem FAILED_PRECONDITION, który zawiera dodatkowe szczegóły.

Więcej informacji o korzystaniu z kluczy zewnętrznych znajdziesz w dokumentacji Cloud External Key Manager.

Tworzenie i przywracanie kopii zapasowej

Kopia zapasowa używa tego samego mechanizmu szyfrowania co baza danych, z której została utworzona. Gdy baza danych Cloud Firestore chroniona kluczem CMEK tworzy kopię zapasową, szyfruje ją za pomocą wersji klucza podstawowego używanej w momencie tworzenia kopii zapasowej.

Cloud Firestore tworzy pierwszą kopię zapasową bazy danych CMEK po upływie 24 godzin od momentu włączenia harmonogramów tworzenia kopii zapasowych.

Więcej informacji o kopiach zapasowych Cloud Firestore znajdziesz w artykule Tworzenie kopii zapasowej i przywracanie danych.

Baza danych przywrócona z kopii zapasowej domyślnie używa tego samego mechanizmu szyfrowania co kopia zapasowa. Podczas przywracania bazy danych możesz określić inny typ szyfrowania na jeden z tych sposobów:

  • Przywróć do bazy danych CMEK z nowo określonym kluczem.
  • Przywróć do bazy danych bez klucza CMEK, która korzysta z domyślnego szyfrowania Google.
  • Przywróć bazę danych, która używa tego samego szyfrowania co kopia zapasowa.

Więcej informacji o przywracaniu bazy danych Cloud Firestore z kopii zapasowej znajdziesz w artykule Przywracanie danych z kopii zapasowej bazy danych. Więcej informacji o przywracaniu bazy danych Cloud Firestore chronionej kluczem CMEK z kopii zapasowej znajdziesz w artykule Przywracanie bazy danych chronionej kluczem CMEK.

Klonuj

Domyślnie baza danych sklonowana z innej bazy danych używa tego samego mechanizmu szyfrowania co źródłowa baza danych. Podczas klonowania bazy danych możesz określić inny typ szyfrowania na jeden z tych sposobów:

  • Sklonuj do bazy danych CMEK z nowo określonym kluczem.
  • Sklonuj do bazy danych bez klucza CMEK, która korzysta z domyślnego szyfrowania Google.
  • (Domyślnie) Sklonuj do bazy danych, która używa tego samego szyfrowania co źródłowa baza danych.

Więcej informacji o klonowaniu bazy danych Cloud Firestore znajdziesz w artykule Klonowanie bazy danych. Więcej informacji o klonowaniu bazy danych Cloud Firestore chronionej kluczem CMEK znajdziesz w artykule o klonowaniu bazy danych chronionej kluczem CMEK.

Śledzenie kluczyków

Możesz używać śledzenia kluczy, aby wyświetlać zasoby, np. bazy danych Cloud Firestore, które są chronione przez klucz. Więcej informacji o śledzeniu kluczy znajdziesz w artykule Wyświetlanie użycia klucza.

CMEK i dostępność kluczy

Gdy klucze są niedostępne lub wyłączone, w bazach danych obsługujących klucze CMEK mogą wystąpić te problemy:

  • Możesz zmienić ustawienia odzyskiwania do określonego momentu w Cloud Firestore w bazie danych z włączonym kluczem CMEK, nawet jeśli klucz jest niedostępny, ponieważ ustawienia odzyskiwania do określonego momentu to metadane bazy danych, które nie są szyfrowane przez klucz CMEK.
  • Możesz usunąć bazę danych CMEK, która ma niedostępne klucze.
  • Gdy tworzysz bazę danych z włączonymi kluczami CMEK, wyłączone klucze nie są wyświetlane na liście dostępnych kluczy w konsoli Google Cloud. Jeśli ręcznie wpiszesz wyłączony klucz, proces tworzenia bazy danych zakończy się błędem FAILED_PRECONDITION 400.

Ograniczenia

  • Nie możesz zmienić klucza bazy danych chronionej za pomocą klucza CMEK. Możesz rotować, włączać i wyłączać klucze.
  • Bazy danych chronione kluczami CMEK obsługują Key Visualizer tylko w przypadku danych encji i dokumentów, a nie danych indeksu.
  • Nie możesz włączyć kluczy CMEK w istniejących bazach danych. Klucze CMEK możesz włączyć tylko w nowych bazach danych i musisz to zrobić podczas tworzenia bazy danych. Aby przenieść dane z dotychczasowej bazy danych, która nie jest chroniona kluczem CMEK, do bazy danych chronionej kluczem CMEK, wyeksportuj dane, a następnie zaimportuj je do nowej bazy danych chronionej kluczem CMEK. Możesz też przywrócić lub sklonować dane z bazy danych bez kluczy CMEK do bazy danych z kluczami CMEK.
  • Cloud Firestore obsługuje ograniczoną liczbę baz danych chronionych kluczami CMEK.
  • Nie obsługujemy ochrony CMEK w przypadku integracji z Cloud Functions (1 generacji). Jeśli chcesz korzystać z ochrony CMEK, użyj funkcji Cloud Run aktywatorów Firestore (2 generacji).

Jak dane mogą opuścić bazy danych chronione kluczami CMEK

  • Dane skopiowane przez aplikację mogą być przechowywane przez użytkowników w dowolny sposób. W przypadku każdej aplikacji, która ma dostęp do danych Cloud Firestore, wymagane są odpowiednie środki bezpieczeństwa, aby mieć pewność, że dostęp do danych mają tylko osoby z odpowiednimi uprawnieniami. Więcej informacji znajdziesz w sekcjach poświęconych regułom zabezpieczeń i uprawnieniom.

  • Dane z bazy danych chronionej kluczem CMEK można przenieść do bazy danych bez klucza CMEK za pomocą funkcji tworzenia i przywracania kopii zapasowej, klonowania lub importowania i eksportowania. Użyj odpowiednich ustawień uprawnień, aby przyznać uprawnienia do tych działań tylko autoryzowanym użytkownikom. Dodatkowo można użyć ograniczeń zasad organizacji dotyczących kluczy CMEK, aby wymagać, aby wszystkie bazy danych utworzone przez przywrócenie lub sklonowanie oraz wszystkie zasobniki Cloud Storage używane do importowania były chronione kluczami CMEK.

Co dalej?