Доступ к секретному менеджеру нескольких облачных проектов Google с помощью клиентской библиотеки google-cloud-secretmanager на java

#java #google-cloud-platform #google-secret-manager

# #java #google-cloud-platform #google-secret-manager

Вопрос:

Я использую GCP Secret manager для хранения паролей с использованием клиентской библиотеки google-cloud-secretmanager (Java). Клиентская библиотека ожидает указания пути к файлу ключа учетной записи службы (json) для проекта gcp в переменной среды. Я могу сделать это для одного проекта, но когда я пытаюсь получить доступ к секретному менеджеру нескольких проектов GCP, я не знаю, как установить ключи для разных проектов в переменной среды. Нужна помощь в настройке ключей в среде или есть способ установить ее с помощью Java-кода.

Я использую эту зависимость maven

   <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-secretmanager</artifactId>
  </dependency>
 

https://cloud.google.com/secret-manager/docs/reference/libraries

Заранее спасибо.

Ответ №1:

Как и большинство облачных сервисов Google, Google Secret Manager поддерживает межпроектные разрешения. Вы можете предоставить своей учетной записи службы доступ к секретам в других проектах, применив к учетной записи службы разрешение IAM. Даже если учетная запись службы находится в project-a , ей все равно можно предоставить разрешение на доступ к секретным секретам менеджера в project-b :

 gcloud secrets add-iam-policy-binding "my-secret" 
  --project "project-b"
  --member "serviceAccount:my-service-account@project-a.iam.gserviceaccount.com"
 

Кроме того, клиентской библиотеке не требуется путь к ключу учетной записи службы JSON. Он принимает один, но вы можете обеспечить аутентификацию по нескольким путям, включая учетные данные приложения по умолчанию (предпочтительно).

Комментарии:

1. Спасибо. Могу ли я использовать тот же ключ, который я уже сгенерировал, для доступа ко всем проектам, применяя разрешения IAM?

2. Я добавил адрес электронной почты учетной записи службы в новый проект и предоставил доступ. Это сработало. Спасибо.