1. Введение
Cloud KMS Autokey упрощает создание и использование управляемых клиентом ключей шифрования (CMEK) за счет автоматизации их предоставления и назначения. С Autokey вам не нужно планировать и предоставлять связки ключей, сами ключи и учетные записи служб до того, как они понадобятся. Вместо этого Autokey генерирует ключи по запросу по мере создания ресурсов, полагаясь на делегированные разрешения, а не на администраторов Cloud KMS.
Использование ключей, сгенерированных Autokey, поможет вам последовательно соответствовать отраслевым стандартам и рекомендуемым практикам обеспечения безопасности данных, включая уровень защиты HSM, разделение обязанностей, ротацию ключей, их местоположение и специфичность. Autokey создает ключи, которые соответствуют как общим рекомендациям, так и рекомендациям, специфичным для типа ресурса в сервисах Google Cloud, интегрированных с Cloud KMS Autokey. После создания ключи, запрошенные с помощью Autokey, функционируют идентично другим ключам Cloud HSM с теми же настройками.
Что вы построите
В этом практическом занятии вы будете запускать защищенные ресурсы с помощью Cloud KMS Autokey, создав:
- ресурс папки
- проект, в котором будут храниться ваши ключи
- сервисный агент, который будет выполнять функции вашего ключевого помощника по управлению.
- проект, который будет размещать ваши защищенные ресурсы.
- Данные BigQuery, постоянные диски и хранилища Cloud Storage зашифрованы с помощью Cloud KMS Autokey.
Что вам понадобится
- Организация Google Cloud
- Для выполнения этой лабораторной работы ваш субъект Google Cloud должен обладать следующими ролями на уровне организации:
- Администратор автоключей Cloud KMS (roles/cloudkms.autokeyAdmin)
- Администратор папки IAM (roles/resourcemanager.folderIamAdmin)
- Пользователь платежного аккаунта (roles/billing.user)
- Проекты Google Cloud с включенной функцией выставления счетов.
- Базовые знания Linux
2. Создайте папку
Папки — это узлы в иерархии ресурсов облачной платформы. Папка может содержать проекты, другие папки или их комбинацию. Ресурсы организации могут использовать папки для группировки проектов под узлом ресурса организации в иерархии. Чтобы создать папку:
- Перейдите на страницу «Управление ресурсами» в консоли Google Cloud.
- Убедитесь, что в раскрывающемся списке организаций в верхней части страницы выбрано название ресурса вашей организации.
- Нажмите «Создать папку».

- Выберите стандартную папку

- В поле «Имя папки» введите имя вашей новой папки. Для этой лабораторной работы рассмотрите вариант «Autokey-Folder».
- В разделе «Назначение» нажмите «Обзор», затем выберите ресурс организации или папку, в которой вы хотите создать новую папку.
- Нажмите «Создать».
3. Создайте ресурсный проект.
Важно создать проект ресурсов, содержащий ресурсы — такие как наборы данных BigQuery, постоянные диски и хранилища Cloud Storage Buckets — которые вы хотите зашифровать с помощью Cloud KMS Autokey. Если вы попытаетесь создать ресурсы, защищенные Autokey, в проекте ключей, Autokey отклонит запрос на новый ключ. Чтобы создать проект ресурсов:
- Перейдите на страницу «Управление ресурсами» в консоли Google Cloud.
- Нажмите «Создать проект».

- В раскрывающемся списке «Выберите организацию» в верхней части страницы выберите папку «Autokey-Folder».
- В появившемся окне «Новый проект» введите название проекта и выберите соответствующий платежный аккаунт. Для этой лабораторной работы рассмотрите вариант «Автоматически зашифрованные ресурсы».
- В поле «Расположение» выберите папку «Autokey-Folder». Этот ресурс будет являться иерархическим родительским элементом нового проекта. Ваши настройки должны выглядеть примерно так:

- Скопируйте идентификатор проекта (в приведенном выше примере идентификатор проекта — "causal-hour-43319-m4", но у вас он будет другим) в любой текстовый редактор по вашему выбору.
- Нажмите «Создать».
- Выберите значок Cloud Shell в правом верхнем углу экрана.

- После активации Cloud Shell сохраните идентификатор проекта Autokey в качестве переменной, выполнив следующую команду:
export RESOURCE_PROJECT=<paste your Resource Project ID>
Поскольку идентификатор моего проекта — "key-management-433319", моя команда выглядит следующим образом:
export AUTOKEY_PROJECT=causal-hour-43319-m4
- Выполните следующую команду, чтобы запустить команды из вашего ключевого проекта:
gcloud config set project $RESOURCE_PROJECT
При появлении запроса авторизуйте Cloud Shell, нажав кнопку «Авторизовать».

