Esamina gli approfondimenti sulle norme per i set di dati BigQuery

Questa pagina mostra come gestire gli approfondimenti sulle norme a livello di set di dati, ovvero i risultati basati sul machine learning sull'utilizzo delle autorizzazioni per i tuoi set di dati BigQuery. Gli approfondimenti sui criteri possono aiutarti a identificare le entità che dispongono di autorizzazioni non necessarie.

Questa pagina è incentrata sugli approfondimenti sulle norme per i set di dati. Recommender offre anche approfondimenti sulle norme per i seguenti tipi di risorse:

A volte gli approfondimenti sulle norme a livello di set di dati sono collegati ai suggerimenti sui ruoli. I suggerimenti sui ruoli propongono azioni che puoi intraprendere per risolvere i problemi identificati dagli approfondimenti sulle norme a livello di set di dati.

Prima di iniziare

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire gli approfondimenti sulle policy a livello di set di dati, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

  • BigQuery Data Owner (`roles/bigquery.dataOwner`)
  • Amministratore motore per suggerimenti IAM (`roles/recommender.iamAdmin`)
  • Gestisci gli approfondimenti sulle policy a livello di set di dati con gcloud CLI o l'API REST: Consumer di Service Usage (`roles/serviceusage.serviceUsageConsumer`)

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per gestire gli approfondimenti sulle policy a livello di set di dati. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per gestire gli approfondimenti sulle policy a livello di set di dati sono necessarie le seguenti autorizzazioni:

  • Visualizza approfondimenti sulle norme a livello di set di dati:
    • recommender.iamPolicyInsights.get
    • recommender.iamPolicyInsights.list
  • Modifica degli approfondimenti sulle policy a livello di set di dati: recommender.iamPolicyInsights.update
  • Gestisci gli approfondimenti sulle policy a livello di set di dati con gcloud CLI o l'API REST: serviceusage.services.use

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Elenca gli approfondimenti sui criteri a livello di set di dati

Per elencare tutti gli approfondimenti sulle norme a livello di set di dati per il tuo progetto, utilizza uno dei seguenti metodi:

gcloud

Utilizza il comando gcloud recommender insights list per visualizzare tutti gli approfondimenti sulle policy a livello di set di dati per il tuo progetto.

Prima di eseguire il comando, sostituisci i seguenti valori:

  • PROJECT_ID: l'ID del progetto per cui vuoi elencare gli approfondimenti.
  • LOCATION: La posizione dei set di dati di cui vuoi elencare gli approfondimenti.
gcloud recommender insights list --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION\
    --filter="insightSubtype:PERMISSIONS_USAGE_BIGQUERY_DATASET"

L'output elenca tutti gli approfondimenti sulle norme a livello di set di dati per il tuo progetto nella posizione specificata. Ad esempio:

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

Il metodo insights.list dell'API Recommender elenca tutti gli approfondimenti sui criteri a livello di set di dati per il tuo progetto.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID del progetto per cui vuoi elencare gli approfondimenti.
  • LOCATION: La posizione dei set di dati di cui vuoi elencare gli approfondimenti.

Metodo 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

Per inviare la richiesta, espandi una di queste opzioni:

La risposta elenca tutti gli approfondimenti sulle policy a livello di set di dati per il tuo progetto nella località specificata. Ad esempio:

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

Per saperne di più sui componenti di un insight, consulta la sezione Esamina gli insight sulle norme a livello di set di dati in questa pagina.

Visualizzare un singolo approfondimento sui criteri a livello di set di dati

Per ottenere maggiori informazioni su un singolo approfondimento, inclusi descrizione, stato e eventuali consigli associati, utilizza uno dei seguenti metodi:

gcloud

Utilizza il comando gcloud recommender insights describe con l'ID insight per visualizzare informazioni su un singolo insight.

  • INSIGHT_ID: l'ID dell'insight che vuoi visualizzare. Per trovare l'ID, elenca gli approfondimenti per il tuo progetto.
  • PROJECT_ID: l'ID del progetto per cui vuoi gestire gli approfondimenti.
  • LOCATION: La posizione del set di dati di cui vuoi ottenere l'insight.
gcloud recommender insights describe INSIGHT_ID \
    --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION

L'output mostra in dettaglio l'approfondimento. Ad esempio, il seguente insight indica che tutti gli utenti con il ruolo Editor nel progetto my-project (projectEditor:my-project) hanno il ruolo Editor dati BigQuery (roles/bigquery.dataEditor) nel set di dati dataset-1, ma che nessuna delle autorizzazioni in questo ruolo è stata utilizzata negli ultimi 90 giorni:

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

Per saperne di più sui componenti di un insight, consulta la sezione Esamina gli insight sulle norme a livello di set di dati in questa pagina.

REST

Il metodo insights.get dell'API Recommender recupera un singolo approfondimento.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID del progetto per cui vuoi gestire gli approfondimenti.
  • LOCATION: La posizione del set di dati di cui vuoi ottenere l'insight.
  • INSIGHT_ID: l'ID dell'insight che vuoi visualizzare. Se non conosci l'ID approfondimento, puoi trovarlo elencando gli approfondimenti nel tuo progetto. L'ID di un insight è tutto ciò che segue insights/ nel campo name dell'insight.

Metodo HTTP e URL:

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

Per inviare la richiesta, espandi una di queste opzioni:

La risposta contiene l'approfondimento. Ad esempio, il seguente insight indica che tutti gli utenti con il ruolo Editor nel progetto my-project (projectEditor:my-project) hanno il ruolo Editor dati BigQuery (roles/bigquery.dataEditor) nel set di dati dataset-1, ma che nessuna delle autorizzazioni in questo ruolo è stata utilizzata negli ultimi 90 giorni:

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

Per saperne di più sui componenti di un insight, consulta la sezione Esamina gli insight sulle norme a livello di set di dati in questa pagina.

Esaminare gli approfondimenti sulle norme a livello di set di dati

Dopo aver ottenuto un singolo approfondimento, puoi esaminarne i contenuti per comprendere il pattern di utilizzo delle risorse che mette in evidenza.

I contenuti di un approfondimento sono determinati dai relativi sottotipi. Gli insight sui criteri a livello di set di dati (google.iam.policy.Insight) hanno il sottotipo PERMISSIONS_USAGE_BIGQUERY_DATASET.

Gli approfondimenti di PERMISSIONS_USAGE_BIGQUERY_DATASET sono composti dai seguenti elementi, non necessariamente in questo ordine:

  • associatedRecommendations: Gli identificatori di eventuali suggerimenti associati all'insight. Se non sono presenti suggerimenti associati all'insight, questo campo è vuoto.
  • category: la categoria per gli approfondimenti IAM è sempre SECURITY.
  • content: Mostra l'utilizzo delle autorizzazioni di un'entità per un ruolo specifico. Questo campo contiene i seguenti componenti:

    • condition: eventuali condizioni associate al binding che concede il ruolo all'entità. Se non sono presenti condizioni, questo campo contiene una condizione vuota.
    • exercisedPermissions: le autorizzazioni nel ruolo utilizzato dall'entità durante il periodo di osservazione.
    • inferredPermissions: Le autorizzazioni nel ruolo che Recommender ha determinato, tramite l'ML, che l'entità probabilmente avrà bisogno in base alle autorizzazioni esercitate.
    • member: l'entità di cui è stato analizzato l'utilizzo delle autorizzazioni.
    • role: il ruolo per cui è stato analizzato l'utilizzo dell'autorizzazione.
  • description: un riepilogo dell'insight leggibile.
  • etag: un identificatore univoco per lo stato attuale di un insight. Ogni volta che l'insight cambia, viene assegnato un nuovo valore etag.

    Per modificare lo stato di un approfondimento, devi fornire etag dell'approfondimento esistente. L'utilizzo di etag consente di garantire che le operazioni vengano eseguite solo se l'insight non è cambiato dall'ultima volta che l'hai recuperato.

  • insightSubtype: Il sottotipo di insight.
  • lastRefreshTime: la data dell'ultimo aggiornamento dell'approfondimento, che indica l'aggiornamento dei dati utilizzati per generare l'approfondimento.
  • name: il nome dell'insight, nel seguente formato:

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

    I segnaposto hanno i seguenti valori:

    • PROJECT_ID: l'ID del progetto in cui è stato generato l'approfondimento.
    • LOCATION: la posizione del set di dati a cui si riferisce l'insight.
    • INSIGHT_ID: un ID univoco per l'insight.
  • observationPeriod: Il periodo di tempo che precede l'insight. I dati di origine utilizzati per generare l'insight terminano il giorno lastRefreshTime e iniziano il giorno lastRefreshTime meno observationPeriod.
  • stateInfo: gli approfondimenti vengono sottoposti a più transizioni di stato dopo essere stati proposti:

    • ACTIVE: l'approfondimento è stato generato, ma non sono state intraprese azioni o è stata intrapresa un'azione senza aggiornare lo stato dell'approfondimento. Gli insight attivi vengono aggiornati quando cambiano i dati di base.
    • ACCEPTED: è stata intrapresa un'azione in base all'approfondimento. Gli approfondimenti vengono accettati quando un consiglio associato è stato contrassegnato come CLAIMED, SUCCEEDED o FAILED oppure quando l'approfondimento è stato accettato direttamente. Quando un approfondimento si trova nello stato ACCEPTED, il suo contenuto non può cambiare. Gli approfondimenti accettati vengono conservati per 90 giorni dopo l'accettazione.
  • targetResources: il nome completo della risorsa del set di dati a cui si riferisce l'insight. Ad esempio, //bigquery.googleapis.com/projects/my-project/datasets/my-dataset.

