По умолчанию все данные, хранящиеся в Cloud Firestore, шифруются с помощью стандартного шифрования Google. Cloud Firestore обрабатывает и управляет этим шифрованием без каких-либо дополнительных действий с вашей стороны.
Если у вас есть особые требования к соблюдению нормативных требований или законодательства, касающиеся ключей, защищающих ваши данные, вы можете использовать для Cloud Firestore ключи шифрования, управляемые клиентом (CMEK). Вместо того чтобы 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 выполнение операции шифрования или расшифровки. Операции шифрования и расшифровки с помощью ключа, управляемого клиентом, выполняются каждые пять минут и не синхронизируются с запросами к базе данных. Расходы обычно невелики, учитывая ожидаемое количество криптографических операций, генерируемых Cloud Firestore. Расходы на журналы аудита Cloud Audit Logs являются дополнительными, но они также должны быть низкими, учитывая ожидаемое количество криптографических операций.
За использование базы данных, защищенной CMEK , не взимается дополнительная Cloud Firestore плата. Действуют стандартные тарифы Cloud Firestore.
Если вы отзовете ключ к базе данных, плата за хранение будет взиматься исходя из размера базы данных в последний день, когда ключ был доступен. Вы будете платить за хранение данных в базе данных такого размера, пока она не будет удалена или ключ снова не станет доступен.
Что защищено с помощью CMEK
При создании базы данных Cloud Firestore, защищенной CMEK, для защиты хранимых данных используется ключ Cloud KMS. Это относится к данным, которые вы храните на диске или USB-накопителе, включая индексы и резервные копии. Есть исключения. Следующие типы данных шифруются с помощью шифрования Google по умолчанию, а не ключа CMEK:
- Передаваемые данные или данные в памяти
- Метаданные базы данных
Как обрабатывается статус недоступности ключа
Операции шифрования и расшифровки не выполняются при каждом запросе данных. Вместо этого система Cloud Firestore каждые пять минут опрашивает Cloud KMS, чтобы проверить, доступен ли ключ, и, если да, выполняет операции шифрования и расшифровки.
Если система обнаружит, что ключ недоступен, в течение 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, в которой применяется стандартное шифрование Google.
- (По умолчанию) Клонировать в базу данных, которая использует то же шифрование, что и исходная база данных.
Подробнее о клонировании базы данных Cloud Firestore … Подробнее о том, как клонировать базу данных Cloud Firestore, защищенную CMEK…
Отслеживание ключей
Вы можете использовать отслеживание ключей, чтобы просматривать ресурсы, например базы данных Cloud Firestore, которые защищает ключ. Подробнее об отслеживании ключей…
CMEK и доступность ключей
Если ключи недоступны или отключены, в базах данных с включенными CMEK могут наблюдаться следующие проблемы:
- Вы можете изменить настройки восстановления на определенный момент времени (PITR) для базы данных с включенным CMEK, даже если ключ недоступен, поскольку настройки PITR – это метаданные базы данных, которые не зашифрованы CMEK.Cloud Firestore
- Вы можете удалить базу данных CMEK с недоступными ключами.
- При создании базы данных с поддержкой CMEK отключенные ключи не показываются в списке доступных ключей в консоли Google Cloud. Если вы вручную введете отключенный ключ, процесс создания базы данных завершится ошибкой 400 в
FAILED_PRECONDITION.
Ограничения
- Вы не можете изменить ключ для базы данных, защищенной CMEK. Вы можете менять, включать и отключать ключи.
- Базы данных, защищенные CMEK, поддерживают Key Visualizer только для данных объектов и документов, но не для данных индексов.
- Включить CMEK для существующих баз данных нельзя. Включить CMEK можно только для новых баз данных при их создании. Чтобы перенести данные из существующей базы данных, не защищенной CMEK, в базу данных, защищенную CMEK, экспортируйте данные, а затем импортируйте их в новую базу данных, защищенную CMEK. Вы также можете восстановить или клонировать данные из базы данных без CMEK в базу данных с CMEK.
- Cloud Firestore поддерживает ограниченное количество баз данных, защищенных CMEK.
- Мы не поддерживаем защиту CMEK при интеграции с Cloud Functions (первое поколение). Если вы хотите использовать защиту CMEK, используйте триггеры Firestore для функций Cloud Run (второе поколение).
Как данные могут покинуть базы данных, защищенные CMEK
Данные, скопированные вашим приложением, могут храниться пользователями произвольным образом. Для любого приложения, которое обращается к данным Cloud Firestore, требуются соответствующие средства контроля безопасности, чтобы доступ к данным получали только те, у кого есть надлежащее разрешение. Подробную информацию можно найти в статьях Правила безопасности и IAM.
Данные из базы данных, защищенной CMEK, можно перенести в базу данных без CMEK с помощью функций Резервное копирование и восстановление, Клонирование, Импорт и Экспорт. Используйте соответствующие элементы управления IAM, чтобы предоставлять разрешения на эти действия только авторизованным пользователям. Кроме того, ограничения правил организации CMEK можно использовать, чтобы требовать, чтобы все базы данных, созданные путем восстановления или клонирования, и все сегменты Cloud Storage, используемые для импорта, были защищены CMEK.
Дальнейшие действия
- Подробнее о том, как использовать CMEK с Cloud Firestore…