Configurer Cloud IDS

Suivez ces instructions pour configurer Cloud IDS pour votre application. Pour sur les informations conceptuelles sur Cloud IDS, consultez la Présentation de Cloud IDS

Avant de commencer

Avant de configurer l'IDS Cloud, vous devez remplir les conditions requises suivantes.

Configurer les autorisations IAM pour Cloud IDS

Cloud IDS dispose de plusieurs rôles IAM (Identity and Access Management). Vous pouvez utiliser les exemples de commandes pour accorder à un compte principal les autorisations IAM nécessaires.

  • Rôle Administrateur Cloud IDS (roles/ids.admin) : les principaux de projet disposant de ce rôle peuvent créer des points de terminaison IDS. Si vous êtes propriétaire d’un projet, vous disposez déjà de cette autorisation et n'avez pas besoin le rôle ids.admin pour créer des points de terminaison IDS.

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

    Ce rôle active les opérations suivantes:

    • Créer un point de terminaison
    • Supprimer un point de terminaison
    • Obtenir un point de terminaison
    • Lister le point de terminaison
  • Rôle Lecteur Cloud IDS (roles/ids.viewer) : les lecteurs de projet et les principaux disposant de ce rôle ont un accès en lecture seule aux points de terminaison de l'IDS. Si vous êtes un propriétaire, éditeur ou lecteur du projet, vous disposez déjà de cette autorisation.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/ids.viewer \
       --member=user:USER_NAME ;
    
  • Rôle utilisateur de la mise en miroir de paquets Compute (roles/compute.packetMirroringUser) : rôle nécessaire pour associer une règle de mise en miroir de paquets au point de terminaison IDS. Si vous disposez des Rôle compute.securityAdmin ou container.serviceAgent, vous disposez déjà cette autorisation. Pour en savoir plus sur ce rôle, consultez les Rôles IAM de base et prédéfinis référence.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/compute.packetMirroringUser \
       --member=user:USER_NAME ;
    
  • Rôle de lecteur de journaux (roles/logging.viewer). Un rôle supplémentaire est requis. pour visualiser les menaces récentes, une fonctionnalité essentielle essentielle de Cloud IDS. Pour en savoir plus sur ce rôle, consultez le guide de contrôle des accès.

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

En outre, vous devez disposer des autorisations diverses suivantes :

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

Configurer l'accès aux services privés

Pour créer des points de terminaison IDS, vous devez activer l'API Service Networking et configurer l'appairage réseau pour le réseau cloud privé virtuel (VPC). Ce ne doit être effectuée qu'une seule fois par projet client et peut se faire en utilisant la console Google Cloud ou la Google Cloud CLI. Lorsque vous allouez une plage d'adresses IP, il doit s'agir d'une plage d'adresses IP privées conforme à la norme RFC 1918 (10.0.0.0/8, 172.16.0.0/12 ou 192.168.0.0/16), ou la création du point de terminaison échoue.

Pour configurer l'accès aux services privés, procédez comme suit :

  1. Activez l'API Service Networking à l'aide de la commande suivante. Remplacez PROJECT_ID par votre ID de projet :

    gcloud services enable servicenetworking.googleapis.com \
     --project=PROJECT_ID
    
  2. Si vous n'avez pas encore alloué de plage d'adresses IP dans votre réseau, vous devez en attribuer une aux services Google dans votre réseau VPC. Dans la commande suivante, vous pouvez omettre le champ addresses et Google Cloud sélectionne une plage d'adresses inutilisée dans votre VPC réseau:

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

    Remplacez les éléments suivants :

    • RESERVED_RANGE_NAME : nom de la plage allouée, par exemple my-allocated-range

    • DESCRIPTION : description de la plage, telle que allocated for my-service

    • VPC_NETWORK: nom de votre VPC réseau, tel que my-vpc-network

  3. créer une connexion privée au producteur de service. La connexion privée établit une connexion d'Appairage de réseaux VPC entre votre réseau VPC et le réseau du producteur de services.

    Si vous disposez déjà d'une connexion privée, utilisez la méthode Commande gcloud services vpc-peerings update pour la mettre à jour:

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

    Si vous ne disposez pas encore d'une connexion privée, utilisez la Commande gcloud services vpc-peerings connect Cette commande lance une opération de longue durée qui renvoie un nom d'opération.

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

    Remplacez les éléments suivants :

    • RESERVED_RANGE_NAME: le nom d'un ou de plusieurs plages allouées

    • VPC_NETWORK : nom de votre réseau VPC

    • PROJECT_ID: ID du projet contenant votre réseau VPC

    Pour vérifier si l'opération a réussi, utilisez la Commande gcloud services vpc-peerings operations describe:

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

    Remplacez OPERATION_NAME par le nom de l'opération. renvoyé à l'étape précédente.

