Gravar a análise de políticas no BigQuery

Nesta página, explicamos como analisar políticas de gerenciamento de identidade e acesso (IAM) de forma assíncrona e gravar resultados no BigQuery. O processo é semelhante a analisar políticas do IAM, exceto a o resultado da análise é gravado nas tabelas do BigQuery.

Antes de começar

Ative a Cloud Asset API.

Ative a API

É necessário ativar a API no projeto ou na organização que você usará para enviar o consulta. Não precisa ser o mesmo recurso que está no escopo da sua consulta.

Papéis e permissões necessárias

Os papéis e permissões a seguir são necessários para executar uma análise de política e exportar os resultados para o BigQuery.

Papéis do IAM obrigatórios

Para ter as permissões necessárias para analisar uma política e exportar os resultados para no BigQuery, peça ao administrador para conceder a você seguintes papéis do IAM no projeto, na pasta ou na organização que terão escopo sua consulta para:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Esses papéis predefinidos têm as permissões necessárias para analisar uma política e exportar os resultados para no BigQuery. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para analisar uma política e exportar os resultados para BigQuery:

  • bigquery.datasets.create
  • bigquery.jobs.create
  • bigquery.tables.create
  • bigquery.tables.get
  • bigquery.tables.updateData
  • bigquery.tables.update
  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • Para analisar políticas com papéis personalizados do IAM: iam.roles.get
  • Para usar a Google Cloud CLI para analisar políticas: serviceusage.services.use

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Permissões necessárias do Google Workspace

Se você quiser saber se um principal tem determinados papéis ou permissões como resultado da participação deles em um grupo do Google Workspace, você precisa do groups.read permissão do Google Workspace. Esta permissão está contida no Leitor de grupos Função "Administrador" e em outras mais eficientes, como "Administrador de grupos" ou "Superadministrador" papéis de segurança na nuvem. Consulte Atribuir funções administrativas específicas para mais informações. informações imprecisas ou inadequadas.

Analisar políticas e exportar resultados

Console

  1. No console do Google Cloud, acesse a página "Análise de políticas".

    Acessar a ferramenta Análise de políticas políticas

  2. Na seção Analisar políticas, encontre o modelo de consulta que você quer usar. e clique em Criar consulta. Se quiser criar uma consulta personalizada, clique em Crie uma consulta personalizada.

  3. No campo Selecionar escopo da consulta, selecione o projeto, a pasta ou a organização em que você quer definir o escopo da consulta. a ferramenta Análise de políticas vai analisar o acesso referente ao projeto, à pasta ou à organização, bem como quaisquer recursos que estiverem dentro.

  4. Verifique se os parâmetros de consulta estão definidos:

    • Se você estiver usando um modelo de consulta, confirme os parâmetros já preenchidos.
    • Ao criar uma consulta personalizada, defina recursos, principais, papéis e as permissões que você quer consultar.

    Para mais informações sobre os tipos de consultas que podem ser criadas, veja Analisar políticas do IAM.

  5. No painel rotulado com o nome da consulta, Clique em Analisar > Exportar apenas resultados. A guia Exportar resultados será aberto.

  6. Na seção Definir destino da exportação, digite as seguintes informações:

    • Projeto: o projeto em que seu conjunto de dados do BigQuery está localizado.
    • Conjunto de dados: o conjunto de dados do BigQuery que você quer exportar os resultados.
    • Tabela: o prefixo das tabelas do BigQuery que geram os resultados da análise será escrito. Se não existir uma tabela com o prefixo especificado, O BigQuery cria uma nova tabela.
  7. Clique em Continuar.

  8. Opcional: na seção Definir configurações adicionais, selecione o as opções desejadas:

    • Particionamento: se a tabela deve ser particionada. Para saber mais sobre em tabelas particionadas, consulte Introdução à tabelas.
    • Preferência de gravação: especifica a ação que ocorrerá se o destino tabela ou partição. Por padrão, se a tabela ou partição já existir, o BigQuery anexa os dados à tabela ou pela partição mais recente.
  9. Clique em Exportar.

A ferramenta Análise de políticas políticas executa sua consulta e exporta os resultados para o tabela especificada.

gcloud

O método AnalyzeIamPolicyLongrunning você emite uma solicitação de análise e recebe resultados no Destino do BigQuery.

