Configurar o Cloud IDS

Use estas instruções para configurar o Cloud IDS para seu aplicativo. Para informações conceituais sobre o Cloud IDS, consulte a Visão geral do Cloud IDS.

Antes de começar

Antes de configurar o Cloud IDS, você precisa atender aos requisitos a seguir.

Configurar permissões do IAM para o Cloud IDS

O Cloud IDS tem vários papéis do Identity and Access Management (IAM). Use o exemplo para conceder a um principal as permissões necessárias do IAM.

  • Função de administrador do Cloud IDS (roles/ids.admin). Os principais do projeto com essa função podem criar endpoints do IDS. Se você é proprietário do projeto, já tem essa permissão e não precisa de um papel ids.admin explícito para criar endpoints do IDS.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/ids.admin \
       --member=user:USER_NAME ;
    

    Esse papel permite as seguintes operações:

    • Criar endpoint
    • Excluir endpoint
    • Acessar endpoint
    • Listar endpoint
  • Papel Leitor do Cloud IDS (roles/ids.viewer). Visualizadores do projeto e principais com esse papel têm acesso somente leitura aos endpoints do SDI. Se você é proprietário, editor ou visualizador do projeto, já tem essa permissão.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/ids.viewer \
       --member=user:USER_NAME ;
    
  • Papel de usuário de espelhamento de pacotes do Compute (roles/compute.packetMirroringUser): uma função necessária para anexar uma política de espelhamento de pacotes ao endpoint do IDS. Se você tiver o papel compute.securityAdmin ou container.serviceAgent, já terá essa permissão. Para mais informações sobre essa função, consulte a Papéis básicos e predefinidos do IAM como referência.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/compute.packetMirroringUser \
       --member=user:USER_NAME ;
    
  • Papel de Visualizador de registros (roles/logging.viewer). É necessário um outro papel para conferir as ameaças recentes, que é um recurso essencial do Cloud IDS. Para mais informações sobre esse papel, consulte o Guia de controle de acesso.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/logging.viewer \
       --member=user:USER_NAME ;
    

Além disso, você precisa das seguintes permissões diversas:

  • compute.regions.list
  • compute.zones.list

Configurar o acesso privado a serviços

Para criar endpoints do IDS, ative a API Service Networking e configure o peering de rede para a rede de nuvem privada virtual (VPC). Isso precisa ser feito apenas uma vez por projeto do cliente e pode ser feito usando o console do Google Cloud ou a CLI do Google Cloud. Quando você aloca um intervalo de endereços IP, ele precisa ser um intervalo de endereços IP privados compatível com RFC 1918 (10.0.0.0/8, 172.16.0.0/12 ou 192.168.0.0/16) ou a criação do endpoint vai falhar.

Siga estas etapas para configurar o acesso a serviços privados:

  1. Ative a API Service Networking usando o comando a seguir. Substitua PROJECT_ID pelo ID do projeto.

    gcloud services enable servicenetworking.googleapis.com \
     --project=PROJECT_ID
    
  2. Se você ainda não alocou um intervalo de endereços IP na sua rede, aloque um intervalo de IP para os serviços do Google na sua rede VPC. No comando a seguir, é possível omitir o campo addresses, e o Google Cloud seleciona um intervalo de endereços não utilizado na rede VPC:

    gcloud compute addresses create RESERVED_RANGE_NAME \
      --global \
      --purpose=VPC_PEERING \
      --addresses=192.168.0.0 \
      --prefix-length=16 \
      --description="DESCRIPTION" \
      --network=VPC_NETWORK
    

    Substitua:

    • RESERVED_RANGE_NAME: um nome para o intervalo alocado; como my-allocated-range

    • DESCRIPTION: uma descrição para o intervalo, como allocated for my-service.

    • VPC_NETWORK: o nome da rede VPC, como my-vpc-network.

  3. Criar uma conexão privada a um produtor de serviços. A conexão particular estabelece um peering de rede VPC entre sua rede VPC e a rede VPC do produtor de serviços em uma rede VPC.

    Se você já tiver uma conexão particular, use o Comando gcloud services vpc-peerings update para atualizá-lo:

    gcloud services vpc-peerings update \
      --service=servicenetworking.googleapis.com \
      --ranges=RESERVED_RANGE_NAME \
      --network=VPC_NETWORK \
      --project=PROJECT_ID
    

    Se você ainda não tiver uma conexão particular, use o comando gcloud services vpc-peerings connect. Esse comando inicia uma operação de longa duração que retorna um nome de operação.

    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --ranges=RESERVED_RANGE_NAME \
      --network=VPC_NETWORK \
      --project=PROJECT_ID
    

    Substitua:

    • RESERVED_RANGE_NAME: o nome de um ou mais intervalos alocados

    • VPC_NETWORK: o nome da rede VPC.

    • PROJECT_ID: o ID do projeto que contém sua rede VPC.

    Para verificar se a operação foi bem-sucedida, use o comando gcloud services vpc-peerings operations describe:

    gcloud services vpc-peerings operations describe \
        --name=OPERATION_NAME
    

    Substitua OPERATION_NAME pelo nome da operação. retornado na etapa anterior.

