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": "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" } }
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 o papel de 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 o papel Usuário de conta de serviço (roles/iam.serviceAccountUser
) 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:srini@example.com"
],
"role": "roles/iam.serviceAccountUser"
}
]
}
},
"resource": {
"type": "service_account"
}
}
Quando você concede o papel Criador de token da conta de serviço
(roles/iam.serviceAccountTokenCreator
), que permite a um principal criar
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, julia@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": "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"
}
}
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 jackie@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 jackie@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": "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"
}
}
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 sam@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": "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"
}
}
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 amara@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": "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"
}
}
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 yoon@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": "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"
}
}
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.