Log di esempio per gli account di servizio

Questa pagina mostra esempi di audit log generati quando gestisci o utilizzi un account di servizio.

Per ulteriori informazioni sull'abilitazione e la visualizzazione degli audit log, consulta Audit logging di IAM.

Log per la creazione di account di servizio

Quando crei o modifichi un account di servizio, Identity and Access Management (IAM) genera voci di log. L'esempio seguente mostra una voce di log per la creazione di un account di servizio:

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "hao@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"
  }
}

Log per la concessione dei ruoli

Questa sezione mostra le voci di log che ricevi quando concedi i ruoli relativi agli account di servizio.

Log per la concessione del ruolo Utente account di servizio

Un'entità può ottenere le stesse autorizzazioni di un account di servizio assumendo l'identità dell'account di servizio. Per consentire a un'entità di impersonare un account di servizio, puoi concedere il ruolo Utente account di servizio (roles/iam.serviceAccountUser) all'entità per l'account di servizio.

L'esempio seguente mostra una voce di log per concedere il ruolo Utente account di servizio a un'entità:

{
  "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:srini@example.com"
          ],
          "role": "roles/iam.serviceAccountUser"
        }
      ]
    }
  },
  "resource": {
    "type": "service_account"
  }
}

Quando concedi il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator), che consente a un'entità di creare credenziali di breve durata, IAM genera una voce di log simile.

Log per concedere l'accesso a un account di servizio su una risorsa

Puoi concedere un ruolo a un account di servizio su una risorsa specifica in modo che l'account di servizio possa accedere alla risorsa. Se il servizio proprietario della risorsa supporta anche l'audit logging, la concessione di un ruolo all'account di servizio genera una voce di audit log. La voce di log include il campo protoPayload.authenticationInfo.principalEmail, che identifica l'entità che ha concesso il ruolo all'account di servizio.

L'esempio seguente mostra una voce dell'audit log per concedere un ruolo a un account di servizio per un progetto. In questo esempio, julia@example.com ha concesso il ruolo Visualizzatore organizzazione (roles/resourcemanager.organizationViewer) all'account di servizio. Il campo protoPayload.serviceName è impostato su cloudresourcemanager.googleapis.com, perché Resource Manager è il servizio Google Cloud che gestisce i progetti. Inoltre, il campo resource.type è impostato su project:

{
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "julia@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"
  }
}

Log per la configurazione di un'istanza Compute Engine per l'esecuzione come account di servizio

Se un utente ha il ruolo Utente account di servizio (roles/iam.serviceAccountUser) per un account di servizio, può creare un'istanza di macchina virtuale (VM) Compute Engine che viene eseguita come account di servizio. In questo scenario, l'utente crea l'istanza VM con le proprie credenziali e la richiesta specifica un account di servizio che l'istanza VM deve utilizzare.

Quando un utente crea un'istanza VM, Compute Engine crea più voci di log. L'esempio seguente mostra la prima voce di log, che identifica l'utente che ha creato l'istanza VM e l'account di servizio utilizzato dall'istanza. In questo esempio, l'utente jackie@example.com ha creato un'istanza che utilizza l'account di servizio my-service-account@my-project.iam.gserviceaccount.com. Di conseguenza, il campo protoPayload.authenticationInfo.principalEmail è impostato su jackie@example.com e il campo protoPayload.request.serviceAccounts[0].email è impostato su my-service-account@my-project.iam.gserviceaccount.com:

{
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "jackie@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"
  }
}

Log per l'accesso a Google Cloud con una chiave dell'account di servizio

Questa sezione mostra le voci di log ricevute quando crei una chiave dell'account di servizio e utilizzi la chiave per accedere a Google Cloud.

Log per la creazione di una chiave dell'account di servizio

Se hai il ruolo Amministratore chiavi account di servizio (roles/iam.serviceAccountKeyAdmin) per un account di servizio, puoi creare una chiave dell'account di servizio e quindi utilizzarla per autenticare le richieste ai servizi Google Cloud.