- Поскольку этот проект будет содержать ресурсы, нам необходимо включить API для сервисов, которые будет защищать Autokey. Выполните следующую команду:
gcloud services enable storage.googleapis.com bigquery.googleapis.com compute.googleapis.com
4. Создайте ключевой проект.
Мы рекомендуем создать проект для размещения ресурсов Cloud KMS, созданных Autokey. В дальнейшем он будет называться «ключевым проектом». Ключевой проект можно создать в той же папке, где вы планируете включить Autokey. Не следует создавать другие ресурсы внутри ключевого проекта. Если вы попытаетесь создать ресурсы, защищенные Autokey, в ключевом проекте, Autokey отклонит запрос на новый ключ. Чтобы создать ключевой проект:
- Перейдите на страницу «Управление ресурсами» в консоли Google Cloud.
- Нажмите «Создать проект».

- В раскрывающемся списке «Выберите организацию» в верхней части страницы выберите папку «Autokey-Folder».
- В появившемся окне «Новый проект» введите название проекта и выберите соответствующий платежный аккаунт. Для этой лабораторной работы рассмотрите раздел «Управление ключами».
- В поле «Расположение» выберите папку «Autokey-Folder». Этот ресурс будет являться иерархическим родительским элементом нового проекта. Ваши настройки должны выглядеть примерно так:

- Скопируйте идентификатор проекта (в приведенном выше примере идентификатор проекта — "key-management-433319", но у вас он будет другим) в любой текстовый редактор по вашему выбору.
- Нажмите «Создать».
5. Подготовьте проект автоключей.
Теперь, когда каждый проект создан, пришло время настроить ключевой проект для использования Cloud KMS Autokey.
- Выберите значок Cloud Shell в правом верхнем углу экрана.

- После активации Cloud Shell сохраните идентификатор проекта Autokey в качестве переменной, выполнив следующую команду:
export AUTOKEY_PROJECT=<paste your Autokey Project ID>
Поскольку идентификатор моего проекта — "key-management-433319", моя команда выглядит следующим образом:
export AUTOKEY_PROJECT=key-management-433319
- Выполните следующую команду, чтобы запустить команды из вашего ключевого проекта:
gcloud config set project $AUTOKEY_PROJECT
При появлении запроса авторизуйте Cloud Shell, нажав кнопку «Авторизовать».

- Включите API Cloud KMS, выполнив следующую команду.
gcloud services enable cloudkms.googleapis.com kmsinventory.googleapis.com
- Выполните следующую команду, чтобы сохранить номер вашего проекта в переменной с именем AUTOKEY_PROJECT_NUMBER.
export AUTOKEY_PROJECT_NUMBER=$(gcloud projects list \
--filter="$(gcloud config get-value project)" \
--format="value(PROJECT_NUMBER)")
- Сохраните адрес электронной почты директора в качестве переменной, выполнив следующую команду:
export KEY_ADMIN_EMAIL=<paste your Principal's email>
- Предоставьте администраторам Cloud KMS права администратора для ключевого проекта.
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
--role=roles/cloudkms.admin \
--member=user:$KEY_ADMIN_EMAIL
6. Настройте агенты сервиса Cloud KMS.
Сервисный агент Cloud KMS для ключевого проекта создает ключи и применяет привязки политик IAM во время создания ресурсов от имени администратора Cloud KMS. Для создания и назначения ключей сервисному агенту Cloud KMS требуются права администратора Cloud KMS.
- Найдите идентификатор организации с помощью следующей команды:
gcloud organizations list | grep -P -i 'ID:' | grep -i '[0-9]'
- Скопируйте идентификатор организации — это числовой результат, выделенный красным цветом.
- Сохраните идентификатор организации в качестве переменной с именем ORG_ID:
export ORG_ID=<paste your Organization ID>
- Создайте агент службы Cloud KMS, выполнив следующую команду:
gcloud beta services identity create --service=cloudkms.googleapis.com \
--project=$AUTOKEY_PROJECT_NUMBER
- Предоставьте агенту службы роль администратора Cloud KMS:
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
--role=roles/cloudkms.admin \
--member=serviceAccount:service-$AUTOKEY_PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
- Добавьте привязку политики IAM, чтобы просматривать использование ключей Cloud KMS. Раздел «Использование ключей» предоставляет информацию по каждому ключу, включая количество защищенных ресурсов, проектов и уникальных продуктов Google Cloud, использующих этот ключ. Такой уровень детализации доступен любому пользователю с ролью «Просмотрщик Cloud KMS» для данного ключа. Выполните следующую команду:
gcloud organizations add-iam-policy-binding $ORGANIZATION_ID \
--member="serviceAccount:service-org-$ORGANIZATION_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
--role='roles/cloudkms.orgServiceAgent'
- Предоставьте вашей учетной записи службы Cloud KMS роль агента службы организации Cloud KMS (cloudkms.orgServiceAgent) для ресурса вашей организации.
gcloud organizations add-iam-policy-binding $ORG_ID \
--member="serviceAccount:service-org-$ORG_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
--role='roles/cloudkms.orgServiceAgent'
- Предоставьте роль «Просмотрщик защищенных ресурсов Cloud KMS» для ресурса вашей организации всем, кому необходимо просматривать ключевые сведения об использовании.
gcloud organizations add-iam-policy-binding $ORG_ID \
--member="user:$KEY_ADMIN_EMAIL" \
--role='roles/cloudkms.protectedResourcesViewer'
7. Предоставьте пользователям роли Autokey.
Прежде чем ваши разработчики смогут использовать Autokey, необходимо предоставить им требуемую роль. Роль можно предоставить на уровне папки или на уровне проекта. Эта роль позволяет разработчикам запрашивать ключи у агента службы Cloud KMS при создании ресурсов в этой папке или проекте.
Первым шагом для предоставления роли является сохранение идентификатора папки.
- Найдите идентификатор папки с помощью следующей команды:
gcloud projects describe $AUTOKEY_PROJECT | grep 'id' | grep -P -i '[0-9]+'
- Скопируйте идентификатор папки — это часть, выделенная красным цветом.
- Сохраните идентификатор папки в качестве переменной с именем FOLDER_ID.
export FOLDER_ID=<paste the folder ID>
В рамках данной лабораторной работы мы будем определять администратора ключей как пользователя Autokey. Однако в производственных сценариях и в организациях, где работает более одного человека, администратором ключей должен быть другой человек, отличный от разработчика, использующего Autokey.
- Предоставьте роли roles/cloudkms.autokeyUser на уровне папки:
gcloud resource-manager folders add-iam-policy-binding \
$FOLDER_ID --role=roles/cloudkms.autokeyUser \
--member=user:$KEY_ADMIN_EMAIL
8. Включите функцию автоматического выбора ключей Cloud KMS для папки ресурсов.
На этом шаге вы включите функцию автоматического создания ключей Cloud KMS для папки ресурсов и определите проект Cloud KMS, который будет содержать ресурсы с автоматическим созданием ключей для этой папки. Включение функции автоматического создания ключей для этой папки активирует эту функцию для всех проектов ресурсов внутри папки.
- В консоли Google Cloud перейдите на страницу управления KMS .
- Нажмите «Выбрать папку».

