Além de fazer recomendações, o Recomendador usa machine learning (ML) para apresentar insights detalhados. Os insights são descobertas que destacam padrões notáveis no uso de recursos. Por exemplo, é possível coletar mais informações sobre o uso de permissões no seu projeto ou identificar contas de serviço não utilizadas. Alguns insights também estão vinculados às recomendações porque são evidências delas.
O gerenciamento de identidade e acesso (IAM) oferece os seguintes tipos de insights:
- Insights de política: descobertas baseadas em ML sobre o uso de permissões no projeto.
- Insights de conta de serviço: descobertas sobre contas de serviço no projeto, como as contas que não foram usadas nos últimos 90 dias.
Antes de começar
- Se você quiser usar insights de política, conheça o recomendador do IAM.
- Opcional: leia sobre os insights do recomendador.
Permissões necessárias
As permissões necessárias para usar os insights variam de acordo com o que você quer fazer.
Permissões para ver insights
Para ver os insights, você precisa de um papel que inclua as seguintes
permissões,
em que insight-type é iamPolicyInsights
ou iamServiceAccountInsights
:
recommender.insight-type.get
recommender.insight-type.list
Para ter essas permissões seguindo o princípio do privilégio mínimo, peça ao administrador para conceder a você um dos seguintes papéis:
- Leitor do recomendador do IAM (
roles/recommender.iamViewer
) - Revisor de segurança do IAM (
roles/iam.securityReviewer
)
Como alternativa, o administrador pode conceder a você um papel diferente que inclua as permissões necessárias, como um papel personalizado ou um papel predefinido mais permissivo.
Permissões para modificar insights
Para modificar os insights, você precisa de um papel que inclua as seguintes
permissões,
em que insight-type é iamPolicyInsights
ou iamServiceAccountInsights
:
recommender.insight-type.get
recommender.insight-type.list
recommender.insight-type.update
Para receber essas permissões seguindo o princípio do privilégio
mínimo, peça ao administrador que conceda a você o papel de administrador do recomendador do IAM
(roles/recommender.iamAdmin
).
Como alternativa, o administrador pode conceder a você um papel diferente que inclua as permissões necessárias, como um papel personalizado ou um papel predefinido mais permissivo.
Como listar insights
Para listar todos os insights de um tipo específico ao seu projeto, use um dos seguintes métodos:
gcloud
Use o comando gcloud recommender insights list
para
ver todos os insights de um tipo específico ao seu projeto.
Substitua insight-type-id
pelo tipo de insight que você quer
listar. Use google.iam.policy.Insight
para ver insights de política e
google.iam.serviceAccount.Insight
para ver insights de conta de serviço.
gcloud recommender insights list --insight-type=insight-type-id \ --location=global
A saída lista todos os insights de um tipo específico ao seu projeto. Por exemplo, listar todos os insights de política do projeto gera um resultado como o seguinte:
INSIGHT_ID LOCATION INSIGHT_TYPE CATEGORY INSIGHT_STATE LAST_REFRESH_TIME 07841f74-02ce-4de8-bbe6-fc4eabb68568 global google.iam.policy.Insight SECURITY ACCEPTED 2020-07-12T07:00:00Z 0d3ce433-f067-4e78-b6ae-03d7d1f6f040 global google.iam.policy.Insight SECURITY ACTIVE 2020-07-13T07:00:00Z 0e2cc488-38fb-4b9b-942c-cfe06a0ab88f global google.iam.policy.Insight SECURITY ACTIVE 2020-07-13T07:00:00Z 12b557be-d48f-49cf-a0b0-b3b73a178edf global google.iam.policy.Insight SECURITY ACTIVE 2020-07-13T07:00:00Z 279ef748-408f-44db-9a4a-1ff8865b9839 global google.iam.policy.Insight SECURITY ACTIVE 2020-07-13T07:00:00Z 29a4553d-9ffb-4508-9f13-77f40fc4e8b6 global google.iam.policy.Insight SECURITY ACTIVE 2020-07-13T07:00:00Z 2a00a91a-3e37-4dca-81f7-fb607d18053f global google.iam.policy.Insight SECURITY ACTIVE 2020-07-13T07:00:00Z 2baea818-df89-4ab3-8a48-0e752459d816 global google.iam.policy.Insight SECURITY ACTIVE 2020-07-13T07:00:00Z 4a59da9d-cde8-46cc-9c68-6980487175fb global google.iam.policy.Insight SECURITY ACTIVE 2020-07-13T07:00:00Z 78fee8d9-c25c-4070-9f1b-ae5e4a4a164b global google.iam.policy.Insight SECURITY ACTIVE 2020-07-13T07:00:00Z
REST
O método
insights.list
da API Recommender lista todos os insights de um tipo específico ao seu projeto.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
project-id
: o ID do projeto do Google Cloud.insight-type-id
: o tipo de insight que você quer listar. Para insights de política, usegoogle.iam.policy.Insight
. Para insights de conta de serviço, usegoogle.iam.serviceAccount.Insight
.
Método HTTP e URL:
GET https://recommender.googleapis.com/v1/projects/project-id/locations/global/insightTypes/insight-type-id/insights
Para enviar a solicitação, expanda uma destas opções:
A resposta lista todos os insights de um tipo específico no projeto. Por exemplo, ela pode listar todos os insights de política no projeto:
{ "insights": [ { "name": "projects/1234567890/locations/global/insightTypes/google.iam.policy.Insight/insights/07841f74-02ce-4de8-bbe6-fc4eabb68568", "description": "0 permission checks were authorized by this policy binding tuple.", "content": { "role": "roles/viewer", "member": "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com", "condition": { "expression": "", "title": "", "description": "", "location": "" }, "exercisedPermissions": [], "inferredPermissions": [] }, "lastRefreshTime": "2020-07-12T07:00:00Z", "observationPeriod": "7776000s", "stateInfo": { "state": "ACTIVE" }, "category": "SECURITY", "associatedRecommendations": [ { "recommendation": "projects/1234567890/locations/global/recommenders/google.iam.policy.Recommender/recommendations/b1932220-867d-43d1-bd74-fb95876ab656" } ], "targetResources": [ "//cloudresourcemanager.googleapis.com/projects/1234567890" ], "insightSubtype": "PERMISSIONS_USAGE", "etag": "\"b153ab487e4ae100\"" }, { "name": "projects/1234567890/locations/global/insightTypes/google.iam.policy.Insight/insights/f4292f55-105b-4744-9dc3-fcacf59685bb", "description": "4 permission checks were authorized by this policy binding tuple.", "content": { "role": "roles/owner", "member": "serviceAccount:my-service-account2@my-project.iam.gserviceaccount.com", "condition": { "expression": "", "title": "", "description": "", "location": "" }, "exercisedPermissions": [ { "permission": "iam.roles.create" }, { "permission": "iam.roles.delete" }, { "permission": "iam.roles.list" }, { "permission": "iam.roles.update" } ], "inferredPermissions": [] }, "lastRefreshTime": "2020-07-12T07:00:00Z", "observationPeriod": "7776000s", "stateInfo": { "state": "ACTIVE" }, "category": "SECURITY", "associatedRecommendations": [ { "recommendation": "projects/1234567890/locations/global/recommenders/google.iam.policy.Recommender/recommendations/6ab16c1d-edce-45e5-8d82-570fdd49892a" } ], "targetResources": [ "//cloudresourcemanager.googleapis.com/projects/1234567890" ], "insightSubtype": "PERMISSIONS_USAGE", "etag": "\"49bb705553338fc3\"" } ] }
Para saber mais sobre os componentes de um insight, consulte Como analisar insights nesta página.
Como receber um único insight
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
do IAM.
Antes de usar esta amostra, faça as substituições a seguir:
insight-id
: o ID do insight que você quer ver. Para encontrar o ID, liste os insights no projeto.insight-type-id
: o tipo de insight que você quer ver. Usegoogle.iam.policy.Insight
para ver insights de política egoogle.iam.serviceAccount.Insight
para ver insights de conta de serviço.
gcloud recommender insights describe insight-id \ --insight-type=insight-type-id --location=global
A saída mostra os insights detalhados. Por exemplo, o insight a seguir
indica que my-service-account@my-project.iam.gserviceaccount.com
não usou
permissões do papel Leitor (roles/viewer
) nos últimos
90 dias:
associatedRecommendations: - recommendation: projects/1234567890/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0573b702-96a5-4622-a916-c762e7b0731f category: SECURITY content: condition: description: '' expression: '' location: '' title: '' exercisedPermissions: [] inferredPermissions: [] member: serviceAccount:my-service-account@my-project.iam.gserviceaccount.com role: roles/viewer description: 0 permission checks were authorized by this policy binding tuple. etag: '"d3cdec23cc712bd0"' insightSubtype: PERMISSIONS_USAGE lastRefreshTime: '2020-07-11T07:00:00Z' name: projects/1234567890/locations/global/insightTypes/google.iam.policy.Insight/insights/0d3ce433-f067-4e78-b6ae-03d7d1f6f040 observationPeriod: 7776000s stateInfo: state: ACTIVE targetResources: - //cloudresourcemanager.googleapis.com/projects/1234567890
Para saber mais sobre os componentes de um insight, consulte Como analisar insights nesta página.
REST
O método
insights.get
da API Recommender recebe um insight.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
project-id
: o ID do projeto do Google Cloud.insight-type-id
: o tipo de insight que você quer ver. Para insights de política, usegoogle.iam.policy.Insight
. Para insights de conta de serviço, usegoogle.iam.serviceAccount.Insight
.insight-id
: o ID do insight que você quer ver. Para encontrar o ID, liste os insights no seu 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/global/insightTypes/insight-type-id/insights/insight-id
Para enviar a solicitação, expanda uma destas opções:
A resposta contém o insight. Exemplo:
{ "name": "projects/1234567890/locations/global/insightTypes/google.iam.policy.Insight/insights/07841f74-02ce-4de8-bbe6-fc4eabb68568", "description": "0 permission checks were authorized by this policy binding tuple.", "content": { "role": "roles/viewer", "member": "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com", "condition": { "expression": "", "title": "", "description": "", "location": "" }, "exercisedPermissions": [], "inferredPermissions": [] }, "lastRefreshTime": "2020-07-12T07:00:00Z", "observationPeriod": "7776000s", "stateInfo": { "state": "ACTIVE" }, "category": "SECURITY", "associatedRecommendations": [ { "recommendation": "projects/1234567890/locations/global/recommenders/google.iam.policy.Recommender/recommendations/b1932220-867d-43d1-bd74-fb95876ab656" } ], "targetResources": [ "//cloudresourcemanager.googleapis.com/projects/1234567890" ], "insightSubtype": "PERMISSIONS_USAGE", "etag": "\"b153ab487e4ae100\"" }
Para saber mais sobre os componentes de um insight, consulte Como analisar insights nesta página.
Como analisar insights
Os insights são divididos em tipos e subtipos. Os tipos de insight informam o tipo de recurso dele. Os subtipos de insight informam o tipo de informações que os insights contêm.
O IAM oferece os seguintes tipos e subtipos de insight:
Tipo de insight | Subtipo de insight |
---|---|
Insights de política | PERMISSION_USAGE : descobertas baseadas em ML sobre o uso de
permissões no projeto. |
Insights de conta de serviço | SERVICE_ACCOUNT_USAGE : descobertas sobre as contas de serviço
no projeto que não foram usadas nos últimos
90 dias. |
O conteúdo do insight é determinado pelo subtipo dele. Os subtipos de insight listados na tabela anterior têm os seguintes componentes:
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 dos insightsPERMISSION_USAGE
eSERVICE_ACCOUNT_USAGE
é sempreSECURITY
.content
: as informações no campocontent
são determinadas pelo subtipo de insight:Subtipo de insight Conteúdo PERMISSION_USAGE
Relata o uso das permissões de um membro referentes a um papel específico. Este campo contém os seguintes componentes:
member
: o membro com o uso analisado das permissões.role
: o papel com o uso analisado das permissões.condition
: qualquer condição anexada à vinculação que concede o papel ao membro. Se não houver condições, esse campo conterá uma condição vazia.exercisedPermissions
: as permissões do papel que o membro usou durante o período de observação.inferredPermissions
: as permissões do papel que o recomendador do IAM determinou por ML e que o membro provavelmente precisará com base nas permissões que ele usou.
SERVICE_ACCOUNT_USAGE
Relata a última vez que a conta de serviço foi autenticada. Este campo contém os seguintes componentes:
serviceAccountId
: o ID numérico exclusivo da conta de serviço.email
: o endereço de e-mail da conta de serviço.lastAuthenticatedTime
: o horário mais recente em que a conta de serviço foi autenticada. Se a conta de serviço não tem autenticações registradas, esse campo não é incluído.
description
: um resumo legível do insight.etag
: uma impressão digital exclusiva que identifica o estado atual de um insight. Sempre que o insight é alterado, um novo valor de ETag é atribuído.Para alterar o estado de um insight, informe a ETag do insight atual. O uso de ETags 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, que éPERMISSION_USAGE
ouSERVICE_ACCOUNT_USAGE
.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/global/insightTypes/insight-type-id/insights/insight-id
Os marcadores têm os seguintes valores:
project-id
: o ID do projeto em que o insight foi gerado.insight-type-id
: o tipo do insight. Os insights de política têm o tipogoogle.iam.policy.Insight
. Os insights de conta de serviço têm o tipogoogle.iam.serviceAccount.Insight
.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 projeto do Google Cloud relacionado ao insight. Por exemplo,//cloudresourcemanager.googleapis.com/projects/1234567890
Como marcar um insight 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 suas
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 o ID do seu insight para marcar um insight como ACCEPTED
.
Antes de usar o comando de amostra, substitua os seguintes valores:
insight-id
: o ID do insight que você quer marcar comoACCEPTED
. Para encontrar o ID, liste os insights no projeto.insight-type-id
: o tipo de insight que você quer marcar comoACCEPTED
. Para insights de política, usegoogle.iam.policy.Insight
. Para insights de conta de serviço, usegoogle.iam.serviceAccount.Insight
.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
etag
da saída, incluindo as aspas delimitadoras. Por exemplo,"d3cdec23cc712bd0"
.
- Receba o insight usando o comando
gcloud recommender insights mark-accepted insight-id \ --insight-type=insight-type-id --location=global \ --etag=etag
A saída mostra o insight, agora com o estado ACCEPTED
:
associatedRecommendations: - recommendation: projects/1234567890/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0573b702-96a5-4622-a916-c762e7b0731f category: SECURITY content: condition: description: '' expression: '' location: '' title: '' exercisedPermissions: [] inferredPermissions: [] member: serviceAccount:my-service-account@my-project.iam.gserviceaccount.com role: roles/viewer description: 0 permission checks were authorized by this policy binding tuple. etag: '"d3cdec23cc712bd0"' insightSubtype: PERMISSIONS_USAGE lastRefreshTime: '2020-07-11T07:00:00Z' name: projects/1234567890/locations/global/insightTypes/google.iam.policy.Insight/insights/0d3ce433-f067-4e78-b6ae-03d7d1f6f040 observationPeriod: 7776000s stateInfo: state: ACCEPTED targetResources: - //cloudresourcemanager.googleapis.com/projects/1234567890
Para saber mais sobre as informações de estado de um insight, consulte Como analisar insights 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 abaixo, faça as substituições a seguir:
project-id
: o ID do projeto do Google Cloud.insight-type-id
: o tipo de insight que você quer marcar comoACCEPTED
. Para insights de política, usegoogle.iam.policy.Insight
. Para insights de conta de serviço, usegoogle.iam.serviceAccount.Insight
.insight-id
: o ID do insight que você quer marcar comoACCEPTED
. Para encontrar o ID, liste os insights no seu projeto. O ID de um insight é tudo o que aparece depois deinsights/
no camponame
do insight.etag
: um 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/global/insightTypes/insight-type-id/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/1234567890/locations/global/insightTypes/google.iam.policy.Insight/insights/07841f74-02ce-4de8-bbe6-fc4eabb68568", "description": "0 permission checks were authorized by this policy binding tuple.", "content": { "role": "roles/viewer", "member": "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com", "condition": { "expression": "", "title": "", "description": "", "location": "" }, "exercisedPermissions": [], "inferredPermissions": [] }, "lastRefreshTime": "2020-07-12T07:00:00Z", "observationPeriod": "7776000s", "stateInfo": { "state": "ACCEPTED" }, "category": "SECURITY", "associatedRecommendations": [ { "recommendation": "projects/1234567890/locations/global/recommenders/google.iam.policy.Recommender/recommendations/b1932220-867d-43d1-bd74-fb95876ab656" } ], "targetResources": [ "//cloudresourcemanager.googleapis.com/projects/1234567890" ], "insightSubtype": "PERMISSIONS_USAGE", "etag": "\"b153ab487e4ae100\"" }
Para saber mais sobre as informações de estado de um insight, consulte Como analisar insights nesta página.
A seguir
- Saiba como ver e aplicar recomendações.
- Use o Hub de recomendações para ver e gerenciar todas as recomendações para seu projeto, incluindo as do IAM.
- Monitore quando uma conta de serviço foi usada pela última vez com as métricas de uso da conta de serviço.