Esta página explica como ver, compreender e aplicar recomendações de funções de IAM para conjuntos de dados do BigQuery. As recomendações de funções ajudam a aplicar o princípio do menor privilégio, garantindo que os principais têm apenas as autorizações de que realmente precisam.
Antes de começar
Enable the IAM and Recommender APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.Certifique-se de que tem uma ativação ao nível da organização ou do projeto do nível Premium ou Enterprise do Security Command Center. Para mais informações, consulte o artigo Perguntas sobre faturação.
Compreenda as recomendações de funções.
Configurar autenticação.
Select the tab for how you plan to use the samples on this page:
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
REST
Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.
Funções de IAM necessárias
Para receber as autorizações de que precisa para gerir as recomendações de funções ao nível do conjunto de dados, peça ao seu administrador que lhe conceda as seguintes funções do IAM:
-
Visitante de funções (
roles/iam.roleViewer
) no seu projeto -
Administrador do recomendador do IAM (
roles/recommender.iamAdmin
) no seu projeto -
Proprietário dos dados do BigQuery (
roles/bigquery.dataOwner
) no seu conjunto de dados
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 recomendações de funções 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 recomendações de funções ao nível do conjunto de dados:
-
Para ver recomendações:
-
iam.roles.get
no seu projeto -
iam.roles.list
no seu projeto -
recommender.iamPolicyRecommendations.get
no seu projeto -
recommender.iamPolicyRecommendations.list
no seu projeto -
recommender.iamPolicyInsights.get
no seu projeto -
recommender.iamPolicyInsights.list
no seu projeto -
bigquery.datasets.getIamPolicy
no seu conjunto de dados
-
-
Para aplicar e ignorar recomendações:
-
recommender.iamPolicyRecommendations.update
no seu projeto -
bigquery.datasets.setIamPolicy
no seu conjunto de dados
-
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Reveja e aplique recomendações
Pode rever e aplicar recomendações de funções ao nível do conjunto de dados com a CLI Google Cloud e a API Recommender.
gcloud
Reveja as suas recomendações:
Para apresentar as recomendações ao nível do conjunto de dados, execute o comando
gcloud recommender recommendations list
filtrando apenas as recomendações do conjunto de dados do 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"
Substitua os seguintes valores:
LOCATION
: a região onde os seus conjuntos de dados do Cloud Storage estão localizados, por exemplo,us
ouus-central1
.PROJECT_ID
: O ID do Google Cloud projeto que contém os seus conjuntos de dados do BigQuery. Os IDs dos projetos são strings alfanuméricas, comomy-project
.
A resposta é semelhante ao seguinte exemplo. Neste exemplo, 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 dadosdataset-1
. No entanto, esta função não foi usada nos últimos 90 dias. Como resultado, a recomendação de função sugere que revogue a função:[ { "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" ] } ]
Reveja cuidadosamente cada recomendação e considere como vai alterar o acesso do principal aos recursos do Google Cloud . Para saber como rever as recomendações da CLI gcloud, consulte o artigo Reveja as recomendações nesta página.
Para aplicar uma recomendação:
Use o comando
gcloud recommender recommendations mark-claimed
para alterar o estado da recomendação paraCLAIMED,
, o que impede que a recomendação seja alterada enquanto a aplica: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
Substitua os seguintes valores:
-
RECOMMENDATION_ID
: o identificador exclusivo da recomendação. Este valor aparece no final do camponame
na recomendação. Por exemplo, se o camponame
forprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, o ID da recomendação éfb927dc1-9695-4436-0000-f0f285007c0f
. -
LOCATION
: a região onde o seu conjunto de dados do BigQuery está localizado, por exemplo,us
ouus-central1
. -
PROJECT_ID
: o ID do Google Cloud projeto que contém os seus conjuntos de dados do BigQuery. Os IDs dos projetos são strings alfanuméricas, comomy-project
. -
FORMAT
: o formato da resposta. Usejson
ouyaml
. -
ETAG
: o valor do campoetag
na recomendação, como"dd0686e7136a4cbb"
. Tenha em atenção que este valor pode incluir aspas. -
STATE_METADATA
: opcional. Pares de chave-valor separados por vírgulas que contêm a sua escolha de metadados sobre a recomendação. Por exemplo,--state-metadata=reviewedBy=alice,priority=high
. Os metadados substituem o campostateInfo.stateMetadata
na recomendação.
Se o comando for bem-sucedido, a resposta mostra a recomendação no estado
CLAIMED
, conforme mostrado no exemplo seguinte. Para esclarecer, o exemplo omite a maioria dos campos:... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "CLAIMED" } ...
-
Obtenha a política de permissão para o conjunto de dados e, em seguida, modifique e defina a política de permissão para que reflita a recomendação.
Atualize o estado da recomendação para
SUCCEEDED
, se conseguiu aplicar a recomendação, ouFAILED
, se não conseguiu aplicar a recomendação:gcloud recommender recommendations COMMAND \ RECOMMENDATION_ID \ --location=LOCATION \ --recommender=google.iam.policy.Recommender \ --project=PROJECT_ID \ --format=FORMAT \ --etag=ETAG \ --state-metadata=STATE_METADATA
Substitua os seguintes valores:
-
COMMAND
: usemark-succeeded
se conseguiu aplicar a recomendação oumark-failed
se não conseguiu aplicar a recomendação. -
RECOMMENDATION_ID
: o identificador exclusivo da recomendação. Este valor aparece no final do camponame
na recomendação. Por exemplo, se o camponame
forprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, o ID da recomendação éfb927dc1-9695-4436-0000-f0f285007c0f
. -
LOCATION
: a região onde o seu conjunto de dados do BigQuery está localizado, por exemplo,us
ouus-central1
. -
PROJECT_ID
: o ID do Google Cloud projeto que contém os seus conjuntos de dados do BigQuery. Os IDs dos projetos são strings alfanuméricas, comomy-project
. -
FORMAT
: o formato da resposta. Usejson
ouyaml
. -
ETAG
: o valor do campoetag
na recomendação, como"dd0686e7136a4cbb"
. Tenha em atenção que este valor pode incluir aspas. -
STATE_METADATA
: opcional. Pares de chave-valor separados por vírgulas que contêm a sua escolha de metadados sobre a recomendação. Por exemplo,--state-metadata=reviewedBy=alice,priority=high
. Os metadados substituem o campostateInfo.stateMetadata
na recomendação.
Por exemplo, se marcou a recomendação como tendo sido bem-sucedida, a resposta mostra a recomendação num estado
SUCCEEDED
. Para esclarecer, este exemplo omite a maioria dos campos:... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "SUCCEEDED" } ...
-
REST
Reveja as suas recomendações:
Para listar todas as recomendações disponíveis para os seus conjuntos de dados do BigQuery, use o método
recommendations.list
da API Recommender.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do projeto do Google Cloud que contém os seus conjuntos de dados do BigQuery.Google Cloud Os IDs dos projetos são strings alfanuméricas, comomy-project
.LOCATION
: a região onde os seus conjuntos de dados do BigQuery estão localizados, por exemplo,us
ouus-central1
.-
PAGE_SIZE
: opcional. O número máximo de resultados a devolver deste pedido. Se não for especificado, o servidor determina o número de resultados a devolver. Se o número de recomendações for superior ao tamanho da página, a resposta contém um token de paginação que pode usar para obter a página seguinte de resultados. -
PAGE_TOKEN
: opcional. O token de paginação devolvido numa resposta anterior deste método. Se for especificado, a lista de recomendações começa onde o pedido anterior terminou. PROJECT_ID
: O ID do Google Cloud projeto. Os IDs dos projetos são strings alfanuméricas, comomy-project
.
Método 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
Para enviar o seu pedido, expanda uma destas opções:
A resposta é semelhante ao seguinte exemplo. Neste exemplo, 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 dadosdataset-1
. No entanto, esta função não foi usada nos últimos 90 dias. Como resultado, a recomendação de função sugere que revogue a função:{ "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" ] } ] }
Reveja cuidadosamente cada recomendação e considere como vai alterar o acesso do principal aos recursos do Google Cloud . Para saber como rever as recomendações da API REST, consulte o artigo Reveja as recomendações nesta página.
Para aplicar uma recomendação:
Marque a recomendação como
CLAIMED
:Para marcar uma recomendação como
CLAIMED
, o que impede que a recomendação seja alterada enquanto a aplica, use o métodorecommendations.markClaimed
da API Recommender.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do projeto do Google Cloud que contém os seus conjuntos de dados do BigQuery.Google Cloud Os IDs dos projetos são strings alfanuméricas, comomy-project
.LOCATION
: a região onde o seu conjunto de dados do BigQuery está localizado, por exemplo,us
ouus-central1
.RECOMMENDATION_ID
: o identificador exclusivo da recomendação. Este valor aparece no final do camponame
na recomendação. Por exemplo, se o camponame
forprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, o ID da recomendação éfb927dc1-9695-4436-0000-f0f285007c0f
.ETAG
: o valor do campoetag
na recomendação, como"dd0686e7136a4cbb"
. Use barras invertidas para escapar as aspas, por exemplo,"\"df7308cca9719dcc\""
.STATE_METADATA
: opcional. Um objeto que contém pares de chave-valor com os metadados à sua escolha sobre a recomendação. Por exemplo,{"reviewedBy": "alice", "priority": "high"}
. Os metadados substituem o campostateInfo.stateMetadata
na recomendação.
Método 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 do pedido:
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }
Para enviar o seu pedido, expanda uma destas opções:
A resposta mostra a recomendação no estado
CLAIMED
, conforme mostrado no exemplo seguinte. Para esclarecer, este exemplo omite a maioria dos campos:... "stateInfo": { "state": "CLAIMED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
Obtenha a política de autorização para o projeto e, em seguida, modifique a política de autorização para que reflita a recomendação.
Atualize o estado da recomendação para
SUCCEEDED
, se conseguiu aplicar a recomendação, ouFAILED
, se não conseguiu aplicar a recomendação:SUCCEEDED
Para marcar uma recomendação como
SUCCEEDED
, indicando que a conseguiu aplicar, use o métodorecommendations.markSucceeded
da API Recommender.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do projeto do Google Cloud que contém os seus conjuntos de dados do BigQuery.Google Cloud Os IDs dos projetos são strings alfanuméricas, comomy-project
.LOCATION
: a região onde o seu conjunto de dados do BigQuery está localizado, por exemplo,us
ouus-central1
.RECOMMENDATION_ID
: o identificador exclusivo da recomendação. Este valor aparece no final do camponame
na recomendação. Por exemplo, se o camponame
forprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, o ID da recomendação éfb927dc1-9695-4436-0000-f0f285007c0f
.ETAG
: o valor do campoetag
na recomendação, como"dd0686e7136a4cbb"
. Use barras invertidas para escapar as aspas, por exemplo,"\"df7308cca9719dcc\""
.STATE_METADATA
: opcional. Um objeto que contém pares de chave-valor com os metadados à sua escolha sobre a recomendação. Por exemplo,{"reviewedBy": "alice", "priority": "high"}
. Os metadados substituem o campostateInfo.stateMetadata
na recomendação.
Método 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 do pedido:
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }
Para enviar o seu pedido, expanda uma destas opções:
A resposta mostra a recomendação no estado
SUCCEEDED
, conforme mostrado no exemplo seguinte. Para esclarecer, este exemplo omite a maioria dos campos:... "stateInfo": { "state": "SUCCEEDED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
FAILED
Para marcar uma recomendação como
FAILED
, indicando que não a conseguiu aplicar, use o métodorecommendations.markFailed
da API Recommender.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do projeto do Google Cloud que contém os seus conjuntos de dados do BigQuery.Google Cloud Os IDs dos projetos são strings alfanuméricas, comomy-project
.LOCATION
: a região onde o seu conjunto de dados do BigQuery está localizado, por exemplo,us
ouus-central1
.RECOMMENDATION_ID
: o identificador exclusivo da recomendação. Este valor aparece no final do camponame
na recomendação. Por exemplo, se o camponame
forprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, o ID da recomendação éfb927dc1-9695-4436-0000-f0f285007c0f
.ETAG
: o valor do campoetag
na recomendação, como"dd0686e7136a4cbb"
. Use barras invertidas para escapar as aspas, por exemplo,"\"df7308cca9719dcc\""
.STATE_METADATA
: opcional. Um objeto que contém pares de chave-valor com os metadados à sua escolha sobre a recomendação. Por exemplo,{"reviewedBy": "alice", "priority": "high"}
. Os metadados substituem o campostateInfo.stateMetadata
na recomendação.
Método 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 do pedido:
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }
Para enviar o seu pedido, expanda uma destas opções:
A resposta mostra a recomendação no estado
FAILED
, conforme mostrado no exemplo seguinte. Para esclarecer, este exemplo omite a maioria dos campos:... "stateInfo": { "state": "FAILED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
Compreenda as recomendações
Cada recomendação inclui informações para ajudar a compreender o motivo pelo qual a recomendação foi feita.
Para ver detalhes sobre os campos de uma recomendação, consulte a
Recommendation
referência.Para ver a utilização de autorizações em que esta recomendação se baseia, consulte as estatísticas de políticas associadas à recomendação. Estas estatísticas estão listadas no campo
associatedInsights
. Para ver uma estatística de políticas associada à recomendação, faça o seguinte:- Copie o ID da estatística associada. O ID é tudo o que está depois de
insights/
no campoinsight
. Por exemplo, se o campoinsight
indicarprojects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb
, o ID da estatística é7849add9-73c0-419e-b169-42b3671173fb
. - Siga as instruções para obter uma estatística de políticas através do ID da estatística que copiou.
O que se segue?
- Saiba mais sobre o Recommender.
- Saiba como usar estatísticas de políticas de autorização para conjuntos de dados do BigQuery.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-09-22 UTC.
-
Visitante de funções (