Antes de usar os dados do comando abaixo, faça estas substituições:

  • RESOURCE_TYPE: o tipo do recurso que terá o escopo de sua pesquisa. Somente as políticas de permissão do IAM anexada a esse recurso e aos descendentes dele serão analisados. Use o valor project, folder ou organization.
  • RESOURCE_ID: o ID do Projeto, pasta ou organização do Google Cloud em que você quer definir o escopo da pesquisa. Somente Serão analisadas as políticas de permissão do IAM anexadas a este recurso e aos descendentes dele. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • PRINCIPAL: o principal com de acesso que você quer analisar, no formato PRINCIPAL_TYPE:ID. Por exemplo, user:my-user@example.com Para uma lista completa dos tipos principais, consulte Identificadores principais.
  • PERMISSIONS: A lista separada por vírgulas das permissões que você quer verificar, por exemplo, compute.instances.get,compute.instances.start. Se você listar vários permissões, a Análise de políticas verificará qualquer uma das permissões listadas.
  • DATASET: o conjunto de dados do BigQuery na forma projects/PROJECT_ID/datasets/DATASET_ID, em que PROJECT_ID é o ID alfanumérico do projeto do Google Cloud e DATASET_ID é o ID do conjunto de dados.
  • TABLE_PREFIX: o prefixo do Tabelas do BigQuery nas quais os resultados da análise serão gravados. Se uma tabela com o especificado não existir, o BigQuery criará uma nova tabela.
  • PARTITION_KEY: opcional. A chave de partição para tabelas particionadas do BigQuery. A ferramenta Análise de políticas políticas só oferece suporte a chaves de partição REQUEST_TIME.
  • WRITE_DISPOSITION: opcional. Especifica a ação que ocorre se a tabela ou partição de destino já existe. Para uma lista de possíveis valores, consulte writeDisposition. Por padrão, se a tabela ou partição já existir, o BigQuery anexará os dados à a tabela ou a partição mais recente.
.

Execute o gcloud asset analyze-iam-policy-longrunning (em inglês) comando:

Linux, macOS ou Cloud Shell

gcloud asset analyze-iam-policy-longrunning --RESOURCE_TYPE=RESOURCE_ID \
    --full-resource-name=FULL_RESOURCE_NAME \
    --identity=PRINCIPAL \
    --permissions='PERMISSIONS' \
    --bigquery-dataset=DATASET \
    --bigquery-table-prefix=TABLE_PREFIX \
    --bigquery-partition-key=PARTITION_KEY \
    --bigquery-write-disposition=WRITE_DISPOSITION

Windows (PowerShell)

