Auf dieser Seite finden Sie Beispiele für die Audit-Logs, die beim Verwalten und Verwenden von Dienstkonten generiert werden.
Weitere Informationen zum Aktivieren und Anzeigen von Audit-Logs finden Sie unter IAM-Audit-Logging.
Logs zum Erstellen von Dienstkonten
Wenn Sie ein Dienstkonto erstellen oder ändern, generiert Identity and Access Management (IAM) Logeinträge. Das folgende Beispiel zeigt einen Logeintrag zum Erstellen eines Dienstkontoschlüssels:
{ "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "authenticationInfo": { "principalEmail": "example-user@example.com" }, "methodName": "google.iam.admin.v1.CreateServiceAccount", "response": { "email": "my-service-account@my-project.iam.gserviceaccount.com", "@type": "type.googleapis.com/google.iam.admin.v1.ServiceAccount", "display_name": "My service account." } }, "resource": { "type": "service_account" } }
Logs zum Zuweisen von Rollen
In diesem Abschnitt werden die Logeinträge gezeigt, die Sie erhalten, wenn Sie Rollen zuweisen, die sich auf Dienstkonten beziehen.
Logs zum Zuweisen der Rolle „Dienstkontonutzer”
Ein Hauptkonto kann durch eine Identitätsübernahme des Dienstkontos die gleichen Berechtigungen wie ein Dienstkonto erhalten. Hauptkonten, die eine Identitätsübernahme für ein Dienstkonto durchführen möchten, benötigen die Rolle "Dienstkontonutzer" (roles/iam.serviceAccountUser
) für das Dienstkonto.
Das folgende Beispiel zeigt einen Logeintrag für die Zuweisung der Rolle "Dienstkontonutzer" an ein Hauptkonto:
{
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"methodName": "google.iam.admin.v1.SetIAMPolicy",
"request": {
"@type": "type.googleapis.com/google.iam.v1.SetIamPolicyRequest",
"resource": "projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com"
},
"resourceName": "projects/-/serviceAccounts/123456789012345678901",
"response": {
"@type": "type.googleapis.com/google.iam.v1.Policy",
"bindings": [
{
"members": [
"user:my-user@example.com"
],
"role": "roles/iam.serviceAccountUser"
}
]
}
},
"resource": {
"type": "service_account"
}
}
Wenn Sie die Rolle "Dienstkonto-Token-Ersteller" (roles/iam.serviceAccountTokenCreator
) gewähren, die einem Hauptkonto das Erstellen kurzlebiger Anmeldedaten ermöglicht, generiert IAM einen ähnlichen Logeintrag.
Logs zum Gewähren des Zugriffs auf ein Dienstkonto für eine Ressource
Sie können einem Dienstkonto für eine bestimmte Ressource eine Rolle zuweisen, damit das Dienstkonto auf die Ressource zugreifen kann. Wenn der Dienst, dem die Ressource gehört, auch Audit-Logging unterstützt, generiert die Zuweisung einer Rolle für das Dienstkonto einen Audit-Logeintrag. Der Logeintrag enthält das Feld protoPayload.authenticationInfo.principalEmail
, mit dem das Hauptkonto identifiziert wird, das die Rolle für das Dienstkonto erteilt hat.
Das folgende Beispiel zeigt einen Audit-Logeintrag zum Zuweisen einer Rolle zu einem Dienstkonto für ein Projekt. In diesem Beispiel hat example-user@example.com
dem Dienstkonto die Rolle "Organisationsbetrachter" (roles/resourcemanager.organizationViewer
) zugewiesen. Das Feld protoPayload.serviceName
ist auf cloudresourcemanager.googleapis.com
gesetzt, da Resource Manager der Google Cloud-Dienst ist, der Projekte verwaltet. Außerdem ist das Feld resource.type
auf project
gesetzt:
{
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "example-user@example.com"
},
"methodName": "SetIamPolicy",
"request": {
"@type": "type.googleapis.com/google.iam.v1.SetIamPolicyRequest",
"resource": "my-project"
},
"resourceName": "projects/my-project",
"response": {
"@type": "type.googleapis.com/google.iam.v1.Policy",
"bindings": [
{
"members": [
"serviceAccount:my-service-account@my-project.iam.gserviceaccount.com"
],
"role": "roles/resourcemanager.organizationViewer"
}
]
},
"serviceName": "cloudresourcemanager.googleapis.com"
},
"resource": {
"type": "project"
}
}
Logs zum Anhängen von Dienstkonten an Ressourcen
Wenn ein Nutzer die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser
) für ein Dienstkonto hat, kann er das Dienstkonto an Ressourcen anhängen.
Wenn Code, der auf der Ressource ausgeführt wird, auf Google Cloud-Dienste und -Ressourcen zugreift, verwendet er das an die Ressource angehängte Dienstkonto als Identität. Beispiel: Sie hängen ein Dienstkonto an eine Compute Engine-Instanz an und die Anwendungen auf der Instanz verwenden eine Clientbibliothek, um Google Cloud APIs aufzurufen. Diese Anwendungen verwenden automatisch das angehängte Dienstkonto für die Authentifizierung und Autorisierung.
In diesem Abschnitt werden einige der Protokolle angezeigt, die generiert werden, wenn Sie einer Ressource ein Dienstkonto zuordnen.
Protokolle zur Verwendung der Berechtigung iam.serviceAccounts.actAs
Zum Anhängen eines Dienstkontos an eine Ressource ist die Berechtigung iam.serviceAccounts.actAs
erforderlich. Wenn ein Hauptkonto diese Berechtigung verwendet, um einer Ressource ein Dienstkonto zuzuweisen, wird ein Audit-Log generiert.
Das folgende Beispiel zeigt einen Logeintrag für ein Hauptkonto, das mit der Berechtigung iam.serviceAccounts.actAs
ein Dienstkonto an eine Compute Engine-Instanz angehängt hat.
{ "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "authenticationInfo": { "principalEmail": "example-user@example.com" }, "serviceName": "iam.googleapis.com", "methodName": "iam.serviceAccounts.actAs", "authorizationInfo": [ { "resource": "projects/-/serviceAccounts/sample-service-account@sample-project.iam.gserviceaccount.com", "permission": "iam.serviceAccounts.actAs", "granted": true, "permissionType": "ADMIN_WRITE" } ], "resourceName": "projects/-/serviceAccounts/sample-service-account@sample-project.iam.gserviceaccount.com", "request": { "name": "sample-service-account@sample-project.iam.gserviceaccount.com", "project_number": "787155667719", "@type": "type.googleapis.com/CanActAsServiceAccountRequest" }, "response": { "success": true, "@type": "type.googleapis.com/CanActAsServiceAccountResponse" } }, "insertId": "vojt0vd4fdy", "resource": { "type": "audited_resource", "labels": { "project_id": "sample-project", "method": "iam.serviceAccounts.actAs", "service": "iam.googleapis.com" } }, "timestamp": "2024-08-05T21:56:56.097601933Z", "severity": "NOTICE", "logName": "projects/sample-project/logs/cloudaudit.googleapis.com%2Factivity", "receiveTimestamp": "2024-08-05T21:56:56.097601933Z" }
Logs zum Einrichten einer Compute Engine-Instanz, die als Dienstkonto ausgeführt werden soll
Wenn ein Nutzer die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser
) für ein Dienstkonto hat, kann er eine Compute Engine-VM-Instanz erstellen, die als dieses Dienstkonto ausgeführt wird. In diesem Szenario erstellt der Nutzer die VM-Instanz mit seinen eigenen Anmeldedaten und die Anfrage gibt ein Dienstkonto an, das von der VM-Instanz verwendet werden soll.
Wenn ein Nutzer eine VM-Instanz erstellt, erstellt Compute Engine mehrere Logeinträge. Das folgende Beispiel zeigt den ersten Logeintrag, der den Nutzer, der die VM-Instanz erstellt hat, sowie das von der Instanz verwendete Dienstkonto identifiziert.
In diesem Beispiel hat der Nutzer example-user@example.com
eine Instanz erstellt, die das Dienstkonto my-service-account@my-project.iam.gserviceaccount.com
verwendet. Daher wird das Feld protoPayload.authenticationInfo.principalEmail
auf example-user@example.com
und das Feld protoPayload.request.serviceAccounts[0].email
auf my-service-account@my-project.iam.gserviceaccount.com
gesetzt:
{
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "example-user@example.com"
},
"methodName": "v1.compute.instances.insert",
"request": {
"@type": "type.googleapis.com/compute.instances.insert",
"serviceAccounts": [
{
"email": "my-service-account@my-project.iam.gserviceaccount.com"
}
]
},
"resourceName": "projects/my-project/zones/us-central1-a/instances/my-instance"
},
"resource": {
"type": "gce_instance"
}
}
Logs für den Zugriff auf Google Cloud mit einem Dienstkontoschlüssel
In diesem Abschnitt werden die Logeinträge angezeigt, die Sie erhalten, wenn Sie einen Dienstkontoschlüssel erstellen und dann mit dem Schlüssel auf Google Cloud zugreifen.
Logs zum Erstellen eines Dienstkontoschlüssels
Wenn Sie die Rolle "Dienstkontoschlüsseladministrator" (roles/iam.serviceAccountKeyAdmin
) für ein Dienstkonto haben, können Sie einen Dienstkontoschlüssel erstellen und dann den Schlüssel verwenden, um Anfragen an Google Cloud-Dienste zu authentifizieren.
Das folgende Beispiel zeigt einen Logeintrag zum Erstellen eines Dienstkontoschlüssels. In diesem Beispiel hat der Nutzer example-user@example.com
einen Schlüssel für das Dienstkonto my-service-account@my-project.iam.gserviceaccount.com
erstellt:
{
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "example-user@example.com",
},
"methodName": "google.iam.admin.v1.CreateServiceAccountKey",
"request": {
"@type": "type.googleapis.com/google.iam.admin.v1.CreateServiceAccountKeyRequest",
"name": "projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com"
},
"resourceName": "projects/-/serviceAccounts/123456789012345678901"
},
"resource": {
"type": "service_account"
}
}
Logs zur Authentifizierung mit einem Dienstkontoschlüssel
Nachdem Sie einen Dienstkontoschlüssel erstellt haben, können Sie mit dem Schlüssel ein OAuth 2.0-Zugriffstoken für ein Dienstkonto anfordern und anschließend mit diesem Zugriffstoken Anfragen an Google Cloud-Dienste authentifizieren. Im Allgemeinen enthalten die Audit-Logs für diese Dienste diese Informationen:
protoPayload.authenticationInfo.principalEmail
: Die E-Mail-Adresse des Dienstkontos, das das Zugriffstoken darstellt.protoPayload.authenticationInfo.serviceAccountKeyName
: Der Dienstkontoschlüssel, mit dem das OAuth 2.0-Zugriffstoken angefordert wurde. Dieses Feld identifiziert den Dienstkontoschlüssel anhand seines vollständigen Ressourcennamens im Format//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-email/
.keys/key-id
Das folgende Beispiel zeigt einen Audit-Logeintrag für eine Anfrage zum Erstellen einer Memorystore for Redis-Instanz. Die Anfrage wurde mit einem OAuth 2.0-Zugriffstoken für ein Dienstkonto authentifiziert. In diesem Beispiel heißt das Dienstkonto my-service-account@my-project.iam.gserviceaccount.com
und die Dienstkontoschlüssel-ID c71e040fb4b71d798ce4baca14e15ab62115aaef
:
{
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "my-service-account@my-project.iam.gserviceaccount.com",
"serviceAccountKeyName": "//iam.googleapis.com/projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/c71e040fb4b71d798ce4baca14e15ab62115aaef"
},
"methodName": "google.cloud.redis.v1.CloudRedis.CreateInstance",
"request": {
"@type": "type.googleapis.com/google.cloud.redis.v1.CreateInstanceRequest"
}
}
}
Logs zur Identitätsübernahme des Dienstkontos für den Zugriff auf Google Cloud
In diesem Abschnitt werden die Logeinträge angezeigt, die Sie erhalten, wenn Sie kurzlebige Anmeldedaten für ein Dienstkonto erstellen und dann mit den Anmeldedaten eine Identitätsübernahme des Dienstkontos durchführen sowie auf Google Cloud zugreifen.
Logs zum Erstellen kurzlebiger Anmeldedaten
Wenn Sie die Rolle „Dienstkonto-Token-Ersteller“ (roles/iam.serviceAccountTokenCreator
) für ein Dienstkonto haben, können Sie kurzlebige Anmeldedaten für das Dienstkonto erstellen und mit den Anmeldedaten eine Identitätsübernahme des Dienstkontos durchführen. Sie können beispielsweise kurzlebige Anmeldedaten erstellen, um eine Google Cloud API von einer Anwendung aus aufzurufen, die nicht in Google Cloud ausgeführt wird.
IAM kann Audit-Logs generieren, wenn Hauptkonten kurzlebige Anmeldedaten erstellen. Damit Sie diese Audit-Logs erhalten können, müssen Sie IAM-Audit-Logs für Datenzugriffsaktivitäten aktivieren.
Nachdem Sie IAM-Audit-Logs für Datenzugriffsaktivitäten aktiviert haben, generiert IAM jedes Mal einen Audit-Log-Eintrag, wenn ein Hauptkonto kurzlebige Anmeldedaten erstellt. Der Eintrag enthält diese Felder:
protoPayload.authenticationInfo.principalEmail
: Das Hauptkonto, das die kurzlebigen Anmeldedaten erstellt hat.resource.labels.email_id
: Das Dienstkonto, für das kurzlebige Anmeldedaten erstellt wurden.
Das folgende Beispiel zeigt einen Audit-Logeintrag für eine Anfrage zum Erstellen eines kurzlebigen OAuth 2.0-Zugriffstokens. In diesem Beispiel hat der Nutzer example-user@example.com
ein Zugriffstoken für das Dienstkonto my-service-account@my-project.iam.gserviceaccount.com
erstellt:
{
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "example-user@example.com"
},
"methodName": "GenerateAccessToken",
"request": {
"@type": "type.googleapis.com/google.iam.credentials.v1.GenerateAccessTokenRequest",
"name": "projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com"
},
"serviceName": "iamcredentials.googleapis.com"
},
"resource": {
"labels": {
"email_id": "my-service-account@my-project.iam.gserviceaccount.com",
"project_id": "my-project",
"unique_id": "123456789012345678901"
},
"type": "service_account"
}
}
Logs zur Authentifizierung mit kurzlebigen Anmeldedaten
Nach dem Erstellen kurzlebiger Anmeldedaten für ein Dienstkonto können Sie mit den Anmeldedaten die Identitätsübernahme des Dienstkontos durchführen, wenn Sie Google Cloud APIs aufrufen.
Einige der von Ihnen aufgerufenen Methoden generieren möglicherweise Audit-Logs. Im Allgemeinen weisen diese Logeinträge diese Identitäten auf:
- Das Dienstkonto, für das die kurzlebigen Anmeldedaten eine Identitätsübernahme durchführen
- Die Identität, die die kurzlebigen Anmeldedaten erstellt hat
Beispiel: Der Nutzer example-user@example.com
erstellt kurzlebige Anmeldedaten für das Dienstkonto my-service-account@my-project.iam.gserviceaccount.com
. Der Nutzer erstellt dann ein neues Pub/Sub-Thema und führt dabei mit den kurzlebigen Anmeldedaten eine Identitätsübernahme des Dienstkontos durch. Pub/Sub generiert einen Logeintrag, der das Dienstkonto sowie den Nutzer identifiziert, der die Identitätsübernahme des Dienstkontos durchführt:
{
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "my-service-account@my-project.iam.gserviceaccount.com",
"serviceAccountDelegationInfo": [
{
"firstPartyPrincipal": {
"principalEmail": "example-user@example.com"
}
}
]
},
"methodName": "google.pubsub.v1.Publisher.CreateTopic",
"request": {
"@type": "type.googleapis.com/google.pubsub.v1.Topic",
"name": "projects/my-project/topics/my-topic"
},
"resourceName": "projects/my-project/topics/my-topic"
},
"resource": {
"type": "pubsub_topic"
}
}
Protokolle zu Aktionen von Dienst-Agents
Manchmal führt ein Dienst-Agent eine Aktion im Namen des Hauptkontos aus, wenn dieses einen Vorgang initiiert. Wenn Sie jedoch Audit-Logs für einen Dienst-Agent prüfen, kann es schwierig sein zu erkennen, in wessen Namen der Dienst-Agent gehandelt hat und warum.
Damit Sie den Kontext für die Aktionen eines Dienst-Agents besser nachvollziehen können, fügen einige Dienst-Agents zusätzliche Details in ihre Audit-Logs ein, z. B. den Job, mit der die Aktion verknüpft ist, und das Hauptkonto, das den Job erstellt hat.Die folgenden Dienst-Agents fügen ihren Audit-Logs diese zusätzlichen Details hinzu:
Diese zusätzlichen Details finden Sie im Feld serviceDelegationHistory
des Audit-Logs, das im Feld authenticationInfo
verschachtelt ist. Dieses Feld enthält die folgenden Informationen:
- Das ursprüngliche Hauptkonto, das den Job erstellt hat
- Der Dienst-Agent, der die Aktion ausgeführt hat
- Der Dienst, zu dem der Dienst-Agent gehört
- Job-ID
Angenommen, example-user@example.com
erstellt einen Job mit der BigQuery Connection API. Für diesen Job muss einer der Dienst-Agents der BigQuery Connection API eine Aktion ausführen. In diesem Fall würde das Audit-Log für die Aktion des Kundenservicemitarbeiters ein serviceDelegationHistory
-Feld enthalten, das in etwa so aussieht:
{ "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "authenticationInfo": { "principalEmail": "bqcx-442188550395-jujw@gcp-sa-bigquery-condel.iam.gserviceaccount.com", "serviceDelegationHistory": { "originalPrincipal": "user:my-user@example.com", "serviceMetadata": [ { "principalSubject": "serviceAccount:bqcx-442188550395-jujw@gcp-sa-bigquery-condel.iam.gserviceaccount.com", "serviceDomain": "bigquery.googleapis.com", } ] } } } }
Nächste Schritte
- Audit-Logs für IAM konfigurieren und ansehen
- Weitere Informationen zu Cloud-Audit-Logs
- Weitere Informationen zu Dienstkonten
- Dienstkonten erstellen und verwalten
- Kurzlebige Anmeldedaten erstellen, um eine Identitätsübernahme des Dienstkontos durchzuführen