Probleme mit der Authentifizierung von verwalteten Arbeitslastidentitäten für GKE beheben

In diesem Dokument werden Lösungen für häufige Fehler bei verwalteten Arbeitslastidentitäten beschrieben.

Wenn der Arbeitslast-Pod von Google Kubernetes Engine (GKE) nicht mit den eingebundenen Zertifikaten bereitgestellt werden konnte, prüfen Sie den Pod-Status mit dem folgenden Befehl:

kubectl describe pod POD_NAME -n POD_NAMESPACE

Die Befehlsausgabe enthält Pod-Ereignisse, die vom Kubelet und vom gke-spiffe-controller generiert wurden. Prüfen Sie diese Ereignisse auf bestimmte Fehlermeldungen, die Folgendes enthalten können:

PermissionDenied-Fehler

In diesem Abschnitt werden Fehler beschrieben, die einen PermissionDenied-RPC-Fehlercode zurückgeben.

PRIVATE_CA_AUTHORIZATION_FAILURE

Dieser Fehler sieht so aus:

Permission denied while issuing the certificate: failed to issue the certificate from the GKE Auth: rpc error: code = PermissionDenied desc = Permission 'privateca.caPools.get' denied on resource 'privateca.googleapis.com/projects/CA_POOL_PROJECT_NUMBER/locations/REGION/caPools/CA_POOL_ID' (or it may not exist). Ensure that the CaPool exists and you have authorized the Managed Workload Identity to request certificates from the CaPool.

Der Fehler ist aufgetreten, weil im Workload Identity-Pool die Rolle CA Service Workload Certificate Requester(roles/privateca.workloadCertificateRequester) für den untergeordneten CA-Pool fehlt oder weil der CA-Pool nicht vorhanden ist.

Gewähren Sie dem Pool die Rolle, um diesen Fehler zu beheben:

gcloud privateca pools add-iam-policy-binding SUBORDINATE_CA_POOL_ID \
   --project=CA_POOL_PROJECT_ID \
   --location=REGION \
   --role=roles/privateca.workloadCertificateRequester \
   --member="principal://iam.googleapis.com/projects/WIP_PROJECT_NUMBER/name/locations/global/workloadIdentityPools/TRUST_DOMAIN_NAME"

Ersetzen Sie Folgendes:

  • SUBORDINATE_CA_POOL_ID: die ID des untergeordneten CA-Pools
  • CA_POOL_PROJECT_ID: die Projekt-ID des CA-Pools
  • REGION: die Region der untergeordneten Zertifizierungsstelle
  • WIP_PROJECT_NUMBER: die Projektnummer des Workload Identity-Pool-Projekts
  • TRUST_DOMAIN_NAME: der Name der Vertrauensdomain. Formatieren Sie den Namen je nach Pooltyp so:
    • Von Google verwalteter Pool: PROJECT_ID.svc.id.goog
    • Selbstverwalteter Pool: POOL_NAME.global.POOL_HOST_PROJECT_NUMBER.workload.id.goog

WORKLOAD_IDENTITY_NOT_FOUND, WORKLOAD_POOL_NOT_FOUND oder WORKLOAD_NAMESPACE_NOT_FOUND

Dieser Fehler sieht so aus:

failed to issue the certificate from the GKE Auth: rpc error: code = PermissionDenied desc = Permission denied on resource 'projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_NAME/... (or it may not exist).

Dieser Fehler wird WORKLOAD_IDENTITY_NOT_FOUND, WORKLOAD_POOL_NOT_FOUND oder WORKLOAD_NAMESPACE_NOT_FOUND zugeordnet. Er tritt auf, wenn der Workload Identity-Pool, der Namespace des Workload Identity-Pools oder die verwaltete Identitätsressource nicht vorhanden ist oder wenn er deaktiviert oder gelöscht wurde. Dieser Fehler gibt PermissionDenied anstelle von NotFound zurück, um die Nichtexistenz von Ressourcen nicht preiszugeben.

