Configurar o Cloud IDS

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

Antes de começar

Antes de configurar o Cloud IDS, você deve cumprir os 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 os comandos de exemplo para conceder a um principal as permissões necessárias do IAM.

  • Papel de administrador do Cloud IDS (roles/ids.admin): os principais do projeto com esse papel podem criar endpoints do IDS. Se você for proprietário de um projeto, já terá essa permissão e não precisará de um papel explícito do ids.admin para criá-los.

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

    Esse papel permite as seguintes operações:

    • Criar endpoints
    • Excluir endpoints
    • Acessar endpoints
    • Listar endpoints
  • Papel de visualizador do Cloud IDS (roles/ids.viewer): os visualizadores do projeto e os principais com esse papel têm acesso somente leitura aos endpoints do IDS. Se você for proprietário, editor ou visualizador de um projeto, já terá 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): um papel necessário para anexar uma política de espelhamento de pacotes ao endpoint do IDS. Se você tiver o papel de compute.securityAdmin ou container.serviceAgent, já terá essa permissão. Para mais informações sobre esse papel, consulte a referência de papéis básicos e predefinidos do IAM.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/compute.packetMirroringUser \
       --member=user:USER_NAME ;
    
  • Papel de visualizador de registros (roles/logging.viewer): um papel adicional necessário para ver as ameaças recentes, que é um recurso principal crítico 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 adicionais:

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

Configurar o acesso a serviços particulares

Para criar endpoints do IDS, é necessário ativar a API Service Networking e configurar o peering de rede para a rede de nuvem privada virtual (rede VPC). Essa ação é necessária apenas uma vez por projeto de cliente e pode ser executada usando o console doGoogle Cloud ou a CLI do Google Cloud. Ao alocar um intervalo de endereços IP, ele deve ser um intervalo de endereços IP privados compatível com a RFC 1918 (10.0.0.0/8, 172.16.0.0/12 ou 192.168.0.0/16). Do contrário, a criação do endpoint vai falhar.

Siga as seguintes etapas para configurar o acesso a serviços particulares:

  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 ainda não tiver alocado um intervalo de endereços IP na sua rede, você deve alocar um para os Serviços do Google na rede VPC. No comando abaixo, é possível omitir o campo addresses, pois o Google Cloud selecionará 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
    

    Faça as seguintes substituições:

    • 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. Crie uma conexão privada com um produtor de serviços. A conexão privada estabelece uma conexão com o Peering de redes VPC entre sua rede VPC e a rede do produtor de serviços.

    Se você já tiver uma conexão privada, use o comando gcloud services vpc-peerings update para atualizá-la:

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

    Se ainda não tiver uma conexão privada, 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
    

    Faça as seguintes substituições:

    • 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 a 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, você poderá ativar o VPC Service Controls no Cloud IDS. Se 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

Faça as seguintes substituições:

  • 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 que você crie um endpoint do IDS para cada região em que implantou cargas de trabalho. Também é possível criar vários endpoints do IDS por região. Siga as etapas a seguir para criar um endpoint do IDS e atribuir a ele um perfil de serviço do IDS.

Console

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

    Acessar Endpoints do IDS

Configurar o endpoint:

  1. Clique em Criar endpoint.
  2. Insira 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 você quer que o Cloud IDS inspecione.
  5. Escolha a região e a zona da sua rede ou sub-rede nas listas suspensas Região e Zona.
  6. Clique em Continuar.

Selecionar 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 de ameaças, 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, insira um nome para a política de Espelhamento de Pacotes.
  4. Clique em Avançar.
  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 Avançar.
  7. Determine se você quer espelhar todo o tráfego ou filtrar o tráfego:
    1. Se quiser espelhar todo o tráfego, verifique se a opção Espelhar todo o tráfego está selecionada.
    2. Se você quiser filtrar o tráfego com base em protocolo, intervalo de endereços IP ou 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 IPs ou Permitir intervalos de IPs específicos.
  8. Clique em Enviar. O endpoint é criado.

Agora, verifique se algum registro de ameaça foi gerado. As seguintes etapas são opcionais:

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

gcloud

Flags opcionais

Os comandos nesta seção podem ter algumas ou todas as seguintes flags opcionais:

--no-async
Aguarda a conclusão da operação em andamento, em vez de retornar imediatamente.
--filter=EXPRESSION
Aplica uma EXPRESSÃO de filtro booleano a cada item de recurso a ser listado. Se a expressão for avaliada como True, o item será listado. Para mais detalhes e exemplos de expressões de filtro, execute filtros de tópicos $ gcloud. Esta flag interage com outras flags aplicadas nesta ordem: --flatten, --sort-by, --filter e --limit.
--limit=LIMIT
Número máximo de recursos a serem listados. O padrão é ilimitado. Esta flag interage com outras flags aplicadas nesta ordem: --flatten, --sort-by, --filter e --limit.
--page-size=PAGE_SIZE
Uma saída de lista de recursos de grupos do Cloud IDS em páginas. Esta flag especifica o número máximo de recursos por página. O padrão será determinado pelo serviço se ele aceitar paginação. Caso contrário, será 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 do recurso para usar na ordenação. A ordem padrão é crescente. Use o prefixo "~" em um campo para ordená-lo de forma decrescente. Esta flag interage com outras flags aplicadas nesta ordem: --flatten, --sort-by, --filter e --limit.
--uri
Imprime 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 a serem isentos de alertas neste endpoint. Limitado a 99 exceções por endpoint.

Instruções

Para criar um endpoint do IDS, siga estas etapas:

  1. Use o comando gcloud ids endpoints create. Substitua ENDPOINT_NAME, VPC_NETWORK, ZONE e SEVERITY por informações que correspondam 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 usa um dos seguintes valores:

    • INFORMATIONAL
    • LOW
    • MEDIUM
    • HIGH
    • CRITICAL
  3. Depois que o endpoint tiver sido 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 Espelhamento 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 flags opcionais, consulte a referência do Espelhamento de Pacotes.

Para excluir um endpoint do IDS, 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 por informações que correspondam 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 endpoints 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.
nome string [Somente saída] nome do endpoint no formato projects/{project_id}/locations/{locationId}/endpoints/{endpointId}.
rede 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"). Este campo é obrigatório ao criar o endpoint.
gravidade string

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

  • INFORMATIONAL
  • LOW
  • MEDIUM
  • HIGH
  • CRITICAL

Este campo é obrigatório ao criar o endpoint.

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

Para criar um endpoint do Cloud IDS, use uma solicitação POST HTTP como a seguir, substituindo as variáveis conforme necessário. 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 necessário:

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

Para obter um endpoint do Cloud IDS, use uma solicitação HTTP GET como a seguinte, substituindo as variáveis conforme necessário:

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 a seguinte, substituindo as variáveis conforme necessário:

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, substitua ZONE por um hífen, como este:

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 ruidosos ou desnecessários usando a flag --threat-exceptions ao criar ou atualizar o endpoint do Cloud IDS. O seguinte exemplo atualiza um endpoint ENDPOINT_NAME do Cloud IDS para isentar os IDs de ameaças THREAT_ID1 e THREAT_ID2:

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

A seguir