Esta página explica como analisar políticas de gestão de identidade e de acesso (IAM) de forma assíncrona e escrever resultados no BigQuery. O processo é semelhante à análise de políticas de IAM, exceto que o resultado da análise é escrito em tabelas do BigQuery.
Antes de começar
Enable the Cloud Asset API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin
), which
contains the serviceusage.services.enable
permission. Learn how to grant
roles.
Tem de ativar a API no projeto que vai usar para enviar a consulta. Não tem de ser o mesmo recurso ao qual restringe a sua consulta.
Funções e autorizações necessárias
As seguintes funções e autorizações são necessárias para executar uma análise de políticas e exportar os resultados para o BigQuery.
Funções de IAM necessárias
Para receber as autorizações de que precisa para analisar uma política e exportar os resultados para o BigQuery, peça ao seu administrador que lhe conceda as seguintes funções de IAM no projeto, na pasta ou na organização ao qual vai restringir a sua consulta:
-
Editor de dados do BigQuery (
roles/bigquery.dataEditor
) -
Cloud Asset Viewer (
roles/cloudasset.viewer
) -
Para analisar políticas com funções de IAM personalizadas:
Visualizador de funções (
roles/iam.roleViewer
) -
Para usar a CLI do Google Cloud para analisar políticas:
Consumidor de utilização de serviços (
roles/serviceusage.serviceUsageConsumer
)
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Estas funções predefinidas contêm as autorizações necessárias para analisar uma política e exportar os resultados para o BigQuery. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para analisar uma política e exportar os resultados para o 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 funções de IAM personalizadas:
iam.roles.get
-
Para usar a CLI do Google Cloud para analisar políticas:
serviceusage.services.use
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Autorizações do Google Workspace necessárias
Se quiser ver se um principal tem determinadas funções ou autorizações como resultado da respetiva associação a um grupo do Google Workspace, precisa da autorização do Google Workspace.groups.read
Esta autorização está contida na função de administrador do leitor de grupos e em funções mais poderosas, como as funções de administrador de grupos ou superadministrador. Consulte o artigo Atribua funções de administrador específicas para mais informações.
Analise políticas e exporte resultados
Consola
Na Google Cloud consola, aceda à página Analisador de políticas.
Na secção Analisar políticas, encontre o modelo de consulta que quer usar e, de seguida, clique em Criar consulta. Se quiser criar uma consulta personalizada, clique em Criar consulta personalizada.
No campo Selecionar âmbito da consulta, selecione o projeto, a pasta ou a organização ao qual quer restringir a consulta. O Analisador de políticas vai analisar o acesso a esse projeto, pasta ou organização, bem como a todos os recursos nesse projeto, pasta ou organização.
Certifique-se de que os parâmetros de consulta estão definidos:
- Se estiver a usar um modelo de consulta, confirme os parâmetros de consulta pré-preenchidos.
- Se estiver a criar uma consulta personalizada, defina os recursos, os responsáveis, as funções e as autorizações para os quais quer consultar.
Para mais informações sobre os tipos de consultas que pode criar, consulte o artigo Analise as políticas de IAM.
No painel etiquetado com o nome da consulta, clique em Analisar > Exportar apenas o resultado. É aberto o painel Exportar resultados.
Na secção Defina o destino da exportação, introduza as seguintes informações:
- Projeto: o projeto onde o seu conjunto de dados do BigQuery está localizado.
- Conjunto de dados: o conjunto de dados do BigQuery para o qual quer exportar os resultados.
- Tabela: o prefixo das tabelas do BigQuery nas quais os resultados da análise serão escritos. Se não existir uma tabela com o prefixo especificado, o BigQuery cria uma nova tabela.
Clique em Continuar.
Opcional: na secção Configure definições adicionais, selecione as opções pretendidas:
- Partição: se a tabela deve ser particionada. Para saber mais sobre as tabelas particionadas, consulte o artigo Introdução às tabelas particionadas.
- Preferência de escrita: especifica a ação que ocorre se a tabela ou a partição de destino já existir. Por predefinição, se a tabela ou a partição já existir, o BigQuery anexa os dados à tabela ou à partição mais recente.
Clique em Exportar.
O Analisador de políticas executa a consulta e exporta os resultados para a tabela especificada.
gcloud
O método AnalyzeIamPolicyLongrunning
permite-lhe emitir um pedido de análise e obter resultados no destino do BigQuery especificado.
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
RESOURCE_TYPE
: o tipo de recurso ao qual quer restringir a sua pesquisa. Apenas as políticas de autorização da IAM anexadas a este recurso e aos respetivos descendentes são analisadas. Use o valorproject
,folder
ouorganization
.RESOURCE_ID
: o ID do projeto, da pasta ou da organização ao qual quer restringir a sua pesquisa.Google Cloud Apenas as políticas de autorização do IAM anexadas a este recurso e aos respetivos descendentes vão ser analisadas. Os IDs dos projetos são strings alfanuméricas, comomy-project
. Os IDs das pastas e das organizações são numéricos, como123456789012
.PRINCIPAL
: o principal cujo acesso quer analisar, no formatoPRINCIPAL_TYPE:ID
, por exemplo,user:my-user@example.com
. Para ver uma lista completa dos tipos principais, consulte o artigo Identificadores principais.PERMISSIONS
: uma lista separada por vírgulas das autorizações que quer verificar. Por exemplo,compute.instances.get,compute.instances.start
. Se indicar várias autorizações, o Analisador de políticas verifica se existe alguma das autorizações indicadas.DATASET
: O conjunto de dados do BigQuery no formatoprojects/PROJECT_ID/datasets/DATASET_ID
, ondePROJECT_ID
é o ID alfanumérico do seu projeto Google Cloud eDATASET_ID
é o ID do seu conjunto de dados.TABLE_PREFIX
: o prefixo das tabelas do BigQuery nas quais os resultados da análise vão ser escritos. Se não existir uma tabela com o prefixo especificado, o BigQuery cria uma nova tabela.PARTITION_KEY
: opcional. A chave de partição para a tabela particionada do BigQuery. O analisador de políticas só suporta chaves de partiçãoREQUEST_TIME
.WRITE_DISPOSITION
: opcional. Especifica a ação que ocorre se a tabela ou a partição de destino já existir. Para ver uma lista de valores possíveis, consultewriteDisposition
. Por predefinição, se a tabela ou a partição já existir, a app BigQuery anexa os dados à tabela ou à partição mais recente.
Execute o comando gcloud asset analyze-iam-policy-longrunning:
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
Deve receber uma resposta semelhante à seguinte:
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
permite-lhe emitir um pedido de análise e obter resultados no destino do BigQuery especificado.
Para analisar uma política de autorização da IAM e exportar os resultados para o
BigQuery, use o método analyzeIamPolicyLongrunning
da API Cloud Asset Inventory.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
RESOURCE_TYPE
: o tipo de recurso ao qual quer restringir a sua pesquisa. Apenas as políticas de autorização da IAM anexadas a este recurso e aos respetivos descendentes são analisadas. Use o valorprojects
,folders
ouorganizations
.RESOURCE_ID
: o ID do projeto, da pasta ou da organização ao qual quer restringir a sua pesquisa.Google Cloud Apenas as políticas de autorização do IAM anexadas a este recurso e aos respetivos descendentes vão ser analisadas. Os IDs dos projetos são strings alfanuméricas, comomy-project
. Os IDs das pastas e das organizações são numéricos, como123456789012
.-
FULL_RESOURCE_NAME
: opcional. O nome completo do recurso para o qual quer analisar o acesso. Para ver uma lista de formatos de nomes de recursos completos, consulte o artigo Formato do nome do recurso. PRINCIPAL
: opcional. O principal cujo acesso quer analisar, no formatoPRINCIPAL_TYPE:ID
, por exemplo,user:my-user@example.com
. Para ver uma lista completa dos tipos principais, consulte o artigo Identificadores principais.PERMISSION_1
,PERMISSION_2
...PERMISSION_N
: opcional. As autorizações que quer verificar, por exemplo,compute.instances.get
. Se listar várias autorizações, o Analisador de políticas verifica se alguma das autorizações indicadas está presente.DATASET
: O conjunto de dados do BigQuery no formatoprojects/PROJECT_ID/datasets/DATASET_ID
, ondePROJECT_ID
é o ID alfanumérico do seu projeto Google Cloud eDATASET_ID
é o ID do seu conjunto de dados.TABLE_PREFIX
: o prefixo das tabelas do BigQuery nas quais os resultados da análise vão ser escritos. Se não existir uma tabela com o prefixo especificado, o BigQuery cria uma nova tabela.PARTITION_KEY
: opcional. A chave de partição para a tabela particionada do BigQuery. O analisador de políticas só suporta chaves de partiçãoREQUEST_TIME
.WRITE_DISPOSITION
: opcional. Especifica a ação que ocorre se a tabela ou a partição de destino já existir. Para ver uma lista de valores possíveis, consultewriteDisposition
. Por predefinição, se a tabela ou a partição já existir, a app BigQuery anexa os dados à tabela ou à partição mais recente.
Método HTTP e URL:
POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicyLongrunning
Corpo JSON do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "name": "projects/my-project/operations/AnalyzeIamPolicyLongrunning/1206385342502762515812063858425027606003", "metadata": { "@type": "type.googleapis.com/google.cloud.asset.v1.AnalyzeIamPolicyLongrunningMetadata", "createTime": "2022-04-12T21:31:10.753173929Z" } }
Veja os resultados da análise de políticas IAM
Para ver os resultados da análise de políticas de IAM:
Consola
Na Google Cloud consola, aceda à página BigQuery.
Para apresentar as tabelas e as vistas no conjunto de dados, abra o painel de navegação. Na secção Explorador, selecione o seu projeto para o expandir e, de seguida, selecione um conjunto de dados.
Na lista, selecione as tabelas com o seu prefixo. A tabela com o sufixo
analysis
contém a consulta e os metadados (por exemplo, o nome da operação, a hora do pedido e os erros não críticos). A tabela com o sufixoanalysis_result
apresenta tuplos de{identity, role(s)/permission(s), resource}
juntamente com as políticas de IAM que geram esses tuplos.Para ver um conjunto de dados de amostra, selecione o separador Pré-visualização.
API
Para procurar os dados da tabela, ligue para
tabledata.list
.
No parâmetro tableId
, especifique o nome da tabela.
Pode configurar os seguintes parâmetros opcionais para controlar o resultado.
maxResults
é o número máximo de resultados a devolver.selectedFields
é uma lista de colunas separadas por vírgulas a devolver; se não for especificado, são devolvidas todas as colunas.startIndex
é o índice baseado em zero da linha inicial a ler.
Os valores são devolvidos envolvidos num objeto JSON que tem de analisar, conforme descrito na documentação de referência tabledata.list
.
Consultar o BigQuery
Esta secção fornece exemplos de consultas SQL para mostrar como usar
tabelas do BigQuery escritas pelo AnalyzeIamPolicyLongrunning
. Para mais
informações sobre a sintaxe do BigQuery, consulte a
sintaxe de consulta SQL padrão.
OP_ID é necessário para a maioria das consultas. Pode obtê-lo na resposta de AnalyzeIamPolicyLongrunning
. Por exemplo, no gcloud, vai encontrar OP_ID é 123456
em "Use [gcloud asset operations describe organizations/123456789/operations/AnalyzeIamPolicyLongrunning/123456]
to check the status of the operation.".
Apresentar operações
A sua tabela pode armazenar os resultados de várias operações.AnalyzeIamPolicyLongrunning
Pode usar a seguinte consulta para apresentar uma lista de todos os grupos de anúncios:
SELECT DISTINCT requestTime, opName FROM `BQ_PROJECT_ID.BQ_DATASET_NAME.BQ_TABLE_PREFIX_analysis` ORDER BY 1 DESC ;
Apresentar análises numa operação
Numa operação AnalyzeIamPolicyLongrunning
, podem ser gerados vários registos de análise. Por exemplo, quando ativa a opção analyze_service_account_impersonation
no seu pedido, o resultado pode conter uma análise principal (com o ID de análise 0) e várias análises de roubo de identidade da conta de serviço.
Pode usar a seguinte consulta para saber todas as análises através de 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 ;
Liste ACEs(Access Control Entries) numa análise
Uma ACE é uma Access Control Entry {identity, role(s)/permission(s), resource}
.
Pode usar a seguinte consulta para listar o ACE numa 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 ;
Apresente ACEs(Access Control Entries) com associação de políticas IAM numa análise
Nesta consulta, listamos a ACE e a associação da política de IAM que gera esta 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 ;
Apresente associações de políticas IAM numa análise
Nesta consulta, listamos as associações de políticas de IAM apresentadas numa 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 ;
Liste as associações de políticas da IAM com ACE(Access Control Entry) numa análise
Nesta consulta, listamos as associações de políticas de IAM com os respetivos ACEs derivados numa 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 ;