Prüfen Sie in IAM, ob der Workload Identity-Pool und seine untergeordneten Ressourcen vorhanden sind und welchen Status sie haben. Achten Sie darauf, dass sie richtig konfiguriert und nicht deaktiviert oder gelöscht wurden.

FailedPrecondition-Fehler

In diesem Abschnitt werden Fehler beschrieben, die einen FailedPrecondition-RPC-Fehlercode zurückgeben. Dieser weist in der Regel auf eine fehlende oder falsche Konfiguration hin.

WORKLOAD_IDENTITY_INVALID_CONFIGURATION

Die Pod-Beschreibung kann eine der folgenden Meldungen enthalten:

failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition desc = There are no CaPools configured for certificate issuance. Ensure you have added certificate issuance configuration to the workload identity pool 'projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WI_POOL_NAME', which contains at least one CaPool.

oder

failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition desc = Missing Certificate issuance configuration in the Trust Domain. Ensure you have added certificate issuance configuration to the workload identity pool 'projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WI_POOL_NAME' which contains at least one CaPool.

Dieser Fehler (WORKLOAD_IDENTITY_INVALID_CONFIGURATION) ist aufgetreten, weil der Workload Identity-Pool nicht mit einer Konfiguration für die Zertifikatsausstellung (Certificate Issuance Configuration, CIC) konfiguriert wurde oder weil die konfigurierte CIC mindestens einen CA-Pool enthalten muss.

Um diesen Fehler zu beheben, erstellen Sie eine CIC , die mindestens einen CA-Pool enthält, und verwenden Sie sie, um den Workload Identity-Pool zu aktualisieren.

CERTIFICATE_AUTHORITY_NOT_FOUND

Dieser Fehler sieht so aus:

failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition desc = Failed to request certificates from the CaPool... There are no enabled CAs in the CaPool. Ensure that there is at least one enabled Certificate Authority to issue a certificate.

Dieser Fehler (CERTIFICATE_AUTHORITY_NOT_FOUND) weist darauf hin, dass im vom Kunden konfigurierten CA-Pool keine Zertifizierungsstelle für die Zertifikatsausstellung gefunden werden kann.

Prüfen Sie, ob im konfigurierten CA-Pool eine Zertifizierungsstelle vorhanden und für die Zertifikatsausstellung aktiviert ist.

CA_POOL_REGION_MISMATCH

Dieser Fehler sieht so aus:

failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition desc = Unable to find a CaPool in the workload's region. Ensure you have setup a subordinate CaPool in 'WORKLOAD_REGION' and added it to the certificate issuance configuration of the Workload Identity Pool...

Dieser Fehler (CA_POOL_REGION_MISMATCH) weist darauf hin, dass für die spezifische Region der Arbeitslast kein CA-Pool konfiguriert wurde.

Konfigurieren Sie entweder einen zusätzlichen CA-Pool für die Region der Arbeitslast im Workload Identity-Pool oder stellen Sie die Arbeitslast in einer Region bereit, für die bereits ein CA-Pool konfiguriert ist.

ResourceExhausted-Fehler

In diesem Abschnitt werden Fehler beschrieben, die einen ResourceExhausted-RPC-Fehlercode zurückgeben.

PRIVATE_CA_QUOTA_EXCEEDED

Dieser Fehler sieht so aus:

failed to issue the certificate from the GKE Auth: rpc error: code = ResourceExhausted desc = Quota exceeded for quota metric 'QUOTA_METRIC' and limit 'QUOTA_LIMIT' of service 'privateca.googleapis.com' for consumer 'project_number:PROJECT_NUMBER'.