Repita as etapas 2 e 3 para cada rede VPC que você quer monitorar.

Opcional: ativar o VPC Service Controls

Depois que o acesso a serviços particulares estiver ativado, será possível ativar VPC Service Controls no Cloud IDS. Se estiver ativado, execute o comando services vpc-peerings enable-vpc-service-controls para ativar o VPC Service Controls em todas as conexões de peering:

gcloud services vpc-peerings enable-vpc-service-controls \
    --service=servicenetworking.googleapis.com \
    --network=VPC_NETWORK \
    --project=PROJECT_ID

Substitua:

  • VPC_NETWORK: o nome da rede VPC.

  • PROJECT_ID: o ID do projeto que contém a rede VPC.

criar um endpoint do Cloud IDS

Recomendamos criar um endpoint SDI para cada região onde você tem cargas de trabalho implantadas. Também é possível criar vários endpoints SDI por região. Usar as etapas a seguir para criar um endpoint SDI e atribuir a ele um serviço do SDI perfil.

Console

  1. No console do Google Cloud, acesse Endpoints de IDS.

    Acessar "Endpoints do IDS"

Configure o endpoint:

  1. Clique em Criar endpoint.
  2. Digite um nome no campo Nome do endpoint.
  3. Opcional: insira uma descrição no campo Descrição.
  4. Clique na lista suspensa Rede e selecione a rede que o Cloud IDS faça a inspeção.
  5. Escolha a região e a zona da sua rede ou sub-rede em Região e Zona.
  6. Clique em Continuar.

Selecione o perfil de serviço do Cloud IDS:

  1. Clique em Selecionar perfil de serviço do IDS.
  2. Em Nível mínimo de gravidade da ameaça, selecione o nível de alerta correto.
  3. Clique em Criar. O processo de criação pode levar de 10 a 15 minutos.

Depois que o endpoint do IDS for criado, anexe uma política de espelhamento de pacotes a ele:

  1. Selecione a guia Endpoints.
  2. Ao lado do endpoint do IDS, clique em Anexar.
  3. No campo Nome da política, digite um nome para a política de Espelhamento de pacotes.
  4. Clique em Próxima.
  5. Escolha a sub-rede ou as instâncias a serem espelhadas. É possível selecionar várias sub-redes e instâncias.
  6. Clique em Próxima.
  7. Determine se você quer espelhar todo o tráfego ou filtrar o tráfego:
    1. Se você quiser espelhar todo o tráfego, selecione Espelhe todo o tráfego.
    2. Se você quiser filtrar o tráfego com base no protocolo, no intervalo de endereços IP ou no tráfego de entrada ou saída, selecione Espelhar tráfego filtrado:
      1. Selecione Permitir todos os protocolos ou Permitir protocolos específicos.
      2. Selecione Permitir todos os intervalos de IP ou Permitir intervalos de IP específicos.
  8. Clique em Enviar. O endpoint é criado.

