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 objeto NetworkPolicy 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)
Copy

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)
Copy

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

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)
Copy

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