Gerenciamento de políticas de rede Snowflake com Python¶
É possível usar Python para gerenciar políticas de rede Snowflake, que podem ser usadas para controlar o acesso de entrada ao serviço Snowflake e ao estágio interno. Para obter mais informações, consulte Controle do tráfego de rede com políticas de rede.
Nota
ALTER NETWORK POLICY não é compatível atualmente.
O Snowflake Python APIs representa políticas de rede com dois tipos separados:
NetworkPolicy
: Expõe as propriedades de uma política de redes, como nome, regras de rede e listas de endereços IP permitidos e bloqueados.NetworkPolicyResource
: Expõe métodos que podem ser usados para buscar um objetoNetworkPolicy
correspondente e descartar a política de redes.
Pré-requisitos¶
Os exemplos neste tópico pressupõem que você tenha adicionado código para se conectar ao Snowflake e criar um objeto Root
a partir do qual usar o Snowflake Python APIs.
Por exemplo, o seguinte código usa parâmetros de conexão definidos em um arquivo de configuração para criar uma conexão com o Snowflake:
from snowflake.core import Root
from snowflake.snowpark import Session
session = Session.builder.config("connection_name", "myconnection").create()
root = Root(session)
Usando o objeto Session
resultante, o código cria um objeto Root
para usar os tipos e métodos de API. Para obter mais informações, consulte Conexão ao Snowflake com o Snowflake Python APIs.
Criação de uma política de redes¶
Para criar uma política de redes, primeiro crie um objeto NetworkPolicy
e, em seguida, crie um objeto NetworkPolicyCollection
a partir do objeto Root
da API. Usando NetworkPolicyCollection.create
, adicione a nova política de redes ao Snowflake.
O código no exemplo a seguir cria um objeto NetworkPolicy
que representa uma política de redes nomeada my_network_policy
com as regras de rede e endereços IP permitidos e bloqueados especificados:
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)
Como obter detalhes da política de redes¶
É possível obter informações sobre uma política de redes chamando o método NetworkPolicyResource.fetch
, que retorna um objeto NetworkPolicy
.
O código no exemplo a seguir obtém informações sobre uma política de redes nomeada my_network_policy
:
my_network_policy = root.network_policies["my_network_policy"].fetch()
print(my_network_policy.to_dict())
Listagem de políticas de rede¶
É possível listar as políticas de rede usando o método NetworkPolicyCollection.iter
, que retorna um iterador PagedIter
de objetos NetworkPolicy
.
O código no exemplo a seguir lista as políticas de rede cujos nomes começam com my
e imprime o nome de cada uma:
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)
Descarte de uma política de redes¶
É possível descartar uma política de redes com um objeto NetworkPolicyResource
.
O código no exemplo a seguir busca o objeto de recurso da política de redes my_network_policy
e, em seguida, descarta a política de redes.
my_network_policy_res = root.network_policies["my_network_policy"]
my_network_policy_res.drop()