Ошибка настройки идентификатора рабочей нагрузки GKE / Cloud IAM 403

Мы настроили прокси CloudSQL в качестве дополнительного контейнера для одного из наших приложений на основе Java / Tomcat.

Вот как мы настраиваем удостоверение рабочей нагрузки, чтобы наше приложение могло подключаться к CloudSQL через прокси-сервер cloudql:

  1. Создал учетную запись службы Cloud IAM и предоставил ей разрешение клиента SQL:

  2. Настройте привязку политики следующим образом:

    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
    
    
  3. Добавлена ​​аннотация к сервисному аккаунту GKE:

    kubectl annotate serviceaccount \
      --namespace [K8S_NAMESPACE] \
      [KSA_NAME] \
      iam.gke.io/gcp-service-account=[GSA_NAME]@[PROJECT_ID].iam.gserviceaccount.com
    
  4. Но когда мы проверяем это, используя:

    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

person Parth Mehta    schedule 22.01.2020    source источник


Ответы (1)


Оказывается, в Google Cloud IAM есть сбой, который, кажется, влияют на учетные записи служб.

  1. Удалите существующую учетную запись службы Cloud IAM, созданную на шаге 1, и связанную с ней роль.
  2. Повторно создайте учетную запись службы (с теми же разрешениями на экзамен)

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

person Parth Mehta    schedule 22.01.2020