Registros de exemplo para a federação de identidade de colaboradores

Nesta página, mostramos exemplos dos registros de auditoria gerados quando você usa a federação de identidade de colaboradores. Com a federação de identidade da força de trabalho, é possível permitir que identidades de terceiros acessem recursosGoogle 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.

O IAM pode gerar registros de auditoria quando você cria e gerencia pools de força de trabalho. Para ativar os registros de auditoria ao gerenciar pools de forças de trabalho, é preciso ativar os registros de auditoria de atividades de acesso a dados para a seguinte API:

  • API Identity and Access Management (IAM) (ative o tipo de registro "Admin Read")

Para configurar ainda mais os registros de auditoria do processo de troca de tokens ou o login noGoogle Cloud console (federado), também é necessário ativar os registros de auditoria para a atividade de acesso a dados na seguinte API:

  • API Security Token Service (ative o tipo de registro "Leitura de administradores")

Registros para criar um pool de funcionários

O exemplo a seguir mostra uma entrada de registro para criar um pool de forças de trabalho. Neste exemplo, o usuário sam@example.com criou um pool de forças de trabalho com o ID my-pool na organização com o ID 123456789012.

{
  "logName": "organizations/123456789012/logs/cloudaudit.googleapis.com%2Factivity",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "sam@example.com",
    },
    "methodName": "google.iam.admin.v1.WorkforcePools.CreateWorkforcePool",
    "resourceName": "locations/global/workforcePools/my-pool",
    "serviceName": "iam.googleapis.com",
    "request": {
      "@type": "type.googleapis.com/google.iam.admin.v1.CreateWorkforcePoolRequest",
      "workforcePool": {
        "parent": "organizations/123456789012"
      },
      "workforcePoolId": "my-pool"
    }
  },
  "resource": {
    "type": "audited_resource"
  }
}

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

Depois de configurar o pool de identidades e o provedor de pool de identidades da força de trabalho, é possível criar um token para o provedor de identidade (IdP) e trocá-lo por um token federado.

Depois que você ativa os registros de auditoria do Cloud 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.
    • Para IdPs OIDC, esse campo contém o valor da declaração sub ou assunto do token OIDC.
    • Para IdPs de SAML, este campo contém o valor do subatributo NameID do atributo Subject na declaração SAML.
  • protoPayload.metadata.mapped_principal: o assunto do token, usando a sintaxe do IAM para identificar o principal:

    principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER
    
  • protoPayload.resourceName: o provedor do pool de forças de trabalho a que 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 OIDC é trocado por um token federado:

{
  "logName": "organizations/123456789012/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/locations/global/workforcePools/oidc-pool/subject/a1234bcd-5678-9012-efa3-4b5cd678ef9a"
    },
    "methodName": "google.identity.sts.v1.SecurityTokenService.ExchangeToken",
    "resourceName": "locations/global/workforcePools/oidc-pool/providers/oidc-provider",
    "serviceName": "sts.googleapis.com",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.v1.ExchangeTokenRequest",
      "audience": "//iam.googleapis.com/locations/global/workforcePools/oidc-pool/providers/oidc-provider",
      "grantType": "urn:ietf:params:oauth:grant-type:token-exchange",
      "requestedTokenType": "urn:ietf:params:oauth:token-type:access_token",
      "subjectTokenType": "urn:ietf:params:oauth:token-type:id_token"
    }
  },
  "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 de colaboradores, 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/locations/global/workforcePools/WORKFORCE_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 do pool de identidades da força de trabalho.
  • resourceName: o nome do recurso da chave do provedor de pool de identidade da força de trabalho que foi 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 chamar Google Cloud APIs com o token federado

Depois de trocar o token do IdP por um token federado, você pode usar o token federado para chamar APIs Google Cloud . Alguns dos métodos chamados podem gerar registros de auditoria.

O exemplo a seguir mostra uma entrada de registro de auditoria para uma solicitação para listar os buckets do Cloud Storage em um projeto usando um token federado.

{
  "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/locations/global/workforcePools/oidc-pool/subject/012345678901"
    },
    "methodName": "storage.buckets.list",
    "serviceName": "storage.googleapis.com",
  },
  "resource": {
    "type": "gcs_bucket"
  }
}

Registros para login no console (federado) do Google Cloud

Depois que você configurar seus pools de identidade da força de trabalho e os IdPs deles, os usuários poderão fazer login em Google Cloud usando console (federado).

Registros para login realizado

Nesta seção, apresentamos um exemplo de entrada dos Registros de auditoria do Cloud que é registrada como resultado de um login bem-sucedido. Neste exemplo, o usuário user@example.com faz login usando um provedor locations/global/workforcePools/my-pool/providers/my-provider. Nesse caso, a seguinte entrada de registros de auditoria do Cloud é gerada:

