Легко шифруйте ресурсы с помощью Cloud KMS Autokey

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.

Что вам понадобится

2. Создайте папку

Папки — это узлы в иерархии ресурсов облачной платформы. Папка может содержать проекты, другие папки или их комбинацию. Ресурсы организации могут использовать папки для группировки проектов в узле ресурсов организации в иерархии. Чтобы создать папку:

  1. Перейдите на страницу «Управление ресурсами» в консоли Google Cloud.
  2. Убедитесь, что имя ресурса вашей организации выбрано в раскрывающемся списке организации вверху страницы.
  3. Нажмите Создать папку.

9328ef3bd4840817.png

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

20a094fe0c7a0924.png

  1. В поле Имя папки введите имя новой папки. Для этой лабораторной работы рассмотрите «Autokey-Folder».
  2. В разделе «Назначение» нажмите «Обзор», затем выберите ресурс или папку организации, в которой вы хотите создать новую папку.
  3. Нажмите Создать.

3. Создайте ресурсный проект

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

  1. Перейдите на страницу «Управление ресурсами» в консоли Google Cloud.
  2. Нажмите Создать проект.

93e4e224322c68a7.png

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

187ece37daf50835.png

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

16c8476c4991f448.png

  1. Когда Cloud Shell станет активным, сохраните идентификатор проекта Autokey как переменную, выполнив следующую команду:
export RESOURCE_PROJECT=<paste your Resource Project ID>

Поскольку мой идентификатор проекта — «key-management-433319», моя команда выглядит так:

export AUTOKEY_PROJECT=causal-hour-43319-m4
  1. Запустите следующую команду, чтобы выполнить команды из вашего ключевого проекта:
gcloud config set project $RESOURCE_PROJECT

При появлении запроса авторизуйте Cloud Shell, нажав «Авторизовать».

a6c755d4921bc728.png

  1. Поскольку этот проект будет содержать ресурсы, нам необходимо включить API для сервисов, которые будет защищать Autokey. Выполните следующую команду:
gcloud services enable storage.googleapis.com bigquery.googleapis.com compute.googleapis.com

4. Создайте ключевой проект

Мы рекомендуем создать проект, содержащий ресурсы Cloud KMS, созданные Autokey. В дальнейшем это будет называться «ключевым проектом». Ключевой проект можно создать в той же папке, в которой вы планируете включить Autokey. Не следует создавать другие ресурсы внутри ключевого проекта. Если вы попытаетесь создать ресурсы, защищенные Autokey, в ключевом проекте, Autokey отклонит запрос на новый ключ. Чтобы создать ключевой проект:

  1. Перейдите на страницу «Управление ресурсами» в консоли Google Cloud.
  2. Нажмите Создать проект.

93e4e224322c68a7.png

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

157894b5c9048c06.png

  1. Скопируйте идентификатор проекта (в приведенном выше примере идентификатор проекта — «key-management-433319», но ваш идентификатор будет другим) в текстовый редактор по вашему выбору.
  2. Нажмите Создать.

5. Подготовьте проект ключа Autokey.

Теперь, когда каждый проект создан, пришло время настроить ключевой проект для использования Cloud KMS Autokey.

  1. Выберите значок Cloud Shell в правом верхнем углу экрана.

16c8476c4991f448.png

  1. Когда Cloud Shell станет активным, сохраните идентификатор проекта Autokey как переменную, выполнив следующую команду:
export AUTOKEY_PROJECT=<paste your Autokey Project ID>

Поскольку мой идентификатор проекта — «key-management-433319», моя команда выглядит так:

export AUTOKEY_PROJECT=key-management-433319
  1. Запустите следующую команду, чтобы выполнить команды из вашего ключевого проекта:
gcloud config set project $AUTOKEY_PROJECT

При появлении запроса авторизуйте Cloud Shell, нажав «Авторизовать».

a6c755d4921bc728.png

  1. Включите Cloud KMS API, выполнив следующую команду
gcloud services enable cloudkms.googleapis.com  kmsinventory.googleapis.com
  1. Выполните следующую команду, чтобы сохранить номер вашего проекта как переменную с именем AUTOKEY_PROJECT_NUMBER.
export AUTOKEY_PROJECT_NUMBER=$(gcloud projects list \
--filter="$(gcloud config get-value project)" \
--format="value(PROJECT_NUMBER)")
  1. Сохраните адрес электронной почты вашего директора как переменную, выполнив следующую команду:
export KEY_ADMIN_EMAIL=<paste your Principal's email>
  1. Предоставьте права администратора Cloud KMS в ключевом проекте пользователям-администраторам 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.

  1. Найдите идентификатор организации с помощью следующей команды:
