По умолчанию все данные, хранящиеся в Cloud Firestore , шифруются с использованием стандартного шифрования Google . Cloud Firestore обрабатывает и управляет этим шифрованием автоматически, без каких-либо дополнительных действий с вашей стороны.
Если у вас есть особые требования к ключам, защищающим ваши данные, вы можете использовать управляемые клиентом ключи шифрования (CMEK) для Cloud Firestore . Вместо того, чтобы Google управлял ключами шифрования, защищающими ваши данные, ваша база данных Cloud Firestore защищена ключом, который вы контролируете и управляете через Cloud Key Management Service (Cloud KMS) .
На этой странице описывается CMEK для Cloud Firestore . Подробнее о CMEK, включая информацию о том, когда и зачем его включать, см. в следующей документации Cloud KMS:
Инструкции по выполнению задач, связанных с CMEK, с помощью Cloud Firestore см. в разделе Использование CMEK .
Функции
- Управление данными : CMEK позволяет управлять ключом KMS. Вы можете ротировать, деактивировать и уничтожать ключ, используемый для шифрования данных, хранящихся в базе данных Cloud Firestore .
- Производительность : CMEK не влияет на соглашение об уровне обслуживания Cloud Firestore .
- Аудит : если включить ведение журнала аудита для Cloud KMS , все операции с ключом регистрируются и отображаются в Cloud Logging .
- Ограничения политики организации : вы можете использовать ограничения политики организации CMEK, чтобы указать требования соответствия шифрованию для баз данных Cloud Firestore в вашей организации.
Ценообразование
Cloud KMS взимает плату за ключ и любые криптографические операции, выполняемые с его использованием. Подробнее см. в разделе «Цены на Cloud KMS» .
С вас взимается плата за операцию, когда Cloud Firestore запрашивает ключ Cloud KMS для выполнения операции шифрования или дешифрования. Операция шифрования/дешифрования с помощью управляемого клиентом ключа выполняется каждые 5 минут и не синхронизируется с запросами к базе данных. Стоимость, как правило, невысока, учитывая ожидаемое количество криптографических операций, генерируемых Cloud Firestore . Стоимость журналов аудита Cloud — это дополнительная статья расходов, но, как правило, она также невысока, учитывая ожидаемое количество криптографических операций.
Дополнительные расходы Cloud Firestore за использование базы данных, защищенной CMEK, не взимаются, и цены Cloud Firestore продолжают действовать.
Если вы отзовёте свой ключ к базе данных, с вас будет взиматься плата за хранение, размер которой соответствует последнему дню, когда ключ был доступен. Вы продолжите нести расходы на хранение данных с таким же размером базы данных до тех пор, пока база данных не будет удалена или ключ не станет снова доступен.
Что защищено CMEK
При создании базы данных Cloud Firestore , защищённой CMEK, ваш ключ Cloud KMS используется для защиты хранимых данных. Это включает данные, хранящиеся на диске или флеш-накопителе, включая индексы и резервные копии. Имеются некоторые исключения. Следующие типы данных шифруются с помощью шифрования Google по умолчанию, а не с помощью ключа CMEK:
- Данные в пути или в памяти
- Метаданные базы данных
Как обрабатывается статус недоступного ключа
Операции шифрования и дешифрования выполняются не при каждом запросе данных. Вместо этого система Cloud Firestore опрашивает Cloud KMS каждые 5 минут, чтобы проверить, доступен ли ключ, а затем выполняет операции шифрования и дешифрования, если ключ доступен.
Если система обнаруживает, что ключ недоступен, то в течение 10 минут любые последующие обращения к базе данных Cloud Firestore , включая чтение, запись и запросы, возвращают ошибку FAILED_PRECONDITION
с сообщением The customer-managed encryption key required by the requested resource is not accessible
.
Если в базе данных установлены политики времени жизни (TTL) , и если какой-либо срок действия будет превышен, пока ключ недоступен, удаление данных по TTL будет отложено до восстановления ключа. Если в базе данных выполняются длительные операции, они будут затронуты следующим образом:
- Операции импорта или экспорта данных будут остановлены и помечены как
Failed
. Неудачные операции не будут повторяться после восстановления ключа. - Операции по построению индекса и операции , активирующие новые политики TTL, будут остановлены. Остановленные операции будут повторены после восстановления ключа.
Ключи считаются недоступными в любой ситуации, которая намеренно блокирует доступ Cloud Firestore к ним. Это включает в себя:
- Отключение или уничтожение используемой версии ключа. Будьте осторожны при уничтожении версии ключа, так как это может привести к невосстановимой потере данных .
- Удаление разрешения на доступ к ключу из учетной записи службы Cloud Firestore .
Если ключ восстановлен, операция опроса обнаруживает, что он снова доступен. Доступ восстанавливается, обычно в течение нескольких минут, но в редких случаях это может занять до нескольких часов. Обратите внимание, что некоторые операции с ключами Cloud KMS, такие как отключение или уничтожение ключа, могут занять до 3 часов . Cloud Firestore не обнаруживает изменения до тех пор, пока они не вступят в силу в Cloud KMS.
Восстановление ключа включает в себя следующее, в зависимости от ситуации:
- Повторное включение отключенной версии ключа.
- Восстановление уничтоженной версии ключа. Перед окончательным уничтожением версия ключа должна быть уничтожена. Восстановление ключа возможно только в течение периода, когда версия ключа должна быть уничтожена. Восстановление ключа, который уже был окончательно уничтожен, невозможно.
- Повторное предоставление агенту службы Cloud Firestore разрешения на доступ к ключу.
Соображения относительно ротации ключей
При ротации ключа CMEK Cloud Firestore перешифровывает базу данных с использованием последней первичной версии ключа CMEK. Во время процесса перешифрования сохраняйте доступными как старую, так и новую версии ключа. После завершения перешифрования отключение или удаление старых версий ключа CMEK не повлияет на доступ к базе данных, поскольку она зашифрована с использованием новой первичной версии ключа.
Вы также можете просмотреть версии ключей, используемых для защиты базы данных. Подробнее см. в разделе «Просмотр используемых ключей» .
Внешние ключевые соображения
При использовании ключа Cloud EKM Google не контролирует доступность вашего внешнего управляемого ключа во внешней системе управления ключами партнера.
Если внешне управляемый ключ недоступен, Cloud Firestore продолжает поддерживать все операции с базой данных по принципу наилучших усилий в течение одного часа.
Если через час Cloud Firestore по-прежнему не удаётся подключиться к Cloud KMS, Cloud Firestore в качестве защитной меры переводит базу данных в автономный режим. Обращения к базе данных завершатся ошибкой FAILED_PRECONDITION
с дополнительной информацией.
Дополнительную информацию об использовании внешних ключей см. в документации Cloud External Key Manager .
Резервное копирование и восстановление
Резервная копия использует тот же механизм шифрования, что и база данных, из которой она была создана. При создании резервной копии база данных Cloud Firestore , защищённая CMEK, шифрует её с использованием версии первичного ключа, которая использовалась на момент её создания.
Cloud Firestore создает первую резервную копию базы данных CMEK по истечении 24 часов с момента включения расписаний резервного копирования.
Дополнительную информацию о резервном копировании Cloud Firestore см. в разделе Резервное копирование и восстановление данных .
База данных, восстановленная из резервной копии, по умолчанию использует тот же механизм шифрования, что и резервная копия. При восстановлении базы данных вы можете указать другой тип шифрования одним из следующих способов:
- Восстановление в базе данных CMEK с новым указанным ключом.
- Восстановление в базу данных, отличную от CMEK, которая использует шифрование Google по умолчанию .
- Восстановление в базу данных, использующую то же шифрование, что и резервная копия.
Дополнительные сведения о восстановлении базы данных Cloud Firestore из резервной копии см. в разделе Восстановление данных из резервной копии базы данных . Дополнительные сведения о восстановлении базы данных Cloud Firestore , защищённой CMEK, из резервной копии см. в разделе Восстановление базы данных, защищённой CMEK .
Клон
По умолчанию база данных, клонированная из другой базы данных, использует тот же механизм шифрования, что и исходная база данных. При клонировании базы данных вы можете указать другой тип шифрования одним из следующих способов:
- Клонировать в базу данных CMEK с новым указанным ключом.
- Клонировать в базу данных, отличную от CMEK, которая использует шифрование Google по умолчанию .
- (По умолчанию) Клонировать в базу данных, которая использует то же шифрование, что и исходная база данных.
Дополнительные сведения о клонировании базы данных Cloud Firestore см. в разделе Клонирование базы данных . Дополнительные сведения о клонировании базы данных Cloud Firestore , защищённой CMEK, см. в разделе Клонирование базы данных, защищённой CMEK .
Отслеживание ключей
Вы можете использовать отслеживание ключей для просмотра ресурсов, например, баз данных Cloud Firestore , которые защищает ключ. Подробнее об отслеживании ключей см. в разделе «Просмотр использования ключа» .
CMEK и доступность ключа
Если ключи недоступны или отключены, помните о следующих вариантах поведения, которые могут возникнуть в базах данных с поддержкой CMEK:
- Вы можете изменить настройки восстановления Cloud Firestore на определенный момент времени (PITR) в базе данных с поддержкой CMEK, даже если ключ недоступен, поскольку настройки PITR представляют собой метаданные базы данных, которые не шифруются CMEK.
- Вы можете удалить базу данных CMEK, в которой имеются недоступные ключи.
- При создании базы данных с поддержкой CMEK отключенные ключи не отображаются в списке доступных ключей в консоли Google Cloud. Если вручную ввести отключенный ключ, процесс создания базы данных завершится ошибкой
FAILED_PRECONDITION
400.
Ограничения
- Изменить ключ для базы данных, защищённой CMEK, невозможно. Вы можете чередовать, включать и отключать ключи.
- Базы данных, защищенные CMEK, поддерживают Key Visualizer только для данных сущностей и документов, но не для индексных данных.
- CMEK нельзя включить в существующих базах данных. CMEK можно включить только в новых базах данных, и это необходимо сделать при их создании. Чтобы перенести данные из существующей базы данных без CMEK в базу данных с CMEK-защитой, экспортируйте данные, а затем импортируйте их в новую базу данных с CMEK-защитой. Вы также можете восстановить или клонировать данные из базы данных без CMEK в базу данных с CMEK-защитой.
- Cloud Firestore поддерживает ограниченное количество баз данных, защищенных CMEK.
- Защита CMEK не поддерживается интеграцией с Cloud Functions (1-го поколения). Если вам нужна защита CMEK, используйте функции Cloud Run Firestore Triggers (2-го поколения) .