Répétez les étapes 2 et 3 pour chaque réseau VPC que vous souhaitez surveiller.

Facultatif: Activer VPC Service Controls

Une fois l'accès aux services privés activé, vous pouvez éventuellement activer VPC Service Controls sur Cloud IDS. Si cette option est activée, exécutez la commande services vpc-peerings enable-vpc-service-controls. afin d'activer VPC Service Controls pour toutes vos connexions d'appairage:

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

Remplacez les éléments suivants :

  • VPC_NETWORK : nom de votre réseau VPC

  • PROJECT_ID: ID du projet contenant vos Réseau VPC

Créer un point de terminaison Cloud IDS

Nous vous recommandons de créer un point de terminaison IDS pour chaque région dans laquelle vous avez déployé des charges de travail. Vous pouvez également créer plusieurs points de terminaison IDS par région. Utilisez Procédez comme suit pour créer un point de terminaison IDS et lui attribuer un service IDS profil.

Console

  1. Dans la console Google Cloud, accédez à IDS Endpoints.

    Accéder à IDS Endpoints

Configurez le point de terminaison :

  1. Cliquez sur Créer un point de terminaison.
  2. Saisissez un nom dans le champ Nom du point de terminaison.
  3. Facultatif : saisissez une description dans le champ Description.
  4. Cliquez sur la liste déroulante Réseau, puis sélectionnez le réseau que vous souhaitez que Cloud IDS inspecte.
  5. Choisissez la région et la zone de votre réseau ou sous-réseau dans Région. et Zone.
  6. Cliquez sur Continuer.

Sélectionnez le profil de service Cloud IDS :

  1. Cliquez sur Sélectionner un profil de service IDS.
  2. Sous Niveau de gravité des menaces minimal, sélectionnez le niveau d'alerte approprié.
  3. Cliquez sur Créer. Le processus de création peut prendre 10 à 15 minutes.

Une fois le point de terminaison IDS créé, joignez-lui une règle de mise en miroir de paquets :

  1. Sélectionnez l'onglet Endpoints (Points de terminaison).
  2. À côté du point de terminaison IDS, cliquez sur Associer.
  3. Dans le champ Nom de la règle, saisissez un nom pour la règle de mise en miroir de paquets.
  4. Cliquez sur Suivant.
  5. Choisissez le sous-réseau ou les instances à mettre en miroir. Vous pouvez sélectionner plusieurs sous-réseaux et les instances.
  6. Cliquez sur Suivant.
  7. Déterminez si vous souhaitez mettre en miroir tout le trafic ou filtrer le trafic :
    1. Si vous souhaitez mettre en miroir l'ensemble du trafic, assurez-vous que l'option Mirror All Traffic (Mettre en miroir tout le trafic) est sélectionnée.
    2. Si vous souhaitez filtrer le trafic en fonction du protocole, d'une plage d'adresses IP ou entrant ou sortant, sélectionnez Mettre en miroir le trafic filtré:
      1. Sélectionnez Autoriser tous les protocoles ou Autoriser des protocoles spécifiques.
      2. Sélectionnez Autoriser toutes les plages d'adresses IP ou Autoriser des plages d'adresses IP spécifiques.
  8. Cliquez sur Envoyer. Le point de terminaison est créé.

