En esta página se muestran ejemplos de los registros de auditoría que se generan cuando gestionas o usas una cuenta de servicio.
Para obtener más información sobre cómo habilitar y ver los registros de auditoría, consulta Registro de auditoría de IAM.
Registros de creación de cuentas de servicio
Cuando creas o modificas una cuenta de servicio, Gestión de Identidades y Accesos (IAM) genera entradas de registro. En el siguiente ejemplo se muestra una entrada de registro para crear una cuenta de servicio:
{ "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" } }
Registros de concesión de roles
En esta sección se muestran las entradas de registro que recibes cuando concedes roles relacionados con cuentas de servicio.
Registros para conceder el rol Usuario de cuenta de servicio
Un principal puede obtener los mismos permisos que una cuenta de servicio suplantando la identidad de la cuenta de servicio. Para permitir que un principal suplante la identidad de una cuenta de servicio, puedes asignar el rol Usuario de cuenta de servicio (roles/iam.serviceAccountUser
) al principal en la cuenta de servicio.
En el siguiente ejemplo se muestra una entrada de registro para conceder el rol Usuario de cuenta de servicio a un principal:
{
"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"
}
}
Cuando asignas el rol Creador de tokens de cuenta de servicio
(roles/iam.serviceAccountTokenCreator
), que permite a una entidad crear
credenciales de corta duración, Gestión de Identidades y Accesos genera una entrada de registro similar.
Registros para conceder acceso a una cuenta de servicio en un recurso
Puedes asignar un rol a una cuenta de servicio en un recurso específico, lo que permite que la cuenta de servicio acceda al recurso. Si el servicio propietario del recurso también admite el registro de auditoría, al conceder un rol a la cuenta de servicio se genera una entrada de registro de auditoría. La entrada de registro incluye el campo protoPayload.authenticationInfo.principalEmail
, que identifica la entidad que ha concedido el rol a la cuenta de servicio.
En el siguiente ejemplo se muestra una entrada de registro de auditoría para conceder un rol a una cuenta de servicio de un proyecto. En este ejemplo, example-user@example.com
ha concedido el rol Lector de la organización (roles/resourcemanager.organizationViewer
) a la cuenta de servicio. El campo protoPayload.serviceName
se define como cloudresourcemanager.googleapis.com
, ya que Resource Manager es elGoogle Cloud servicio que gestiona los proyectos. Además, el campo resource.type
tiene el valor project
:
{
"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"
}
}
Registros para adjuntar cuentas de servicio a recursos
Si un usuario tiene el rol Usuario de cuenta de servicio (roles/iam.serviceAccountUser
) en una cuenta de servicio, puede asociar la cuenta de servicio a recursos.
Cuando el código que se ejecuta en el recurso accede a Google Cloud servicios y recursos, utiliza la cuenta de servicio asociada al recurso como identidad. Por ejemplo, si asocias una cuenta de servicio a una instancia de Compute Engine y las aplicaciones de la instancia usan una biblioteca de cliente para llamar a las APIs Google Cloud , esas aplicaciones usarán automáticamente la cuenta de servicio asociada para la autenticación y la autorización.
En esta sección se muestran algunos de los registros que se generan cuando adjuntas una cuenta de servicio a un recurso.
Registros de uso del permiso iam.serviceAccounts.actAs
Para asociar una cuenta de servicio a un recurso, se necesita el permiso iam.serviceAccounts.actAs
. Cuando un principal usa este permiso para asociar una cuenta de servicio a un recurso, se genera un registro de auditoría.
En el siguiente ejemplo se muestra una entrada de registro de un principal que usa el permiso iam.serviceAccounts.actAs
para adjuntar una cuenta de servicio a una instancia de Compute Engine.
{ "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" }
Registros para configurar una instancia de Compute Engine para que se ejecute como una cuenta de servicio
Si un usuario tiene el rol Usuario de cuenta de servicio (roles/iam.serviceAccountUser
) en una cuenta de servicio, puede crear una instancia de máquina virtual (VM) de Compute Engine que se ejecute como esa cuenta de servicio. En este caso, el usuario crea la instancia de VM con sus propias credenciales y la solicitud especifica una cuenta de servicio que debe usar la instancia de VM.
Cuando un usuario crea una instancia de VM, Compute Engine crea varias entradas de registro. En el siguiente ejemplo se muestra la primera entrada de registro, que identifica al usuario que creó la instancia de VM y la cuenta de servicio que usa la instancia.
En este ejemplo, el usuario example-user@example.com
ha creado una instancia que usa la cuenta de servicio my-service-account@my-project.iam.gserviceaccount.com
. Como resultado, el campo protoPayload.authenticationInfo.principalEmail
se define como example-user@example.com
y el campo protoPayload.request.serviceAccounts[0].email
se define como 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": "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"
}
}
Registros de acceso Google Cloud con una clave de cuenta de servicio
En esta sección se muestran las entradas de registro que recibes cuando creas una clave de cuenta de servicio y, a continuación, usas la clave para acceder a Google Cloud.
Registros de creación de claves de cuentas de servicio
Si tienes el rol Administrador de claves de cuenta de servicio
(roles/iam.serviceAccountKeyAdmin
) en una cuenta de servicio, puedes crear una
clave de cuenta de servicio y, a continuación, usarla para
autenticar solicitudes a Google Cloud servicios.
En el siguiente ejemplo se muestra una entrada de registro para crear una clave de cuenta de servicio. En este ejemplo, el usuario example-user@example.com
ha creado una clave para la cuenta de servicio 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": "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"
}
}
Registros de autenticación con una clave de cuenta de servicio
Después de crear una clave de cuenta de servicio, puedes usarla para solicitar un token de acceso de OAuth 2.0 para una cuenta de servicio y, a continuación, usar el token de acceso para autenticar solicitudes a servicios de Google Cloud . Por lo general, los registros de auditoría de esos servicios incluyen la siguiente información:
protoPayload.authenticationInfo.principalEmail
: la dirección de correo de la cuenta de servicio que representa el token de acceso.protoPayload.authenticationInfo.serviceAccountKeyName
: la clave de la cuenta de servicio que se usó para solicitar el token de acceso de OAuth 2.0. Este campo identifica la clave de cuenta de servicio por su nombre de recurso completo, que usa el formato//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-email/
.keys/key-id
En el siguiente ejemplo se muestra una entrada de registro de auditoría de una solicitud para crear una instancia de Memorystore para Redis. La solicitud se ha autenticado con un token de acceso de OAuth 2.0 de una cuenta de servicio. En este ejemplo, la cuenta de servicio se llama my-service-account@my-project.iam.gserviceaccount.com
y el ID de la clave de la cuenta de servicio es 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"
}
}
}
Registros de suplantación de identidad de una cuenta de servicio para acceder a Google Cloud
En esta sección se muestran las entradas de registro que recibe cuando crea credenciales de duración reducida para una cuenta de servicio y, a continuación, usa las credenciales para suplantar la identidad de la cuenta de servicio y acceder a Google Cloud.
Registros de creación de credenciales de duración reducida
Si tienes el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) de una cuenta de servicio, puedes crear credenciales de corta duración para la cuenta de servicio y, a continuación, usar las credenciales para suplantar la identidad de la cuenta de servicio. Por ejemplo, puedes crear credenciales de corta duración para llamar a una API de Google Clouddesde una aplicación que no se ejecute en Google Cloud.
IAM puede generar registros de auditoría cuando las entidades principales crean credenciales de corta duración. Para recibir estos registros de auditoría, debe habilitar los registros de auditoría de gestión de identidades y accesos en la actividad de acceso a datos.
Después de habilitar los registros de auditoría de gestión de identidades y accesos en la actividad de acceso a datos, la gestión de identidades y accesos genera una entrada de registro de auditoría cada vez que una entidad crea credenciales de corta duración. La entrada incluye los siguientes campos:
protoPayload.authenticationInfo.principalEmail
: la entidad de seguridad que ha creado las credenciales de corta duración.resource.labels.email_id
: la cuenta de servicio para la que se generaron las credenciales de corta duración.
En el siguiente ejemplo se muestra una entrada de registro de auditoría de una solicitud para generar un token de acceso de OAuth 2.0 de corta duración. En este ejemplo, el usuario example-user@example.com
ha creado un token de acceso para la cuenta de servicio 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": "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"
}
}
Registros de autenticación con credenciales de duración reducida
Después de crear credenciales de duración reducida para una cuenta de servicio, puedes usarlas para suplantar la identidad de la cuenta de servicio cuando llames a las APIs de Google Cloud.
Algunos de los métodos que llamas pueden generar registros de auditoría. En general, estas entradas de registro muestran las siguientes identidades:
- La cuenta de servicio que suplantan las credenciales de duración reducida
- La identidad que ha creado las credenciales de duración reducida
Por ejemplo, supongamos que el usuario example-user@example.com
crea credenciales de corta duración para la cuenta de servicio my-service-account@my-project.iam.gserviceaccount.com
. A continuación, el usuario crea un tema de Pub/Sub con las credenciales de corta duración para suplantar la cuenta de servicio. Pub/Sub genera una entrada de registro que identifica la cuenta de servicio, así como el usuario que suplanta la identidad de la cuenta de servicio:
{
"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"
}
}
Registros de las acciones realizadas por los agentes de servicio
A veces, cuando una entidad inicia una operación, un agente de servicio ejecuta una acción en nombre de la entidad. Sin embargo, cuando revisas los registros de auditoría de un agente de servicio, puede ser difícil saber en nombre de quién actuaba y por qué.
Para ayudarte a entender el contexto de las acciones de un agente de servicio, algunos agentes de servicio incluyen detalles adicionales en sus registros de auditoría, como el trabajo al que está asociada la acción y el principal que creó el trabajo.Los siguientes agentes de servicio incluyen estos detalles adicionales en sus registros de auditoría:
- Agente del servicio de conexión de BigQuery
- Agente del servicio de delegación de conexión de BigQuery
Estos detalles adicionales se encuentran en el campo serviceDelegationHistory
del registro de auditoría, que está anidado en el campo authenticationInfo
. Este campo contiene la siguiente información:
- El director original que creó el trabajo
- El agente de servicio que ha ejecutado la acción.
- El servicio al que pertenece el agente de servicio
- El ID de la tarea
Por ejemplo, supongamos que
example-user@example.com
crea un trabajo con la API de conexión de BigQuery. Este trabajo requiere que uno de los agentes de servicio de la API de conexión de BigQuery ejecute una acción. En este caso, el registro de auditoría de la acción del agente de servicio
contendría un campo serviceDelegationHistory
similar al siguiente:
{ "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", } ] } } } }
Siguientes pasos
- Configura y consulta los registros de auditoría de gestión de identidades y accesos.
- Consulta más información sobre los registros de auditoría de Cloud.
- Consulta información sobre las cuentas de servicio.
- Crear y gestionar cuentas de servicio.
- Crea credenciales de corta duración para suplantar cuentas de servicio.