IBM Cloud Docs
A propos des ACL de réseau

A propos des ACL de réseau

Vous pouvez utiliser une liste de contrôle d'accès pour contrôler tout le trafic entrant et sortant dans IBM Cloud® Virtual Private Cloud. Une liste de contrôle d'accès est un pare-feu virtuel intégré similaire à un groupe de sécurité. Contrairement aux groupes de sécurité, les règles ACL contrôlent le trafic vers et à partir du Sous-réseaux et non pas vers et à partir des Instances.

Pour obtenir une comparaison des caractéristiques des groupes de sécurité et des listes de contrôle d'accès, consultez le tableau de comparaison.

L'exemple qui est présenté dans ce document montre comment créer des listes de contrôle d'accès réseau dans votre VPC en utilisant l'interface de ligne de commande. Pour plus d'informations sur la configuration des ACL dans la console IBM Cloud, voir Configuration des ACL dans la console.

Utilisation des listes et des règles de contrôle d'accès

Pour rendre vos listes de contrôle d'accès efficaces, créez des règles qui déterminent comment traiter votre trafic réseau entrant et sortant. Vous pouvez créer plusieurs règles entrantes et sortantes. Pour plus d'informations sur les quotas de règles, voir Quotas.

  • Avec les règles entrantes, vous pouvez autoriser ou rejeter le trafic en provenance d'une plage d'adresses IP source, avec des protocoles et des ports spécifiés.
  • Avec les règles sortantes, vous pouvez autoriser ou rejeter le trafic vers une plage d'adresses IP de destination, avec des protocoles et des ports spécifiés.
  • Les règles de liste de contrôle d'accès sont classées par ordre de priorité et traitées en séquence. Les règles de priorité plus élevée sont évaluées en premier et prennent le pas sur les règles de priorité inférieure.
  • Les règles entrantes sont séparées des règles sortantes.
  • Si aucune règle n'est spécifiée, implicit deny est le comportement par défaut.

Pour plus d'informations sur l'utilisation des protocoles ICMP, TCP et UDP dans vos règles de liste de contrôle d'accès, voir Présentation des protocoles de communication Internet.

Mise à jour des règles ACL par défaut d'un VPC

L'ACL par défaut est similaire à toute autre ACL, à l'exception du fait qu'elle ne peut pas être supprimée.

