Ausstellung und Verwendung von Identitäten prüfen


.

Auf dieser Seite wird beschrieben, wie Sie Logs verwenden, um die Ausstellung und Verwendung von Kubernetes-Identitäten in Form von Zertifikaten und Dienstkonto-Tokens durch die Steuerungsebene des Google Kubernetes Engine-Clusters (GKE) zu prüfen. Diese Überprüfung ist völlig optional und nicht erforderlich, um Ihre Steuerungsebene zu schützen.

Dieser Leitfaden richtet sich an Sicherheitsadministratoren und Plattforminhaber, die bestimmte Compliance- oder Richtlinienanforderungen für die Kontrolle der Ausstellung und Signierung von Anmeldedaten haben. Sie sollten bereits selbstverwaltete Schlüssel und Zertifizierungsstellen mit der GKE Control Plane Authority eingerichtet haben.

Sie sollten mit den folgenden Konzepten vertraut sein:

Auf dieser Seite wird ein Teil einer Reihe optionaler Steuerungsebenenfunktionen in GKE beschrieben, mit denen Sie Aufgaben wie das Überprüfen des Sicherheitsstatus der Steuerungsebene oder das Konfigurieren der Verschlüsselung und der Anmeldedatensignierung in der Steuerungsebene mit von Ihnen verwalteten Schlüsseln ausführen können. Weitere Informationen finden Sie unter GKE Control Plane Authority.

Standardmäßig wendet Trusted Cloud verschiedene Sicherheitsmaßnahmen auf die verwaltete Steuerungsebene an. Auf dieser Seite werden optionale Funktionen beschrieben, mit denen Sie mehr Einblick in die GKE-Steuerungsebene erhalten oder mehr Kontrolle darüber haben.

Protokolle zur Identitätsausstellung

Die GKE-Logs zur Identitätsausstellung sind Audit-Logs der Steuerungsebene, in denen aufgezeichnet wird, wann die Steuerungsebene Anmeldedaten ausstellt und wann diese Anmeldedaten im Cluster verwendet werden. Sie können diese Logs verwenden, um die Lebensdauer von Anmeldedaten zu verfolgen, einschließlich Ausstellung und Verwendung. Korrelieren Sie dazu die Logs zur Identitätsausstellung mit den Logs von Cloud KMS, Certificate Authority Service und der Kubernetes API. GKE-Logs zur Identitätsausstellung sind aktiviert, wenn Sie die GKE Control Plane Authority verwenden. In diesen Logs werden die Ausstellung und Verwendung der folgenden Arten von Anmeldedaten erfasst:

  • X.509-Zertifikate
  • Cluster-JSON-Web-Tokens (JWTs)

X.509-Zertifikate

Kubernetes verwendet X.509-Zertifikate für die Authentifizierung mit Clientzertifikaten. Zum Ausstellen von Zertifikaten sendet die Kubernetes-Steuerungsebene eine genehmigte CertificateSigningRequest an eine Zertifizierungsstelle (Certificate Authority, CA) in CA Service. Die Zertifizierungsstelle stellt dann ein Zertifikat aus, indem sie den entsprechenden Schlüssel in Cloud KMS verwendet, um den Zertifikats-Digest zu signieren.

Die Kubernetes API-Serverlogs enthalten Details zur Zertifikatsignatur für jeden Kubernetes API-Aufruf, der mit einem Zertifikat authentifiziert wurde. Der Eintrag für die Anmeldedaten-ID im Log hat das folgende Format:

"authentication.k8s.io/credential-id": "X509SHA256=CERTIFICATE_HASH"

Der Wert CERTIFICATE_HASH ist der SHA256-Hash für das Zertifikat, mit dem Sie den Lebenszyklus des Zertifikats nachvollziehen können.

Sie können Kubernetes API-Serverzertifikatslogs verwenden, um den Lebenszyklus des Zertifikats nachzuvollziehen, indem Sie Logs aus den folgenden Diensten korrelieren:

  • GKE-Logs zur Identitätsausstellung: Verwenden Sie die protoPayload.metadata.credentialId-Abfrage, um bestimmte GKE-Logs zur Identitätsausstellung basierend auf der Anmeldedaten-ID aus den Kubernetes API-Server-Logs zu finden. Verwenden Sie dann das Feld protoPayload.metadata.certificateFingerprint aus dem GKE-Log zur Identitätsausstellung, um die Logs zur Identitätsausstellung mit den CA Service-Logs in Beziehung zu setzen.
  • CA Service-Logs: Suchen Sie nach dem Logeintrag zur Zertifikatausstellung, der die folgenden IDs enthält:
    • cert_fingerprint.sha256_hash: Der SHA256-Hash des signierten Zertifikats. Verwenden Sie diese ID, um Logs mit GKE- und Kubernetes API-Ereignissen abzugleichen.
    • tbs_certificate_digest: ein Hash des Zertifikatsinhalts, der zur Signierung mit einem Cloud KMS-Schlüssel gesendet wurde. Verwenden Sie diese ID, um Logs mit Cloud KMS-Logs abzugleichen.
  • Cloud KMS-Signaturlogs: Verwenden Sie den Wert tbs_certificate_digest aus dem CA Service-Log, um zu bestätigen, dass das Zertifikat mit dem erwarteten Cloud KMS-Schlüssel signiert wurde.

