Мы настроили прокси CloudSQL в качестве дополнительного контейнера для одного из наших приложений на основе Java / Tomcat.
Вот как мы настраиваем удостоверение рабочей нагрузки, чтобы наше приложение могло подключаться к CloudSQL через прокси-сервер cloudql:
Создал учетную запись службы Cloud IAM и предоставил ей разрешение клиента SQL:
Настройте привязку политики следующим образом:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:[PROJECT_ID].svc.id.goog[default/default]" \ [GSA_NAME]@[PROJECT_ID].iam.gserviceaccount.com
Добавлена аннотация к сервисному аккаунту GKE:
kubectl annotate serviceaccount \ --namespace [K8S_NAMESPACE] \ [KSA_NAME] \ iam.gke.io/gcp-service-account=[GSA_NAME]@[PROJECT_ID].iam.gserviceaccount.com
Но когда мы проверяем это, используя:
kubectl run --rm -it \ --generator=run-pod/v1 \ --image google/cloud-sdk:slim \ --serviceaccount [KSA_NAME] \ --namespace [K8S_NAMESPACE] \ workload-identity-test
Несмотря на то, что все сделано правильно, как описано на этой странице, приводит к:
Error 403: The client is not authorized to make this request., notAuthorized