- В контекстном меню выберите папку, в которой вы хотите включить функцию автоключей. Это будет та же папка, которую вы создали ранее, и она будет содержать ваш проект ресурсов и проект управления ключами. Должно получиться примерно так:

- Нажмите «Включить».
- Нажмите «Обзор», чтобы выбрать ключевой проект.
- Выберите свой проект по управлению ключами и нажмите «Отправить».

Сообщение подтверждает, что функция Cloud KMS Autokey включена для данной папки. Страница управления KMS должна выглядеть следующим образом:

9. Создавайте защищенные ресурсы с помощью Cloud KMS Autokey.
Постоянные диски вычислительного движка
Autokey создает новый ключ для каждого диска, образа и образа машины в том же месте, что и создаваемый ресурс.
Для создания диска выполните следующие шаги:
- В консоли Google Cloud перейдите на страницу «Диски» .
- Нажмите кнопку «Создать диск» и введите свойства нового диска.
- В разделе «Шифрование» выберите ключ Cloud KMS.

- В поле «Тип ключа» выберите Cloud KMS with Autokey, а затем нажмите «Запросить новый ключ». После успешного создания ключа и его готовности к использованию появится соответствующее сообщение.

- Чтобы завершить создание диска, нажмите кнопку «Создать».
Аналогичным образом можно создать защищенные ресурсы для экземпляров виртуальных машин, образов и образов машин.
Корзины облачного хранилища Google
Autokey создает новый ключ в том же месте, что и хранилище. Созданный Autokey ключ назначается в качестве ключа по умолчанию для хранилища.
Функция Autokey не создает ключи для объектов. По умолчанию объекты, созданные в хранилище, используют ключ по умолчанию для хранилища. Если вы хотите зашифровать объект с помощью ключа, отличного от ключа по умолчанию для хранилища, вы можете вручную создать CMEK и использовать этот ключ при создании объекта.
- В консоли Google Cloud перейдите на страницу «Создать корзину» .
- Выберите уникальное, постоянное название, известное во всем мире.
- Выберите местоположение данных.
- Перейдите к разделу «Выберите способ защиты данных объекта».

- Нажмите на кнопку «Выберите способ защиты данных объекта», чтобы развернуть раздел.

- Разверните раздел «Шифрование данных» и выберите ключ Cloud KMS.

