Informationen zu Netz-ACLs
Mithilfe einer Zugriffssteuerungsliste (Access Control List, ACL) können Sie den gesamten ein- und ausgehenden Datenverkehr in IBM Cloud® Virtual Private Cloud steuern. Eine ACL ist eine integrierte virtuelle Firewall, ähnlich wie eine Sicherheitsgruppe. Im Gegensatz zu Sicherheitsgruppen steuern ACL-Regeln den Datenverkehr zum und vom _Teilnetz_und nicht zur und von der Instanz.
Einen Vergleich der Merkmale von Sicherheitsgruppen und ACLs finden Sie in der Vergleichstabelle.
Das in diesem Dokument dargestellte Beispiel veranschaulicht die Erstellung von Netz-ACLs in Ihrer VPC mithilfe der CLI. Weitere Informationen über die Einrichtung von ACLs in der Konsole IBM Cloud finden Sie unter Konfigurieren von ACLs in der Konsole.
Mit ACLs und ACL-Regeln arbeiten
Um eine effiziente ACL zu erstellen, legen Sie Regeln für die Verarbeitung des ein- und ausgehenden Netzverkehrs fest. Sie können mehrere Regeln für eingehenden und für ausgehenden Datenverkehr erstellen. Zusätzliche Angaben über Regeln für Kontingente finden Sie unter Kontingente.
- Durch Regeln für eingehende Daten können Sie Datenverkehr von einem Quellen-IP-Bereich mit angegebenen Protokollen und Ports zulassen oder blockieren.
- Durch Regeln für ausgehende Daten können Sie Datenverkehr für einen Ziel-IP-Bereich mit angegebenen Protokollen und Ports zulassen oder blockieren.
- ACL-Regeln werden priorisiert und sequenziell berücksichtigt. Regeln mit höherer Priorität werden zuerst ausgewertet und setzen Regeln mit niedrigerer Priorität außer Kraft.
- Regeln für eingehende Daten werden von den Regeln für ausgehende Daten getrennt.
- Wenn keine Regeln angegeben werden, ist implizites Blockieren das Standardverhalten.
Weitere Informationen zur Verwendung von ICMP-, TCP- und UDP-Protokollen in Ihren ACL-Regeln finden Sie unter Kommunikationsprotokoll für das Internet verstehen.
Aktualisierung der Standard-ACL-Regeln einer VPC
Die Standard-ACL ist vergleichbar mit jeder anderen ACL, mit der Ausnahme, dass sie nicht gelöscht werden kann.
Wenn Sie eine VPC erstellen, erstellt das System eine Standard-Zugriffssteuerungsliste für die VPC mit zwei Regeln:
- Eine Regel mit dem Namen
allow-inbound
, um eingehenden ICMP-, TCP- und UDP-Verkehr von jeder Quelle zuzulassen - Eine Regel mit dem Namen
allow-outbound
, um ausgehenden ICMP-, TCP- und UDP-Verkehr zu jedem Ziel zuzulassen
Sie können die Regeln der Standard-ACL über die Konsole, die CLI oder die API ändern.
Wenn Sie die Regeln der Standard-ACL bearbeiten, gelten diese bearbeiteten Regeln für alle aktuellen und zukünftigen Subnetze, die mit der ACL verbunden sind.
Einem Teilnetz eine ACL zuordnen
Wenn Sie ein neues Teilnetz erstellen, können Sie eine ACL angeben, die angehängt werden soll. Wenn Sie keine ACL angeben, wird die Standard-Netzwerk-ACL des VPCs angehängt.
Jedes Subnetz hat genau eine zugewiesene Zugriffssteuerungsliste. Sie können die Zugriffssteuerungsliste eines Subnetzes durch eine andere Zugriffssteuerungsliste ersetzen.
ACL-Beispiel
Im folgenden Beispiel erstellen Sie zwei ACLs und ordnen diese mithilfe der Befehlszeilenschnittstelle (Command-Line Interface, CLI) zwei Teilnetzen zu. In Abbildung 1 wird das entsprechende Szenario dargestellt.
Wie in Abbildung 1 dargestellt, haben Sie zwei Web-Server, die Anforderungen aus dem Internet bearbeiten, und zwei Back-End-Server, die Sie vor der Öffentlichkeit verbergen möchten. In diesem Beispiel stellen Sie die Server in zwei separate
Teilnetze, 10.10.10.0/24
und 10.10.20.0/24
, und Sie müssen den Web-Servern den Datenaustausch mit den Back-End-Servern ermöglichen. Außerdem möchten Sie begrenzten abgehenden Datenverkehr von den Back-End-Servern zulassen.
Beispielregeln
Die folgenden Beispielregeln veranschaulichen das Einrichten der ACL-Regeln für das Basisszenario.
Ein bewährtes Verfahren besteht darin, differenzierten Regeln eine höhere Priorität zuzuordnen als allgemeinen Regeln. Angenommen, Sie haben eine Regel, die den gesamten Datenverkehr aus dem Teilnetz 10.10.30.0/24
blockiert. Wenn
ihr eine höhere Priorität zugeordnet wird, werden alle differenzierten Regeln mit einer niedrigeren Priorität, die Datenverkehr von 10.10.30.5
zulassen, nie angewendet.
Beispielregeln für ACL-1
Eingehend/Abgehend | Zulassen/Ablehnen | Quellen-IP | Destination IP Ziel-IP | Protokoll | Port | Beschreibung |
---|---|---|---|---|---|---|
Ankommend | Zulassen | 0.0.0.0/0 | 0.0.0.0/0 | TCP | 80 | HTTP-Datenverkehr aus dem Internet zulassen |
Ankommend | Zulassen | 0.0.0.0/0 | 0.0.0.0/0 | TCP | 443 | HTTPS-Datenverkehr aus dem Internet zulassen |
Ankommend | Zulassen | 10.10.20.0/24 | 0.0.0.0/0 | Alle | Alle | Gesamten eingehenden Datenverkehr aus dem Teilnetz 10.10.20.0/24 zulassen, in dem sich die Back-End-Server befinden |
Ankommend | Ablehnen | 0.0.0.0/0 | 0.0.0.0/0 | Alle | Alle | Gesamten anderen eingehenden Datenverkehr blockieren |
Ausgehend | Zulassen | 0.0.0.0/0 | 0.0.0.0/0 | TCP | 80 | HTTP-Datenverkehr in das Internet zulassen |
Ausgehend | Zulassen | 0.0.0.0/0 | 0.0.0.0/0 | TCP | 443 | HTTPS-Datenverkehr in das Internet zulassen |
Ausgehend | Zulassen | 0.0.0.0/0 | 10.10.20.0/24 | Alle | Alle | Gesamten abgehenden Datenverkehr an das Teilnetz 10.10.20.0/24 zulassen, in dem sich die Back-End-Server befinden |
Ausgehend | Ablehnen | 0.0.0.0/0 | 0.0.0.0/0 | Alle | Alle | Gesamten anderen ausgehenden Datenverkehr blockieren |
Beispielregeln für ACL-2
Eingehend/Abgehend | Zulassen/Ablehnen | Quellen-IP | Destination IP Ziel-IP | Protokoll | Port | Beschreibung |
---|---|---|---|---|---|---|
Ankommend | Zulassen | 10.10.10.0/24 |
0.0.0.0/0 | Alle | Alle | Gesamten eingehenden Datenverkehr aus dem Teilnetz 10.10.10.0/24 zulassen, in dem sich die Web-Server befinden |
Ankommend | Ablehnen | 0.0.0.0/0 | 0.0.0.0/0 | Alle | Alle | Gesamten anderen eingehenden Datenverkehr blockieren |
Ausgehend | Zulassen | 0.0.0.0/0 | 0.0.0.0/0 | TCP | 80 | HTTP-Datenverkehr in das Internet zulassen |
Ausgehend | Zulassen | 0.0.0.0/0 | 0.0.0.0/0 | TCP | 443 | HTTPS-Datenverkehr in das Internet zulassen |
Ausgehend | Zulassen | 0.0.0.0/0 | 10.10.10.0/24 |
Alle | Alle | Gesamten abgehenden Datenverkehr an das Teilnetz 10.10.10.0/24 zulassen, in dem sich die Web-Server befinden |
Ausgehend | Ablehnen | 0.0.0.0/0 | 0.0.0.0/0 | Alle | Alle | Gesamten anderen ausgehenden Datenverkehr blockieren |
In diesem Beispiel werden nur allgemeine Fälle dargestellt. Für Ihre Szenarios ist möglicherweise eine differenziertere Steuerung des Datenverkehrs erforderlich.
- Möglicherweise muss ein Netzadministrator für Verwaltungszwecke von einem fernen Netz aus auf das Teilnetz 10.10.10.0/24 zugreifen. In diesem Fall müssen Sie SSH-Datenverkehr vom Internet zu dem Teilnetz zulassen.
- Es kann sinnvoll sein, den zulässigen Geltungsbereich des Protokolls zwischen Ihren beiden Teilnetzen einzugrenzen.
Beispielschritte
In den folgenden Beispielschritten werden die vorausgesetzten Schritte zum Erstellen einer VPC mithilfe der CLI übersprungen. Diese Schritte müssen zuerst ausgeführt werden. Weitere Informationen finden Sie im Abschnitt VPC-Ressource verwenden mithilfe der Befehlszeilenschnittstelle erstellen.
Schritt 1. ACLs erstellen
Verwenden Sie die folgenden CLI-Befehle, um zwei ACLs mit den Namen my_web_subnet_acl
und my_backend_subnet_acl
zu erstellen:
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
Die Antwort beinhaltet auch die IDs der neu erstellen ACLs. Speichern Sie die IDs der beiden ACLs für die Verwendung in späteren Befehlen. Sie können Variablen mit den Namen webacl
und bkacl
wie folgt verwenden:
webacl="0738-ba9e785a-3e10-418a-811c-56cfe5669676"
bkacl="0738-a4e28308-8ee7-46ab-8108-9f881f22bdbf"
Schritt 2. Standard-ACL-Regeln abrufen
Rufen Sie vor dem Hinzufügen von Regeln die Standard-ACL-Regeln für ein- und ausgehende Daten ab, damit Sie neue Regeln vor diesen Regeln einfügen können.
ibmcloud is network-acl-rules $webacl
ibmcloud is network-acl-rules $bkacl
Die Antwort enthält die Standardregeln für ein- und ausgehende Daten, die den gesamten IPv4-Datenverkehr in allen Protokollen zulassen.
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
Speichern Sie die IDs für die beiden ACL-Regeln als Variablen, damit Sie die Werte in späteren Befehlen verwenden können. Sie können die IDs zum Beispiel in den Variablen inrule
und outrule
speichern:
inrule="0738-e2b30627-1a1d-447b-859f-ac9431986b6f"
outrule="0738-173a3492-0544-472e-91c0-7828cbcb62d4"
Schritt 3. Neue ACL-Regeln wie beschrieben hinzufügen
In diesem Beispiel fügen Sie zunächst Regeln für eingehende Daten hinzu und danach Regeln für ausgehende Daten.
Fügen Sie neue Regeln für eingehende Daten vor der Standardregel für eingehende Daten ein.
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
Speichern Sie in jedem Schritt die ID der ACL-Regel in einer Variablen, damit die ID in späteren Befehlen verwendet werden kann. Sie können beispielsweise die Variable acl200
verwenden:
acl200="0738-90930627-1a1d-447b-859f-ac9431986b6f"
Fügen Sie nun die Regel zu acl200
hinzu:
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
Fügen Sie weitere Regeln hinzu, bis Ihre ACL-Konfiguration abgeschlossen ist, und speichern Sie jede ID als eine 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
Fügen Sie neue Regeln für ausgehende Daten vor der Standardregel für ausgehende Daten ein.
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
Schritt 4. Erstellen Sie die beiden Teilnetze mit der neu erstellten ACL
Erstellen Sie zwei Teilnetze und ordnen Sie jede Ihrer ACLs einem dieser Teilnetze zu.
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
Cheat-Sheet zum Auflisten der Befehle
Geben Sie Folgendes ein, um eine vollständige Liste der verfügbaren VPC-CLI-Befehle für ACLs anzuzeigen:
ibmcloud is network-acls
Geben Sie Folgendes ein, um Ihre ACL und die zugehörigen Metadaten anzuzeigen:
ibmcloud is network-acl $webacl
So listen Sie alle ACL-Regeln auf:
ibmcloud is network-acl-rules $webacl
Beispielregel ping
für eingehende Daten
Der folgende Beispielbefehl fügt eine ACL-Regel ping
für eingehende Daten vor der Standardregel für eingehende Daten hinzu:
Syntax:
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]
Beispiel:
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