Lorsque vous créez un VPC, le système crée un ACL par défaut pour le VPC avec deux règles :

  • Une règle nommée « allow-inbound » (Autoriser le trafic entrant ICMP, TCP et UDP de n'importe quelle source)
  • Une règle nommée « allow-outbound » pour autoriser le trafic ICMP, TCP et UDP sortant vers n'importe quelle destination

Vous pouvez modifier les règles de l'ACL par défaut en utilisant la console, la CLI ou l'API.

Si vous modifiez les règles de l'ACL par défaut, ces règles modifiées s'appliquent alors à tous les sous-réseaux actuels et futurs attachés à l'ACL.

Connexion d'une liste de contrôle d'accès à un sous-réseau

Lorsque vous créez un sous-réseau, vous pouvez spécifier une ACL à connecter. Si vous ne spécifiez pas d'ACL, l'ACL réseau par défaut du VPC est attaché.

Chaque sous-réseau est associé à exactement une liste de contrôle d'accès. Vous pouvez remplacer la liste de contrôle d'accès d'un sous-réseau par une autre liste de contrôle d'accès.

Exemple de liste de contrôle d'accès

Dans l'exemple qui suit, vous créez deux listes de contrôle d'accès et vous les associez à deux sous-réseaux en utilisant l'interface de ligne de commande. La figure 1 illustre le scénario.

Figure montrant un exemple de scénario
avec deux

Comme l'illustre la Figure 1, vous disposez de deux serveurs Web qui traitent les demandes provenant d'Internet et de deux serveurs back-end que vous voulez cacher au public. Dans cet exemple, vous placez les serveurs dans deux sous-réseaux distincts, 10.10.10.0/24 et 10.10.20.0/24, et vous devez autoriser les serveurs Web à échanger des données avec les serveurs back-end. De plus, vous souhaitez autoriser un trafic sortant limité à partir des serveurs back-end.

Exemples de règles

Les exemples de règles qui suivent montrent comment configurer les règles de liste de contrôle d'accès pour le scénario de base.

Il est recommandé de donner aux règles à granularité fine une priorité plus élevée qu'aux règles à granularité grossière. Par exemple, vous disposez d'une règle qui bloque tout le trafic du sous-réseau 10.10.30.0/24. S'il est affecté d'une priorité plus élevée, toutes les règles à granularité fine avec une priorité inférieure permettant le trafic à partir de 10.10.30.5 ne sont jamais appliquées.

Exemples de règles de liste de contrôle d'accès 1

Exemple de règles pour ACL-1
Entrant/Sortant Autoriser/Refuser IP source Adresse IP de destination Protocole Port Description
Entrant Autoriser 0.0.0.0/0 0.0.0.0/0 TCP 80 Autoriser le trafic HTTP à partir d'Internet
Entrant Autoriser 0.0.0.0/0 0.0.0.0/0 TCP 443 Autoriser le trafic HTTPS à partir d'Internet
Entrant Autoriser 10.10.20.0/24 0.0.0.0/0 Tous Tous Autoriser tout le trafic entrant du sous-réseau 10.10.20.0/24 où sont placés les serveurs back-end
Entrant Refuser 0.0.0.0/0 0.0.0.0/0 Tous Tous Interdire tout autre trafic entrant
Sortant Autoriser 0.0.0.0/0 0.0.0.0/0 TCP 80 Autoriser le trafic HTTP vers Internet
Sortant Autoriser 0.0.0.0/0 0.0.0.0/0 TCP 443 Autoriser le trafic HTTPS vers Internet
Sortant Autoriser 0.0.0.0/0 10.10.20.0/24 Tous Tous Autoriser tout le trafic sortant vers le sous-réseau 10.10.20.0/24 où les serveurs back-end sont placés
Sortant Refuser 0.0.0.0/0 0.0.0.0/0 Tous Tous Interdire tout autre trafic sortant

Exemples de règles de liste de contrôle d'accès 2

Exemple de règles pour ACL-2
Entrant/Sortant Autoriser/Refuser IP source Adresse IP de destination Protocole Port Description
Entrant Autoriser 10.10.10.0/24 0.0.0.0/0 Tous Tous Autoriser tout le trafic entrant à partir du sous-réseau 10.10.10.0/24 où les serveurs Web sont placés
Entrant Refuser 0.0.0.0/0 0.0.0.0/0 Tous Tous Interdire tout autre trafic entrant
Sortant Autoriser 0.0.0.0/0 0.0.0.0/0 TCP 80 Autoriser le trafic HTTP vers Internet
Sortant Autoriser 0.0.0.0/0 0.0.0.0/0 TCP 443 Autoriser le trafic HTTPS vers Internet
Sortant Autoriser 0.0.0.0/0 10.10.10.0/24 Tous Tous Autoriser tout le trafic sortant vers le sous-réseau 10.10.10.0/24 où les serveurs Web sont placés
Sortant Refuser 0.0.0.0/0 0.0.0.0/0 Tous Tous Interdire tout autre trafic sortant

Cet exemple n'illustre que des cas généraux. Dans vos scénarios, vous pouvez également avoir un contrôle plus granulaire du trafic :

  • Un administrateur réseau peut avoir besoin d'accéder au sous-réseau 10.10.10.0/24 à partir d'un réseau distant pour des raisons d'exploitation. Dans ce cas, vous devez autoriser le trafic SSH d'Internet vers ce sous-réseau.
  • Vous pouvez limiter la portée du protocole que vous autorisez entre vos deux sous-réseaux.

Exemple d'étapes

Les exemples d'étapes suivants omettent les étapes prérequises d'utilisation de l'interface de ligne de commande pour créer un VPC, ce qui doit être fait en premier lieu. Pour plus d'informations, voir Utilisation de l'interface de ligne de commande pour créer des ressources VPC.

Étape 1. Créer les listes de contrôle d'accès (ACL)

Utilisez les commandes d'interface de ligne de commande suivantes pour créer deux listes de contrôle d'accès, nommées my_web_subnet_acl et my_backend_subnet_acl:

ibmcloud is network-acl-create my-web-subnet-acl $vpc_id --source-acl-id $old_acl_id
ibmcloud is network-acl-create my-backend-subnet-acl $vpc_id --source-acl-id $old_acl_id

La réponse inclut les ID des listes de contrôle d'accès récemment créées. Sauvegardez les ID des deux listes de contrôle d'accès destinées à être utilisées dans des commandes ultérieures. Vous pouvez utiliser des variables, intitulées webacl et bkacl, de la façon suivante :

webacl="0738-ba9e785a-3e10-418a-811c-56cfe5669676"
bkacl="0738-a4e28308-8ee7-46ab-8108-9f881f22bdbf"

Étape 2. Extraire les règles ACL par défaut

Avant d'ajouter des règles, extrayez les règles de liste de contrôle d'accès entrantes et sortantes par défaut de façon à ce que vous puissiez y insérer de nouvelles règles avant.

ibmcloud is network-acl-rules $webacl
ibmcloud is network-acl-rules $bkacl

La réponse affiche les règles entrantes et sortantes par défaut qui autorisent tout le trafic IPv4 dans tous les protocoles.

Getting rules of network acl ba9e785a-3e10-418a-811c-56cfe5669676 under account Demo Account as user demouser...

inbound
ID                                     Name                                                          Action   IPv*   Protocol   Source      Destination   Created
0738-e2b30627-1a1d-447b-859f-ac9431986b6f   allow-all-inbound-rule-2d86bc3f-58e4-436a-8c1a-9b0a710556d6   allow    ipv4   all        0.0.0.0/0   0.0.0.0/0     2 months ago

outbound
ID                                     Name                                                         Action   IPv*   Protocol   Source      Destination   Created
0738-173a3492-0544-472e-91c0-7828cbcb62d4   allow-all-outbound-rule-2d86bc3f-58e4-436a-8c1a-9b0a710556d6   allow    ipv4   all        0.0.0.0/0   0.0.0.0/0     2 months ago

Enregistrez les ID des deux règles de liste de contrôle d'accès en tant que variables afin que vous puissiez utiliser les valeurs dans les commandes ultérieures. Ainsi, vous pouvez enregistrer les ID dans les variables inrule et outrule :

inrule="0738-e2b30627-1a1d-447b-859f-ac9431986b6f"
outrule="0738-173a3492-0544-472e-91c0-7828cbcb62d4"

Étape 3. Ajouter de nouvelles règles ACL comme décrit

Dans cet exemple, ajoutez d'abord des règles entrantes puis ajoutez des règles sortantes.

Insérez les nouvelles règles entrantes avant la règle entrante par défaut.

ibmcloud is network-acl-rule-add my_web_acl_rule200 $webacl deny inbound all 0.0.0.0/0 0.0.0.0/0 \
--before-rule-id $in-rule

A chaque étape, enregistrez l'ID de la règle de liste de contrôle d'accès dans une variable afin qu'il puisse être utilisé dans les commandes ultérieures. Ainsi, vous pouvez utiliser la variable acl200:

acl200="0738-90930627-1a1d-447b-859f-ac9431986b6f"

Ajoutez maintenant la règle à acl200:

ibmcloud is network-acl-rule-add my_web_acl_rule100 $webacl allow inbound all 10.10.20.0/24 0.0.0.0/0 \
--before-rule-id $acl200

Ajoutez des règles supplémentaires jusqu'à ce que la configuration de votre liste de contrôle d'accès soit terminée, en sauvegardant chaque ID sous forme de variable.

acl100="0738-78340627-1a1d-447b-859f-ac9431986b6f"
ibmcloud is network-acl-rule-add my_web_acl_rule20 $webacl allow inbound tcp 0.0.0.0/0 0.0.0.0/0 \
--source-port-min 443 --source-port-max 443 --before-rule-id $acl100
acl20="32450627-1a1d-447b-859f-ac9431986b6f"
ibmcloud is network-acl-rule-add my_web_acl_rule10 $webacl allow inbound tcp 0.0.0.0/0 0.0.0.0/0 \
--source-port-max 80 --source-port-min 80 --before-rule-id $acl20

Insérez les nouvelles règles sortantes avant la règle sortante par défaut.

ibmcloud is network-acl-rule-add my_web_acl_rule200e $webacl deny outbound all 0.0.0.0/0 0.0.0.0/0 \
--before-rule-id $outrule
acl200e="11110627-1a1d-447b-859f-ac9431986b6f"
ibmcloud is network-acl-rule-add my_web_acl_rule100e $webacl allow outbound all 0.0.0.0/0 10.10.20.0/24 \
--before-rule-id $acl200e
acl100e="22220627-1a1d-447b-859f-ac9431986b6f"
ibmcloud is network-acl-rule-add my_web_acl_rule20e $webacl allow outbound tcp 0.0.0.0/0 0.0.0.0/0 \
--source-port-max 443 --source-port-min 443 --before-rule-id $acl100e
acl20e="33330627-1a1d-447b-859f-ac9431986b6f"
ibmcloud is network-acl-rule-add my_web_acl_rule10e $webacl allow outbound tcp 0.0.0.0/0 0.0.0.0/0 \
--source-port-max 80 --source-port-min 80 --before-rule-id $acl20e

Étape 4. Créer les deux sous-réseaux avec la liste de contrôle d'accès (ACL) nouvellement créée

Créez deux sous-réseaux afin que chacune de vos listes de contrôle d'accès soit associée à l'un d'eux.

ibmcloud is subnet-create my-web-subnet $vpc_id $zone --ipv4_cidr_block 10.10.10.0/24 \
 --network-acl-id $webacl
ibmcloud is subnet-create my-backend-subnet$vpc_id $zone --ipv4_cidr_block 10.10.20.0/24 \
--network-acl-id $bkacl

Aide-mémoire de la liste de commandes

Pour afficher la liste complète des commandes d'interface de ligne de commande du VPC disponibles pour les listes de contrôle d'accès :

ibmcloud is network-acls

Pour afficher votre liste de contrôle d'accès et ses métadonnées, y compris les règles :

ibmcloud is network-acl $webacl

Pour répertorier toutes les règles ACL :

ibmcloud is network-acl-rules $webacl

Exemple de règle ping entrante

Pour ajouter une règle liste de contrôle d'accès, voici un exemple de commande permettant d'ajouter une règle entrante ping avant la règle entrante par défaut :

Syntaxe :

ibmcloud is network-acl-rule-add ACL ACTION DIRECTION PROTOCOL SOURCE DESTINATION [--name NAME] [--icmp-type ICMP_TYPE] [--icmp-code ICMP_CODE] [--source-port-min PORT_MIN] [--source-port-max PORT_MAX] [--destination-port-min PORT_MIN] [--destination-port-max PORT_MAX] [--before-rule-id RULE_ID] [--output JSON] [-q, --quiet]

Exemple :

ibmcloud is network-acl-rule-add 72b27b5c-f4b0-48bb-b954-5becc7c1dcb3 allow inbound icmp 10.2.2.2 10.2.2.3 --icmp-type 8 --icmp-code 0