Neste tópico, veja como usar insights de recursos para detectar possíveis riscos nas configurações do recurso e melhorar a postura de segurança.
Informações gerais
O Cloud Asset Insights fornece insights
com base nas políticas do IAM associadas aos recursos
da sua organização. Ele faz parte do serviço Recomendador
e é fornecido como o tipo de insight google.cloudasset.asset.Insight
. Os insights
são anomalias específicas que exigem análise mais aprofundada para determinar a
ação apropriada. Eles são gerados diariamente com base em um snapshot dos dados armazenados no Inventário de recursos do Cloud.
Antes de começar
Antes de começar a usar os insights de recursos, conclua as etapas a seguir.
Verifique se a sua conta tem as seguintes permissões:
recommender.cloudAssetInsights.get
recommender.cloudAssetInsights.list
recommender.cloudAssetInsights.update
É possível conceder essas permissões individualmente ou então um dos papéis a seguir.
Papel Leitor de insights de recursos do Cloud (
roles/recommender.cloudAssetInsightsViewer
)Papel Administrador de insights de recursos do Cloud (
roles/recommender.cloudAssetInsightsAdmin
)
Como solicitar insights de recursos
A solicitação de insights de recursos é a maneira mais fácil de listar os insights. Veja nas etapas a seguir. Veja outros tipos de interações de insights no guia de insights para a API Recommender.
Como solicitar insights do projeto
Para solicitar insights para um projeto, faça uma das solicitações a seguir.
gcloud
Execute os seguintes comandos da CLI gcloud para listar insights do projeto, da pasta ou da organização.
Projetos
gcloud recommender insights list \
--project=PROJECT_ID \
--location=global \
--insight-type=google.cloudasset.asset.Insight \
--filter="insightSubtype:SUBTYPE" \
--format="FORMAT"
Forneça os valores a seguir:
PROJECT_ID
: o ID do projeto para o qual você quer insights.
Outras sinalizações:
--filter
: opcional. Filtra os resultados por subtipo de insight.--format
: opcional. Um formato de saída compatível com a CLI gcloud. Por exemplo, para listar o conteúdo de insights como uma tabela nivelada:gcloud recommender insights list \ --project=PROJECT_ID \ --location=global \ --insight-type=google.cloudasset.asset.Insight \ --flatten="content.matchedPolicies[].matchedBindings[].matchedMembers[]" \ --format="table(insightSubtype, name, content.matchedPolicies.matchedBindings.matchedMembers, content.matchedPolicies.matchedBindings.role, content.matchedPolicies.resource)"
Pastas
gcloud recommender insights list \
--folder=FOLDER_ID \
--location=global \
--insight-type=google.cloudasset.asset.Insight \
--filter="insightSubtype:SUBTYPE" \
--format="FORMAT"
Forneça os valores a seguir:
FOLDER_ID
: o ID da pasta para as quais você quer insights.Como encontrar um ID de pasta do Google Cloud
Console
Para encontrar um ID da pasta do Google Cloud, siga estas etapas:
-
Acesse o console do Google Cloud.
- Clique na caixa do seletor na barra de menus.
- Clique na caixa Selecionar de e escolha sua organização.
- Pesquise o nome da pasta. O ID é exibido ao lado do nome da pasta.
CLI da gcloud
Para recuperar um ID de pasta do Google Cloud localizado no nível da organização, use o seguinte comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
Em que TOP_LEVEL_FOLDER_NAME pode ser uma correspondência de string completa ou parcial. Remova a opção
--format
para ver mais informações sobre as pastas encontradas.Para obter o ID de uma pasta dentro de outra pasta, liste as subpastas:
gcloud resource-manager folders list --folder=FOLDER_ID
-
Outras sinalizações:
--filter
: opcional. Filtra os resultados por subtipo de insight.--format
: opcional. Um formato de saída compatível com a CLI gcloud. Por exemplo, para listar o conteúdo de insights como uma tabela nivelada:gcloud recommender insights list \ --folder=FOLDER_ID \ --location=global \ --insight-type=google.cloudasset.asset.Insight \ --flatten="content.matchedPolicies[].matchedBindings[].matchedMembers[]" \ --format="table(insightSubtype, name, content.matchedPolicies.matchedBindings.matchedMembers, content.matchedPolicies.matchedBindings.role, content.matchedPolicies.resource)"
Organizações
gcloud recommender insights list \
--organization=ORGANIZATION_ID \
--location=global \
--insight-type=google.cloudasset.asset.Insight \
--filter="insightSubtype:SUBTYPE" \
--format="FORMAT"
Forneça os valores a seguir:
ORGANIZATION_ID
: o ID da organização para as quais você quer insights.Como encontrar um ID da organização do Google Cloud
Console
Para encontrar um ID da organização do Google Cloud, siga estas etapas:
-
Acesse o console do Google Cloud.
- Clique na caixa do seletor na barra de menus.
- Clique na caixa Selecionar de e escolha sua organização.
- Selecione a guia Todos. O ID é exibido ao lado do nome da organização.
CLI da gcloud
É possível recuperar um ID da organização do Google Cloud com o seguinte comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
Outras sinalizações:
--filter
: opcional. Filtra os resultados por subtipo de insight.--format
: opcional. Um formato de saída compatível com a CLI gcloud. Por exemplo, para listar o conteúdo de insights como uma tabela nivelada:gcloud recommender insights list \ --organization=ORGANIZATION_ID \ --location=global \ --insight-type=google.cloudasset.asset.Insight \ --flatten="content.matchedPolicies[].matchedBindings[].matchedMembers[]" \ --format="table(insightSubtype, name, content.matchedPolicies.matchedBindings.matchedMembers, content.matchedPolicies.matchedBindings.role, content.matchedPolicies.resource)"
REST
Execute o comando curl
a seguir para listar insights do seu projeto, pasta
ou organização.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://recommender.googleapis.com/v1/SCOPE/locations/global/insightTypes/google.cloudasset.asset.Insight/insights
Forneça os valores a seguir:
SCOPE
: um escopo pode ser um projeto, uma pasta ou uma organização.Os valores permitidos são:
projects/PROJECT_ID
projects/PROJECT_NUMBER
Como encontrar um número de projeto do Google Cloud
Console
Para encontrar um número de projeto do Google Cloud, siga estas etapas:
-
Acesse a página Painel no console do Google Cloud.
- Clique na caixa do seletor na barra de menus.
- Escolha a organização na caixa Selecionar de e pesquise o nome do projeto.
- Clique no nome do projeto para alternar para ele. O número do projeto é mostrado no card Informações do projeto.
CLI da gcloud
É possível recuperar um número de projeto do Google Cloud com o seguinte comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
folders/FOLDER_ID
Como encontrar um ID de pasta do Google Cloud
Console
Para encontrar um ID da pasta do Google Cloud, siga estas etapas:
-
Acesse o console do Google Cloud.
- Clique na caixa do seletor na barra de menus.
- Clique na caixa Selecionar de e escolha sua organização.
- Pesquise o nome da pasta. O ID é exibido ao lado do nome da pasta.
CLI da gcloud
Para recuperar um ID de pasta do Google Cloud localizado no nível da organização, use o seguinte comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
Em que TOP_LEVEL_FOLDER_NAME pode ser uma correspondência de string completa ou parcial. Remova a opção
--format
para ver mais informações sobre as pastas encontradas.Para obter o ID de uma pasta dentro de outra pasta, liste as subpastas:
gcloud resource-manager folders list --folder=FOLDER_ID
-
organizations/ORGANIZATION_ID
Como encontrar um ID da organização do Google Cloud
Console
Para encontrar um ID da organização do Google Cloud, siga estas etapas:
-
Acesse o console do Google Cloud.
- Clique na caixa do seletor na barra de menus.
- Clique na caixa Selecionar de e escolha sua organização.
- Selecione a guia Todos. O ID é exibido ao lado do nome da organização.
CLI da gcloud
É possível recuperar um ID da organização do Google Cloud com o seguinte comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
Como interpretar as respostas dos insights
Além dos atributos de insight padrão, os Insights de recursos oferecem vários subtipos e campos especializados.
Subtipos de insights
Existem sete subtipos distintos de insights de recursos
EXTERNAL_MEMBER
: detecta políticas do IAM que contêm usuários ou grupos que pertencem a um domínio fora dos domínios da sua organização.EXTERNAL_POLICY_EDITOR
: detecta políticas do IAM que contêm usuários ou grupos fora dos domínios da organização e que têm permissão para alterar políticas do IAM.EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER
: detecta políticas do IAM que contêm usuários ou grupos fora dos domínios da organização que têm permissão para receber ou listar objetos de armazenamento (storage.objects.list
oustorage.objects.get permission
).EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR
: detecta políticas do IAM que contêm usuários ou grupos fora dos domínios da organização e que têm permissão para representar contas de serviço.TERMINATED_MEMBER
: detecta políticas do IAM que contêm usuários ou grupos com contas desativadas, excluídas ou limpas.PUBLIC_IAM_POLICY
: detecta políticas do IAM que contêm todos os usuários ou todos os usuários autenticados.OWNER_TERMINATED_PROJECT
: detecta projetos que não contêm usuários ou grupos ativos na política do IAM do projeto.
Outros campos de conteúdo
Além dos campos padrão na resposta, o Asset Insights oferece
vários campos especializados no campo content
.
user
: o endereço de e-mail do usuário específico detectado nos membros das vinculações de política para esse insight específico. Este campo está incluído no subtipoTERMINATED_MEMBER
.domain
: o domínio específico detectado nos membros das vinculações de política desse insight específico. Esse campo está incluído nos subtiposEXTERNAL_MEMBER
,EXTERNAL_POLICY_EDITOR
,EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER
eEXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR
.assetName
: o nome do recurso para o qual o acesso foi detectado neste insight específico. Esse campo está incluído nos subtiposOWNER_TERMINATED_PROJECT
ePUBLIC_IAM_POLICY
.policyCount
: o número total de políticas de IAM distintas em que os membros correspondentes foram detectados para esse insight específico. Esse campo é incluído para todos os subtipos de insights de recursos.matchedPolicies
: uma amostra das políticas do IAM correspondentes ao insight detectado. As políticas de correspondência incluem apenas o subconjunto de vinculações e membros de vinculação que correspondem ao insight detectado. Esse campo está incluído em todos os subtipos de Insights de recursos.policySearchQuery
: uma consulta que pode ser usada com a API Inventário de recursos do Cloud do IAM para recuperar todas as políticas relevantes em tempo real.
Exemplo de resposta
O snippet de código a seguir mostra o formato de um exemplo de resposta.
{
"name": "organizations/1234567/locations/global/insightTypes/google.cloudasset.asset.Insight/insights/0ab35ae7-afa8-42a3-a173-92da8771a489",
"description": "Domain example.com detected in 1 IAM policies",
"content": {
"domain": "example.com",
"policyCount": 1,
"policySearchQuery": "policy: example.com",
"matchedPolicies" :[
{
"resource" :"//cloudresourcemanager.googleapis.com/projects/5678910",
"project" :"projects/5678910",
"matchedBindings" :[
{
"role" :"roles/viewer",
"matchedMembers" :[
"user:example@example.com"
]
}
]
}
]
},
"lastRefreshTime": "2020-12-04T06:59:04Z",
"observationPeriod": "0s",
"stateInfo": {
"state": "ACTIVE"
},
"category": "SECURITY",
"targetResources": [
"//cloudresourcemanager.googleapis.com/organizations/1234567"
],
"insightSubtype": "EXTERNAL_MEMBER",
"etag": "\"00000000000\"",
"initialRefreshTime": "2020-12-01T06:58:03Z"
}
Limitações
Esses insights não consideram as associações a grupos como parte das descobertas e não podem ser considerados uma lista completa de vulnerabilidades correspondentes.
Os insights individuais incluem uma amostragem das políticas de IAM correspondentes, que são limitadas a 100 políticas distintas. Todas as políticas correspondentes podem ser recuperadas chamando a pesquisa de políticas do Cloud Asset Inventory.
Os insights de recursos não consideram contas de serviço para fins de geração de insights.