권한 및 참조 요청을 위한 사용자 인터페이스 만들기¶
이 항목에서는 공급자로서 Streamlit 및 |sf-web-interface|를 사용하여 컨슈머가 설치된 |native-app|에 대해 권한을 부여하고 참조를 만들 수 있도록 하는 사용자 인터페이스를 만드는 방법을 설명합니다. Streamlit 프로그램에서 Snowflake 권한 및 참조에 액세스하기 위해 |naf|는 |native-app-perms|를 제공합니다.
|native-app-perms|의 메서드에 대한 내용은 Python Permission SDK 참조 섹션을 참조하세요.
권한 및 참조 정보¶
Snowflake Native App Framework 를 사용하여 컨슈머로부터 권한과 참조를 요청하는 방법에 대한 일반적인 정보는 컨슈머 계정에 오브젝트 만들기 및 액세스하기 섹션을 참조하십시오.
Python Permission SDK 정보¶
|naf|는 공급자가 |native-app| 내에서 다음을 수행할 수 있도록 |native-app-perms|를 제공합니다.
계정 수준 권한을 확인합니다.
매니페스트 파일에 나열된 전역 권한을 요청합니다.
매니페스트 파일에 정의된 대로 오브젝트 및 해당 오브젝트 수준 권한에 대한 참조를 요청합니다.
예를 들어 API 통합 생성 또는 공유 생성과 같이 권한이 부여된 작업을 요청합니다.
Snowsight 에서는 Python Permission SDK 를 사용하여 설치된 Snowflake Native App 의 Security 탭에 액세스 요청을 표시합니다.
|native-app-perms|의 메서드에 대한 내용은 Python Permission SDK 참조 섹션을 참조하세요.
권한을 승인하고 참조를 바인딩하기 위해 인터페이스를 생성하는 워크플로¶
다음 일반적인 워크플로에서는 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 를 사용하여 다양한 작업을 수행하는 방법을 보여줍니다.
계정 수준 권한 확인하기¶
이 예제에서는 |native-app-perms|의 get_held_account_privileges() 메서드를 사용하여 매니페스트 파일에 선언된 권한이 설치된 |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() 함수를 사용하여 컨슈머가 앱에 필요한 권한을 부여할 때까지 대기할 수 있습니다.
참고
매니페스트 파일에 정의된 권한만 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")