Agora você pode verificar se algum registro de ameaça foi gerado. O as etapas a seguir são opcionais:

  1. Clique na guia Ameaças do IDS.
  2. Clique no nome de uma ameaça para visualizar a página Detalhes da ameaça relacionada.
  3. Volte para a guia Ameaças.
  4. Clique no Menu para o à direita do endpoint do SDI e selecione Ver registros de ameaças.

gcloud

Sinalizações opcionais

Os comandos nesta seção podem ter alguns ou todos os seguintes sinalizações opcionais:

--no-async
Aguarde a conclusão da operação em andamento, em vez de retornar imediatamente.
--filter=EXPRESSION
Aplique uma EXPRESSÃO de filtro booleano a cada item de recurso a ser listado. Se a expressão for avaliada como verdadeira, o item será listado. Para mais detalhes e exemplos de expressões de filtro, execute filtros de tópicos do gcloud $. Essa sinalização interage com outras que são aplicadas nesta ordem: --flatten, --sort-by e --filter. --limit.
--limit=LIMIT
Número máximo de recursos a serem listados. O padrão é ilimitado. Essa flag interage com outras flags aplicadas nesta ordem: --flatten, --sort-by, --filter e --limit.
--page-size=PAGE_SIZE
Uma lista de recursos do Cloud IDS agrupa a saída em páginas. Esta sinalização especifica o número máximo de recursos por página. O padrão é determinado pelo serviço se ele oferece suporte à paginação. Caso contrário, ele é ilimitado (sem paginação). A paginação pode ser aplicada antes ou depois de --filter e --limit, dependendo do serviço.
--sort-by=[FIELD,…]
Uma lista separada por vírgulas de nomes de chaves de campo de recursos para classificação. O padrão a ordem é crescente. Adicione um prefixo a um campo com "~" para ordem decrescente nesse campo. Essa sinalização interage com outras que são aplicadas nesta ordem: --flatten, --sort-by e --filter. --limit.
--uri
Exibe uma lista de URIs de recursos em vez da saída padrão.
--threat-exceptions
Uma lista separada por vírgulas de IDs de ameaças para isentar de alertas sobre esta endpoint do Google Cloud. Limitado a 99 exceções por endpoint.

Instruções

Para criar um novo endpoint SDI, execute as seguintes etapas:

  1. Use o comando gcloud ids endpoints create. Substitua ENDPOINT_NAME, VPC_NETWORK, ZONE e SEVERITY com informações que correspondem ao seu aplicativo.

    gcloud ids endpoints create ENDPOINT_NAME \
      --network=VPC_NETWORK \
      --zone=ZONE \
      --severity=SEVERITY \
     [--no-async] \
     [GCLOUD_WIDE_FLAG...]
    
  2. A flag de gravidade é obrigatória e aceita um dos seguintes valores:

    • INFORMATIVO
    • LOW
    • MÉDIO
    • HIGH
    • CRITICAL
  3. Depois que o endpoint for criado, anexe uma política de espelhamento de pacotes a ele. Primeiro, extraia o URL do campo endpoint_forwarding_rule usando o seguinte comando:

    gcloud ids endpoints describe ENDPOINT_NAME
    
  4. Crie a política de Espelhamento de pacotes usando o seguinte comando:

    gcloud compute packet-mirrorings create POLICY_NAME \
    --region=REGION --collector-ilb=ENDPOINT_FORWARDING_RULE \
    --network=VPC_NETWORK --mirrored-subnets=SUBNET
    
  5. O endereçamento de pacotes tem várias flags opcionais, incluindo aquelas que podem ser usadas para filtrar o tráfego com base no protocolo, no intervalo de endereços IP ou no tráfego de entrada ou saída. Para mais informações sobre essas sinalizações opcionais, consulte a Referência do Espelhamento de pacotes.

