1. Обзор
Cloud KMS — это облачная служба управления ключами, которая позволяет вам управлять криптографическими ключами для ваших облачных служб так же, как вы это делаете локально. Он включает поддержку шифрования, дешифрования, подписи и проверки с использованием различных типов ключей и источников, включая Cloud HSM для аппаратных ключей. Из этого руководства вы узнаете, как шифровать и расшифровывать данные с помощью симметричных ключей Cloud KMS.
Ты научишься
- Как включить Cloud KMS API
- Как создать связку ключей Cloud KMS
- Как создать криптоключ Cloud KMS для симметричного шифрования/дешифрования
- Как повернуть симметричный криптоключ Cloud KMS
2. Настройка и требования
Самостоятельная настройка среды
- Войдите в Cloud Console и создайте новый проект или повторно используйте существующий. (Если у вас еще нет учетной записи Gmail или G Suite, вам необходимо ее создать .)
Запомните идентификатор проекта — уникальное имя для всех проектов Google Cloud (имя, указанное выше, уже занято и не подойдет вам, извините!). Позже в этой лаборатории он будет называться PROJECT_ID
.
- Далее вам необходимо включить биллинг в Cloud Console, чтобы использовать ресурсы Google Cloud.
Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Обязательно следуйте всем инструкциям в разделе «Очистка», в которых рассказывается, как отключить ресурсы, чтобы вам не приходилось нести расходы, выходящие за рамки этого руководства. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
Запустить Cloud Shell
В этой лаборатории кода вы будете использовать Cloud Shell , бесплатную виртуализированную среду, работающую в Google Cloud. В консоли GCP щелкните значок Cloud Shell на верхней правой панели инструментов:
Подготовка и подключение к среде займет всего несколько минут. Когда все будет готово, вы должны увидеть что-то вроде этого:
Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Если не указано иное, запускайте все команды из этой оболочки.
3. Включите службу Cloud KMS.
Прежде чем вы сможете использовать Cloud KMS, вам необходимо сначала включить службу в своем проекте. Это необходимо сделать только один раз для каждого проекта. Чтобы включить службу Cloud KMS, выполните следующую команду:
$ gcloud services enable cloudkms.googleapis.com \ --project "${GOOGLE_CLOUD_PROJECT}"
Включение может занять до минуты. Команда сообщит об успехе после завершения.
4. Создайте ключ KMS.
Создайте связку ключей Cloud KMS. В Cloud KMS связка ключей — это логический набор криптографических ключей. Связка ключей содержит метаданные о ключах, например их расположение. Создайте связку ключей с именем my-keyring
в global
регионе:
$ gcloud kms keyrings create "my-keyring" \ --location "global"
Теперь создайте криптоключ с именем my-symmetric-key
с целевым encryption
внутри только что созданного набора ключей.
$ gcloud kms keys create "my-symmetric-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "encryption"
5. Шифрование данных
Создайте файл с данными для шифрования и используйте инструмент командной строки gcloud
для шифрования данных в файле:
$ 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
Зашифрованные данные (также известные как «зашифрованный текст») сохраняются в data.txt.enc
на диске. Если вы откроете файл data.txt.enc
, вы заметите, что в нем есть странные непечатаемые символы. Это связано с тем, что результирующие данные имеют двоичный формат .
При хранении зашифрованного текста в базе данных или передаче его как части HTTP-запроса вам может потребоваться закодировать данные. Распространенным механизмом кодирования является base64.
Cloud KMS не сохраняет предоставленный вами открытый текст. Вам необходимо сохранить этот зашифрованный текст в безопасном месте, так как он потребуется для получения значения открытого текста.
6. Расшифровать данные
Расшифруйте зашифрованный текст из файла с помощью инструмента командной строки gcloud
:
$ gcloud kms decrypt \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key" \ --plaintext-file - \ --ciphertext-file ./data.txt.enc
Инструмент командной строки gcloud
считывает зашифрованный текст из файла и расшифровывает его с помощью Cloud KMS. Обратите внимание, что в этом примере аргумент --plaintext-file
указан как -
. Это указывает gcloud
распечатать результат на терминал.
Консоль выведет my-contents
— то же значение открытого текста, что и в файле выше.
7. Поворот клавиш
В Cloud KMS криптоключ на самом деле представляет собой набор версий криптоключей. Вы можете создавать новые версии криптоключей для выполнения ротации ключей . Cloud KMS также может автоматически менять ключи по расписанию .
Чтобы сменить ключ вручную, создайте новую версию криптоключа и установите ее в качестве основной версии:
$ gcloud kms keys versions create \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key" \ --primary
Все будущие запросы на шифрование данных будут использовать этот новый ключ. Старые ключи по-прежнему доступны для расшифровки данных, которые ранее были зашифрованы с помощью этих ключей. Cloud KMS автоматически определяет подходящий ключ дешифрования на основе предоставленного зашифрованного текста — вам не нужно указывать, какую версию криптоключа использовать для дешифрования.
Чтобы предотвратить расшифровку значений зашифрованного текста, зашифрованных с использованием более старой версии криптоключа, с помощью Cloud KMS, вы можете отключить или уничтожить эту версию криптоключа. Отключение — обратимая операция, тогда как уничтожение — постоянное. Чтобы отключить версию:
$ gcloud kms keys versions disable "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key"
8. Поздравляем!
Вы включили Cloud KMS API, создали симметричный ключ шифрования, а также зашифровали и расшифровали данные! Cloud KMS — это мощный продукт, и шифрование/дешифрование — это лишь малая часть его возможностей.
Очистить
Если вы закончили изучение, рассмотрите возможность удаления проекта.
- Перейдите в консоль облачной платформы.
- Выберите проект, который хотите закрыть, затем нажмите «Удалить» вверху. Это планирует удаление проекта.
Узнать больше
Лицензия
Эта работа распространяется под лицензией Creative Commons Attribution 2.0 Generic License.