L'esempio seguente mostra una voce di log per la creazione di una chiave dell'account di servizio. In questo esempio, l'utente sam@example.com ha creato una chiave per l'account di servizio my-service-account@my-project.iam.gserviceaccount.com:

{
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "sam@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"
  }
}

Log per l'autenticazione con una chiave dell'account di servizio

Dopo aver creato una chiave dell'account di servizio, puoi utilizzarla per richiedere un token di accesso OAuth 2.0 per un account di servizio, quindi utilizzare il token di accesso per autenticare le richieste ai servizi Google Cloud. In generale, gli audit log per questi servizi includono le seguenti informazioni:

  • protoPayload.authenticationInfo.principalEmail: l'indirizzo email dell'account di servizio rappresentato dal token di accesso.
  • protoPayload.authenticationInfo.serviceAccountKeyName: la chiave dell'account di servizio utilizzata per richiedere il token di accesso OAuth 2.0. Questo campo identifica la chiave dell'account di servizio tramite il relativo nome completo della risorsa, che utilizza il formato //iam.googleapis.com/projects/project-id/serviceAccounts/service-account-email/keys/key-id.

L'esempio seguente mostra una voce di audit log per una richiesta di creazione di un'istanza di Memorystore for Redis. La richiesta è stata autenticata con un token di accesso OAuth 2.0 per un account di servizio. In questo esempio, l'account di servizio è denominato my-service-account@my-project.iam.gserviceaccount.com e l'ID chiave dell'account di servizio è 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"
    }
  }
}

Log relativi all'identità di un account di servizio per accedere a Google Cloud

Questa sezione mostra le voci di log che ricevi quando crei credenziali di breve durata per un account di servizio e poi utilizzi le credenziali per impersonare l'account di servizio e accedere a Google Cloud.

Log per la creazione di credenziali di breve durata

Se disponi del ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) per un account di servizio, puoi creare credenziali di breve durata per l'account di servizio e quindi utilizzare le credenziali per impersonare l'account di servizio. Ad esempio, potresti creare credenziali di breve durata per chiamare un'API Google Cloud da un'applicazione non eseguita su Google Cloud.

IAM può generare audit log quando le entità creano credenziali di breve durata. Per ricevere questi audit log, devi abilitare gli audit log IAM per l'attività di accesso ai dati.

Dopo aver abilitato gli audit log IAM per l'attività di accesso ai dati, IAM genera una voce di audit log ogni volta che un'entità crea credenziali di breve durata. La voce include i seguenti campi:

  • protoPayload.authenticationInfo.principalEmail: l'entità che ha creato le credenziali di breve durata.
  • resource.labels.email_id: l'account di servizio per cui sono state generate le credenziali di breve durata.

L'esempio seguente mostra una voce di log di controllo relativa a una richiesta di generazione di un token di accesso OAuth 2.0 di breve durata. In questo esempio, l'utente amara@example.com ha creato un token di accesso per l'account di servizio my-service-account@my-project.iam.gserviceaccount.com:

{
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "amara@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"
  }
}

Log per l'autenticazione con credenziali di breve durata

Dopo aver creato credenziali di breve durata per un account di servizio, puoi utilizzarle per impersonare l'account di servizio quando chiami le API Google Cloud.

Alcuni dei metodi che chiami potrebbero generare audit log. In generale, queste voci di log mostrano le seguenti identità:

  • L'account di servizio che si spaccia per le credenziali di breve durata
  • L'identità che ha creato le credenziali di breve durata

Ad esempio, supponiamo che l'utente yoon@example.com crei credenziali di breve durata per l'account di servizio my-service-account@my-project.iam.gserviceaccount.com. L'utente crea quindi un nuovo argomento Pub/Sub, utilizzando le credenziali di breve durata per impersonare l'account di servizio. Pub/Sub genera una voce di log che identifica l'account di servizio e l'utente che impersona l'account di servizio:

{
  "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": "yoon@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"
  }
}

Passaggi successivi