Шифруйте данные с помощью ключей шифрования, управляемых клиентом

В этом документе показано, как использовать ключи шифрования, управляемые клиентом (CMEK), для шифрования и управления данными в состоянии покоя в облачном сервисе через Cloud Key Management Service . CMEK интегрирован с настройкой кода для Gemini Code Assist. Gemini Code Assist не поддерживает использование ключей Cloud EKM .

В этом документе вы делаете следующее:

  • Узнайте, как создать CMEK.
  • Предоставьте разрешения учетной записи службы Gemini Code Assist.
  • Создайте индекс репозитория кода с помощью CMEK.
  • Удалить доступ к репозиторию CMEK.

По умолчанию Gemini для Google Cloud шифрует данные клиентов в состоянии покоя . Gemini выполняет шифрование автоматически, без каких-либо дополнительных действий с вашей стороны. Эта опция называется шифрованием Google по умолчанию .

После настройки ресурсов с помощью ключей CMEK доступ к ресурсам Gemini будет аналогичен использованию шифрования Google по умолчанию. Подробнее о вариантах шифрования см. в разделе «Ключи шифрования, управляемые клиентом (CMEK)» .

Прежде чем начать

  1. В одной из следующих сред разработки настройте gcloud CLI:

    Если вы используете внешнего поставщика удостоверений (IdP), вам необходимо сначала войти в интерфейс командной строки gcloud, используя свое федеративное удостоверение .

  2. В вашей оболочке выполните команду gcloud components update чтобы убедиться, что все установленные компоненты gcloud обновлены до последней версии. Для этого вы можете установить и инициализировать gcloud или использовать Cloud Shell .

    gcloud components update
    

Создайте CMEK и предоставьте разрешения

Чтобы создать CMEK и предоставить учетной записи службы Gemini Code Assist разрешения на доступ к ключу, выполните следующие задачи:

  1. В проекте Google Cloud, в котором вы хотите управлять своими ключами, выполните следующие действия:

    1. Включить API службы управления облачными ключами .

    2. Создайте связку ключей и ключ, используя один из следующих вариантов:

  2. Предоставьте IAM-роль CryptoKey Encrypter/Decrypter ( roles/cloudkms.cryptoKeyEncrypterDecrypter ) учётной записи сервиса Gemini Code Assist. Предоставьте это разрешение для созданного вами ключа.

    Консоль

    1. Перейти к управлению ключами .

      Перейти к управлению ключами

    2. Выберите созданный вами ключ.

    3. Предоставьте доступ к учетной записи сервиса Gemini Code Assist:

      1. Нажмите Добавить принципала .
      2. Добавьте учётную запись службы Gemini Code Assist. Учётная запись службы — service- PROJECT_NUMBER @gcp-sa-cloudaicompanions. , где PROJECT_NUMBERномер проекта Google Cloud, в котором включен Gemini Code Assist.
      3. В разделе Выбор роли выберите Cloud KMS > Cloud KMS CryptoKey Encrypter/Decrypter .
      4. Нажмите «Сохранить» .
    4. Повторите предыдущий шаг, чтобы предоставить доступ учетной записи, которая создаст индекс репозитория кода с помощью CMEK.

    5. Вернитесь на страницу управления ключами и снова выберите ключ.

    6. Выберите «Показать панель информации» . Роли должны отображаться в столбце «Роль/Участник» .

    gcloud

    1. Чтобы предоставить доступ к учетной записи службы Gemini Code Assist, в среде оболочки используйте команду kms keys add-iam-policy-binding :

      gcloud kms keys add-iam-policy-binding KEY_NAME \
          --project=PROJECT_ID \
          --location=LOCATION \
          --keyring=KEYRING_NAME \
          --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudaicompanion." \
          --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"
      

      Заменить следующее:

      • KEY_NAME : имя ключа.
      • PROJECT_ID : идентификатор проекта, содержащего ключ.
      • LOCATION : ключевое местоположение.
      • KEYRING_NAME : имя брелока для ключей.
      • PROJECT_NUMBER : номер проекта Google Cloud с включенным Gemini Code Assist.
    2. Повторите предыдущий шаг, чтобы предоставить доступ учетной записи, которая создаст индекс репозитория кода с помощью CMEK.

    Дополнительную информацию об этой команде см. в документации gcloud kms keys add-iam-policy-binding .

Теперь вы можете создать индекс репозитория кода с CMEK, используя API, и указать ключ, который будет использоваться для шифрования.

Создайте индекс репозитория кода с помощью CMEK

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

gcloud

Используйте команду gemini code-repository-indexes create :

gcloud gemini code-repository-indexes create CODE_REPOSITORY_INDEX_NAME \
    --location=LOCATION \
    --kms-key="projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"

Заменить следующее:

  • CODE_REPOSITORY_INDEX_NAME : имя нового индекса репозитория кода, который вы создадите.
  • LOCATION : ключевое местоположение.
  • KEY_PROJECT_ID : ключевой идентификатор проекта.
  • KEYRING_NAME : имя брелока для ключей.
  • KEY_NAME : имя ключа.

API

  1. Создайте JSON-файл, содержащий следующую информацию:

      {
        "kmsKey": "projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"
      }
    

    Заменить следующее:

    • KEY_PROJECT_ID : ключевой идентификатор проекта
    • KEY_LOCATION : местоположение ключа
    • KEYRING_NAME : имя брелока для ключей
    • KEY_NAME : имя ключа
  2. Используйте команду cURL для вызова метода projects.locations.codeRepositoryIndexes.create :

    curl -X POST --data-binary @JSON_FILE_NAME \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://cloudaicompanion.googleapis.com/v1/projects/PROJECT_ID/locations/KEY_LOCATION/codeRepositoryIndexes?codeRepositoryIndexId=CODE_REPOSITORY_INDEX_NAME"

    Заменить следующее:

    • JSON_FILE_NAME : путь к JSON-файлу, созданному на предыдущем шаге.
    • PROJECT_ID : идентификатор проекта, в котором будет создан репозиторий.
    • KEY_LOCATION : место создания репозитория, которое должно совпадать с местом, где находится CMEK.
    • CODE_REPOSITORY_INDEX_NAME : имя нового индекса репозитория кода, который вы создадите. Например, zg-btf-0001 .

В ответе возвращается набор записей журнала.

Удалить доступ к репозиторию CMEK

Существует несколько способов закрыть доступ к репозиторию, зашифрованному с помощью CMEK:

Мы рекомендуем отозвать разрешения у учётной записи сервиса Gemini Code Assist перед отключением или уничтожением ключа. Изменения разрешений вступают в силу в течение нескольких секунд, поэтому вы можете увидеть последствия отключения или уничтожения ключа.