제한된 호출자의 권한 및 Streamlit in Snowflake¶
기본적으로, 모든 Streamlit in Snowflake 앱은 :doc:`호출자의 권한이 아닌 소유자의 권한으로 실행 </developer-guide/streamlit/object-management/owners-rights>`됩니다. Streamlit 앱 개발자는 Container Runtime 앱이 소유자 권한 또는 제한된 호출자 권한으로 실행되는지 여부를 정의할 수 있습니다. 제한된 호출자의 권한은 Warehouse Runtime에서 지원되지 않습니다.
제한된 호출자 권한을 사용하면 Streamlit 앱을 호출자의 권한으로 실행할 수 있지만, 앱이 어떤 호출자의 권한으로 실행되는지는 제한됩니다. 호출자의 권한이 제한된 경우 관리자가 명시적으로 허용하지 않는 한 Streamlit 앱은 특정 권한으로 실행될 수 없습니다. 관리자는 :ref:`호출자 권한 부여 <label-streamlit_restricted_callers_rights_required_caller_grants>`를 사용하여 앱이 어떤 호출자의 권한으로 실행될 수 있는지 정의합니다. 이를 통해 Streamlit 앱은 뷰어를 대신하여 액세스 권한이 있는 데이터에만 액세스합니다.
자세한 내용은 제한된 호출자의 권한 섹션을 참조하십시오.
필수 호출자 권한¶
뷰어를 대신하여 테이블, 저장 프로시저 또는 웨어하우스에 액세스하기 위해 Streamlit 앱 개발자에게는 MANAGE CALLER GRANTS 권한이 있는 사용자가 호출자 권한을 부여해야 합니다.
워크플로 예시¶
관리자는
data_science_manager역할에 MANAGE CALLER GRANTS 권한을 부여합니다.GRANT MANAGE CALLER GRANTS ON ACCOUNT TO ROLE data_science_manager;
data_science_manager역할의 사용자는streamlit_app_developer역할에 다음 권한을 부여합니다.streamlit_db.streamlit_schema.streamlit_table테이블에 액세스하는 해당 역할이 소유한 Streamlit 앱이 해당 테이블에 대한 SELECT 권한으로 실행될 수 있는streamlit_app_developer역할에 대한 호출자 select 권한:GRANT CALLER SELECT ON TABLE streamlit_db.streamlit_schema.streamlit_table TO ROLE streamlit_app_developer;
streamlit_wh웨어하우스를 사용하기 위한streamlit_app_developer역할에 대한 호출자 usage 권한:GRANT CALLER USAGE ON WAREHOUSE streamlit_wh TO ROLE streamlit_app_developer;
호출자 권한 부여에 대한 자세한 호출자 권한 부여 정보 및 GRANT CALLER 섹션을 참조하세요.
Streamlit in Snowflake 에서 제한된 호출자 권한의 사용 사례¶
Streamlit in Snowflake 에서 제한된 호출자 권한을 사용하면 다음을 제어할 수 있습니다.
사용할 수 있는 Streamlit 앱의 페이지
Streamlit 앱에서 사용할 수 있는 데이터
CURRENT_ROLE에 액세스할 수 있는 행 액세스 정책이 적용된 데이터
액세스할 수 있는 웨어하우스
Streamlit 앱에서 호출할 수 있는 저장 프로시저
Container Runtime에서 제한된 호출자 권한¶
Container Runtime에서는 동일한 앱에서 소유자 권한과 제한된 호출자 권한을 결합할 수 있습니다.
소유자 권한을 사용하는 연결을 생성하려면 :code:`st.connection(“snowflake”)`을 사용합니다.
제한된 호출자의 권한을 사용하는 연결을 생성하려면 :code:`st.connection(“snowflake-callers-rights”)`을 사용합니다.
자세한 내용은 Streamlit 설명서의 st.connection 및 SnowflakeConnection 을 참조하세요.
다음 예제에서는 호출자 권한 연결을 생성하는 방법을 보여줍니다.
import streamlit as st
conn = st.connection("snowflake-callers-rights")
df = conn.query("SELECT CURRENT_USER()")
st.write(f"Running as: {df[0][0]}")
Container Runtime에서 제한된 호출자 권한을 사용하기 위한 팁 및 제한 사항¶
Sf-Context-Current-User-Token헤더에 제공된 토큰은 2분 동안만 유효하며 앱 세션이 시작될 때 생성됩니다. if-else 블록이나 페이지가 아닌 앱 스크립트의 상단에 호출자 권한 연결을 생성합니다.제한된 호출자의 권한 연결은 Snowsight 에서 선택한 역할이 아닌 뷰어의 기본 역할을 사용합니다.
여러 연결을 생성하여 동일한 앱에서 제한된 호출자 권한 연결과 일반 소유자 권한 연결을 모두 사용할 수 있습니다.
제한된 호출자의 권한 연결은 앱이 Container Runtime을 사용하는 경우에만 작동합니다. 로컬 개발 환경 또는 Warehouse Runtime 환경에서 제한된 호출자 권한 연결을 사용하려고 하면 오류가 발생합니다.
제한된 호출자의 권한은 보조 역할을 지원하지 않습니다.