Verwalten von Snowflake-Netzwerkrichtlinien mit Python

Mit Python können Sie Netzwerkrichtlinien von Snowflake verwalten, mit denen Sie den eingehenden Zugriff auf den Snowflake-Dienst und den internen Stagingbereich kontrollieren können. Weitere Informationen dazu finden Sie unter Steuern des Netzwerkdatenverkehrs mit Netzwerkrichtlinien.

Bemerkung

ALTER NETWORK POLICY wird derzeit nicht unterstützt.

Die Snowflake Python APIs stellt Netzwerkrichtlinien mit zwei verschiedenen Typen dar:

  • NetworkPolicy: Zeigt die Eigenschaften einer Netzwerkrichtlinie an, z. B. den Namen, die Netzwerkregeln und die IP-Listen der erlaubten und gesperrten Dateien.

  • NetworkPolicyResource: Stellt Methoden zur Verfügung, mit denen Sie ein entsprechendes NetworkPolicy-Objekt abrufen und die Netzwerkrichtlinie ablegen können.

Voraussetzungen

Die Beispiele in diesem Thema gehen davon aus, dass Sie Code hinzugefügt haben, um eine Verbindung zu Snowflake herzustellen und ein Root-Objekt zu erstellen, von dem aus Sie die Snowflake Python APIs verwenden können.

Beispielsweise verwendet der folgende Code Verbindungsparameter, die in einer Konfigurationsdatei definiert sind, um eine Verbindung zu Snowflake zu erstellen:

from snowflake.core import Root
from snowflake.snowpark import Session

session = Session.builder.config("connection_name", "myconnection").create()
root = Root(session)
Copy

Unter Verwendung des resultierenden Session-Objekts erstellt der Code ein Root-Objekt, das die Typen und Methoden der API verwendet. Weitere Informationen dazu finden Sie unter Verbinden mit Snowflake mit dem Snowflake Python APIs.

Erstellen einer Netzwerkrichtlinie

Um eine Netzwerkrichtlinie zu erstellen, legen Sie zunächst ein NetworkPolicy-Objekt an und erstellen dann ein NetworkPolicyCollection-Objekt aus dem API Root-Objekt. Fügen Sie mit NetworkPolicyCollection.create die neue Netzwerkrichtlinie zu Snowflake hinzu.

Der Code im folgenden Beispiel erstellt ein NetworkPolicy-Objekt, das eine Netzwerkrichtlinie namens my_network_policy mit den angegebenen erlaubten und gesperrten Netzwerkregeln und IP-Adressen darstellt:

from snowflake.core.network_policy import NetworkPolicy

my_network_policy = NetworkPolicy(
  name = 'my_network_policy',
  allowed_network_rule_list = ['allowed_network_rule1','allowed_network_rule2'],
  blocked_network_rule_list = ['blocked_network_rule1','blocked_network_rule2'],
  allowed_ip_list=['8.8.8.8'],
  blocked_ip_list=['192.100.123.0'],
)

root.network_policies.create(my_network_policy)
Copy

Details zur Netzwerkrichtlinie abrufen

Sie können Informationen über eine Netzwerkrichtlinie erhalten, indem Sie die NetworkPolicyResource.fetch-Methode aufrufen, die ein NetworkPolicy-Objekt zurückgibt.

Der Code im folgenden Beispiel ruft Informationen über eine Netzwerkrichtlinie namens my_network_policy ab:

my_network_policy = root.network_policies["my_network_policy"].fetch()
print(my_network_policy.to_dict())
Copy

Auflistung der Netzwerkrichtlinien

Sie können Netzwerkrichtlinien mit der NetworkPolicyCollection.iter-Methode auflisten, die einen PagedIter-Iterator von NetworkPolicy-Objekten zurückgibt.

Der Code im folgenden Beispiel listet Netzwerkrichtlinien auf, deren Name mit my beginnt, und gibt den Namen jeder Richtlinie aus:

network_policy_iter = root.network_policies.iter(like="my%")  # returns a PagedIter[NetworkPolicy]
for network_policy_obj in network_policy_iter:
  print(network_policy_obj.name)
Copy

Löschen einer Netzwerkrichtlinie

Sie können eine Netzwerkrichtlinie mit einem NetworkPolicyResource-Objekt löschen.

Der Code im folgenden Beispiel ruft das my_network_policy-Ressourcen-Objekt für die Netzwerkrichtlinie ab und löscht dann die Netzwerkrichtlinie.

my_network_policy_res = root.network_policies["my_network_policy"]
my_network_policy_res.drop()
Copy