gcloud asset analyze-iam-policy-longrunning --RESOURCE_TYPE=RESOURCE_ID `
    --full-resource-name=FULL_RESOURCE_NAME `
    --identity=PRINCIPAL `
    --permissions='PERMISSIONS' `
    --bigquery-dataset=DATASET `
    --bigquery-table-prefix=TABLE_PREFIX `
    --bigquery-partition-key=PARTITION_KEY `
    --bigquery-write-disposition=WRITE_DISPOSITION

Windows (cmd.exe)

.
gcloud asset analyze-iam-policy-longrunning --RESOURCE_TYPE=RESOURCE_ID ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --identity=PRINCIPAL ^
    --permissions='PERMISSIONS' ^
    --bigquery-dataset=DATASET ^
    --bigquery-table-prefix=TABLE_PREFIX ^
    --bigquery-partition-key=PARTITION_KEY ^
    --bigquery-write-disposition=WRITE_DISPOSITION

Você receberá uma resposta semelhante a esta:

Analyze IAM Policy in progress.
Use [gcloud asset operations describe projects/my-project/operations/AnalyzeIamPolicyLongrunning/1195028485971902504711950280359719028666] to check the status of the operation.

REST

O método AnalyzeIamPolicyLongrunning você emite uma solicitação de análise e recebe resultados no Destino do BigQuery.

Para analisar uma política de permissão do IAM e exportar os resultados para no BigQuery, use a API Cloud Asset Inventory analyzeIamPolicyLongrunning .

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • RESOURCE_TYPE: o tipo do recurso que terá o escopo de sua pesquisa. Somente as políticas de permissão do IAM anexada a esse recurso e aos descendentes dele serão analisados. Use o valor projects, folders ou organizations.
  • RESOURCE_ID: o ID do Projeto, pasta ou organização do Google Cloud em que você quer definir o escopo da pesquisa. Somente Serão analisadas as políticas de permissão do IAM anexadas a este recurso e aos descendentes dele. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • FULL_RESOURCE_NAME: opcional. O nome completo do recurso que você quer analisar o acesso. Para uma lista de formatos de nomes de recursos completos, consulte Formato do nome do recurso.
  • PRINCIPAL: opcional. O principal cujo acesso você quer analisar, na forma PRINCIPAL_TYPE:ID: por exemplo, user:my-user@example.com. Para uma lista completa dos tipos principais, consulte Identificadores principais.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: opcional. O permissões que você quer verificar, por exemplo, compute.instances.get. Se você várias permissões, a Análise de políticas vai procurar qualquer uma delas.
  • DATASET: o conjunto de dados do BigQuery na forma projects/PROJECT_ID/datasets/DATASET_ID, em que PROJECT_ID é o ID alfanumérico do projeto do Google Cloud e DATASET_ID é o ID do conjunto de dados.
  • TABLE_PREFIX: o prefixo do Tabelas do BigQuery nas quais os resultados da análise serão gravados. Se uma tabela com o especificado não existir, o BigQuery criará uma nova tabela.
  • PARTITION_KEY: opcional. A chave de partição para tabelas particionadas do BigQuery. A ferramenta Análise de políticas políticas só oferece suporte a chaves de partição REQUEST_TIME.
  • WRITE_DISPOSITION: opcional. Especifica a ação que ocorre se a tabela ou partição de destino já existe. Para uma lista de possíveis valores, consulte writeDisposition. Por padrão, se a tabela ou partição já existir, o BigQuery anexará os dados à a tabela ou a partição mais recente.
.

Método HTTP e URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicyLongrunning

Corpo JSON da solicitação:

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "identitySelector": {
      "identity": "PRINCIPAL"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    }
  },
  "outputConfig": {
    "bigqueryDestination": {
      "dataset": "DATASET",
      "tablePrefix": "TABLE_PREFIX",
      "partitionKey": "PARTITION_KEY",
      "writeDisposition": "WRITE_DISPOSITION"
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/my-project/operations/AnalyzeIamPolicyLongrunning/1206385342502762515812063858425027606003",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.asset.v1.AnalyzeIamPolicyLongrunningMetadata",
    "createTime": "2022-04-12T21:31:10.753173929Z"
  }
}

Ver os resultados da análise da política do IAM

Para visualizar sua análise de política do IAM, faça o seguinte:

Console

  1. No Console do Google Cloud, acesse a página BigQuery.

    Acessar o BigQuery

  2. Para exibir as tabelas e visualizações no conjunto de dados, abra o painel de navegação. Na seção Explorador, selecione o projeto para abrir e depois selecionar um conjunto de dados.

  3. Na lista, selecione as tabelas com seu prefixo. A tabela com O sufixo analysis contém a consulta e os metadados (por exemplo, operação nome, horário da solicitação e erros não críticos). A tabela com analysis_result é o resultado que lista as tuplas dos {identity, role(s)/permission(s), resource} junto com políticas do IAM que gerem essas tuplas.

  4. Para conferir um conjunto de dados de amostra, selecione a guia Visualizar.

API

Para procurar os dados da tabela, chame tabledata.list. No parâmetro tableId, especifique o nome da sua tabela.

É possível configurar os seguintes parâmetros opcionais para controlar a saída.

  • maxResults é o número máximo de resultados a serem retornados.
  • selectedFields é uma lista de colunas separadas por vírgulas a ser retornada. Se não for especificado, todas as colunas serão retornadas.
  • startIndex é o índice baseado em zero da primeira linha a ser lida.

Os valores são retornados incorporados em um objeto JSON para análise, conforme descrito na documentação de referência de tabledata.list.

Consultar o BigQuery

Esta seção fornece exemplos de consultas SQL para mostrar como usar Tabelas do BigQuery gravadas por AnalyzeIamPolicyLongrunning. Para mais informações sobre a sintaxe do BigQuery, consulte Sintaxe de consulta SQL padrão.

OP_ID é necessário para a maioria das consultas. É possível recebê-lo na resposta AnalyzeIamPolicyLongrunning. Por exemplo, no gcloud, você encontrará OP_ID como 123456 em "Usar [gcloud asset operations describe organizations/123456789/operations/AnalyzeIamPolicyLongrunning/123456] para verificar o status da operação".

Listar operações

A tabela pode armazenar resultados de várias operações AnalyzeIamPolicyLongrunning. Use a seguinte consulta para listar todos eles:

SELECT DISTINCT
  requestTime,
  opName
FROM `BQ_PROJECT_ID.BQ_DATASET_NAME.BQ_TABLE_PREFIX_analysis`
ORDER BY 1 DESC
;

Listar análises em uma operação

Em uma operação AnalyzeIamPolicyLongrunning, pode haver vários registros de análise gerados. Por exemplo, quando você ativa a opção analyze_service_account_impersonation na solicitação, o resultado pode conter uma análise principal (com analysisId 0) e várias análises de representação de contas de serviço.

Use a consulta a seguir para encontrar toda a análise fornecendo um nome de operação.

DECLARE _opName STRING DEFAULT "organizations/ORG_ID/operations/AnalyzeIamPolicyLongrunning/OP_ID";

SELECT
  analysisId,
  requestTime,
  TO_JSON_STRING(analysis.analysisQuery, true) as analysisQuery,
  analysis.fullyExplored,
  TO_JSON_STRING(analysis.nonCriticalErrors, true) as nonCriticalErrors
FROM `BQ_PROJECT_ID.BQ_DATASET_NAME.BQ_TABLE_PREFIX_analysis`
WHERE opName=_opName
ORDER BY 1
;

Listar ACEs (Entradas de controle de acesso) em uma análise

Uma ACE é uma entrada de controle de acesso {identity, role(s)/permission(s), resource}. Você pode usar a consulta a seguir para listar as ACE em uma análise.

DECLARE _opName STRING DEFAULT "organizations/ORG_ID/operations/AnalyzeIamPolicyLongrunning/OP_ID";

SELECT DISTINCT
  ids.name AS identity,
  resources.fullResourceName AS resource,
  accesses.role AS role,
  accesses.permission AS permission
FROM `BQ_PROJECT_ID.BQ_DATASET_NAME.BQ_TABLE_PREFIX_analysis_result`,
  UNNEST(analysisResult.identityList.identities) AS ids,
  UNNEST(analysisResult.accessControlLists) AS acls,
  UNNEST(acls.accesses) AS accesses,
  UNNEST(acls.resources) AS resources
WHERE opName=_opName
AND analysisId = 0
ORDER BY 1,2,3,4
;

Listar ACEs (Entradas no controle de acesso) com a vinculação de política do IAM em uma análise

Nessa consulta, listamos a ACE e a vinculação de política do IAM que gera essa ACE para uma análise.

DECLARE _opName STRING DEFAULT "organizations/ORG_ID/operations/AnalyzeIamPolicyLongrunning/OP_ID";

SELECT
  ids.name AS identity,
  resources.fullResourceName AS resource,
  accesses.role AS role,
  accesses.permission AS permission,
  analysisResult.attachedResourceFullName as iam_policy_attached_resource,
  TO_JSON_STRING(analysisResult.iamBinding, true) as iam_policy_binding
FROM `BQ_PROJECT_ID.BQ_DATASET_NAME.BQ_TABLE_PREFIX_analysis_result`,
  UNNEST(analysisResult.identityList.identities) AS ids,
  UNNEST(analysisResult.accessControlLists) AS acls,
  UNNEST(acls.accesses) AS accesses,
  UNNEST(acls.resources) AS resources
WHERE opName=_opName AND analysisId = 0
ORDER BY 1,2,3,4
;

Listar vinculações de políticas do IAM em uma análise

Nesta consulta, listamos as vinculações de política do IAM exibidas em uma análise.

DECLARE _opName STRING DEFAULT "organizations/ORG_ID/operations/AnalyzeIamPolicyLongrunning/OP_ID";

SELECT DISTINCT
  analysisResult.attachedResourceFullName as iam_policy_attached_resource,
  TO_JSON_STRING(analysisResult.iamBinding, true) as iam_policy_binding
FROM `BQ_PROJECT_ID.BQ_DATASET_NAME.BQ_TABLE_PREFIX_analysis_result`
WHERE opName=_opName AND analysisId = 0
ORDER BY 1, 2
;

Listar vinculações da política do IAM com a ACE (Entrada de controle de acesso) em uma análise

Nesta consulta, listamos as vinculações de política do IAM com as ACEs derivadas em uma análise.

DECLARE _opName STRING DEFAULT "organizations/ORG_ID/operations/AnalyzeIamPolicyLongrunning/OP_ID";

SELECT
  analysisResult.attachedResourceFullName as iam_policy_attached_resource,
  TO_JSON_STRING(analysisResult.iamBinding, true) as iam_policy_binding,
  TO_JSON_STRING(analysisResult.identityList.identities, true) as identities,
  TO_JSON_STRING(acls.accesses, true) as accesses,
  TO_JSON_STRING(acls.resources, true) as resources
FROM `BQ_PROJECT_ID.BQ_DATASET_NAME.BQ_TABLE_PREFIX_analysis_result`,
  UNNEST(analysisResult.accessControlLists) AS acls
WHERE opName=_opName AND analysisId = 0
ORDER BY 1,2
;