Registros de auditoria da federação de identidade da carga de trabalho

Nesta página, mostramos exemplos dos registros de auditoria gerados quando você usa a federação de identidade da carga de trabalho. Com a federação de identidade de carga de trabalho, é possível permitir que uma carga de trabalho no local ou em várias nuvens acesse os recursos do Google Cloud sem usar uma chave de 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.

Como trocar o token de um provedor de identidade por um token federado

Depois de configurar seus pools de identidades de carga de trabalho e os provedores de identidade, crie um token para seu provedor de identidade e troque-o por um token federado.

O IAM pode gerar registros de auditoria quando os membros trocam um token. Para receber registros de auditoria de todas as etapas do processo de troca de token, é preciso ativar os registros de auditoria para a atividade de acesso a dados para as seguintes APIs:

  • API Identity and Access Manager (IAM)
  • API Security Token Service

Depois que você ativa os registros de auditoria para a atividade de acesso a dados, o IAM gera uma entrada de registro de auditoria sempre que um membro troca um token. A entrada inclui os seguintes campos:

  • protoPayload.authenticationInfo.principalSubject: o assunto do token do provedor de identidade.
    • No Amazon Web Services (AWS), este campo contém o Amazon Resource Name (ARN) do principal que você autenticou.
    • No Microsoft Azure, esse campo contém o ID de objeto da identidade gerenciada que você especificou como o assunto do token do Azure.
    • Para outros provedores de identidade OIDC, esse campo contém o valor da declaração sub ou assunto, do token do OIDC.
  • protoPayload.metadata.mapped_principal: o assunto do token, usando a sintaxe do IAM para identificar o principal:

    principal://iam.googleapis.com/projects/project-number/locations/global/workloadIdentityPools/pool-id/subject/identifier
    
  • protoPayload.resourceName: o provedor de pool de Identidade da carga de trabalho ao qual o token está associado.

O exemplo a seguir mostra uma entrada de registro de auditoria para uma solicitação para trocar um token. Neste exemplo, um token do Microsoft Azure foi trocado por um token federado:

{
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "b6112abb-5791-4507-adb5-7e8cc306eb2e"
    },
    "metadata": {
      "mapped_principal": "principal://iam.googleapis.com/projects/1234567890123/locations/global/workloadIdentityPools/azure-pool/subject/a1234bcd-5678-9012-efa3-4b5cd678ef9a"
    },
    "methodName": "google.identity.sts.v1beta.SecurityTokenService.ExchangeToken",
    "resourceName": "projects/1234567890123/locations/global/workloadIdentityPools/azure-pool/providers/azure",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.v1beta.ExchangeTokenRequest",
      "grantType": "urn:ietf:params:oauth:grant-type:token-exchange"
    }
  },
  "resource": {
    "type": "audited_resource"
  }
}

Como criar credenciais de curta duração para uma conta de serviço

Depois de trocar o token do provedor de identidade por um token federado, você pode usar o token federado para criar credenciais de curta duração para uma conta de serviço. Todos os serviços do Google permitem que você faça a autenticação com essas credenciais de curta duração.

Depois que você ativa os registros de auditoria do IAM para atividade de acesso a dados, o IAM gera uma entrada de registro de auditoria sempre que um membro gera credenciais de curta duração para uma conta de serviço. A entrada inclui os seguintes campos:

  • protoPayload.authenticationInfo.principalSubject: o assunto do token federado.
  • resource.labels.email_id: a conta de serviço para a qual foram geradas credenciais de curta duração.

Veja no exemplo a seguir uma entrada de registro de auditoria de uma solicitação para gerar um token de acesso OAuth 2.0 de curta duração para uma conta de serviço. Neste exemplo, a solicitação foi autenticada com credenciais federadas e as credenciais de curta duração foram criadas 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": {
      "principalSubject": "principal://iam.googleapis.com/projects/1234567890123/locations/global/workloadIdentityPools/aws-pool/subject/012345678901"
    },
    "methodName": "GenerateAccessToken",
    "request": {
      "@type": "type.googleapis.com/google.iam.credentials.v1.GenerateAccessTokenRequest",
      "name": "projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com"
    },
    "resourceName": "projects/-/serviceAccounts/123456789012345678901"
  },
  "resource": {
    "labels": {
      "email_id": "my-service-account@my-project.iam.gserviceaccount.com",
      "project_id": "my-project",
      "unique_id": "123456789012345678901"
    },
    "type": "service_account"
  }
}

Como autenticar com credenciais para a conta de serviço personificada

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 jamie@example.com crie um token federado para o assunto principal://iam.googleapis.com/projects/1234567890123/locations/global/workloadIdentityPools/aws-pool/subject/jamie@example.com e use o token federado para criar 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 assunto do token do provedor de identidade:

{
  "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": [
        {
          "principalSubject": "principal://iam.googleapis.com/projects/1234567890123/locations/global/workloadIdentityPools/aws-pool/subject/012345678901"
        }
      ]
    },
    "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