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.
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
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
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