Beispiellogs für die Workload Identity-Föderation

Auf dieser Seite werden Beispiele für Audit-Logs gezeigt, die generiert werden, wenn Sie die Workforce Identity-Föderation verwenden. Mit der Workforce Identity-Föderation können Sie Identitäten von Drittanbietern Zugriff auf Google Cloud-Ressourcen gewähren, ohne einen Dienstkontoschlüssel verwenden zu müssen.

Weitere Informationen zum Aktivieren und Anzeigen von Audit-Logs finden Sie unter IAM-Audit-Logging.

IAM kann Audit-Logs generieren, wenn Sie Workforce-Pools erstellen und verwalten. Um Audit-Logs beim Verwalten von Workforce-Pools zu aktivieren, müssen Sie Audit-Logs für Datenzugriffsaktivitäten für die folgende API aktivieren:

  • Identity and Access Management (IAM) API (Logtyp „Administrator-Lesezugriff“ aktivieren)

Um Audit-Logs für den Tokenaustauschprozess oder die Google Cloud Console-Anmeldung (föderiert) weiter zu konfigurieren, müssen Sie auch Audit-Logs für Datenzugriffsaktivitäten aktivieren für die folgende API aktivieren:

  • Security Token Service API (Logtyp „Administrator-Lesezugriff“ aktivieren)

Logs zum Erstellen eines Personalpools

Das folgende Beispiel zeigt einen Logeintrag zum Erstellen eines Workforce-Pools. In diesem Beispiel hat der Nutzer sam@example.com einen Workforce-Pool mit der ID my-pool unter der Organisation mit der ID 123456789012 erstellt.

{
  "logName": "organizations/123456789012/logs/cloudaudit.googleapis.com%2Factivity",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "sam@example.com",
    },
    "methodName": "google.iam.admin.v1.WorkforcePools.CreateWorkforcePool",
    "resourceName": "locations/global/workforcePools/my-pool",
    "serviceName": "iam.googleapis.com",
    "request": {
      "@type": "type.googleapis.com/google.iam.admin.v1.CreateWorkforcePoolRequest",
      "workforcePool": {
        "parent": "organizations/123456789012"
      },
      "workforcePoolId": "my-pool"
    }
  },
  "resource": {
    "type": "audited_resource"
  }
}

Logs zum Austauschen eines IdP-Tokens gegen ein föderiertes Token

Nachdem Sie den Workforce Identity-Pool und Workforce Identity-Anbieter eingerichtet haben, können Sie ein Token für Ihren Identitätsanbieter (IdP) erstellen und gegen ein föderiertes Token austauschen.

Nachdem Sie Cloud-Audit-Logs für Datenzugriffsaktivitäten aktiviert haben, generiert IAM jedes Mal einen Audit-Logeintrag, wenn ein Hauptkonto ein Token austauscht. Der Logeintrag enthält diese Felder:

  • protoPayload.authenticationInfo.principalSubject: Der Betreff des IdP-Tokens.
    • Bei OIDC-IdPs enthält dieses Feld den Wert von sub (Betreff) aus dem OIDC-Token.
    • Für SAML-IdPs enthält dieses Feld den Wert des Unterattributs NameID des Attributs Subject in der SAML-Assertion.
  • protoPayload.metadata.mapped_principal: Der Betreff des Tokens, wobei die IAM-Syntax verwendet wird, um das Hauptkonto zu identifizieren:

    principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER
    
  • protoPayload.resourceName: Der Anbieter von Workforce-Pools, mit dem das Token verknüpft ist.

Das folgende Beispiel zeigt einen Audit-Logeintrag für eine Anfrage zum Austausch eines Tokens. In diesem Beispiel wird ein OIDC-Token gegen ein föderiertes Token ausgetauscht:

{
  "logName": "organizations/123456789012/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "b6112abb-5791-4507-adb5-7e8cc306eb2e"
    },
    "metadata": {
      "mapped_principal": "principal://iam.googleapis.com/locations/global/workforcePools/oidc-pool/subject/a1234bcd-5678-9012-efa3-4b5cd678ef9a"
    },
    "methodName": "google.identity.sts.v1.SecurityTokenService.ExchangeToken",
    "resourceName": "locations/global/workforcePools/oidc-pool/providers/oidc-provider",
    "serviceName": "sts.googleapis.com",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.v1.ExchangeTokenRequest",
      "audience": "//iam.googleapis.com/locations/global/workforcePools/oidc-pool/providers/oidc-provider",
      "grantType": "urn:ietf:params:oauth:grant-type:token-exchange",
      "requestedTokenType": "urn:ietf:params:oauth:token-type:access_token",
      "subjectTokenType": "urn:ietf:params:oauth:token-type:id_token"
    }
  },
  "resource": {
    "type": "audited_resource"
  }
}

Logs für signierte und verschlüsselte SAML-Assertions

In diesem Abschnitt werden die Logeinträge der Cloud-Audit-Logs beschrieben, die von Security Token Service bei dem Versuch erstellt werden, signierte SAML-Assertions zu prüfen oder verschlüsselte Assertions zu entschlüsseln, die von Ihrem IdP gesendet werden.

Für die Workforce Identity-Föderation sieht der entsprechende Logeintrag in etwa so aus:

"keyInfo": [
  {
    "use": "verify"
    "fingerprint": "3C:B2:47:F8:A5:9A:8A:52:BD:1C:BC:96:B5:45:C1:8D:A7:F1:73:2D"
  },
  {
    "use": "decrypt"
    "resourceName": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_NAME/providers/PROVIDER_NAME/keys/KEY_NAME"
  }
]

