İş Yükü Kimliği ile Google Cloud Java SDK?
Oct 08 2020
Bir GKE kümesi içinden depolama API'siyle nasıl kimlik doğrulaması yapılacağını bulmaya çalışıyorum.
Kod:
Storage storage = StorageOptions.newBuilder()
.setCredentials(ServiceAccountCredentials.getApplicationDefault())
.setProjectId(gcpProjectId)
.build().getService();
getApplicationDefault() API ile kimlik doğrulaması yapmak için şu araçları kullandığı belgelenmiştir:
- {@Code GOOGLE_APPLICATION_CREDENTIALS} ortam değişkeni tarafından gösterilen kimlik bilgileri dosyası
- Google Cloud SDK {@code gcloud auth application-default login} komutu tarafından sağlanan kimlik bilgileri
- Google App Engine yerleşik kimlik bilgileri
- Google Cloud Shell yerleşik kimlik bilgileri
- Google Compute Engine yerleşik kimlik bilgileri
Uygulama, GCP iş yükü kimliği özelliğini kullanıyor, bu nedenle uygulama (küme içi) hizmet hesabına şu bilgiler ekleniyor:
serviceAccount.annotations.iam.gke.io/gcp-service-account: [email protected]
Şimdi depolama hesabına yapılan çağrı aşağıdaki hatayla başarısız oluyor:
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Primary: /namespaces/my-project.svc.id.goog with additional claims does not have storage.objects.create access to the Google Cloud Storage object.",
"reason" : "forbidden"
} ],
"message" : "Primary: /namespaces/my-project.svc.id.goog with additional claims does not have storage.objects.create access to the Google Cloud Storage object."
}
Bu, iş yükü kimliğinin doğru çalışmadığını düşünmeme neden oluyor. Varsayılan değil, açıklamalı hizmet hesabım için bir hata mesajı almayı bekliyorum.
Yapmam gereken başka bir şey var mı?
Yanıtlar
MoritzSchmitzv.Hülst Oct 09 2020 at 15:47
Ek açıklama yanlış. Onun yerine:
serviceAccount.annotations.iam.gke.io/gcp-service-account: [email protected]
olmalı
iam.gke.io/gcp-service-account: [email protected]
Artık hata mesajı, uygulamanın bir iş yükü kimliği kullandığını da gösteriyor:
java.io.IOException: Unexpected Error code 403 trying to get security access token from Compute Engine metadata for the default service account: Unable to generate access token; IAM returned 403 Forbidden: The caller does not have permission
This error could be caused by a missing IAM policy binding on the target IAM service account.
For more information, refer to the Workload Identity documentation:
https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#creating_a_relationship_between_ksas_and_gsas
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'