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)
해당 코드에서는 결과 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)
네트워크 정책 세부 정보 가져오기¶
NetworkPolicy
오브젝트를 반환하는 NetworkPolicyResource.fetch
메서드를 호출하여 네트워크 정책에 대한 정보를 얻을 수 있습니다.
다음 예제의 코드로 이름이 my_network_policy
인 네트워크 정책에 대한 정보를 가져옵니다.
my_network_policy = root.network_policies["my_network_policy"].fetch()
print(my_network_policy.to_dict())
네트워크 정책 나열하기¶
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)
네트워크 정책 삭제하기¶
NetworkPolicyResource
오브젝트가 포함된 네트워크 정책을 삭제할 수 있습니다.
다음 예제의 코드는 my_network_policy
네트워크 정책 리소스 오브젝트를 가져온 다음 네트워크 정책을 삭제합니다.
my_network_policy_res = root.network_policies["my_network_policy"]
my_network_policy_res.drop()