Nesta página, mostramos como gerenciar insights de políticas no nível do bucket, que são descobertas baseadas em machine learning sobre o uso de permissões dos seus buckets do Cloud Storage. Os insights de políticas podem ajudar você a identificar quais principais têm permissões desnecessárias.
Esta página se concentra nos insights de política para buckets. O recomendador também oferece insights de políticas para projetos, pastas e organizações.
Os insights sobre políticas no nível do bucket às vezes são vinculados às recomendações de papéis. As recomendações de papel sugerem ações que podem ser tomadas para corrigir os problemas identificados pelos insights de políticas no nível do bucket.
Antes de começar
-
Ative a Recommender API.
- Familiarize-se com as recomendações de papéis do IAM.
- Opcional: leia sobre os insights do recomendador.
Funções exigidas
Para receber as permissões necessárias para gerenciar insights de políticas no nível do bucket, peça ao administrador para conceder a você os seguintes papéis de IAM no projeto para os quais você quer gerenciar insights:
-
Para visualizar os insights de políticas no nível do bucket:
Leitor do recomendador do IAM (
roles/recommender.iamViewer
) -
Para modificar insights de política no nível do bucket:
Administrador do recomendador do IAM (
roles/recommender.iamAdmin
)
Para mais informações sobre como conceder papéis, consulte Gerenciar o acesso.
Esses papéis predefinidos contêm as permissões necessárias para gerenciar insights de políticas no nível do bucket. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
-
Para ver insights de política no nível do bucket:
-
recommender.iamPolicyInsights.get
-
recommender.iamPolicyInsights.list
-
-
Para modificar insights de política no nível do bucket:
recommender.iamPolicyInsights.update
Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.
Listar insights de política no nível do bucket
Para listar todos os insights de política no nível do bucket do seu projeto, use um dos seguintes métodos:gcloud
Use o comando gcloud recommender
insights list
para visualizar todos os insights de política no nível do bucket do
projeto.
Antes de executar o comando, substitua os seguintes valores:
PROJECT_ID
: o ID do projeto para o qual você quer listar insights.LOCATION
: o local dos buckets cujos insights você quer listar.
gcloud recommender insights list --insight-type=google.iam.policy.Insight \ --project=PROJECT_ID \ --location=LOCATION\ --filter="insightSubtype:PERMISSIONS_USAGE_STORAGE_BUCKET"
A saída lista todos os insights de políticas no nível do bucket do seu projeto no local especificado. Exemplo:
INSIGHT_ID CATEGORY INSIGHT_STATE LAST_REFRESH_TIME SEVERITY INSIGHT_SUBTYPE DESCRIPTION 00dd7eb5-15c2-4fb3-a9b2-1a85f842462b SECURITY ACTIVE 2022-05-24T07:00:00Z CRITICAL PERMISSIONS_USAGE_STORAGE_BUCKET 2 of the permissions in this role binding were used in the past 90 days. 04307297-f57c-416d-9323-38abac450db0 SECURITY ACTIVE 2022-05-24T07:00:00Z LOW PERMISSIONS_USAGE_STORAGE_BUCKET 2 of the permissions in this role binding were used in the past 90 days. 04845da5-74ba-46b4-a0f3-47d83095c261 SECURITY ACTIVE 2022-05-24T07:00:00Z CRITICAL PERMISSIONS_USAGE_STORAGE_BUCKET 1 of the permissions in this role binding were used in the past 90 days. 0a39f643-d7a8-4c11-b490-fecd74290fb5 SECURITY ACTIVE 2022-05-24T07:00:00Z LOW PERMISSIONS_USAGE_STORAGE_BUCKET 2 of the permissions in this role binding were used in the past 90 days. 0a4cee48-777b-4dea-a2b0-702b70da4b6f SECURITY ACTIVE 2022-05-24T07:00:00Z CRITICAL PERMISSIONS_USAGE_STORAGE_BUCKET 0 of the permissions in this role binding were used in the past 90 days. 0b2d147c-b26e-4afe-8fab-449c6e793750 SECURITY ACTIVE 2022-05-24T07:00:00Z LOW PERMISSIONS_USAGE_STORAGE_BUCKET 0 of the permissions in this role binding were used in the past 90 days. 0b5eacc5-ba9a-45f6-aea2-bcdc33ce2a2d SECURITY ACTIVE 2022-05-24T07:00:00Z LOW PERMISSIONS_USAGE_STORAGE_BUCKET 1 of the permissions in this role binding were used in the past 90 days. 0bb3032d-721c-44e8-b464-5293f235281c SECURITY ACTIVE 2022-05-24T07:00:00Z LOW PERMISSIONS_USAGE_STORAGE_BUCKET 3 of the permissions in this role binding were used in the past 90 days.
REST
O método insights.list
da API Recommender lista todos os insights de política no nível do bucket do seu projeto.
Antes de usar os dados da solicitação, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto para o qual você quer listar insights.LOCATION
: o local dos buckets cujos insights você 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_STORAGE_BUCKET
Para enviar a solicitação, expanda uma destas opções:
A resposta lista todos os insights de políticas no nível do bucket do seu projeto no local especificado. Exemplo:
{ "insights": [ { "name": "projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/00dd7eb5-15c2-4fb3-a9b2-1a85f842462b", "description": "2 of the permissions in this role binding were used in the past 90 days.", "content": { "role": "roles/storage.legacyBucketReader", "member": "allUsers", "condition": { "expression": "", "title": "", "description": "", "location": "" }, "exercisedPermissions": [ { "permission": "storage.buckets.get" }, { "permission": "storage.objects.list" } ], "inferredPermissions": [], "currentTotalPermissionsCount": "3" }, "lastRefreshTime": "2022-05-24T07:00:00Z", "observationPeriod": "7772400s", "stateInfo": { "state": "ACTIVE" }, "category": "SECURITY", "associatedRecommendations": [ { "recommendation": "projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/4a31a9d4-5132-4616-8a1f-fb07fad01883" } ], "targetResources": [ "//storage.googleapis.com/bucket-1" ], "insightSubtype": "PERMISSIONS_USAGE_STORAGE_BUCKET", "etag": "\"2a8784e529b80aea\"", "severity": "CRITICAL" }, { "name": "projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/04307297-f57c-416d-9323-38abac450db0", "description": "2 of the permissions in this role binding were used in the past 90 days.", "content": { "role": "roles/storage.legacyBucketReader", "member": "projectViewer:my-project", "condition": { "expression": "", "title": "", "description": "", "location": "" }, "exercisedPermissions": [ { "permission": "storage.buckets.get" }, { "permission": "storage.objects.list" } ], "inferredPermissions": [], "currentTotalPermissionsCount": "3" }, "lastRefreshTime": "2022-05-24T07:00:00Z", "observationPeriod": "7772400s", "stateInfo": { "state": "ACTIVE" }, "category": "SECURITY", "associatedRecommendations": [ { "recommendation": "projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/f3198e63-7f76-462e-a980-8e6370ff32d6" } ], "targetResources": [ "//storage.googleapis.com/bucket-2" ], "insightSubtype": "PERMISSIONS_USAGE_STORAGE_BUCKET", "etag": "\"5b60b935f27caf2c\"", "severity": "LOW" } ] }
Para saber mais sobre os componentes de um insight, consulte Revisar insights de políticas no nível do bucket nesta página.
Receber um único insight de política no nível do bucket
Para mais informações sobre um único insight, incluindo a descrição, o status e as recomendações associadas, use um dos seguintes métodos:
gcloud
Use o comando gcloud recommender
insights describe
com o ID do insight para ver as informações sobre um único
insight.
-
INSIGHT_ID
: o ID do insight que você quer ver. Para encontrar o ID, liste os insights do projeto. PROJECT_ID
: o ID do projeto para o qual você quer gerenciar insights.LOCATION
: o local do bucket com o insight que você quer receber.
gcloud recommender insights describe INSIGHT_ID \ --insight-type=google.iam.policy.Insight \ --project=PROJECT_ID \ --location=LOCATION
A saída mostra os insights detalhados. O insight a seguir indica que todos os usuários (allUsers
) têm o
papel de leitor do bucket legado do Storage (roles/storage.legacyBucketReader
) no bucket
bucket-1
, mas que esse papel usou apenas duas das permissões nesse papel nos últimos
90 dias:
associatedRecommendations: - recommendation: projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/4a31a9d4-5132-4616-8a1f-fb07fad01883 category: SECURITY content: condition: description: '' expression: '' location: '' title: '' currentTotalPermissionsCount: '3' exercisedPermissions: - permission: storage.buckets.get - permission: storage.objects.list inferredPermissions: [] member: allUsers role: roles/storage.legacyBucketReader description: 2 of the permissions in this role binding were used in the past 90 days. etag: '"2a8784e529b80aea"' insightSubtype: PERMISSIONS_USAGE_STORAGE_BUCKET lastRefreshTime: '2022-05-24T07:00:00Z' name: projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/00dd7eb5-15c2-4fb3-a9b2-1a85f842462b observationPeriod: 7772400s severity: CRITICAL stateInfo: state: ACTIVE targetResources: - //storage.googleapis.com/bucket-1
Para saber mais sobre os componentes de um insight, consulte Revisar insights de políticas no nível do bucket nesta página.
REST
O método
insights.get
da API Recommender recebe um insight.
Antes de usar os dados da solicitação, faça as substituições a seguir:
-
PROJECT_ID
: o ID do projeto para o qual você quer gerenciar insights. LOCATION
: o local do bucket com o insight que você quer receber.-
INSIGHT_ID
: o ID do insight que você quer ver. Se não souber o ID, é possível encontrá-lo listando os insights no projeto. O ID de um insight é tudo o que aparece depois deinsights/
no camponame
do insight.
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 a solicitação, expanda uma destas opções:
A resposta contém o insight. O insight a seguir indica que todos os usuários (allUsers
) têm o
papel de leitor do bucket legado do Storage (roles/storage.legacyBucketReader
) no bucket
bucket-1
, mas que esse papel usou apenas duas das permissões nesse papel nos últimos
90 dias:
{ "name": "projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/00dd7eb5-15c2-4fb3-a9b2-1a85f842462b", "description": "2 of the permissions in this role binding were used in the past 90 days.", "content": { "role": "roles/storage.legacyBucketReader", "member": "allUsers", "condition": { "expression": "", "title": "", "description": "", "location": "" }, "exercisedPermissions": [ { "permission": "storage.buckets.get" }, { "permission": "storage.objects.list" } ], "inferredPermissions": [], "currentTotalPermissionsCount": "3" }, "lastRefreshTime": "2022-05-24T07:00:00Z", "observationPeriod": "7772400s", "stateInfo": { "state": "ACTIVE" }, "category": "SECURITY", "associatedRecommendations": [ { "recommendation": "projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/4a31a9d4-5132-4616-8a1f-fb07fad01883" } ], "targetResources": [ "//storage.googleapis.com/bucket-1" ], "insightSubtype": "PERMISSIONS_USAGE_STORAGE_BUCKET", "etag": "\"2a8784e529b80aea\"", "severity": "CRITICAL" }
Para saber mais sobre os componentes de um insight, consulte Revisar insights de políticas no nível do bucket nesta página.
Analisar insights de políticas no nível do bucket
Depois de receber um único insight, é possível analisar o conteúdo para entender o padrão de uso de recursos destacado
O conteúdo do insight é determinado pelos subtipos dele.
Os insights de políticas no nível do bucket (google.iam.policy.Insight
) têm o subtipo PERMISSIONS_USAGE_STORAGE_BUCKET
.
Os insights PERMISSIONS_USAGE_STORAGE_BUCKET
têm os seguintes componentes, não necessariamente
nesta ordem:
-
associatedRecommendations
: os identificadores de qualquer recomendação associada ao insight. Se não houver recomendações associadas ao insight, esse campo estará vazio. -
category
: a categoria para insights do IAM é sempreSECURITY
. -
content
: relata o uso das permissões de um membro referentes a um papel específico. Este campo contém os seguintes componentes:condition
: qualquer condição anexada à vinculação que concede o papel ao principal. Se não houver condições, esse campo conterá uma condição vazia.exercisedPermissions
: as permissões do papel que o principal usou durante o período de observação.inferredPermissions
: as permissões do papel que o recomendador determinou por ML e que o principal provavelmente precisará com base nas permissões que ele usou.member
: o principal com o uso analisado das permissões.role
: o papel com o uso analisado das permissões.
-
description
: um resumo legível do insight. -
etag
: um identificador exclusivo do estado atual de um insight. Sempre que o insight for alterado, um novo valor deetag
será atribuído.Para alterar o estado de um insight, informe a
etag
do insight atual. O uso deetag
ajuda a garantir que qualquer operação seja executada somente se o insight não tiver sido alterado desde a última vez que você o recuperou. -
insightSubtype
: o subtipo de insight. -
lastRefreshTime
: a data em que o insight foi atualizado pela última vez, o que indica a atualização dos dados usados para gerá-lo. -
name
: o nome do insight no seguinte formato:projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID
Os marcadores têm os seguintes valores:
-
PROJECT_ID
: o ID do projeto em que o insight foi gerado. LOCATION
: o local do bucket para o qual o insight está relacionado.INSIGHT_ID
: um ID exclusivo para o insight.
-
-
observationPeriod
: o período antes do insight. Os dados de origem usados para gerar o insight terminam emlastRefreshTime
e começam emlastRefreshTime
menosobservationPeriod
. -
stateInfo
: os insights passam por várias transições de estado após serem propostos:-
ACTIVE
: o insight foi gerado, mas nenhuma ação foi realizada, ou uma ação foi realizada sem atualizar o estado dele. Os insights ativos são atualizados quando os dados subjacentes são alterados. -
ACCEPTED
: ocorreu uma ação com base no insight. Os insights são aceitos quando uma recomendação associada é marcada comoCLAIMED
,SUCCEEDED
ouFAILED
, ou quando o insight é aceito diretamente. Quando o estado do insight éACCEPTED
, o conteúdo dele não pode ser alterado. Os insights aceitos são mantidos por 90 dias após a aceitação.
-
-
targetResources
: o nome completo do recurso do bucket de que o insight é feito. Por exemplo,//storage.googleapis.com/my-bucket
.
Marcar um insight de política no nível do bucket como ACCEPTED
Se você executar uma ação com base em um insight ativo, será possível marcá-lo como
ACCEPTED
. O estado ACCEPTED
informa à
API Recommender que você tomou medidas com base nesse
insight, o que ajuda a refinar as recomendações.
Os insights aceitos são mantidos por 90 dias depois
de serem marcados como ACCEPTED
.
gcloud
Use o comando
gcloud recommender insights mark-accepted
com seu ID do insight para marcar
um insight como ACCEPTED
.
-
INSIGHT_ID
: o ID do insight que você quer ver. Para encontrar o ID, liste os insights do projeto. PROJECT_ID
: o ID do projeto para o qual você quer gerenciar insights.LOCATION
: o local do bucket com o insight que você quer marcar comoACCEPTED
.-
ETAG
: um identificador de uma versão do insight. Para receber oetag
, faça o seguinte:-
Receba o insight usando o comando
gcloud recommender insights describe
. -
Encontre e copie o valor da
etag
na saída, incluindo as aspas delimitadoras. Por exemplo,"d3cdec23cc712bd0"
.
-
Receba o insight usando o comando
gcloud recommender insights mark-accepted INSIGHT_ID \ --insight-type=google.iam.policy.Insight \ --project=PROJECT_ID \ --location=LOCATION \ --etag=ETAG
A saída mostra o insight, agora com o estado ACCEPTED
:
associatedRecommendations: - recommendation: projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/4a31a9d4-5132-4616-8a1f-fb07fad01883 category: SECURITY content: condition: description: '' expression: '' location: '' title: '' currentTotalPermissionsCount: '3' exercisedPermissions: - permission: storage.buckets.get - permission: storage.objects.list inferredPermissions: [] member: allUsers role: roles/storage.legacyBucketReader description: 2 of the permissions in this role binding were used in the past 90 days. etag: '"0187c0362e4bcea7"' insightSubtype: PERMISSIONS_USAGE_STORAGE_BUCKET lastRefreshTime: '2022-05-24T07:00:00Z' name: projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/00dd7eb5-15c2-4fb3-a9b2-1a85f842462b observationPeriod: 7772400s severity: CRITICAL stateInfo: state: ACCEPTED targetResources: - //storage.googleapis.com/bucket-1
Para saber mais sobre as informações de estado de um insight, consulte Revisar insights de política no nível do bucket nesta página.
REST
O método
insights.markAccepted
da API Recommender marca um insight como ACCEPTED
.
Antes de usar os dados da solicitação, faça as substituições a seguir:
-
PROJECT_ID
: o ID do projeto para o qual você quer gerenciar insights. LOCATION
: o local do bucket com o insight que você quer marcar comoACCEPTED
.-
INSIGHT_ID
: o ID do insight que você quer ver. Se não souber o ID, é possível encontrá-lo listando os insights no projeto. O ID de um insight é tudo o que aparece depois deinsights/
no camponame
do insight. -
ETAG
: identificador de uma versão do insight. Para receber oetag
, faça o seguinte:- Receba o insight usando o
método
insights.get
. - Encontre e copie o valor
etag
da resposta.
- Receba o insight usando o
método
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 da solicitação:
{ "etag": "ETAG" }
Para enviar a solicitação, expanda uma destas opções:
A resposta contém o insight, agora com o estado ACCEPTED
:
{ "name": "projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/00dd7eb5-15c2-4fb3-a9b2-1a85f842462b", "description": "2 of the permissions in this role binding were used in the past 90 days.", "content": { "role": "roles/storage.legacyBucketReader", "member": "allUsers", "condition": { "expression": "", "title": "", "description": "", "location": "" }, "exercisedPermissions": [ { "permission": "storage.buckets.get" }, { "permission": "storage.objects.list" } ], "inferredPermissions": [], "currentTotalPermissionsCount": "3" }, "lastRefreshTime": "2022-05-24T07:00:00Z", "observationPeriod": "7772400s", "stateInfo": { "state": "ACCEPTED" }, "category": "SECURITY", "associatedRecommendations": [ { "recommendation": "projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/4a31a9d4-5132-4616-8a1f-fb07fad01883" } ], "targetResources": [ "//storage.googleapis.com/bucket-1" ], "insightSubtype": "PERMISSIONS_USAGE_STORAGE_BUCKET", "etag": "\"9a5485cdc1f05b58\"", "severity": "CRITICAL" }
Para saber mais sobre as informações de estado de um insight, consulte Revisar insights de política no nível do bucket nesta página.
A seguir
- Saiba como ver e aplicar recomendações de políticas para buckets do .
- Use o Hub de recomendações para ver e gerenciar todas as recomendações do projeto, incluindo as do IAM.