Esamina e applica i suggerimenti sui ruoli per i set di dati BigQuery

Questa pagina spiega come visualizzare, comprendere e applicare il ruolo IAM per i set di dati BigQuery. Guida per i suggerimenti sui ruoli di applicare il principio del privilegio minimo assicurando che le entità dispongano ma solo le autorizzazioni di cui hanno effettivamente bisogno.

Prima di iniziare

Ruoli IAM richiesti

Per ottenere le autorizzazioni necessarie per gestire i suggerimenti sui ruoli a livello di set di dati, chiedi all'amministratore di concederti seguenti ruoli IAM:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questi ruoli predefiniti le autorizzazioni necessarie per gestire i suggerimenti sui ruoli a livello di set di dati. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per gestire i suggerimenti sui ruoli a livello di set di dati sono necessarie le seguenti autorizzazioni:

  • Per visualizzare i consigli:
    • iam.roles.get del tuo progetto
    • iam.roles.list del tuo progetto
    • recommender.iamPolicyRecommendations.get del tuo progetto
    • recommender.iamPolicyRecommendations.list del tuo progetto
    • recommender.iamPolicyInsights.get del tuo progetto
    • recommender.iamPolicyInsights.list del tuo progetto
    • bigquery.datasets.getIamPolicy sul tuo set di dati
  • Per applicare e ignorare i consigli:
    • recommender.iamPolicyRecommendations.update del tuo progetto
    • bigquery.datasets.setIamPolicy sul tuo set di dati

Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati altri ruoli predefiniti.

Revisione e applicazione dei suggerimenti

Puoi esaminare e applicare i suggerimenti sul ruolo a livello di set di dati con il Google Cloud CLI e l'API Recommender.

gcloud

Esamina i consigli:

Per elencare i suggerimenti a livello di set di dati, esegui gcloud recommender recommendations list filtrando solo per i suggerimenti sui set di dati BigQuery:

gcloud recommender recommendations list \
    --location=LOCATION \
    --recommender=google.iam.policy.Recommender \
    --project=PROJECT_ID \
    --format=json \
    --filter="recommenderSubtype:REMOVE_ROLE_BIGQUERY_DATASET OR recommenderSubtype:REPLACE_ROLE_BIGQUERY_DATASET"

Sostituisci i seguenti valori:

  • LOCATION: la regione in cui Cloud Storage dei set di dati, ad esempio us o us-central1.
  • PROJECT_ID: l'ID del progetto Google Cloud che contiene i tuoi set di dati BigQuery. Gli ID progetto sono stringhe alfanumeriche, come my-project.

La risposta è simile all'esempio seguente. In questo esempio, tutti gli utenti con il ruolo Editor per il progetto my-project (projectEditor:my-project) hanno il ruolo Editor dati BigQuery (roles/bigquery.dataEditor) nel set di dati dataset-1. Tuttavia, questo ruolo non è stato utilizzato in passato per 90 giorni. Di conseguenza, il suggerimento sul ruolo suggerisce revochi il ruolo:

[
  {
    "associatedInsights": [
      {
        "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/984eccca-0241-472f-baab-2557dd0d7282"
      }
    ],
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "projectEditor:my-project",
                "/iamPolicy/bindings/*/role": "roles/bigquery.dataEditor"
              },
              "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1",
              "resourceType": "bigquery.googleapis.com/Dataset"
            }
          ]
        }
      ],
      "overview": {
        "addedRoles": [],
        "member": "projectEditor:my-project",
        "minimumObservationPeriodInDays": "0",
        "removedRole": "roles/bigquery.dataEditor",
        "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
      }
    },
    "description": "This role has not been used during the observation window.",
    "etag": "\"3b123bc08d028128\"",
    "lastRefreshTime": "2024-02-04T08:00:00Z",
    "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/0e9831fe-6810-476b-b14d-2b64bda17288",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 37
        }
      }
    },
    "priority": "P4",
    "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
    "stateInfo": {
      "state": "ACTIVE"
    },
    "targetResources": [
      "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
    ]
  },
  {
    "associatedInsights": [
      {
        "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/9d11057e-9c71-410f-ad55-fc82d87761d0"
      }
    ],
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "user:alicexz@google.com",
                "/iamPolicy/bindings/*/role": "roles/bigquery.dataOwner"
              },
              "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1",
              "resourceType": "bigquery.googleapis.com/Dataset"
            }
          ]
        }
      ],
      "overview": {
        "addedRoles": [],
        "member": "user:alicexz@google.com",
        "minimumObservationPeriodInDays": "0",
        "removedRole": "roles/bigquery.dataOwner",
        "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
      }
    },
    "description": "This role has not been used during the observation window.",
    "etag": "\"1da285f7aa6438f1\"",
    "lastRefreshTime": "2024-02-04T08:00:00Z",
    "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/56013294-cf81-402a-8cde-25489545777c",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 64
        }
      }
    },
    "priority": "P4",
    "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
    "stateInfo": {
      "state": "ACTIVE"
    },
    "targetResources": [
      "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
    ]
  }
]

Esamina attentamente ogni consiglio e pensa a come cambierà il l'accesso dell'entità alle risorse Google Cloud. Per scoprire come rivedere di gcloud CLI, consulta Esamina consigli in questa pagina.

Per applicare un consiglio:

  1. Utilizza la Comando gcloud recommender recommendations mark-claimed di modificare lo stato del suggerimento in CLAIMED,, impedendo la di cambiare il consiglio quando lo applichi:

    gcloud recommender recommendations mark-claimed \
        RECOMMENDATION_ID \
        --location=LOCATION \
        --recommender=google.iam.policy.Recommender \
        --project=PROJECT_ID \
        --format=FORMAT \
        --etag=ETAG \
        --state-metadata=STATE_METADATA
    

    Sostituisci i seguenti valori:

    • RECOMMENDATION_ID: l'identificatore univoco del un consiglio per i nostri esperti. Questo valore viene visualizzato alla fine del campo name nel suggerimento. Ad esempio, se il campo name è projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, l'ID suggerimento è fb927dc1-9695-4436-0000-f0f285007c0f.
    • LOCATION: la regione in cui BigQuery del set di dati, ad esempio us o us-central1.
    • PROJECT_ID: l'ID del progetto Google Cloud che contiene i tuoi set di dati BigQuery. Gli ID progetto sono stringhe alfanumeriche, come my-project.
    • FORMAT: il formato della risposta. Utilizza le funzionalità di json o yaml.
    • ETAG: il valore del campo etag nella consigliato, ad esempio "dd0686e7136a4cbb". Tieni presente che questo valore possono includere le virgolette.
    • STATE_METADATA: facoltativo. Chiave-valore separata da virgola che contengono i metadati che hai scelto per il suggerimento. Per ad esempio --state-metadata=reviewedBy=alice,priority=high. La sostituisce il campo stateInfo.stateMetadata in un consiglio per i nostri esperti.

    Se il comando ha esito positivo, la risposta mostra il suggerimento in una CLAIMED, come mostrato nell'esempio seguente. Per chiarezza, l'esempio omette la maggior parte dei campi:

    ...
    "priority": "P1",
    "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
    "stateInfo": {
      "state": "CLAIMED"
    }
    ...
    
  2. Recupera il criterio di autorizzazione per il set di dati, quindi modificare e impostare il criterio di autorizzazione in modo che rifletta il un consiglio per i nostri esperti.

  3. Aggiorna lo stato del consiglio a SUCCEEDED, se hai potuto applicarlo il consiglio oppure FAILED se non riesci ad applicarlo:

    gcloud recommender recommendations COMMAND \
        RECOMMENDATION_ID \
        --location=LOCATION \
        --recommender=google.iam.policy.Recommender \
        --project=PROJECT_ID \
        --format=FORMAT \
        --etag=ETAG \
        --state-metadata=STATE_METADATA
    

    Sostituisci i seguenti valori:

    • COMMAND: usa mark-succeeded, se sono stati in grado di applicare il consiglio o mark-failed, se non hai potuto applicare il consiglio.
    • RECOMMENDATION_ID: l'identificatore univoco del un consiglio per i nostri esperti. Questo valore viene visualizzato alla fine del campo name nel suggerimento. Ad esempio, se il campo name è projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, l'ID suggerimento è fb927dc1-9695-4436-0000-f0f285007c0f.
    • LOCATION: la regione in cui BigQuery del set di dati, ad esempio us o us-central1.
    • PROJECT_ID: l'ID del progetto Google Cloud che contiene i tuoi set di dati BigQuery. Gli ID progetto sono stringhe alfanumeriche, come my-project.
    • FORMAT: il formato della risposta. Utilizza le funzionalità di json o yaml.
    • ETAG: il valore del campo etag nella consigliato, ad esempio "dd0686e7136a4cbb". Tieni presente che questo valore possono includere le virgolette.
    • STATE_METADATA: facoltativo. Chiave-valore separata da virgola che contengono i metadati che hai scelto per il suggerimento. Per ad esempio --state-metadata=reviewedBy=alice,priority=high. La sostituisce il campo stateInfo.stateMetadata in un consiglio per i nostri esperti.

    Ad esempio, se hai contrassegnato il consiglio come riuscito, la risposta mostra il consiglio in uno stato SUCCEEDED. Per chiarezza, questo omette la maggior parte dei campi nell'esempio seguente:

    ...
    "priority": "P1",
    "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
    "stateInfo": {
      "state": "SUCCEEDED"
    }
    ...
    