Diese Ausgabe enthält die folgenden Werte:

  • fingerprint: Die hexadezimale Darstellung des SHA-256-Hashs des X.509-Zertifikats, das zur Überprüfung der Signatur mit den SAML-Anmeldedaten verwendet wurde. Das X.509-Zertifikat wird aus den SAML-XML-Metadaten extrahiert, die mit dem Anbieter des Workforce Identity-Pools verknüpft sind.
  • resourceName: der Ressourcenname des Anbieterschlüssels des Workforce Identity-Pools, der zum Entschlüsseln der verschlüsselten SAML-Assertion verwendet wurde. Dieses Feld ist nur vorhanden, wenn die Workforce Identity-Föderation eine verschlüsselte SAML-Antwort von Ihrem IdP empfängt.

Logs zum Aufrufen von Google Cloud APIs mit dem föderierten Token

Nachdem Sie das Token des IdPs gegen ein föderiertes Token ausgetauscht haben, können Sie mit dem föderierten Token Google Cloud APIs aufrufen. Einige der von Ihnen aufgerufenen Methoden generieren möglicherweise Audit-Logs.

Das folgende Beispiel zeigt einen Audit-Logeintrag für eine Anfrage zum Auflisten der Cloud Storage-Buckets in einem Projekt mithilfe eines föderierten Tokens.

{
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "principal://iam.googleapis.com/locations/global/workforcePools/oidc-pool/subject/012345678901"
    },
    "methodName": "storage.buckets.list",
    "serviceName": "storage.googleapis.com",
  },
  "resource": {
    "type": "gcs_bucket"
  }
}

Logs für die Google Cloud Console-Föderation (föderiert)

Nachdem Sie die Workforce Identity-Pools und zugehörigen IdPs eingerichtet haben, können sich Nutzer mit der Einmalanmeldung bei Google Cloud anmelden.

Logs für eine erfolgreiche Anmeldung

Dieser Abschnitt enthält einen Beispiel für einen Cloud-Audit-Logeintrag, der nach einer erfolgreichen Anmeldung protokolliert wird. In diesem Beispiel meldet sich der Nutzer user@example.com mit dem Anbieter locations/global/workforcePools/my-pool/providers/my-provider an. In diesem Fall wird der folgende Cloud-Audit-Logeintrag generiert:

{
  "logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "user@example.com",
    },
    "serviceName": "sts.googleapis.com",
    "methodName": "google.identity.sts.SecurityTokenService.WebSignIn",
    "resourceName": "locations/global/workforcePools/my-pool/providers/my-provider",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignInRequest",
      "provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
      "continueUrl": "https://console.cloud.google",
      "host": "http://auth.cloud.google",
    },
    "metadata": {
       "mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
    }
  },
  "resource": {
    "type": "audited_resource",
    "labels": {
      "service": "sts.googleapis.com",
      "method": "google.identity.sts.SecurityTokenService.WebSignIn",
    }
  },
}

Der Cloud-Audit-Logeintrag für SAML-Anbieter kann zusätzlich Informationen zum Signierschlüssel im Metadatenfeld enthalten.

{
  "metadata": {
    "mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
    "keyInfo": [
      {
        "use": "verify",
        "fingerprint": "AE:CK:LM:EF:LK:OG:EH:IJ:KN:AL:OM:AD:NO",
      }
    ],
  }
}

Logs für fehlgeschlagene Anmeldung

Dieser Abschnitt enthält einen Beispiel für einen Cloud-Audit-Logeintrag, der nach einer fehlgeschlagenen Anmeldung protokolliert wird. In diesem Beispiel versucht der Nutzer user@example.com, sich mit einem Anbieter locations/global/workforcePools/my-pool/providers/my-provider anzumelden, aber der Zugriff wird verweigert, da eine Attributbedingung nicht erfüllt ist. In diesem Fall wird der folgende Cloud-Audit-Logeintrag generiert:

{
  "logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "user@example.com",
    },
    "status": {
      "code": 3,
      "message": "The given credential is rejected by the attribute condition.",
    },
    "serviceName": "sts.googleapis.com",
    "methodName": "google.identity.sts.SecurityTokenService.WebSignIn",
    "resourceName": "locations/global/workforcePools/my-pool/subject/user@example.com",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignInRequest",
      "provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
      "host": "http://auth.cloud.google",
    },
    "metadata": {
      "mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
    }
  },
  "resource": {
    "type": "audited_resource",
    "labels": {
      "service": "sts.googleapis.com",
      "method": "google.identity.sts.SecurityTokenService.WebSignIn",
    }
  },
}

Logs für die Abmeldung

Dieser Abschnitt enthält einen Beispiel für einen Cloud-Audit-Logeintrag, der als Ergebnis eines Abmeldeereignisses protokolliert wird. In diesem Beispiel initiiert der Nutzer user@example.com, der mit einem Anbieter locations/global/workforcePools/my-pool/providers/my-provider angemeldet ist, eine Abmeldung. In diesem Fall wird der folgende Cloud-Audit-Logeintrag generiert:

{
  "logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "user@example.com",
    },
    "serviceName": "sts.googleapis.com",
    "methodName": "google.identity.sts.SecurityTokenService.WebSignOut",
    "resourceName": "locations/global/workforcePools/my-pool/providers/my-provider",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignOutRequest",
      "provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
      "host": "http://auth.cloud.google"
    },
    "metadata": {
      "mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
    }
  },
  "resource": {
    "type": "audited_resource",
    "labels": {
      "service": "sts.googleapis.com",
      "method": "google.identity.sts.SecurityTokenService.WebSignOut"
    }
  },
}

Nächste Schritte