JSON-Web-Tokens (JWTs)

Signierte JWTs (JSON Web Tokens) werden als Bearer-Tokens für Entitäten im Cluster wie Kubernetes-Dienstkonten verwendet, wenn Anfragen an die Kubernetes API authentifiziert werden. Wenn ein Pod erstellt wird, der ein bestimmtes Dienstkonto verwendet, erstellt Kubernetes ein JWT und stellt es im Pod bereit. Wenn Sie die GKE-Steuerungsebene verwenden, um Ihre eigenen Schlüssel und Zertifizierungsstellen auszuführen, wird dieses JWT mit dem Dienstkonto-Signaturschlüssel in Cloud KMS signiert und später verifiziert.

Die Kubernetes API-Server-Logs enthalten Details zur Tokensignatur für jeden Kubernetes API-Aufruf, der mit einem JWT authentifiziert wurde. Der Eintrag für die Tokensignatur im Log hat das folgende Format:

"authentication.kubernetes.io/credential-id":"JTI=JWT_ID"

Der Wert JWT_ID ist ein String, der das JWT identifiziert, das im Kubernetes-API-Aufruf verwendet wurde.

Sie können die JWT-ID aus den Kubernetes API-Serverlogs verwenden, um den Lebenszyklus eines JWT nachzuvollziehen, indem Sie die folgenden Logs korrelieren:

  • GKE-Logs zur Identitätsausstellung: Verwenden Sie die JWT-ID aus den Kubernetes API-Server-Logs, um bestimmte Einträge zur JWT-Ausstellung zu finden. Jeder Eintrag enthält auch das Feld toBeSignedDigest, dessen Wert mit Cloud KMS-Logs übereinstimmen kann.
  • Cloud KMS-Signaturlogs: Verwenden Sie den Wert des Felds toBeSignedDigest aus den GKE-Logs zur Identitätsausstellung, um zu bestätigen, dass der erwartete Cloud KMS-Schlüssel das JWT signiert hat.

Preise

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Trusted Cloud by S3NS:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.

Neuen Trusted Cloud Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Hinweise

  1. Steuerungsebene Ihres GKE-Cluster mit selbstverwalteten CAs oder Schlüsseln konfigurieren

  2. Aktivieren Sie die folgenden Cloud-Audit-Logging-Dienst-APIs:

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie für den Zugriff auf Protokolle zur Identitätsausstellung benötigen:

  • Alle Aktionen in Logging ausführen: Logging-Administrator (roles/logging.admin).
  • Logs ansehen: Betrachter privater Logs (roles/logging.privateLogViewer).

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Anforderungen und Einschränkungen

Es gelten die folgenden Anforderungen und Einschränkungen:

  • Sie müssen mindestens die GKE-Version 1.31.1-gke.1846000 verwenden.
  • Logs zur Identitätsausstellung werden als Cloud-Audit-Logs aufgezeichnet und haben eine festgelegte Aufbewahrungsdauer von 400 Tagen. Die Aufbewahrungsdauer ist nicht konfigurierbar. Sie können Ihre Audit-Logs zu Systemereignissen jedoch an andere Ziele weiterleiten, um sie länger aufzubewahren.

Zertifikate überprüfen

Sie können die Logs zur Ausstellung von Identitäten der GKE-Steuerungsebene verwenden, um zu bestätigen, dass ein Zertifikat erfolgreich ausgestellt oder verwendet wurde. Sie können eines der folgenden Logs oder eine Kombination von Logs verwenden, um Informationen zur Ausstellung und Verwendung von Zertifikaten zu bestätigen:

Zertifikatslogs

Kubernetes API-Log für die Zertifikatsnutzung

Protokolliert die Details der Zertifikatsignatur, wenn das Zertifikat für die Kubernetes API verwendet wird.

GKE-Log für Vorgänge zur Zertifikatausstellung

Protokolliert alle Vorgänge zur Zertifikatausstellung als Systemereignis-Audit-Log. Diese Logs sind standardmäßig für alle Cluster aktiviert, in denen von Nutzern verwaltete Schlüssel oder CAs für die GKE-Steuerungsebene verwendet werden.

CA Service-Audit-Log