Dieser Fehler (PRIVATE_CA_QUOTA_EXCEEDED) tritt auf, wenn Sie Ihren Workload Identity-Pool so konfigurieren, dass eine benutzerdefinierte Zertifizierungsstelle verwendet wird, und ein Versuch, ein Zertifikat auszustellen, ein festgelegtes Kontingent oder Limit im Zusammenhang mit CA Service überschritten hat. Dieser Fehler tritt nicht auf, wenn Sie die von Google verwaltete Standard-Zertifizierungsstelle verwenden.

  • QUOTA_METRIC und QUOTA_LIMIT: Das spezifische Kontingent und Limit, das überschritten wurde. Beispiele: privateca.googleapis.com/enterprise_certificate_issuance und CertsPerEnterpriseCaPerMinute.

Prüfen Sie in der Console Ihre Kontingente und Limits für CA Service und fordern Sie bei Bedarf eine Kontingenterhöhung an. Google Cloud

InvalidArgument-Fehler

In diesem Abschnitt werden Fehler beschrieben, die einen InvalidArgument-RPC-Fehlercode zurückgeben.

PRIVATE_CA_KEY_ALGORITHM_MISMATCH

Dieser Fehler sieht so aus:

failed to issue the certificate from the GKE Auth: rpc error: code = InvalidArgument desc = Public key algorithm is not permitted by the CaPool's issuance policy. Ensure that the requested keyAlgorithm 'KEY_ALGO_IN_CSR' is permitted by the CAs in the CaPool 'privateca.googleapis.com/projects/PROJECT_NAME/locations/WORKLOAD_REGION/caPools/CA_POOL_NAME'.

Dieser Fehler (PRIVATE_CA_KEY_ALGORITHM_MISMATCH) weist darauf hin, dass der in der Zertifikatsanfrage angegebene Schlüsselalgorithmus nicht mit den Einschränkungen des konfigurierten CA-Pools kompatibel ist. Dies geschieht nur, wenn Sie in der Konfiguration für die Zertifikatsausstellung (Certificate Issuance Configuration, CIC) einen benutzerdefinierten Schlüsselalgorithmus konfigurieren und den Workload Identity-Pool aktualisieren.

Prüfen Sie zur Behebung dieses Fehlers, ob der in der CIC des Workload Identity-Pools konfigurierte Algorithmus mit den Algorithmen kompatibel ist, die von der Ausstellungsrichtlinie des CA-Pools unterstützt werden.

Unknown-Fehler

In diesem Abschnitt werden Fehler beschrieben, die einen Unknown-RPC-Fehlercode zurückgeben.

UNKNOWN_PRIVATE_CA_CLIENT_ERROR

Dieser Fehler sieht so aus:

failed to issue the certificate from the GKE Auth: rpc error: code = Unknown desc = Failed to get certificates using the CaPool... PRIVATE_CA_ERROR_MESSAGE

Dieser Fehler (UNKNOWN_PRIVATE_CA_CLIENT_ERROR) weist darauf hin, dass beim Aufrufen von CA Service ein unbekannter Clientfehler aufgetreten ist, z. B. ein ungültiges Argument, das an die API übergeben wurde.

Prüfen Sie die spezifische Fehlermeldung, die von der CA Service API zurückgegeben wurde, um das ungültige Argument oder das clientseitige Konfigurationsproblem zu identifizieren und zu beheben.

Latenz bei der Weitergabe von Trust-Bundles

Wenn Sie eine selbstverwaltete Zertifizierungsstelle aktualisieren oder rotieren, tritt eine Weitergabelatenz von etwa 5 Minuten auf, bevor die Aktualisierungen in den GKE-Clustern wirksam werden. Das liegt daran, dass der gke-spiffe-controller alle fünf Minuten die Mitgliedschaft prüft und Trust-Bundles abruft.

Diese Latenz tritt nicht auf, wenn Sie die von Google verwaltete Zertifizierungsstelle verwenden.

Wenn Sie eine selbstverwaltete Zertifizierungsstelle aktualisieren, warten Sie mindestens fünf Minuten, bis die Änderungen wirksam werden.