{
  "logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "user@example.com",
    },
    "serviceName": "sts.googleapis.com",
    "methodName": "google.identity.sts.SecurityTokenService.WebSignIn",
    "resourceName": "locations/global/workforcePools/my-pool/providers/my-provider",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignInRequest",
      "provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
      "continueUrl": "https://console.cloud.google",
      "host": "http://auth.cloud.google",
    },
    "metadata": {
       "mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
    }
  },
  "resource": {
    "type": "audited_resource",
    "labels": {
      "service": "sts.googleapis.com",
      "method": "google.identity.sts.SecurityTokenService.WebSignIn",
    }
  },
}

A entrada de registros de auditoria do Cloud para provedores SAML também pode conter informações sobre a chave de assinatura no campo de metadados.

{
  "metadata": {
    "mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
    "keyInfo": [
      {
        "use": "verify",
        "fingerprint": "AE:CK:LM:EF:LK:OG:EH:IJ:KN:AL:OM:AD:NO",
      }
    ],
  }
}

Registros de falha no login

Nesta seção, apresentamos um exemplo de entrada dos Registros de auditoria do Cloud que é registrada como resultado de um login com falha. Neste exemplo, o usuário user@example.com tenta fazer login usando um provedor locations/global/workforcePools/my-pool/providers/my-provider, mas tem o acesso negado porque uma condição de atributo não está sendo atendida. Nesse caso, a seguinte entrada de registros de auditoria do Cloud é gerada:

{
  "logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "user@example.com",
    },
    "status": {
      "code": 3,
      "message": "The given credential is rejected by the attribute condition.",
    },
    "serviceName": "sts.googleapis.com",
    "methodName": "google.identity.sts.SecurityTokenService.WebSignIn",
    "resourceName": "locations/global/workforcePools/my-pool/subject/user@example.com",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignInRequest",
      "provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
      "host": "http://auth.cloud.google",
    },
    "metadata": {
      "mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
    }
  },
  "resource": {
    "type": "audited_resource",
    "labels": {
      "service": "sts.googleapis.com",
      "method": "google.identity.sts.SecurityTokenService.WebSignIn",
    }
  },
}

Registros de saída

Nesta seção, apresentamos um exemplo de entrada dos Registros de auditoria do Cloud que é registrada como resultado de um evento de saída. Neste exemplo, o usuário user@example.com, que fez login usando um provedor locations/global/workforcePools/my-pool/providers/my-provider, inicia uma saída. Nesse caso, a seguinte entrada dos Registros de auditoria do Cloud é gerada:

{
  "logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "user@example.com",
    },
    "serviceName": "sts.googleapis.com",
    "methodName": "google.identity.sts.SecurityTokenService.WebSignOut",
    "resourceName": "locations/global/workforcePools/my-pool/providers/my-provider",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignOutRequest",
      "provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
      "host": "http://auth.cloud.google"
    },
    "metadata": {
      "mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
    }
  },
  "resource": {
    "type": "audited_resource",
    "labels": {
      "service": "sts.googleapis.com",
      "method": "google.identity.sts.SecurityTokenService.WebSignOut"
    }
  },
}

Registros de login com o fluxo OAuth

Depois de configurar o pool de identidade e o provedor de identidade da força de trabalho, é possível usar Google Cloud recursos usando o fluxo OAuth.

Depois que você ativa os registros de auditoria do Cloud para a atividade de registros de auditoria de acesso a dados, o IAM gera uma entrada de registro de auditoria sempre que um principal usa o fluxo OAuth para fazer login. A entrada de registro inclui os seguintes campos:

  • protoPayload.authenticationInfo.principalSubject: o assunto do token do IdP.
    • Para IdPs OIDC, esse campo contém o valor da declaração sub ou assunto do token OIDC.
    • Para IdPs de SAML, este campo contém o valor do subatributo NameID do atributo Subject na declaração SAML.
  • protoPayload.metadata.mapped_principal: o assunto do token, usando a sintaxe do IAM para identificar o principal:

    principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER
    
  • protoPayload.resourceName: o provedor do pool de forças de trabalho a que 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, o principal é federado usando um provedor OIDC:

{
  "logName": "organizations/123456789012/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/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER"
    },
    "methodName": "google.identity.sts.v1.SecurityTokenService.ExchangeOauthToken",
    "resourceName": "locations/global/workforcePools/POOL_ID/providers/WORKFORCE_PROVIDER_ID",
    "serviceName": "sts.googleapis.com",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.v1.ExchangeOauthTokenRequest",
      "grantType": "authorization_code",
    }
  },
  "resource": {
    "type": "audited_resource"
  }
}

A seguir