В этом документе показано, как использовать ключи шифрования, управляемые клиентом (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)» .
Прежде чем начать
В одной из следующих сред разработки настройте gcloud CLI:
Cloud Shell : чтобы использовать онлайн-терминал с уже настроенным интерфейсом командной строки gcloud, запустите редактор Cloud Shell .
Локальная оболочка : для использования локальной среды разработки установите и инициализируйте gcloud CLI.
Если вы используете внешнего поставщика удостоверений (IdP), вам необходимо сначала войти в интерфейс командной строки gcloud, используя свое федеративное удостоверение .
В вашей оболочке выполните команду
gcloud components update
чтобы убедиться, что все установленные компоненты gcloud обновлены до последней версии. Для этого вы можете установить и инициализировать gcloud или использовать Cloud Shell .gcloud components update
Создайте CMEK и предоставьте разрешения
Чтобы создать CMEK и предоставить учетной записи службы Gemini Code Assist разрешения на доступ к ключу, выполните следующие задачи:
В проекте Google Cloud, в котором вы хотите управлять своими ключами, выполните следующие действия:
Создайте связку ключей и ключ, используя один из следующих вариантов:
- Создайте связку ключей и ключ непосредственно в Cloud KMS.
- Используйте ключ, управляемый извне. Создайте внешний ключ , а затем создайте ключ Cloud EKM , чтобы сделать его доступным через Cloud KMS.
Предоставьте IAM-роль CryptoKey Encrypter/Decrypter (
roles/cloudkms.cryptoKeyEncrypterDecrypter
) учётной записи сервиса Gemini Code Assist. Предоставьте это разрешение для созданного вами ключа.Консоль
Перейти к управлению ключами .
Выберите созданный вами ключ.
Предоставьте доступ к учетной записи сервиса Gemini Code Assist:
- Нажмите Добавить принципала .
- Добавьте учётную запись службы Gemini Code Assist. Учётная запись службы —
service- PROJECT_NUMBER @gcp-sa-cloudaicompanions.
, где PROJECT_NUMBER — номер проекта Google Cloud, в котором включен Gemini Code Assist. - В разделе Выбор роли выберите Cloud KMS > Cloud KMS CryptoKey Encrypter/Decrypter .
- Нажмите «Сохранить» .
Повторите предыдущий шаг, чтобы предоставить доступ учетной записи, которая создаст индекс репозитория кода с помощью CMEK.
Вернитесь на страницу управления ключами и снова выберите ключ.
Выберите «Показать панель информации» . Роли должны отображаться в столбце «Роль/Участник» .
gcloud
Чтобы предоставить доступ к учетной записи службы 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.
Повторите предыдущий шаг, чтобы предоставить доступ учетной записи, которая создаст индекс репозитория кода с помощью 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
Создайте JSON-файл, содержащий следующую информацию:
{ "kmsKey": "projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME" }
Заменить следующее:
-
KEY_PROJECT_ID
: ключевой идентификатор проекта -
KEY_LOCATION
: местоположение ключа -
KEYRING_NAME
: имя брелока для ключей -
KEY_NAME
: имя ключа
-
Используйте команду
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:
- Отзовите роль Cloud KMS CryptoKey Encrypter/Decrypter у учетной записи службы Gemini Code Assist с помощью API-консоли или gcloud .
- Временно отключите CMEK.
- Окончательно уничтожить CMEK.
Мы рекомендуем отозвать разрешения у учётной записи сервиса Gemini Code Assist перед отключением или уничтожением ключа. Изменения разрешений вступают в силу в течение нескольких секунд, поэтому вы можете увидеть последствия отключения или уничтожения ключа.