Protokolliert einen Eintrag, wenn ein Zertifikat ausgestellt wird.

Cloud KMS-Audit-Log

Protokolliert einen Eintrag, wenn ein Digest als Reaktion auf eine Signieranfrage von CA Service signiert wird.

Zertifikatsverwendung mit Kubernetes API-Logs prüfen

So finden Sie Logeinträge für API-Aufrufe, die mit Zertifikaten authentifiziert wurden:

  1. Rufen Sie in der Trusted Cloud Console die Seite Log-Explorer auf:

    Zum Log-Explorer

  2. Fügen Sie den folgenden Ausdruck in das Feld des Abfrageeditors ein:

    log_id("cloudaudit.googleapis.com/activity")
    resource.type="k8s_cluster"
    labels."authentication.kubernetes.io/credential-id":"X509SHA256="
    
  3. Klicken Sie auf Abfrage ausführen.

    Bei dieser Abfrage werden alle Kubernetes API-Serverlogs zurückgegeben, denen ein X.509-Zertifikat zugeordnet ist. Suchen Sie mit Ihren Sicherheitstools oder manuell in den Logs nach bestimmten Logeinträgen, um sie zu untersuchen.

Wenn Sie diese Logs mit anderen Logtypen in Beziehung setzen möchten, suchen Sie nach dem folgenden Feld:

"authentication.k8s.io/credential-id":"CREDENTIAL_ID"

Der Wert CREDENTIAL_ID ist der Bezeichner, mit dem Sie Logs aus GKE, CA Service und Cloud KMS korrelieren können. Der CREDENTIAL_ID hat das Format "X509SHA256=CERTIFICATE_HASH".

Zertifikatsausstellung mit GKE-Logs prüfen

So finden Sie GKE-Logeinträge für Ereignisse zur Zertifikatausstellung:

  1. Rufen Sie in der Trusted Cloud Console die Seite Log-Explorer auf:

    Zum Log-Explorer

  2. Fügen Sie den folgenden Ausdruck in das Feld des Abfrageeditors ein:

    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event"
    resource.type="gke_cluster"
    protoPayload.serviceName="container.googleapis.com"
    protoPayload.metadata.credentialId="CREDENTIAL_ID"
    

    Ersetzen Sie Folgendes:

  3. Klicken Sie auf Abfrage ausführen.

Zertifikatsausstellung mit CA Service-Logs überprüfen

So finden Sie CA Service-Logs, die mit den GKE-Zertifikatausstellungsereignissen übereinstimmen:

  1. Rufen Sie in der Trusted Cloud Console die Seite Log-Explorer auf:

    Zum Log-Explorer

  2. Fügen Sie den folgenden Ausdruck in das Feld des Abfrageeditors ein:

    resource.type="audited_resource"
    protoPayload.serviceName="privateca.googleapis.com"
    protoPayload.methodName="google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificate"
    protoPayload.response.certificate_description.cert_fingerprint.sha256_hash="CERTIFICATE_HASH"
    

    Ersetzen Sie CERTIFICATE_HASH durch die CERTIFICATE_HASH aus dem Abschnitt Zertifikatsverwendung mit Kubernetes API-Logs überprüfen. Achten Sie darauf, dass Sie das Präfix X509SHA256= aus dem Hash entfernen.

  3. Klicken Sie auf Abfrage ausführen.

    Diese Abfrage gibt ein Log zurück, das im Antwortabschnitt zur Zertifikatsbeschreibung ein tbs_certificate_digest: DIGEST_VALUE-Feld enthält.

Sie können DIGEST_VALUE verwenden, um Cloud KMS-Signaturlogs für das Zertifikat abzugleichen.

Zertifikatausstellung mit Cloud KMS-Signaturlogs prüfen

So finden Sie Cloud KMS-Signaturereignisse für die Ereignisse zur CA Service-Zertifikatausstellung:

  1. Rufen Sie in der Trusted Cloud Console die Seite Log-Explorer auf:

    Zum Log-Explorer

  2. Fügen Sie den folgenden Ausdruck in das Feld des Abfrageeditors ein:

    protoPayload.request.digest.sha256="DIGEST_VALUE"
    protoPayload.@type="type.googleapis.com/google.cloud.audit.AuditLog"
    protoPayload.methodName="AsymmetricSign"
    protoPayload.serviceName="cloudkms.googleapis.com"
    

    Ersetzen Sie DIGEST_VALUE durch den Digest-Wert aus dem Abschnitt Zertifikatsausstellung mit CA Service-Logs bestätigen.

  3. Klicken Sie auf Abfrage ausführen.

    Diese Abfrage gibt die Protokolle für Ereignisse zur Zertifikatausstellung zurück. In Cloud KMS-Logs wird nicht zwischen Zertifikaten und JWTs unterschieden. Die Logeinträge für beide sind daher identisch.