REST

Queste istruzioni presuppongono che tu abbia eseguito l'autenticazione e imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS.

Esamina i consigli:

Per elencare tutti i suggerimenti disponibili per i set di dati BigQuery, utilizza lo strumento recommendations.list .

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

  • PROJECT_ID: l'ID del Progetto Google Cloud che contiene i tuoi set di dati BigQuery. Gli ID progetto sono stringhe alfanumeriche, come my-project.
  • LOCATION: la regione in cui Si trovano i set di dati BigQuery, ad esempio us o us-central1.
  • PAGE_SIZE: facoltativo. Il numero massimo di risultati da restituire da questo richiesta. Se non specificato, il server determinerà il numero di risultati da restituire. Se di suggerimenti è maggiore della dimensione della pagina, la risposta contiene un'impaginazione che puoi utilizzare per recuperare la pagina successiva di risultati.
  • PAGE_TOKEN: facoltativo. Il token di impaginazione restituito in una sessione la risposta desiderata con questo metodo. Se specificato, l'elenco dei consigli inizierà dove richiesta precedente terminata.
  • PROJECT_ID: il tuo progetto Google Cloud ID. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.

Metodo HTTP e URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations?filter=recommenderSubtype%20%3D%20REMOVE_ROLE_BIGQUERY_DATASET%20OR%20recommenderSubtype%20%3D%20REPLACE_ROLE_BIGQUERY_DATASET&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN

Per inviare la richiesta, espandi una delle seguenti opzioni:

La risposta è simile all'esempio seguente. In questo esempio, tutti gli utenti con il ruolo Editor nel progetto "my-project" (projectEditor:my-project) hanno il ruolo Editor dati BigQuery (roles/bigquery.dataEditor) sul set di dati dataset-1. Tuttavia, questo ruolo non è stato utilizzato in passato per 90 giorni. Di conseguenza, il suggerimento sul ruolo suggerisce revochi il ruolo:

{
  "recommendations": [
    {
      "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/0e9831fe-6810-476b-b14d-2b64bda17288",
      "description": "This role has not been used during the observation window.",
      "lastRefreshTime": "2024-02-02T08:00:00Z",
      "primaryImpact": {
        "category": "SECURITY",
        "securityProjection": {
          "details": {
            "revokedIamPermissionsCount": 37
          }
        }
      },
      "content": {
        "operationGroups": [
          {
            "operations": [
              {
                "action": "remove",
                "resourceType": "bigquery.googleapis.com/Dataset",
                "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1",
                "path": "/iamPolicy/bindings/*/members/*",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/members/*": "projectEditor:my-project",
                  "/iamPolicy/bindings/*/role": "roles/bigquery.dataEditor"
                }
              }
            ]
          }
        ],
        "overview": {
          "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1",
          "member": "projectEditor:my-project",
          "removedRole": "roles/bigquery.dataEditor",
          "addedRoles": [],
          "minimumObservationPeriodInDays": "0"
        }
      },
      "stateInfo": {
        "state": "ACTIVE"
      },
      "etag": "\"d008ad3780bad5e0\"",
      "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
      "associatedInsights": [
        {
          "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/984eccca-0241-472f-baab-2557dd0d7282"
        }
      ],
      "priority": "P4",
      "targetResources": [
        "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
      ]
    }
  ]
}

Esamina attentamente ogni consiglio e pensa a come cambierà il l'accesso dell'entità alle risorse Google Cloud. Per scoprire come rivedere consigli dell'API REST, consulta la sezione in basso. consigli in questa pagina.

