권한 및 참조 요청을 위한 사용자 인터페이스 만들기¶
이 항목에서는 컨슈머가 권한을 부여하고 설치된 Snowflake Native App 에 대한 참조를 생성할 수 있도록 하기 위해 Streamlit 및 Snowsight 를 사용하여 사용자 인터페이스를 만드는 방법을 설명합니다. Snowflake Native App Framework 는 공급자가 Streamlit 앱을 사용하여 컨슈머에 대한 요청을 포함할 수 있게 해주는 Python Permission SDK 를 제공합니다.
권한 및 참조 정보¶
Snowflake Native App Framework 를 사용하여 컨슈머로부터 권한과 참조를 요청하는 방법에 대한 일반적인 정보는 컨슈머 계정의 오브젝트에 대한 액세스 요청하기 섹션을 참조하십시오.
Python Permission SDK 정보¶
Snowflake Native App Framework 는 공급자가 Snowflake Native App 내에서 다음을 수행할 수 있도록 하는 Python Permission SDK 를 제공합니다.
계정 수준 권한을 확인합니다.
매니페스트 파일에 나열된 전역 권한을 요청합니다.
매니페스트 파일에 정의된 대로 오브젝트 및 해당 오브젝트 수준 권한에 대한 참조를 요청합니다.
예를 들어 API 통합 생성 또는 공유 생성과 같이 권한이 부여된 작업을 요청합니다.
Snowsight 에서는 Python Permission SDK 를 사용하여 설치된 Snowflake Native App 의 Security 탭에 액세스 요청을 표시합니다.
권한을 승인하고 참조를 바인딩하기 위해 인터페이스를 생성하는 워크플로¶
다음 일반적인 워크플로에서는 Streamlit 앱을 구현하고 컨슈머로부터 권한 부여와 참조를 요청하는 데 필요한 단계를 간략하게 설명합니다.
애플리케이션 패키지를 만듭니다.
매니페스트 파일에서 권한을 지정하고 Snowflake Native App 에 필요한 참조를 정의합니다.
애플리케이션 패키지에 Streamlit 앱을 추가합니다.
애플리케이션 패키지에
environment.yml
파일을 추가합니다.참고
environment.yml
파일은 Snowsight 인터페이스를 구현하는 데 사용되는 주 Streamlit 파일과 동일한 디렉터리에 있어야 합니다.snowflake-native-apps-permission
라이브러리를 종속 항목으로 추가합니다.Streamlit 앱에서
snowflake.permissions
라이브러리를 가져옵니다.SDK에서 제공되는 함수를 호출하는 Streamlit 앱에 함수를 추가합니다.
Streamlit 환경에 Python Permission SDK 추가하기¶
Streamlit 앱에서 Python Permission SDK 를 사용하려면 다음 예와 같이 environment.yml
파일에 snowflake-native-apps-permission
패키지를 종속 항목으로 추가하십시오.
name: sf_env
channels:
- snowflake
dependencies:
- snowflake-native-apps-permission
Streamlit 앱에서 Python Permission SDK 가져오기¶
Python Permission SDK 를 Streamlit 앱으로 가져오려면 앱에 다음의 가져오기 문을 포함하십시오.
import snowflake.permissions as permissions;
컨슈머로부터 권한 요청하기¶
다음 예에서는 Python Permission SDK 를 사용하여 다양한 작업을 수행하는 방법을 보여줍니다.
계정 수준 권한 확인하기¶
이 예에서는 Permissions API의 get_held_account_privileges()
메서드를 사용하여 매니페스트 파일에 선언된 권한이 설치된 Snowflake Native App 에 부여되었는지 확인하는 방법을 보여줍니다.
예를 들어 Snowflake Native App 이 APPLICATION 오브젝트 외부에서 데이터베이스를 만들어야 하는 경우 공급자는 매니페스트 파일에서 다음과 같이 참조를 정의할 수 있습니다.
privileges:
- CREATE DATABASE:
description: "Creation of ingestion (required) and audit databases"
Python Permission SDK 를 사용하면 get_held_account_privileges()
메서드를 통해 Snowflake Native App 에 부여된 권한 목록을 가져올 수 있습니다.
import streamlit as st
import snowflake.permissions as permissions
...
if not permissions.get_held_account_privileges(["CREATE DATABASE"]):
st.error("The app needs CREATE DB privilege to replicate data")
이 예에서는 CREATE DATABASE 권한을 매개 변수로 전달하는 get_held_account_privileges()
함수를 호출합니다. 공급자는 get_held_account_privileges()
함수를 사용하여 컨슈머가 Snowflake Native App 에 필요한 권한을 부여할 때까지 적절하게 응답할 수 있습니다.
참고
매니페스트 파일에 정의된 권한만 get_held_account_privileges()
에 유효한 인자입니다. 다른 인자를 전달하면 오류가 발생합니다.
컨슈머로부터 권한 있는 작업 요청하기¶
공급자는 Python Permission SDK 를 사용하여 Snowflake Native App 에 필요한 권한 있는 작업을 요청할 수 있습니다.
예를 들어 Snowflake Native App 이 ServiceNow 인스턴스에 연결할 수 있도록 허용하는 API 통합을 요청하기 위해 공급자는 매니페스트 파일에 API 통합을 정의합니다.
references:
- servicenow_api_integration:
label: "API INTEGRATION for ServiceNow communication"
description: "An integration required in order to support extraction and visualization of ServiceNow data."
privileges:
- USAGE
object_type: API Integration
register_callback: config.register_reference
다음으로, Streamlit 앱에서 공급자는 request_reference(<참조_이름>)
메서드를 호출하여 다음 예와 같이 API 통합에 대한 USAGE 권한을 요청합니다.
permissions.request_reference("servicenow_api_integration")
Python Permission SDK 참조¶
다음 표에는 Python Permission SDK 가 snowflake.permissions
모듈에서 제공하는 함수가 나와 있습니다.
메서드 |
설명 |
---|---|
|
권한을 포함하는 함수에 전달된 문자열 배열로 지정된 컨슈머로부터 권한을 요청합니다. 지정된 권한은 매니페스트 파일에 나열되어야 합니다. |
|
함수에 전달된 문자열로 지정된 컨슈머로부터 참조를 요청합니다. 함수에 전달된 참조는 매니페스트 파일에 정의해야 합니다. 참조에 포함할 수 있는 오브젝트와 이들 오브젝트의 지원되는 권한에 대해서는 참조가 포함할 수 있는 오브젝트 유형 및 권한 섹션을 참조하십시오. |
|
Amazon API Gateway의 컨슈머로부터 API 통합을 요청합니다.
다른 매개 변수에 대한 정보는 CREATE API INTEGRATION 섹션을 참조하십시오. |
|
Azure API Management에 대해 컨슈머로부터 API 통합을 요청합니다. |
|
Google Cloud API Gateway에 대해 컨슈머로부터 API 통합을 요청합니다. |
|
함수에 전달된 권한으로 구성된 배열을 기반으로 Snowflake Native App 에 부여된 권한이 포함된 배열을 반환합니다. |
|
함수에 전달된 권한으로 구성된 배열을 기반으로 Snowflake Native App 에 부여되지 않은 권한이 포함된 배열을 반환합니다. |
|
Snowflake Native App 과 연결되어 함수에 대한 매개 변수로 지정된 오브젝트에 대한 참조의 목록을 포함하는 배열을 반환합니다. |