Tokens prüfen

Sie können die Ausstellungslogs für die Identität der GKE-Steuerungsebene und die Cloud KMS-Signaturlogs verwenden, um zu bestätigen, dass ein JSON Web Token (JWT) erfolgreich ausgestellt wurde.

Die Rückverfolgung des Tokenausgabeereignisses beginnt in der Regel mit der Überwachung des Kubernetes API-Logs auf Dienstkontoaktivitäten. Nachdem Sie ein Aktivitätsprotokoll identifiziert haben, das genauer untersucht werden muss, können Sie die folgenden Protokolle verwenden, um Informationen zur Ausstellung und Verwendung von Anmeldedaten zu bestätigen:

JWT-Logs

Kubernetes API-Log für die JWT-Verwendung

Protokolliert die Details der JWT-Signatur, wenn ein JWT für die Kubernetes API verwendet wird.

GKE-Log für JWT-Ausstellungsvorgänge

Alle Vorgänge zur Tokenausstellung werden als Audit-Log zu Systemereignissen protokolliert. Diese Logs sind standardmäßig für alle Cluster aktiviert, in denen von Nutzern verwaltete Schlüssel oder Zertifizierungsstellen für die GKE-Steuerungsebene verwendet werden.

Cloud KMS-Audit-Log

Protokolliert einen Eintrag, wenn ein Token signiert und ausgestellt wird.

Tokennutzung mit Kubernetes API-Serverlogs prüfen

So rufen Sie Logeinträge für Ereignisse zur Tokennutzung auf:

  1. Rufen Sie in der Trusted Cloud Console die Seite Log-Explorer auf:

    Zum Log-Explorer

  2. Fügen Sie den folgenden Ausdruck in das Feld des Abfrageeditors ein:

    log_id("cloudaudit.googleapis.com/activity")
    resource.type="k8s_cluster"
    labels."authentication.kubernetes.io/credential-id":"JTI="
    
  3. Klicken Sie auf Abfrage ausführen.

    Mit dieser Abfrage werden alle Kubernetes API-Serverlogs mit einem zugehörigen JWT zurückgegeben. Suchen Sie mit Ihren Sicherheitstools oder manuell in den Logs nach bestimmten Logeinträgen, die Sie untersuchen möchten.

Wenn Sie diese Logs mit anderen Logtypen in Beziehung setzen möchten, suchen Sie nach dem folgenden Feld:

"authentication.k8s.io/credential-id": "JTI=JWT_ID"

JWT_ID ist die Token-ID, mit der Sie Logs aus GKE und Cloud KMS in Beziehung setzen können.

Tokenausstellung mit GKE-Logs prüfen

So finden Sie Logeinträge für Ereignisse zur Tokenausstellung:

  1. Rufen Sie in der Trusted Cloud Console die Seite Log-Explorer auf:

    Zum Log-Explorer

  2. Fügen Sie den folgenden Ausdruck in das Feld des Abfrageeditors ein:

    resource.type="gke_cluster"
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event"
    protoPayload.methodName="google.cloud.gkeauth.v1.Auth.SignServiceAccountJWT"
    protoPayload.metadata.credentialId="JTI=JWT_ID"
    

    Ersetzen Sie Folgendes:

  3. Klicken Sie auf Abfrage ausführen.

    Diese Abfrage gibt Logs zurück, die ein toBeSignedDigest-Feld enthalten.

Mit dem Wert toBeSignedDigest können Sie nach Cloud KMS-Signierereignissen suchen.

Tokenausstellung mit Cloud KMS-Signaturlogs prüfen

So finden Sie Logeinträge für signierte Digests:

  1. Rufen Sie in der Trusted Cloud Console die Seite Log-Explorer auf:

    Zum Log-Explorer

  2. Fügen Sie den folgenden Ausdruck in das Feld des Abfrageeditors ein:

    protoPayload.request.digest.sha256="DIGEST_VALUE"
    protoPayload.@type="type.googleapis.com/google.cloud.audit.AuditLog"
    protoPayload.methodName="AsymmetricSign"
    protoPayload.serviceName="cloudkms.googleapis.com"
    

    Ersetzen Sie DIGEST_VALUE durch den Wert im Feld toBeSignedDigest aus dem Abschnitt Tokenausstellung mit GKE-Logs überprüfen.

  3. Klicken Sie auf Abfrage ausführen.

    Diese Abfrage gibt die Protokolle für Ereignisse zur Zertifikatausstellung zurück. In Cloud KMS-Logs wird nicht zwischen Zertifikaten und JWTs unterschieden. Die Logeinträge für beide sind daher identisch.

Nächste Schritte