Vous pouvez maintenant vérifier si des journaux de menaces ont été générés. Les étapes suivantes sont facultatives :

  1. Cliquez sur l'onglet Menaces IDS.
  2. Cliquez sur le nom d'une menace pour afficher la page Détails de la menace la concernant.
  3. Revenez à l'onglet Menaces.
  4. Cliquez sur le menu  à droite de votre point de terminaison IDS, puis sélectionnez Afficher les journaux des menaces.

gcloud

Indicateurs facultatifs

Les commandes de cette section peuvent comporter tout ou partie des indicateurs facultatifs:

--no-async
Attendez la fin de l'opération en cours, au lieu de renvoyer immédiatement une réponse.
--filter=EXPRESSION
Appliquez un filtre booléen EXPRESSION à chaque élément de ressource à répertorier. Si l'expression renvoie la valeur "True", cet élément est listé. Pour en savoir plus et obtenir des exemples d'expressions de filtre, exécutez $ gcloud topic filters. Cette option interagit avec d'autres options, qui sont appliquées dans l'ordre suivant : --flatten, --sort-by, --filter et --limit.
--limit=LIMIT
Nombre maximal de ressources à répertorier. La valeur par défaut est illimitée. Cet indicateur interagit avec d'autres options qui sont appliquées dans cet ordre: --flatten, --sort-by, --filter --limit
--page-size=PAGE_SIZE
Un Cloud IDS regroupe la sortie de la liste des ressources en pages. Cet indicateur spécifie le nombre maximal de ressources par page. La valeur par défaut est déterminé par le service s'il accepte la pagination ; sinon il est illimité (pas de pagination). La pagination peut être appliquée avant ou après --filter et --limit selon le service.
--sort-by=[FIELD,…]
Liste de noms de clés de champs de ressources séparés par une virgule à utiliser pour le tri. La valeur par défaut est croissante. Ajoutez le préfixe "~" pour l'ordre décroissant sur ce champ. Cet indicateur interagit avec d'autres indicateurs qui sont appliqués dans cet ordre: --flatten, --sort-by, --filter --limit
--uri
Imprime une liste d'URI de ressources au lieu de la sortie par défaut.
--threat-exceptions
Liste des ID de menaces à exempter des alertes, séparés par une virgule point de terminaison unique. Limite de 99 exceptions par point de terminaison.

Instructions

Pour créer un point de terminaison IDS, procédez comme suit :

  1. Utilisez la commande gcloud ids endpoints create. Remplacez ENDPOINT_NAME, VPC_NETWORK, ZONE et SEVERITY par les informations correspondant à votre application.

    gcloud ids endpoints create ENDPOINT_NAME \
      --network=VPC_NETWORK \
      --zone=ZONE \
      --severity=SEVERITY \
     [--no-async] \
     [GCLOUD_WIDE_FLAG...]
    
  2. L'indicateur de gravité est obligatoire et prend l'une des valeurs suivantes :

    • INFORMATIONS
    • FAIBLE
    • MOYENNE
    • ÉLEVÉ
    • CRITIQUE
  3. Associez une règle de mise en miroir de paquets une fois le point de terminaison créé avec lui. Commencez par obtenir l'URL du champ endpoint_forwarding_rule à l'aide de la commande suivante :

    gcloud ids endpoints describe ENDPOINT_NAME
    
  4. Créez la règle de mise en miroir de paquets à l'aide de la commande suivante:

    gcloud compute packet-mirrorings create POLICY_NAME \
    --region=REGION --collector-ilb=ENDPOINT_FORWARDING_RULE \
    --network=VPC_NETWORK --mirrored-subnets=SUBNET
    
  5. La mise en miroir de paquets comporte plusieurs indicateurs facultatifs, y compris ceux que vous pouvez utiliser pour filtrer le trafic en fonction du protocole, de la plage d'adresses IP ou du trafic entrant ou sortant. Pour en savoir plus sur ces options facultatives, consultez la documentation de référence sur la mise en miroir de paquets.

