Reveja as estatísticas de políticas para conjuntos de dados do BigQuery

Esta página mostra como gerir as estatísticas de políticas ao nível do conjunto de dados, que são conclusões baseadas na aprendizagem automática sobre a utilização de autorizações para os seus conjuntos de dados do BigQuery. As estatísticas de políticas podem ajudar a identificar os responsáveis que têm autorizações de que não precisam.

Esta página centra-se nas estatísticas de políticas para conjuntos de dados. O Recommender também oferece estatísticas de políticas para os seguintes tipos de recursos:

Por vezes, as estatísticas de políticas ao nível do conjunto de dados estão associadas a recomendações de funções. As recomendações de funções sugerem ações que pode realizar para corrigir os problemas identificados pelas estatísticas das políticas ao nível do conjunto de dados.

Antes de começar

Funções necessárias

Para receber as autorizações de que precisa para gerir estatísticas de políticas ao nível do conjunto de dados, peça ao seu administrador que lhe conceda as seguintes funções da IAM no seu projeto:

  • Proprietário de dados do BigQuery (`roles/bigquery.dataOwner`)
  • Administrador do Recomendador do IAM (`roles/recommender.iamAdmin`)
  • Faça a gestão das estatísticas de políticas ao nível do conjunto de dados com a CLI gcloud ou a API REST: Consumidor de utilização do serviço (`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 gerir as estatísticas de políticas ao nível do conjunto de dados. 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 gerir as estatísticas de políticas ao nível do conjunto de dados:

  • Veja estatísticas de políticas ao nível do conjunto de dados:
    • recommender.iamPolicyInsights.get
    • recommender.iamPolicyInsights.list
  • Modifique as estatísticas das políticas ao nível do conjunto de dados: recommender.iamPolicyInsights.update
  • Faça a gestão das estatísticas de políticas ao nível do conjunto de dados com a CLI gcloud ou a API REST: serviceusage.services.use

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Apresente informações sobre políticas ao nível do conjunto de dados

Para listar todas as estatísticas de políticas ao nível do conjunto de dados para o seu projeto, use um dos seguintes métodos:

gcloud

Use o comando gcloud recommender insights list para ver todas as estatísticas de políticas ao nível do conjunto de dados para o seu projeto.

Antes de executar o comando, substitua os seguintes valores:

  • PROJECT_ID: o ID do projeto para o qual quer listar estatísticas.
  • LOCATION: a localização dos conjuntos de dados cujas estatísticas quer listar.
gcloud recommender insights list --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION\
    --filter="insightSubtype:PERMISSIONS_USAGE_BIGQUERY_DATASET"

O resultado apresenta todas as estatísticas de políticas ao nível do conjunto de dados para o seu projeto na localização especificada. Por exemplo:

INSIGHT_ID                            CATEGORY  INSIGHT_STATE  LAST_REFRESH_TIME     SEVERITY  INSIGHT_SUBTYPE                     DESCRIPTION
101d03ad-6148-4628-943e-fcf1a3af6b57  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  0 of the permissions in this role binding were used in the past 90 days.
15133dd9-4cbc-41e9-8990-b189241676d8  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  0 of the permissions in this role binding were used in the past 90 days.
1590aeae-d5bf-4e3d-b7d5-e230212f5faf  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  4 of the permissions in this role binding were used in the past 90 days.
280e5a14-4d09-4ac6-8e14-be7407611ad7  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  0 of the permissions in this role binding were used in the past 90 days.
34102078-085f-45d3-ae72-81da16c75781  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  10 of the permissions in this role binding were used in the past 90 days.

REST

O método insights.list da API Recommender apresenta todas as estatísticas de políticas ao nível do conjunto de dados para o seu projeto.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto para o qual quer listar estatísticas.
  • LOCATION: a localização dos conjuntos de dados cujas estatísticas quer listar.

Método HTTP e URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights?filter=insightSubtype%20%3D%20PERMISSIONS_USAGE_BIGQUERY_DATASET

Para enviar o seu pedido, expanda uma destas opções:

A resposta apresenta todos os estatísticas de políticas ao nível do conjunto de dados para o seu projeto na localização especificada. Por exemplo:

{
  "insights": [
    {
      "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57",
      "description": "0 of the permissions in this role binding were used in the past 90 days.",
      "content": {
        "role": "roles/bigquery.dataEditor",
        "member": "projectEditor:my-project",
        "condition": {
          "expression": "",
          "title": "",
          "description": "",
          "location": ""
        },
        "exercisedPermissions": [],
        "inferredPermissions": [],
        "currentTotalPermissionsCount": "37"
      },
      "lastRefreshTime": "2024-02-02T08:00:00Z",
      "observationPeriod": "7779600s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "associatedRecommendations": [
        {
          "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e"
        }
      ],
      "targetResources": [
        "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
      ],
      "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
      "etag": "\"35d4af47524d3f0c\"",
      "severity": "LOW"
    },
    {
      "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/15133dd9-4cbc-41e9-8990-b189241676d8",
      "description": "0 of the permissions in this role binding were used in the past 90 days.",
      "content": {
        "role": "roles/bigquery.dataViewer",
        "member": "projectViewer:my-project",
        "condition": {
          "expression": "",
          "title": "",
          "description": "",
          "location": ""
        },
        "exercisedPermissions": [],
        "inferredPermissions": [],
        "currentTotalPermissionsCount": "17"
      },
      "lastRefreshTime": "2024-02-02T08:00:00Z",
      "observationPeriod": "7779600s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "associatedRecommendations": [
        {
          "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/bc9b4c28-cc93-4a91-97ea-ff67e3cef1b4"
        }
      ],
      "targetResources": [
        "//bigquery.googleapis.com/projects/my-project/datasets/dataset-2"
      ],
      "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
      "etag": "\"eafa79df1b329063\"",
      "severity": "LOW"
    }
  ]
}

Para saber mais sobre os componentes de uma estatística, consulte Reveja as estatísticas de políticas ao nível do conjunto de dados nesta página.

Obtenha uma única estatística de política ao nível do conjunto de dados

Para obter mais informações sobre uma única estatística, incluindo a descrição, o estado e as recomendações associadas, use um dos seguintes métodos:

gcloud

Use o comando gcloud recommender insights describe com o ID da estatística para ver informações sobre uma única estatística.

  • INSIGHT_ID: o ID da estatística que quer ver. Para encontrar o ID, liste as estatísticas do seu projeto.
  • PROJECT_ID: o ID do projeto para o qual quer gerir estatísticas.
  • LOCATION: a localização do conjunto de dados cujo insight quer obter.
gcloud recommender insights describe INSIGHT_ID \
    --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION

O resultado mostra a estatística detalhadamente. Por exemplo, a seguinte estatística indica que todos os utilizadores com a função de editor no projeto my-project (projectEditor:my-project) têm a função de editor de dados do BigQuery (roles/bigquery.dataEditor) no conjunto de dados dataset-1, mas que nenhuma das autorizações nessa função foi usada nos últimos 90 dias:

associatedRecommendations:
- recommendation: projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f951-1ceb-488e-9e49-f17eb21f6e5e
category: SECURITY
content:
  condition:
    description: ''
    expression: ''
    location: ''
    title: ''
  currentTotalPermissionsCount: '37'
  exercisedPermissions: []
  inferredPermissions: []
  member: projectEditor:my-project
  role: roles/bigquery.dataEditor
description: 0 of the permissions in this role binding were used in the past 90 days.
etag: '"5f2f352a738f7a24"'
insightSubtype: PERMISSIONS_USAGE_BIGQUERY_DATASET
lastRefreshTime: '2024-02-04T08:00:00Z'
name: projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57
observationPeriod: 7776000s
severity: LOW
stateInfo:
  state: ACTIVE
targetResources:
- //bigquery.googleapis.com/projects/my-project/datasets/dataset-1

Para saber mais acerca dos componentes de uma estatística, consulte Reveja as estatísticas de políticas ao nível do conjunto de dados nesta página.

REST

O método insights.get da API Recommender recebe uma única estatística.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto para o qual quer gerir estatísticas.
  • LOCATION: a localização do conjunto de dados cujo insight quer obter.
  • INSIGHT_ID: o ID da estatística que quer ver. Se não souber o ID da estatística, pode encontrá-lo listando as estatísticas no seu projeto. O ID de uma estatística é tudo o que se encontra depois de insights/ no campo name da estatística.

Método HTTP e URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID

Para enviar o seu pedido, expanda uma destas opções:

A resposta contém a estatística. Por exemplo, a seguinte estatística indica que todos os utilizadores com a função de editor no projeto my-project (projectEditor:my-project) têm a função de editor de dados do BigQuery (roles/bigquery.dataEditor) no conjunto de dados dataset-1, mas que nenhuma das autorizações nessa função foi usada nos últimos 90 dias:

{
  "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57",
  "description": "0 of the permissions in this role binding were used in the past 90 days.",
  "content": {
    "role": "roles/bigquery.dataEditor",
    "member": "projectEditor:my-project",
    "condition": {
      "expression": "",
      "title": "",
      "description": "",
      "location": ""
    },
    "exercisedPermissions": [],
    "inferredPermissions": [],
    "currentTotalPermissionsCount": "37"
  },
  "lastRefreshTime": "2024-02-02T08:00:00Z",
  "observationPeriod": "7779600s",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e"
    }
  ],
  "targetResources": [
    "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
  ],
  "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
  "etag": "\"35d4af47524d3f0c\"",
  "severity": "LOW"
}

Para saber mais acerca dos componentes de uma estatística, consulte Reveja as estatísticas de políticas ao nível do conjunto de dados nesta página.

Reveja as estatísticas das políticas ao nível do conjunto de dados

Depois de receber uma única estatística, pode rever o respetivo conteúdo para compreender o padrão de utilização de recursos que realça.

O conteúdo de uma estatística é determinado pelos respetivos subtipos. As estatísticas de políticas ao nível do conjunto de dados (google.iam.policy.Insight) têm o subtipo PERMISSIONS_USAGE_BIGQUERY_DATASET.

As estatísticas PERMISSIONS_USAGE_BIGQUERY_DATASET têm os seguintes componentes, não necessariamente nesta ordem:

  • associatedRecommendations: Os identificadores de quaisquer recomendações associadas à estatística. Se não existirem recomendações associadas à estatística, este campo está vazio.
  • category: a categoria das estatísticas de IAM é sempre SECURITY.
  • content: comunica a utilização de autorizações de um principal para uma função específica. Este campo contém os seguintes componentes:

    • condition: quaisquer condições anexadas à associação que conceda a função ao principal. Se não existirem condições, este campo contém uma condição vazia.
    • exercisedPermissions: As autorizações na função que o principal usou durante o período de observação.
    • inferredPermissions: As autorizações na função que o Recomendador determinou, através da ML, que o principal provavelmente vai precisar com base nas respetivas autorizações exercidas.
    • member: o principal cuja utilização de autorizações foi analisada.
    • role: a função para a qual a utilização de autorizações foi analisada.
  • description: um resumo da estatística legível por humanos.
  • etag: um identificador exclusivo do estado atual de uma estatística. Sempre que a estatística muda, é atribuído um novo valor etag.

    Para alterar o estado de uma estatística, tem de fornecer o etag da estatística existente. A utilização do etag ajuda a garantir que as operações só são realizadas se a estatística não tiver sido alterada desde a última vez que a obteve.

  • insightSubtype: o subtipo de estatística.
  • lastRefreshTime: a data da última atualização da estatística, que indica a atualidade dos dados usados para gerar a estatística.
  • name: o nome da estatística, no seguinte formato:

    projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID

    Os marcadores de posição têm os seguintes valores:

    • PROJECT_ID: o ID do projeto onde a estatística foi gerada.
    • LOCATION: a localização do conjunto de dados a que se refere a estatística.
    • INSIGHT_ID: um ID exclusivo para a estatística.
  • observationPeriod: o período que antecede a estatística. Os dados de origem usados para gerar as estatísticas terminam a lastRefreshTime e começam a lastRefreshTime menos observationPeriod.
  • stateInfo: as estatísticas passam por várias transições de estado depois de serem propostas:

    • ACTIVE: a estatística foi gerada, mas não foram tomadas ações ou foi tomada uma ação sem atualizar o estado da estatística. As estatísticas ativas são atualizadas quando os dados subjacentes mudam.
    • ACCEPTED: foi tomada alguma medida com base na estatística. As estatísticas são aceites quando uma recomendação associada foi marcada como CLAIMED, SUCCEEDED ou FAILED, ou quando a estatística foi aceite diretamente. Quando um insight está no estado ACCEPTED, o conteúdo do insight não pode ser alterado. As estatísticas aceites são retidas durante 90 dias após serem aceites.
  • targetResources: o nome completo do recurso do conjunto de dados ao qual a estatística se refere. Por exemplo, //bigquery.googleapis.com/projects/my-project/datasets/my-dataset.

Marque uma estatística da política ao nível do conjunto de dados como ACCEPTED

Se tomar medidas com base numa estatística ativa, pode marcar essa estatística como ACCEPTED. O estado ACCEPTED indica à API Recommender que tomou medidas com base nesta estatística, o que ajuda a refinar as suas recomendações.

As estatísticas aceites são retidas durante 90 dias após serem marcadas como ACCEPTED.

gcloud

Use o comando gcloud recommender insights mark-accepted com o ID das estatísticas para marcar uma estatística como ACCEPTED.

  • INSIGHT_ID: o ID da estatística que quer ver. Para encontrar o ID, liste as estatísticas do seu projeto.
  • PROJECT_ID: o ID do projeto para o qual quer gerir estatísticas.
  • LOCATION: a localização do conjunto de dados cujo insight quer marcar como ACCEPTED.
  • ETAG: um identificador de uma versão da estatística. Para receber o etag, faça o seguinte:

    1. Obtenha as estatísticas através do comando gcloud recommender insights describe.
    2. Localize e copie o valor etag do resultado, incluindo as aspas circundantes. Por exemplo, "d3cdec23cc712bd0".
gcloud recommender insights mark-accepted INSIGHT_ID \
    --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION \
    --etag=ETAG

O resultado mostra a estatística, agora com o estado de ACCEPTED:

associatedRecommendations:
- recommendation: projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f951-1ceb-488e-9e49-f17eb21f6e5e
category: SECURITY
content:
  condition:
    description: ''
    expression: ''
    location: ''
    title: ''
  currentTotalPermissionsCount: '37'
  exercisedPermissions: []
  inferredPermissions: []
  member: projectEditor:my-project
  role: roles/bigquery.dataEditor
description: 0 of the permissions in this role binding were used in the past 90 days.
etag: '"5f2f352a738f7a24"'
insightSubtype: PERMISSIONS_USAGE_BIGQUERY_DATASET
lastRefreshTime: '2024-02-04T08:00:00Z'
name: projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57
observationPeriod: 7776000s
severity: LOW
stateInfo:
  state: ACCEPTED
targetResources:
- //bigquery.googleapis.com/projects/my-project/datasets/dataset-1

Para saber mais sobre as informações de estado de uma estatística, consulte Reveja as estatísticas de políticas ao nível do conjunto de dados nesta página.

REST

O método insights.markAccepted da API Recommender marca uma estatística como ACCEPTED.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto para o qual quer gerir estatísticas.
  • LOCATION: a localização do conjunto de dados cujo insight quer marcar como ACCEPTED.
  • INSIGHT_ID: o ID da estatística que quer ver. Se não souber o ID da estatística, pode encontrá-lo listando as estatísticas no seu projeto. O ID de uma estatística é tudo o que se encontra depois de insights/ no campo name da estatística.
  • ETAG: um identificador de uma versão da estatística. Para obter o etag, faça o seguinte:
    1. Obtenha a estatística através do método insights.get.
    2. Encontre e copie o valor etag da resposta.

Método HTTP e URL:

POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID:markAccepted

Corpo JSON do pedido:

{
  "etag": "ETAG"
}

Para enviar o seu pedido, expanda uma destas opções:

A resposta contém a estatística, agora com o estado ACCEPTED:

{
  "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57",
  "description": "0 of the permissions in this role binding were used in the past 90 days.",
  "content": {
    "role": "roles/bigquery.dataEditor",
    "member": "projectEditor:my-project",
    "condition": {
      "expression": "",
      "title": "",
      "description": "",
      "location": ""
    },
    "exercisedPermissions": [],
    "inferredPermissions": [],
    "currentTotalPermissionsCount": "37"
  },
  "lastRefreshTime": "2024-02-02T08:00:00Z",
  "observationPeriod": "7779600s",
  "stateInfo": {
    "state": "ACCEPTED"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e"
    }
  ],
  "targetResources": [
    "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
  ],
  "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
  "etag": "\"35d4af47524d3f0c\"",
  "severity": "LOW"
}

Para saber mais sobre as informações de estado de uma estatística, consulte Reveja as estatísticas de políticas ao nível do conjunto de dados nesta página.

O que se segue?