Gestion des politiques réseau Snowflake avec Python

Vous pouvez utiliser Python pour gérer les politiques réseau Snowflake, que vous pouvez utiliser pour contrôler l’accès entrant au service Snowflake et à la zone de préparation interne. Pour plus d’informations, voir Contrôle du trafic réseau avec des politiques réseau.

Note

ALTER NETWORK POLICY n’est actuellement pas pris en charge.

Les Snowflake Python APIs représentent des politiques réseau avec deux types distincts :

  • NetworkPolicy : expose les propriétés d’une politique réseau telles que son nom, ses règles réseau et les éléments autorisés et les listes d’IP bloquées.

  • NetworkPolicyResource : expose des méthodes que vous pouvez utiliser pour extraire un objet NetworkPolicy correspondant et pour supprimer la politique réseau.

Conditions préalables

Les exemples de cette rubrique supposent que vous ayez ajouté le code nécessaire pour vous connecter à Snowflake et créer un objet Root à partir duquel utiliser les Snowflake Python APIs.

Par exemple, le code suivant utilise les paramètres de connexion définis dans un fichier de configuration pour créer une connexion à Snowflake.

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

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

En utilisant l’objet Session obtenu, le code crée un objet Root pour utiliser les types et les méthodes de l’API. Pour plus d’informations, voir Connexion à Snowflake avec Snowflake Python APIs.

Création d’une politique réseau

Pour créer une politique réseau, il faut d’abord créer un objet NetworkPolicy, puis créer un objet NetworkPolicyCollection à partir de l’objet Root de l’API. En utilisant NetworkPolicyCollection.create, ajoutez la nouvelle politique réseau à Snowflake.

Le code de l’exemple suivant crée un objet NetworkPolicy qui représente une politique réseau nommée my_network_policy avec les règles réseau autorisées et bloquées et les adresses IP :

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

Obtenir les détails de la politique réseau

Vous pouvez obtenir des informations sur une politique réseau en appelant la méthode NetworkPolicyResource.fetch, qui renvoie un objet NetworkPolicy.

Le code de l’exemple suivant permet d’obtenir des informations sur une politique réseau nommée my_network_policy :

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

Affichage des politiques réseau

Vous pouvez répertorier des politiques réseau à l’aide de la méthode NetworkPolicyCollection.iter qui renvoie un itérateur PagedIter d’objets NetworkPolicy.

Le code de l’exemple suivant répertorie les politiques réseau dont le nom commence par my et imprime le nom de chacune :

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

Suppression d’une politique réseau

Vous pouvez supprimer une politique réseau avec un objet NetworkPolicyResource.

Le code dans l’exemple suivant extrait l’objet de ressource de politique réseau my_network_policy, puis supprime la politique réseau.

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