Registros de exemplo para a 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 da carga de trabalho, é possível permitir que uma carga de trabalho no local ou multicloud acesse 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.

Registros para a troca de um token do IdP por um token federado

Depois de configurar pools de identidade da carga de trabalho e o provedor de identidade (IdP), crie um token para o IdP e troque-o por um token federado.

O IAM pode gerar registros de auditoria quando os principais 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 Management (IAM) (ative o tipo de registro "Admin Read")
  • API Security Token Service (ative o tipo de registro "Leitura de administradores")

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 principal troca um token. A entrada de registro inclui os seguintes campos:

  • protoPayload.authenticationInfo.principalSubject: o assunto do token do IdP.
    • 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 IdPs OIDC, esse campo contém o valor da declaração sub ou assunto do token 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.v1.SecurityTokenService.ExchangeToken",
    "resourceName": "projects/1234567890123/locations/global/workloadIdentityPools/azure-pool/providers/azure",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.v1.ExchangeTokenRequest",
      "grantType": "urn:ietf:params:oauth:grant-type:token-exchange"
    }
  },
  "resource": {
    "type": "audited_resource"
  }
}

Registros de declarações SAML assinadas e criptografadas

Nesta seção, descrevemos as entradas dos Registros de auditoria do Cloud que o Security Token Service cria quando tenta verificar as declarações SAML assinadas ou descriptografar declarações criptografadas enviadas do IdP.

Para a federação de identidade da carga de trabalho, a entrada de registro pertinente é semelhante a esta:

"keyInfo": [
  {
    "use": "verify"
    "fingerprint": "3C:B2:47:F8:A5:9A:8A:52:BD:1C:BC:96:B5:45:C1:8D:A7:F1:73:2D"
  },
  {
    "use": "decrypt"
    "resourceName": "//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_POOL_NAME/providers/PROVIDER_NAME/keys/KEY_NAME"
  }
]

Esta saída inclui os seguintes valores:

  • fingerprint: a representação hexadecimal do hash SHA-256 do certificado X.509 usado para verificar a assinatura na credencial SAML. O certificado X.509 é extraído dos metadados XML SAML anexados ao provedor de pool de identidade da carga de trabalho.
  • resourceName: o nome do recurso da chave do provedor de pool de identidade da carga de trabalho usada para descriptografar a declaração SAML criptografada. Esse campo só estará presente se a federação de identidade receber uma resposta SAML criptografada do IdP.

Registros para a federação X.509

Nesta seção, descrevemos as entradas de registro dos registros de auditoria do Cloud que o Security Token Service cria quando tenta verificar o certificado do cliente mTLS com um repositório de confiança pré-configurado.

Para a federação de identidade da carga de trabalho, a entrada de registro pertinente é semelhante a esta:

"keyInfo": [
  {
    "certificateType": "trust_anchor"
    "timeUntilExpiration": 3333405600s
    "fingerprintSha256": "e33f612a0e426692f29db2c7b17b9e3810ce13f09ad117c67e7227a84fd25ea5"
    "use": "verify"
  }

Esta saída inclui os seguintes valores:

  • certificateType: o tipo de certificado envolvido na verificação do certificado do cliente, que pode ser trust_anchor ou intermediate_ca.
  • timeUntilExpiration: o tempo restante em segundos até a expiração do certificado quando ele é usado na verificação da cadeia de certificados
  • fingerprintSha256: a representação hexadecimal do hash SHA-256 do certificado X.509

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

Depois de trocar o token do IdP por um token federado, use-o 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 principal gera credenciais de curta duração para uma conta de serviço. A entrada de registro 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"
  }
}

Registros para autenticação com credenciais da conta de serviço falsificada

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 IdP:

{
  "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