gcloud organizations list | grep -P -i 'ID:' | grep -i '[0-9]'
  1. Скопируйте идентификатор организации — это числовой результат, выделенный красным.
  2. Сохраните идентификатор организации как переменную с именем ORG_ID:
export ORG_ID=<paste your Organization ID>
  1. Создайте агент службы Cloud KMS, выполнив следующую команду:
gcloud beta services identity create --service=cloudkms.googleapis.com \
    --project=$AUTOKEY_PROJECT_NUMBER
  1. Предоставьте роль администратора 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
  1. Добавьте привязку политики IAM, чтобы вы могли видеть использование ключа Cloud KMS. Использование ключа предоставляет информацию для каждого ключа, включая количество защищенных ресурсов, проектов и уникальных продуктов Google Cloud, которые используют этот ключ. Этот уровень детализации доступен любому, у кого есть роль Cloud KMS Viewer для ключа. Выполните следующую команду:
gcloud organizations add-iam-policy-binding $ORGANIZATION_ID \
    --member="serviceAccount:service-org-$ORGANIZATION_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
    --role='roles/cloudkms.orgServiceAgent'
  1. Предоставьте своей учетной записи службы 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'
  1. Предоставьте роль наблюдателя защищенных ресурсов Cloud KMS на ресурсе вашей организации всем, кому необходимо просматривать ключевые сведения об использовании.
gcloud organizations add-iam-policy-binding $ORG_ID \
    --member="user:$KEY_ADMIN_EMAIL" \
    --role='roles/cloudkms.protectedResourcesViewer'

7. Предоставление ролей пользователей Autokey

Прежде чем ваши разработчики смогут использовать Autokey, вы должны предоставить им необходимую роль. Вы можете предоставить роль на уровне папки или на уровне проекта. Эта роль позволяет разработчикам запрашивать ключи у агента службы Cloud KMS при создании ресурсов в этой папке или проекте.

Первым шагом в предоставлении роли является сохранение идентификатора папки.

  1. Найдите идентификатор папки с помощью следующей команды:
gcloud projects describe $AUTOKEY_PROJECT | grep 'id' | grep -P -i '[0-9]+'
  1. Скопируйте идентификатор папки — это та часть, которая выделена красным.
  2. Сохраните идентификатор папки как переменную с именем FOLDER_ID.
export FOLDER_ID=<paste the folder ID>

Для целей этой лабораторной работы мы определим администратора ключей как пользователя Autokey. Однако в производственных сценариях использования и в организациях, в которых работает более одного человека, администратор ключей должен отличаться от разработчика, использующего Autokey.

  1. Предоставьте роль 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 Autokey для папки ресурсов.

На этом этапе вы включите автоключ Cloud KMS для папки ресурсов и определите проект Cloud KMS, который будет содержать ресурсы автоключа для этой папки. Включение Autokey для этой папки включает Autokey для всех проектов ресурсов в папке.

  1. В консоли Google Cloud перейдите на страницу элементов управления KMS .
  2. Нажмите «Выбрать папку».

785f338e1860029c.png

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

f0ee5141dc6fa40e.png

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

5acd9e68eb972e15.png

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

8bddb3d688ba842d.png

9. Создайте защищенные ресурсы с помощью Cloud KMS Autokey.

Постоянные диски Compute Engine

Autokey создает новый ключ для каждого диска, образа и образа машины в том же месте, где находится создаваемый ресурс.

Чтобы создать диск, выполните следующие действия:

  1. В консоли Google Cloud перейдите на страницу «Диски» .
  2. Нажмите «Создать диск» и введите свойства нового диска.
  3. В разделе «Шифрование» выберите «Ключ Cloud KMS».

dcc63e9ae03c5fbe.png

  1. В качестве типа ключа выберите Cloud KMS с автоматическим ключом, а затем нажмите Запросить новый ключ. Сообщение указывает, что ваш ключ был успешно создан и готов к использованию.

4b2283a0d52cc98d.png

  1. Чтобы завершить создание диска, нажмите «Создать».

Вы можете выполнить аналогичный процесс для создания защищенных ресурсов экземпляра, образа и образа машины.

Корзины облачного хранилища Google

Autokey создает новый ключ в том же месте, где находится сегмент. Ключ, созданный Autokey, назначается в качестве ключа сегмента по умолчанию.