Contrassegnare un approfondimento sui criteri a livello di set di dati come ACCEPTED

Se intraprendi un'azione in base a un approfondimento attivo, puoi contrassegnarlo come ACCEPTED. Lo stato ACCEPTED indica all'API Recommender che hai intrapreso un'azione in base a questo approfondimento, il che contribuisce a perfezionare i tuoi consigli.

Gli approfondimenti accettati vengono conservati per 90 giorni dopo essere stati contrassegnati come ACCEPTED.

gcloud

Utilizza il comando gcloud recommender insights mark-accepted con l'ID insight per contrassegnare un insight come ACCEPTED.

  • INSIGHT_ID: l'ID dell'insight che vuoi visualizzare. Per trovare l'ID, elenca gli approfondimenti per il tuo progetto.
  • PROJECT_ID: l'ID del progetto per cui vuoi gestire gli approfondimenti.
  • LOCATION: La posizione del set di dati il cui insight vuoi contrassegnare come ACCEPTED.
  • ETAG: un identificatore per una versione dell'insight. Per ottenere etag, segui questi passaggi:

    1. Ottieni l'approfondimento utilizzando il comando gcloud recommender insights describe.
    2. Trova e copia il valore etag dall'output, incluse le virgolette di chiusura. Ad esempio, "d3cdec23cc712bd0".
gcloud recommender insights mark-accepted INSIGHT_ID \
    --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION \
    --etag=ETAG

L'output mostra l'approfondimento, ora con lo stato 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

Per saperne di più sullo stato di un insight, consulta la sezione Esamina gli insight sulle norme a livello di set di dati in questa pagina.

REST

Il metodo insights.markAccepted dell'API Recommender contrassegna un approfondimento come ACCEPTED.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID del progetto per cui vuoi gestire gli approfondimenti.
  • LOCATION: La posizione del set di dati il cui insight vuoi contrassegnare come ACCEPTED.
  • INSIGHT_ID: l'ID dell'insight che vuoi visualizzare. Se non conosci l'ID approfondimento, puoi trovarlo elencando gli approfondimenti nel tuo progetto. L'ID di un insight è tutto ciò che segue insights/ nel campo name dell'insight.
  • ETAG: un identificatore per una versione dell'insight. Per ottenere etag, procedi nel seguente modo:
    1. Ottieni l'approfondimento utilizzando il metodo insights.get.
    2. Trova e copia il valore di etag dalla risposta.

Metodo 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 della richiesta:

{
  "etag": "ETAG"
}

Per inviare la richiesta, espandi una di queste opzioni:

La risposta contiene l'approfondimento, ora con lo stato 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"
}

Per saperne di più sullo stato di un insight, consulta la sezione Esamina gli insight sulle norme a livello di set di dati in questa pagina.

Passaggi successivi