Questa pagina spiega come visualizzare, comprendere e applicare i suggerimenti sui ruoli IAM per i set di dati BigQuery. I suggerimenti sui ruoli consentono di applicare il principio del privilegio minimo assicurando che le entità dispongano solo delle autorizzazioni di cui hanno effettivamente bisogno.
Prima di iniziare
Abilita le API IAM and Recommender.
Comprendere i consigli sui ruoli.
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 i seguenti ruoli IAM:
-
Visualizzatore ruolo (
roles/iam.roleViewer
) per il progetto -
Amministratore motore per suggerimenti IAM (
roles/recommender.iamAdmin
) sul progetto -
Proprietario dati BigQuery (
roles/bigquery.dataOwner
) sul tuo set di dati
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per gestire i suggerimenti sui ruoli a livello di set di dati. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:
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
sul tuo progetto -
iam.roles.list
sul tuo progetto -
recommender.iamPolicyRecommendations.get
sul tuo progetto -
recommender.iamPolicyRecommendations.list
sul tuo progetto -
recommender.iamPolicyInsights.get
sul tuo progetto -
recommender.iamPolicyInsights.list
sul tuo progetto -
bigquery.datasets.getIamPolicy
sul tuo set di dati
-
-
Per applicare e ignorare i consigli:
-
recommender.iamPolicyRecommendations.update
sul tuo progetto -
bigquery.datasets.setIamPolicy
sul tuo set di dati
-
Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.
Revisione e applicazione dei suggerimenti
Puoi esaminare e applicare i suggerimenti sui ruoli a livello di set di dati con Google Cloud CLI e l'API Recommender.
gcloud
Esamina i consigli:
Per elencare i suggerimenti a livello di set di dati, esegui il comando gcloud recommender recommendations list
, filtrando solo i suggerimenti sul 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 si trovano i set di dati Cloud Storage, ad esempious
ous-central1
.PROJECT_ID
: l'ID del progetto Google Cloud che contiene i set di dati BigQuery. Gli ID progetto sono stringhe alfanumeriche, comemy-project
.
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
) nel set di dati dataset-1
.
Tuttavia, questo ruolo non è stato utilizzato negli ultimi 90 giorni. Di conseguenza, il suggerimento per il ruolo
ti suggerisce di revocare 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 suggerimento e valuta come cambierà l'accesso dell'entità alle risorse Google Cloud. Per scoprire come rivedere i suggerimenti da gcloud CLI, consulta la sezione Esamina i suggerimenti in questa pagina.
Per applicare un consiglio:
Utilizza il comando
gcloud recommender recommendations mark-claimed
per modificare lo stato del suggerimento inCLAIMED,
, in modo da impedire che il suggerimento cambi durante l'applicazione: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 suggerimento. Questo valore viene visualizzato alla fine del camponame
nel suggerimento. Ad esempio, se il camponame
è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 si trova il set di dati BigQuery, ad esempious
ous-central1
. -
PROJECT_ID
: l'ID del progetto Google Cloud che contiene i set di dati BigQuery. Gli ID progetto sono stringhe alfanumeriche comemy-project
. -
FORMAT
: il formato della risposta. Usajson
oyaml
. -
ETAG
: il valore del campoetag
nel suggerimento, ad esempio"dd0686e7136a4cbb"
. Tieni presente che questo valore può includere le virgolette. -
STATE_METADATA
: facoltativo. Coppie chiave-valore separate da virgole che contengono la tua scelta di metadati per il suggerimento. Ad esempio,--state-metadata=reviewedBy=alice,priority=high
. I metadati sostituiscono il campostateInfo.stateMetadata
nel suggerimento.
Se il comando ha esito positivo, la risposta mostra il suggerimento in stato
CLAIMED
, come mostrato nell'esempio seguente. Per chiarezza, nell'esempio omette la maggior parte dei campi:... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "CLAIMED" } ...
-
Ottieni il criterio di autorizzazione per il set di dati, quindi modifica e imposta il criterio di autorizzazione in modo che rifletta il suggerimento.
Aggiorna lo stato del consiglio impostandolo su
SUCCEEDED
, se hai potuto applicare il consiglio, oppure suFAILED
, se non hai potuto 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
: utilizzamark-succeeded
, se sei riuscito ad applicare il consiglio, omark-failed
, se non hai potuto applicare il consiglio. -
RECOMMENDATION_ID
: l'identificatore univoco del suggerimento. Questo valore viene visualizzato alla fine del camponame
nel suggerimento. Ad esempio, se il camponame
è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 si trova il set di dati BigQuery, ad esempious
ous-central1
. -
PROJECT_ID
: l'ID del progetto Google Cloud che contiene i set di dati BigQuery. Gli ID progetto sono stringhe alfanumeriche comemy-project
. -
FORMAT
: il formato della risposta. Usajson
oyaml
. -
ETAG
: il valore del campoetag
nel suggerimento, ad esempio"dd0686e7136a4cbb"
. Tieni presente che questo valore può includere le virgolette. -
STATE_METADATA
: facoltativo. Coppie chiave-valore separate da virgole che contengono la tua scelta di metadati per il suggerimento. Ad esempio,--state-metadata=reviewedBy=alice,priority=high
. I metadati sostituiscono il campostateInfo.stateMetadata
nel suggerimento.
Ad esempio, se hai contrassegnato il consiglio come riuscito, la risposta mostra il consiglio con lo stato
SUCCEEDED
. Per chiarezza, in questo esempio la maggior parte dei campi omette:... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "SUCCEEDED" } ...
-
REST
Queste istruzioni presuppongono che tu abbia eseguito l'autenticazione e impostato la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS
.
Esamina i consigli:
Per elencare tutti i suggerimenti disponibili per i tuoi set di dati BigQuery, utilizza il metodo recommendations.list
dell'API Recommender.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del progetto Google Cloud che contiene i set di dati BigQuery. Gli ID progetto sono stringhe alfanumeriche, comemy-project
.LOCATION
: la regione in cui si trovano i set di dati BigQuery, ad esempious
ous-central1
.-
PAGE_SIZE
: facoltativo. Il numero massimo di risultati da restituire da questa richiesta. Se non specificato, il server determinerà il numero di risultati da restituire. Se il numero di suggerimenti è superiore alle dimensioni della pagina, la risposta contiene un token di impaginazione che puoi utilizzare per recuperare la pagina dei risultati successiva. -
PAGE_TOKEN
: facoltativo. Il token di impaginazione restituito in una risposta precedente da questo metodo. Se specificato, l'elenco dei suggerimenti inizierà dove è terminata la richiesta precedente. PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-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 di queste 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
) nel set di dati dataset-1
.
Tuttavia, questo ruolo non è stato utilizzato negli ultimi 90 giorni. Di conseguenza, il suggerimento per il ruolo ti suggerisce di revocare 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 suggerimento e valuta come cambierà l'accesso dell'entità alle risorse Google Cloud. Per scoprire come rivedere i consigli dell'API REST, consulta la sezione Esamina i consigli in questa pagina.
Per applicare un consiglio:
Contrassegna il consiglio come
CLAIMED
:Per contrassegnare un suggerimento come
CLAIMED
, in modo da impedire che venga modificato durante l'applicazione, utilizza il metodorecommendations.markClaimed
dell'API Recommender.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del progetto Google Cloud che contiene i set di dati BigQuery. Gli ID progetto sono stringhe alfanumeriche, comemy-project
.LOCATION
: la regione in cui si trova il set di dati BigQuery, ad esempious
ous-central1
.RECOMMENDATION_ID
: l'identificatore univoco del suggerimento. Questo valore viene visualizzato alla fine del camponame
nel suggerimento. Ad esempio, se il camponame
è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 campoetag
nel suggerimento, ad esempio"dd0686e7136a4cbb"
. Utilizza le barre rovesciate per dare un'interpretazione letterale alle virgolette, ad esempio"\"df7308cca9719dcc\""
.STATE_METADATA
: facoltativo. Un oggetto che contiene coppie chiave-valore con i metadati che preferisci per il suggerimento. Ad esempio,{"reviewedBy": "alice", "priority": "high"}
. I metadati sostituiscono il campostateInfo.stateMetadata
nel suggerimento.
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 di queste opzioni:
La risposta mostra il suggerimento in stato
CLAIMED
, come mostrato nell'esempio seguente. Per chiarezza, in questo esempio la maggior parte dei campi omette:... "stateInfo": { "state": "CLAIMED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
Recupera il criterio di autorizzazione per il progetto, quindi modifica il criterio di autorizzazione in modo che rifletta il suggerimento.
Aggiorna lo stato del consiglio impostandolo su
SUCCEEDED
, se hai potuto applicare il consiglio, oppure suFAILED
, se non hai potuto applicarlo:SUCCEEDED
Per contrassegnare un suggerimento come
SUCCEEDED
, per indicare che hai potuto applicarlo, utilizza il metodorecommendations.markSucceeded
dell'API Recommender.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del progetto Google Cloud che contiene i set di dati BigQuery. Gli ID progetto sono stringhe alfanumeriche, comemy-project
.LOCATION
: la regione in cui si trova il set di dati BigQuery, ad esempious
ous-central1
.RECOMMENDATION_ID
: l'identificatore univoco del suggerimento. Questo valore viene visualizzato alla fine del camponame
nel suggerimento. Ad esempio, se il camponame
è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 campoetag
nel suggerimento, ad esempio"dd0686e7136a4cbb"
. Utilizza le barre rovesciate per dare un'interpretazione letterale alle virgolette, ad esempio"\"df7308cca9719dcc\""
.STATE_METADATA
: facoltativo. Un oggetto che contiene coppie chiave-valore con i metadati che preferisci per il suggerimento. Ad esempio,{"reviewedBy": "alice", "priority": "high"}
. I metadati sostituiscono il campostateInfo.stateMetadata
nel suggerimento.
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 di queste opzioni:
La risposta mostra il suggerimento in stato
SUCCEEDED
, come mostrato nell'esempio seguente. Per chiarezza, in questo esempio la maggior parte dei campi omette:... "stateInfo": { "state": "SUCCEEDED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
FAILED
Per contrassegnare un suggerimento come
FAILED
, per indicare che non hai potuto applicarlo, utilizza il metodorecommendations.markFailed
dell'API Recommender.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del progetto Google Cloud che contiene i set di dati BigQuery. Gli ID progetto sono stringhe alfanumeriche, comemy-project
.LOCATION
: la regione in cui si trova il set di dati BigQuery, ad esempious
ous-central1
.RECOMMENDATION_ID
: l'identificatore univoco del suggerimento. Questo valore viene visualizzato alla fine del camponame
nel suggerimento. Ad esempio, se il camponame
è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 campoetag
nel suggerimento, ad esempio"dd0686e7136a4cbb"
. Utilizza le barre rovesciate per dare un'interpretazione letterale alle virgolette, ad esempio"\"df7308cca9719dcc\""
.STATE_METADATA
: facoltativo. Un oggetto che contiene coppie chiave-valore con i metadati che preferisci per il suggerimento. Ad esempio,{"reviewedBy": "alice", "priority": "high"}
. I metadati sostituiscono il campostateInfo.stateMetadata
nel suggerimento.
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 di queste opzioni:
La risposta mostra il suggerimento in stato
FAILED
, come mostrato nell'esempio seguente. Per chiarezza, in questo esempio la maggior parte dei campi omette:... "stateInfo": { "state": "FAILED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
Comprendere i consigli
Ogni consiglio include informazioni che aiutano a capire perché è stato fatto.
Per maggiori dettagli sui campi di un suggerimento, consulta il riferimento di Recommendation
.
Per visualizzare l'utilizzo delle autorizzazioni su cui si basa questo suggerimento, visualizza gli approfondimenti sui criteri associati al suggerimento.
Questi approfondimenti sono elencati nel campo associatedInsights
. Per visualizzare un approfondimento sulle norme associato al suggerimento:
- Copia l'ID dell'insight associato. L'ID è tutto ciò che segue
insights/
nel campoinsight
. Ad esempio, se il campoinsight
riportaprojects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb
, l'ID insight è7849add9-73c0-419e-b169-42b3671173fb
. - Segui le istruzioni per ricevere un approfondimento sui criteri utilizzando l'ID insight che hai copiato.
Passaggi successivi
- Scopri di più sul motore per suggerimenti.
- Scopri come consentire gli insight sui criteri per i set di dati BigQuery.