Per applicare un consiglio:

  1. Contrassegna il consiglio come CLAIMED:

    Per contrassegnare un consiglio come CLAIMED in modo da evitare che venga modificato durante l'applicazione, utilizza lo strumento dell'API Recommender recommendations.markClaimed .

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

    • PROJECT_ID: l'ID del Progetto Google Cloud che contiene i tuoi set di dati BigQuery. Gli ID progetto sono stringhe alfanumeriche, come my-project.
    • LOCATION: la regione in cui Si trova il set di dati BigQuery, ad esempio us o us-central1.
    • RECOMMENDATION_ID: l'identificatore univoco per il suggerimento. Questo valore viene visualizzato alla fine del campo name nella sezione un consiglio per i nostri esperti. Ad esempio, se il campo name è projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, l'ID suggerimento è fb927dc1-9695-4436-0000-f0f285007c0f.
    • ETAG: il valore del parametro etag nel suggerimento, ad esempio "dd0686e7136a4cbb". Utilizza le funzionalità di barre rovesciate per evitare le virgolette, ad esempio "\"df7308cca9719dcc\"".
    • STATE_METADATA: facoltativo. Un oggetto contiene coppie chiave-valore con metadati di tua scelta relativi al suggerimento. Ad esempio: {"reviewedBy": "alice", "priority": "high"}. I metadati sostituiscono il valore Campo stateInfo.stateMetadata nel consiglio.

    Metodo HTTP e URL:

    POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markClaimed

    Corpo JSON della richiesta:

    {
      "etag": "ETAG",
      "stateMetadata": {
        "STATE_METADATA"
      }
    }
    

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    La risposta mostra il consiglio in uno stato CLAIMED, come mostrato di seguito esempio. Per chiarezza, in questo esempio ometti la maggior parte dei campi:

    ...
    "stateInfo": {
      "state": "CLAIMED"
    },
    "etag": "\"7caf4103d7669e12\"",
    "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
    ...
    

  2. Recupera il criterio di autorizzazione per il progetto, quindi modificare il criterio di autorizzazione in modo che rifletta il un consiglio per i nostri esperti.

  3. Aggiorna lo stato del consiglio a SUCCEEDED, se hai potuto applicarlo il consiglio oppure FAILED se non riesci ad applicarlo:

    SUCCEEDED

    Per contrassegnare un consiglio come SUCCEEDED e indicare che è stato possibile applicarlo, utilizza lo strumento recommendations.markSucceeded .

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

    • PROJECT_ID: l'ID del Progetto Google Cloud che contiene i tuoi set di dati BigQuery. Gli ID progetto sono stringhe alfanumeriche, come my-project.
    • LOCATION: la regione in cui Si trova il set di dati BigQuery, ad esempio us o us-central1.
    • RECOMMENDATION_ID: l'identificatore univoco per il suggerimento. Questo valore viene visualizzato alla fine del campo name nella sezione un consiglio per i nostri esperti. Ad esempio, se il campo name è projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, l'ID suggerimento è fb927dc1-9695-4436-0000-f0f285007c0f.
    • ETAG: il valore del parametro etag nel suggerimento, ad esempio "dd0686e7136a4cbb". Utilizza le funzionalità di barre rovesciate per evitare le virgolette, ad esempio "\"df7308cca9719dcc\"".
    • STATE_METADATA: facoltativo. Un oggetto contiene coppie chiave-valore con metadati di tua scelta relativi al suggerimento. Ad esempio: {"reviewedBy": "alice", "priority": "high"}. I metadati sostituiscono il valore Campo stateInfo.stateMetadata nel consiglio.

    Metodo HTTP e URL:

    POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markSucceeded

    Corpo JSON della richiesta:

    {
      "etag": "ETAG",
      "stateMetadata": {
        "STATE_METADATA"
      }
    }
    

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    La risposta mostra il consiglio in uno stato SUCCEEDED, come mostrato di seguito esempio. Per chiarezza, in questo esempio ometti la maggior parte dei campi:

    ...
    "stateInfo": {
      "state": "SUCCEEDED"
    },
    "etag": "\"7caf4103d7669e12\"",
    "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
    ...
    

    FAILED

    Per contrassegnare un consiglio come FAILED e indicare che non è stato possibile applicarlo, utilizza lo strumento recommendations.markFailed .

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

    • PROJECT_ID: l'ID del Progetto Google Cloud che contiene i tuoi set di dati BigQuery. Gli ID progetto sono stringhe alfanumeriche, come my-project.
    • LOCATION: la regione in cui Si trova il set di dati BigQuery, ad esempio us o us-central1.
    • RECOMMENDATION_ID: l'identificatore univoco per il suggerimento. Questo valore viene visualizzato alla fine del campo name nella sezione un consiglio per i nostri esperti. Ad esempio, se il campo name è projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, l'ID suggerimento è fb927dc1-9695-4436-0000-f0f285007c0f.
    • ETAG: il valore del parametro etag nel suggerimento, ad esempio "dd0686e7136a4cbb". Utilizza le funzionalità di barre rovesciate per evitare le virgolette, ad esempio "\"df7308cca9719dcc\"".
    • STATE_METADATA: facoltativo. Un oggetto contiene coppie chiave-valore con metadati di tua scelta relativi al suggerimento. Ad esempio: {"reviewedBy": "alice", "priority": "high"}. I metadati sostituiscono il valore Campo stateInfo.stateMetadata nel consiglio.

    Metodo HTTP e URL:

    POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markFailed

    Corpo JSON della richiesta:

    {
      "etag": "ETAG",
      "stateMetadata": {
        "STATE_METADATA"
      }
    }
    

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    La risposta mostra il consiglio in uno stato FAILED, come mostrato di seguito esempio. Per chiarezza, in questo esempio ometti la maggior parte dei campi:

    ...
    "stateInfo": {
      "state": "FAILED"
    },
    "etag": "\"7caf4103d7669e12\"",
    "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
    ...
    

Comprendere i consigli

Ogni consiglio include informazioni che ti aiutano a capire perché è stato fatto un suggerimento.

Per maggiori dettagli sui campi di un suggerimento, consulta Riferimento Recommendation.

Per vedere l'utilizzo delle autorizzazioni su cui si basa questo suggerimento, visualizza il approfondimenti sulle norme associati al consiglio. Questi approfondimenti sono elencati nel campo associatedInsights. Per visualizzare un criterio insight associato al suggerimento:

  1. Copia l'ID dell'insight associato. L'ID è tutto ciò che segue insights/ nel insight. Ad esempio, se il campo insight projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb, l'ID insight è 7849add9-73c0-419e-b169-42b3671173fb.
  2. Segui le istruzioni per ricevere un approfondimento sui criteri utilizzando l'ID insight copiato.

Passaggi successivi