Autokey не создает ключи для объектов. По умолчанию объекты, созданные в сегменте, используют ключ сегмента по умолчанию. Если вы хотите зашифровать объект, используя ключ, отличный от ключа по умолчанию для сегмента, вы можете вручную создать CMEK и использовать этот ключ при создании объекта.

  1. В консоли Google Cloud перейдите на страницу «Создать корзину» .
  2. Выберите глобально уникальное постоянное имя.
  3. Выберите местоположение данных.
  4. Перейдите к разделу «Выберите способ защиты данных объекта».

e31bbeff5c7aabdf.png

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

9c68ce19dac932de.png

  1. Разверните раздел Шифрование данных и выберите Ключ Cloud KMS. d8caca08891be9dc.png
  2. В качестве типа ключа выберите Cloud KMS с автоматическим ключом, а затем нажмите Запросить новый ключ. Сообщение указывает, что ваш ключ был успешно создан и готов к использованию.

a10d1ae243c44811.png

  1. Чтобы завершить создание сегмента, нажмите «Создать». Если появится диалоговое окно с сообщением «Публичный доступ будет запрещен», нажмите «Подтвердить».

Набор данных BigQuery

Для каждого нового набора данных Autokey создает новый ключ в том же месте, где находится сам ресурс, который становится ключом набора данных по умолчанию. Autokey не создает ключи для таблиц, запросов, временных таблиц или моделей. По умолчанию эти ресурсы защищены ключом набора данных по умолчанию. Если вы хотите защитить ресурс в наборе данных с помощью ключа, отличного от ключа набора данных по умолчанию, вы можете вручную создать CMEK и использовать этот ключ при создании ресурса.

Чтобы создать набор данных BigQuery, вам сначала необходима роль пользователя BigQuery.

  1. Вернитесь в Cloud Shell
  2. Настройте Cloud Shell на выполнение команд из проекта ресурса.
gcloud config set project $RESOURCE_PROJECT
  1. Выполните следующую команду, чтобы сохранить номер вашего проекта как переменную с именем RESOURCE_PROJECT_NUMBER.
export RESOURCE_PROJECT_NUMBER=$(gcloud projects list --filter="$(gcloud config get-value project)" --format="value(PROJECT_NUMBER)")
  1. Предоставьте себе роль пользователя BigQuery.
gcloud projects add-iam-policy-binding $RESOURCE_PROJECT_NUMBER \
    --role=roles/bigquery.user \
    --member=user:$KEY_ADMIN_EMAIL

Теперь, когда у вас есть роль пользователя BigQuery, вы можете создать набор данных и защитить его с помощью Autokey!

  1. В консоли Google Cloud перейдите на страницу BigQuery.
  2. Следуйте инструкциям по созданию набора данных, пока не дойдете до пункта «Дополнительные параметры» > «Шифрование».
  3. В разделе «Шифрование» выберите «Ключ Cloud KMS».
  4. В качестве типа ключа выберите Cloud KMS с автоматическим ключом, а затем нажмите Запросить новый ключ. Сообщение указывает, что ваш ключ был успешно создан и готов к использованию.
  5. Чтобы завершить создание набора данных, нажмите Создать набор данных.

10. Изучите свои ключи

На этом этапе вы изучите ключи Cloud KMS Autokey, созданные от вашего имени, посетив страницу инвентаризации ключей. Страница Key Inventory предоставляет исчерпывающую информацию о криптографических ключах вашего проекта. Обратите внимание, что данные могут быть задержаны. Например, если вы создаете новый защищенный ресурс, защищенный ресурс и связанная с ним версия ключа не добавляются сразу на вкладку «Отслеживание использования». Дополнительные ограничения см. здесь .

  1. В консоли Google Cloud перейдите на страницу Key Inventory .
  2. Необязательно: Чтобы отфильтровать список ключей, введите условия поиска в поле Filter_list Filter и нажмите Enter. Например, вы можете фильтровать ключи по местоположению, связке ключей, статусу или другим свойствам ключей.
  3. Щелкните имя ключа, для которого вы хотите просмотреть информацию об использовании.
  4. Нажмите «Обзор». Обратите внимание, что у вас есть ключ для каждого созданного ресурса. Каждое имя ключа включает имя ресурса, который защищает ключ (например, «вычислительный диск» или «корзина хранения»). Cloud KMS Autokey гарантирует, что каждый ключ будет запланирован для ротации через 365 дней после его создания, и каждому ключу будет присвоен уровень защиты «HSM».

9acbce68acb653d4.png

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

7def6fe9a023d063.png

11. Поздравления

Поздравляем, вы успешно создали ресурсы Google Cloud и автоматически зашифровали их по требованию с помощью Cloud KMS Autokey!

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

12. Что дальше?

Загрузите данные на свои ресурсы, зашифрованные с помощью Autokey.

Справочная документация