Python을 사용하여 Snowflake 네트워크 정책 관리하기

Python을 사용하여 Snowflake 네트워크 정책을 관리할 수 있으며, 이를 통해 Snowflake 서비스와 내부 스테이지에 대한 인바운드 액세스를 제어할 수 있습니다. 자세한 내용은 네트워크 정책으로 네트워크 트래픽 제어하기 섹션을 참조하십시오.

참고

ALTER NETWORK POLICY 는 현재 지원되지 않습니다.

Snowflake Python APIs 은 다음 2가지 유형의 네트워크 정책을 나타냅니다.

  • NetworkPolicy: 네트워크 정책의 이름, 네트워크 규칙, 허용 및 차단 IP 목록 등의 속성을 노출합니다.

  • NetworkPolicyResource: 해당 NetworkPolicy 오브젝트를 가져오고 네트워크 정책을 삭제하는 데 사용할 수 있는 메서드를 노출합니다.

전제 조건

이 항목의 예제에서는 Snowflake와 연결하고 Snowflake Python APIs 을 사용할 수 있는 Root 오브젝트를 생성하는 코드를 추가했다고 가정합니다.

예를 들어, 다음 코드는 구성 파일에 정의된 연결 매개 변수를 사용하여 Snowflake에 대한 연결을 생성합니다.

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

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

해당 코드에서는 결과 Session 오브젝트를 사용하여 API의 유형과 메서드를 사용하기 위해 Root 오브젝트를 생성합니다. 자세한 내용은 Snowflake Python APIs 을 사용하여 Snowflake에 연결 섹션을 참조하십시오.

네트워크 정책 만들기

네트워크 정책을 생성하려면 먼저 NetworkPolicy 오브젝트를 생성한 다음 API Root 오브젝트에서 NetworkPolicyCollection 오브젝트를 생성합니다. NetworkPolicyCollection.create 를 사용하여 Snowflake에 새 네트워크 정책을 추가합니다.

다음 예제의 코드는 지정된 허용 및 차단 네트워크 규칙과 IP 주소가 있는 이름이 my_network_policy 인 네트워크 정책을 나타내는 NetworkPolicy 오브젝트를 생성합니다.

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

네트워크 정책 세부 정보 가져오기

NetworkPolicy 오브젝트를 반환하는 NetworkPolicyResource.fetch 메서드를 호출하여 네트워크 정책에 대한 정보를 얻을 수 있습니다.

다음 예제의 코드로 이름이 my_network_policy 인 네트워크 정책에 대한 정보를 가져옵니다.

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

네트워크 정책 나열하기

NetworkPolicy 오브젝트의 PagedIter 반복기를 반환하는 NetworkPolicyCollection.iter 메서드를 사용하여 네트워크 정책을 나열할 수 있습니다.

다음 예제의 코드는 이름이 my 로 시작하는 네트워크 정책을 나열하고 각 정책의 이름을 출력합니다.

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

네트워크 정책 삭제하기

NetworkPolicyResource 오브젝트가 포함된 네트워크 정책을 삭제할 수 있습니다.

다음 예제의 코드는 my_network_policy 네트워크 정책 리소스 오브젝트를 가져온 다음 네트워크 정책을 삭제합니다.

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