Nesta página, você verá exemplos de registros de auditoria que são gerados ao gerenciar ou usar uma conta de serviço.
Para mais informações sobre como ativar e visualizar registros de auditoria, consulte Geração de registros de auditoria do IAM.
Registros para criar contas de serviço
Quando você cria ou modifica uma conta de serviço, o gerenciamento de identidade e acesso (IAM, na sigla em inglês) gera entradas de registro. O exemplo a seguir mostra uma entrada de registro para criar uma conta de serviço.
{ "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 para conceder papéis
Esta seção mostra as entradas de registro recebidas quando você concede papéis relacionados a contas de serviço.
Registros para conceder a função do usuário da conta de serviço
Um principal pode receber as mesmas permissões de uma conta de serviço representando a conta de serviço. Para permitir que um principal represente uma conta de serviço, [conceda a função do usuário da conta de serviço]sa-user-role ao principal da conta de serviço.
O exemplo a seguir mostra uma entrada de registro para conceder o papel Usuário de conta de serviço a um 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"
}
}
Quando você [concede o papel Criador de token da conta de serviço]sa-token-creator-role, que permite que um participante crie credenciais de curta duração, o IAM gera uma entrada de registro semelhante.
Registros para conceder acesso a uma conta de serviço em um recurso
É possível conceder um papel a uma conta de serviço em um recurso específico, o que permite que a conta de serviço acesse esse recurso. Se o serviço que é proprietário do recurso também for compatível com a geração de registros de auditoria, a concessão de um papel à conta de serviço gerará uma entrada de registro de auditoria. A entrada de registro inclui o campo protoPayload.authenticationInfo.principalEmail
, que identifica o principal que concedeu o papel à conta de serviço.
O exemplo a seguir mostra uma entrada de registro de auditoria para a concessão de um papel a uma conta de serviço de um projeto. Neste exemplo, example-user@example.com
concedeu o papel Leitor da organização (roles/resourcemanager.organizationViewer
) para a conta de serviço. O campo protoPayload.serviceName
está definido como cloudresourcemanager.googleapis.com
, porque o Resource Manager é o serviço do Google Cloud que gerencia projetos. Além disso, o campo resource.type
está definido como 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 anexar contas de serviço a recursos
Se um usuário tiver a função do usuário da conta de serviço (roles/iam.serviceAccountUser
) em
uma conta de serviço, ele poderá anexar a conta de serviço a
recursos.
Quando o código em execução no recurso acessa serviços e
recursos do Google Cloud, ele usa a conta de serviço anexada ao recurso como identidade. Por exemplo, se você anexar uma conta de serviço a uma instância do
Compute Engine e os aplicativos na instância usarem uma
biblioteca de cliente para chamar as APIs do Google Cloud, esses aplicativos usam automaticamente a conta de serviço anexada para autenticação e autorização.
Esta seção mostra alguns dos registros gerados quando você anexa uma conta de serviço a um recurso.
Registros para usar a permissão iam.serviceAccounts.actAs
Anexar uma conta de serviço a um recurso exige a
permissão iam.serviceAccounts.actAs
. Quando um principal usa essa permissão para
anexar uma conta de serviço a um recurso, um registro de auditoria é gerado.
O exemplo a seguir mostra uma entrada de registro para um principal usando a
permissão iam.serviceAccounts.actAs
para anexar uma conta de serviço a uma
instância do 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 uma instância do Compute Engine para execução como uma conta de serviço
Se um usuário tiver o papel Usuário da conta de serviço (roles/iam.serviceAccountUser
) em uma conta de serviço, ele conseguirá criar uma instância de máquina virtual (VM) do Compute Engine executada como essa conta de serviço. Nesse cenário, o usuário cria a instância de VM com as próprias credenciais, e a solicitação especifica uma conta de serviço para a instância de VM a ser usada.
Quando um usuário cria uma instância de VM, o Compute Engine cria várias entradas de registro. O exemplo a seguir mostra a primeira entrada de registro, que identifica o usuário que criou a instância de VM e a conta de serviço usada pela instância.
Neste exemplo, o usuário example-user@example.com
criou uma instância que usa a conta de serviço my-service-account@my-project.iam.gserviceaccount.com
. Dessa maneira, o campo protoPayload.authenticationInfo.principalEmail
está definido como example-user@example.com
, e o campo protoPayload.request.serviceAccounts[0].email
está definido 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 para acessar o Google Cloud com uma chave de conta de serviço
Nesta seção, você verá as entradas de registro que receberá ao criar uma chave de conta de serviço e, então, usá-la para acessar o Google Cloud.
Registros para criar uma chave de conta de serviço
Se você tiver o papel Administrador de chave de conta de serviço (roles/iam.serviceAccountKeyAdmin
) em uma conta de serviço, conseguirá criar uma chave de conta de serviço e usá-la para autenticar solicitações para serviços do Google Cloud.
O exemplo a seguir mostra uma entrada de registro para criar uma chave de conta de serviço. Neste exemplo, o usuário example-user@example.com
criou uma chave para a conta de serviço 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 para autenticação com uma chave de conta de serviço
Depois de criar uma chave de conta de serviço, use-a para solicitar um token de acesso do OAuth 2.0 para uma conta de serviço e, em seguida, use o token de acesso para autenticar solicitações para serviços do Google Cloud. Em geral, os registros de auditoria desses serviços incluem as seguintes informações:
protoPayload.authenticationInfo.principalEmail
: o endereço de e-mail da conta de serviço que o token de acesso representa.protoPayload.authenticationInfo.serviceAccountKeyName
: a chave da conta de serviço usada para solicitar o token de acesso do OAuth 2.0. Esse campo identifica a chave da conta de serviço pelo nome completo do recurso, que usa o formato//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-email/
.keys/key-id
O exemplo a seguir mostra uma entrada de registro de auditoria para uma solicitação de criação de uma instância do Memorystore para Redis. A solicitação foi autenticada com um token de acesso do OAuth 2.0 para uma conta de serviço. Neste exemplo, a conta de serviço é chamada de my-service-account@my-project.iam.gserviceaccount.com
, e a ID da chave da conta é 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 para representar uma conta de serviço para acessar o Google Cloud
Nesta seção, você verá as entradas de registro que receberá ao criar credenciais de curta duração para uma conta de serviço e, então, usá-las para representar a conta de serviço e acessar o Google Cloud.
Registros para criar credenciais de curta duração
Se você tiver o papel Criador de tokens de conta de serviço (roles/iam.serviceAccountTokenCreator
) para uma conta de serviço, conseguirá criar credenciais de curta duração para a conta e, então, usá-las para representar a conta de serviço. Por exemplo, é possível criar credenciais de curta duração para chamar uma API do Google Cloud de um aplicativo que não é executado no Google Cloud.
O IAM pode gerar registros de auditoria quando os principais criarem credenciais de curta duração. Para receber esses registros de auditoria, é necessário ativar os registros de auditoria do IAM para a atividade de acesso a dados.
Depois de ativar registros de auditoria do IAM para a atividade de acesso a dados, o IAM gerará uma entrada de registro de auditoria sempre que um principal criar credenciais de curta duração. A entrada inclui os seguintes campos:
protoPayload.authenticationInfo.principalEmail
: o principal que criou as credenciais de curta duração.resource.labels.email_id
: a conta de serviço para a qual foram geradas credenciais de curta duração.
O exemplo a seguir mostra uma entrada de registro de auditoria de uma solicitação para gerar um token de acesso do OAuth 2.0 de curta duração. Neste exemplo, o usuário example-user@example.com
criou um token de acesso para a conta de serviço 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 para autenticação com credenciais de curta duração
Depois de criar credenciais de curta duração para uma conta de serviço, use-as para representar a conta de serviço ao chamar APIs do Google Cloud.
Alguns dos métodos chamados podem gerar registros de auditoria. Em geral, essas entradas de registro mostram as seguintes identidades:
- A conta de serviço que as credenciais de curta duração estão representando
- A identidade que criou as credenciais de curta duração
Por exemplo, suponha que o usuário example-user@example.com
crie credenciais de curta duração para a conta de serviço my-service-account@my-project.iam.gserviceaccount.com
. Em seguida, esse usuário cria um novo tópico do Pub/Sub, usando as credenciais de curta duração para representar a conta de serviço. O Pub/Sub gera uma entrada de registro que identifica a conta de serviço, bem como o usuário que está representando a conta de serviço:
{
"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 ações realizadas por agentes de serviço
Às vezes, quando um principal inicia uma operação, um agente de serviço executa uma ação em nome do principal. No entanto, ao analisar os registros de auditoria de um agente de serviço, pode ser difícil dizer em nome de quem o agente estava agindo e por quê.
Para ajudar você a entender o contexto das ações de um agente de serviço, alguns deles incluem mais detalhes nos registros de auditoria, como o job associado à ação e o principal que criou o job.Os seguintes agentes de serviço incluem estes detalhes adicionais nos registros de auditoria:
Esses detalhes adicionais estão no campo serviceDelegationHistory
do registro de auditoria,
que é aninhado no campo authenticationInfo
. Esse campo contém as seguintes
informações:
- O principal original que criou o job
- O agente de serviço que executou a ação
- O serviço a que pertence o agente de serviço
- O ID do job
Por exemplo, suponha que example-user@example.com
crie um job usando a API BigQuery Connection.
Essa tarefa exige que um dos agentes de serviço da API BigQuery Connection execute uma ação. Nesse
caso, o registro de auditoria da ação do agente de serviço conteria um
campo serviceDelegationHistory
semelhante a este:
{ "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", } ] } } } }
A seguir
- Configure e visualize os registros de auditoria do IAM.
- Veja mais informações sobre registros de auditoria do Cloud.
- Saiba mais sobre contas de serviço.
- Criar e gerenciar contas de serviço.
- Crie credenciais de curta duração para representar contas de serviço.