- В поле «Тип ключа» выберите Cloud KMS with Autokey, а затем нажмите «Запросить новый ключ». После успешного создания ключа и его готовности к использованию появится соответствующее сообщение.

- Чтобы завершить создание хранилища, нажмите «Создать». Если появится диалоговое окно с сообщением «Публичный доступ будет заблокирован», нажмите «Подтвердить».
Набор данных BigQuery
Для каждого нового набора данных Autokey создает новый ключ в том же месте, что и сам ресурс, который становится ключом по умолчанию для набора данных. Autokey не создает ключи для таблиц, запросов, временных таблиц или моделей. По умолчанию эти ресурсы защищены ключом по умолчанию для набора данных. Если вы хотите защитить ресурс в наборе данных с помощью ключа, отличного от ключа по умолчанию для набора данных, вы можете вручную создать CMEK и использовать этот ключ при создании ресурса.
Для создания набора данных BigQuery необходимо сначала получить роль пользователя BigQuery.
- Возвращение в Облачную Оболочку
- Настройте Cloud Shell для выполнения команд из проекта ресурсов.
gcloud config set project $RESOURCE_PROJECT
- Выполните следующую команду, чтобы сохранить номер вашего проекта в переменной с именем RESOURCE_PROJECT_NUMBER.
export RESOURCE_PROJECT_NUMBER=$(gcloud projects list --filter="$(gcloud config get-value project)" --format="value(PROJECT_NUMBER)")
- Предоставьте себе роль пользователя BigQuery.
gcloud projects add-iam-policy-binding $RESOURCE_PROJECT_NUMBER \
--role=roles/bigquery.user \
--member=user:$KEY_ADMIN_EMAIL
Теперь, когда у вас есть роль пользователя BigQuery, вы можете создать набор данных и защитить его с помощью функции Autokey!
- В консоли Google Cloud перейдите на страницу BigQuery.
- Следуйте инструкциям по созданию набора данных, пока не дойдете до раздела «Дополнительные параметры» > «Шифрование».
- В разделе «Шифрование» выберите ключ Cloud KMS.
- В поле «Тип ключа» выберите Cloud KMS with Autokey, а затем нажмите «Запросить новый ключ». После успешного создания ключа и его готовности к использованию появится соответствующее сообщение.
- Чтобы завершить создание набора данных, нажмите кнопку «Создать набор данных».
10. Изучите свои ключи
На этом шаге вы сможете изучить ключи, созданные Cloud KMS Autokey от вашего имени, посетив страницу «Инвентаризация ключей». Страница «Инвентаризация ключей» предоставляет исчерпывающую информацию о криптографических ключах в вашем проекте. Обратите внимание, что данные могут обновляться с задержкой. Например, если вы создадите новый защищенный ресурс, он и связанная с ним версия ключа не будут немедленно добавлены на вкладку «Отслеживание использования». Дополнительные ограничения см. здесь .
- В консоли Google Cloud перейдите на страницу «Инвентаризация ключей» .
- Необязательно: чтобы отфильтровать список ключей, введите поисковые запросы в поле Filter_list и нажмите Enter. Например, вы можете отфильтровать по местоположению, связке ключей, статусу или другим свойствам ключей.
- Щелкните по названию ключа, для которого вы хотите просмотреть информацию об использовании.
- Нажмите на «Обзор». Обратите внимание, что для каждого ресурса создан отдельный ключ. Имя каждого ключа включает в себя имя ресурса, который он защищает (например, «compute-disk» или «storage-bucket»). Cloud KMS Autokey гарантирует, что каждый ключ будет запланирован на ротацию через 365 дней после его создания, и каждому ключу будет присвоен уровень защиты «HSM».

- Перейдите на вкладку «Отслеживание использования». Обратите внимание на уровень представленной информации: здесь отображается каждый ресурс, который шифруется с помощью ключа, а также проект, местоположение и дата создания.
- Необязательно: чтобы отфильтровать список защищенных ресурсов, введите поисковые запросы в поле Filter_list и нажмите Enter.

11. Поздравляем!
Поздравляем, вы успешно создали ресурсы Google Cloud и автоматически зашифровали их по запросу с помощью Cloud KMS Autokey!
Теперь вы знаете основные шаги, необходимые для настройки Autokey и использования его для автоматического шифрования ваших ресурсов с помощью ключей Cloud KMS.
12. Что дальше?
Загружайте данные в ресурсы, зашифрованные с помощью Autokey.
- Создайте экземпляр Google Compute Engine (GCE).
- Подключите защищенный с помощью Autokey постоянный диск к вашему экземпляру GCE.
- Загрузите данные в свой набор данных BigQuery.
- Загрузка объектов в хранилище Google Cloud Storage.
- Загрузите данные из Google Cloud Storage в BigQuery.