Pour supprimer un point de terminaison IDS, utilisez la commande gcloud ids endpoints delete. Remplacez ENDPOINT_NAME, PROJECT_ID et ZONE par les informations correspondant à votre application :

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

Pour décrire un point de terminaison IDS, utilisez la commande gcloud ids endpoints describe. Remplacez ENDPOINT_NAME, PROJECT_ID et ZONE par les informations correspondant à votre application :

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

Pour répertorier les points de terminaison IDS, utilisez la commande gcloud ids endpoints list:

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

API

Les ressources de point de terminaison Cloud IDS comportent les champs suivants :

Champ Type Description du champ
createTime chaîne [Uniquement en sortie] Code temporel de création au format texte RFC 3339.
updateTime chaîne [Uniquement en sortie] Code temporel de la dernière mise à jour au format texte RFC 3339.
nom chaîne [Sortie uniquement] Nom du point de terminaison au format projects/{project_id}/locations/{locationId}/endpoints/{endpointId}.
network chaîne Nom du réseau VPC connecté à l'IDS point de terminaison unique. Il peut contenir le nom du réseau VPC elle-même (comme "src-net") ou l'URL complète du réseau (comme "projects/{project_id}/global/networks/src-net"). Ce champ est obligatoire lors de la création du point de terminaison.
de gravité, chaîne

Niveau de gravité d'alerte minimal signalé par le point de terminaison. Les valeurs possibles sont les suivantes :

  • INFORMATIONS
  • FAIBLE
  • MOYENNE
  • ÉLEVÉ
  • CRITIQUE

Ce champ est obligatoire lors de la création du point de terminaison.

description chaîne Description facultative du point de terminaison.
endpoint_forwarding_rule chaîne [Sortie uniquement] URL de l'adresse réseau du point de terminaison vers lequel le trafic doit être envoyé par la mise en miroir de paquets.
point de terminaison chaîne [Sortie uniquement] Adresse IP interne du point d'entrée réseau du point de terminaison.

Pour créer un point de terminaison Cloud IDS, utilisez une requête HTTP POST comme celle-ci, en remplaçant les variables si nécessaire. L'ENDPOINT_NAME doit comporter entre 1 et 63 caractères. Il ne doit contenir que des lettres minuscules, des chiffres et des traits d'union. Il doit commencer par une lettre minuscule et ne doit pas se terminer par un trait d'union.

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

Pour supprimer un point de terminaison Cloud IDS, utilisez une requête HTTP DELETE comme celle-ci, en remplaçant les variables selon les besoins :

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

Pour obtenir un point de terminaison Cloud IDS, utilisez une requête HTTP GET comme celle-ci, en remplaçant les variables comme il convient :

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

Pour répertorier tous les points de terminaison Cloud IDS d'une zone, utilisez une requête HTTP GET telle que en remplaçant les variables selon les besoins:

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

Pour répertorier tous les points de terminaison Cloud IDS dans toutes les zones, vous pouvez également remplacer ZONE par un trait d'union, comme suit :

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

Facultatif: Configurer des exceptions à la menace

Vous pouvez désactiver les ID de menace bruyants ou inutiles à l'aide du l'option --threat-exceptions lorsque vous créez ou mettez à jour votre solution Cloud IDS ; point de terminaison unique. L'exemple suivant met à jour un point de terminaison Cloud IDS existant ENDPOINT_NAME pour exclure les ID de menace THREAT_ID1 et THREAT_ID2:

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

Étape suivante