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 objetNetworkPolicy
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)
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)
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())
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)
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()