Para excluir um endpoint SDI, use o comando gcloud ids endpoints delete. Substitua ENDPOINT_NAME, PROJECT_ID e ZONE por informações que correspondam ao seu aplicativo:

gcloud ids endpoints delete ENDPOINT_NAME \
   [--project=PROJECT_ID] \
   [--zone=ZONE] \
   [--no-async] \
   [GCLOUD_WIDE_FLAG...]

Para descrever um endpoint do IDS, use o comando gcloud ids endpoints describe. Substitua ENDPOINT_NAME, PROJECT_ID, e ZONE com informações que correspondem ao seu aplicativo:

gcloud ids endpoints describe ENDPOINT_NAME \
   [--project=PROJECT_ID] \
   [--zone=ZONE] \
   [GCLOUD_WIDE_FLAG...]

Para listar os endpoints do IDS, use o comando gcloud ids endpoints list:

gcloud ids endpoints list /
    [--filter=EXPRESSION] \
    [--limit=LIMIT] \
    [--page-size=PAGE_SIZE] \
    [--sort-by=[FIELD,...]] \
    [--uri] \
    [GCLOUD_WIDE_FLAG...]

API

Os recursos de endpoint do Cloud IDS têm os seguintes campos:

Campo Tipo Descrição do campo
createTime string [Somente saída] Carimbo de data/hora da criação no formato de texto RFC 3339.
updateTime string [Somente saída] Carimbo de data/hora da última atualização no formato de texto RFC 3339.
name string [Somente saída] Nome do endpoint no formato projects/{project_id}/locations/{locationId}/endpoints/{endpointId}.
network string Nome da rede VPC conectada ao endpoint do IDS. Ele pode conter o nome da rede VPC (como "src-net") ou o URL completo da rede (como "projects/{project_id}/global/networks/src-net"). Esse campo é obrigatório ao criar o endpoint.
gravidade, string

O nível mínimo de gravidade de alerta informado pelo endpoint. Os valores possíveis são os seguintes:

  • INFORMAÇÕES
  • LOW
  • MÉDIO
  • HIGH
  • CRITICAL

Este campo é obrigatório ao criar o endpoint.

description string Uma descrição opcional do endpoint.
endpoint_forwarding_rule string [Somente saída] URL do endereço de rede do endpoint para o qual o tráfego será enviado pelo espelhamento de pacotes.
endpoint string [Somente saída] Endereço IP interno do ponto de entrada de rede do endpoint.

Para criar um endpoint do Cloud IDS, use uma solicitação POST HTTP, como a seguintes, substituindo as variáveis conforme apropriado. O ENDPOINT_NAME precisa ter entre 1 e 63 caracteres, conter apenas letras minúsculas, dígitos e hifens, começar com uma letra minúscula e não pode terminar com um hífen.

POST https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME
{
    "network": "NETWORK_NAME",
    "severity": "SEVERITY_LEVEL",
}

Para excluir um endpoint do Cloud IDS, use uma solicitação HTTP DELETE como a seguinte, substituindo as variáveis conforme apropriado:

DELETE https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME

Para acessar um endpoint do Cloud IDS, use uma solicitação HTTP GET como a a seguir, substituindo as variáveis conforme apropriado:

GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME

Para listar todos os endpoints do Cloud IDS em uma zona, use uma solicitação HTTP GET como esta, substituindo as variáveis conforme apropriado:

GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints

Como alternativa, para listar todos os endpoints do Cloud IDS em todas as zonas, você pode Substitua ZONE por um hífen como o seguinte:

GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/-/endpoints

Opcional: configurar exceções de ameaças

É possível desativar IDs de ameaças barulhentos ou desnecessários usando a flag --threat-exceptions ao criar ou atualizar seu endpoint do Cloud IDS. O exemplo a seguir atualiza um endpoint do Cloud IDS ENDPOINT_NAME para isentar os IDs de ameaça THREAT_ID1 e THREAT_ID2:

   gcloud ids endpoints update ENDPOINT_NAME 
--threat-exceptions=THREAT_ID1,THREAT_ID2

A seguir