공급자 지식 재산 보호하기

이 항목에서는 Snowflake Native App 이 공유하는 오브젝트에 대한 정보를 수정하거나 제거하여 Snowflake Native App Framework 가 공급자 데이터를 보호하는 방법을 설명합니다.

Snowflake Native App Framework 에서의 지식재산권 보호 정보

컨슈머가 Snowflake Native App 을 설치하면 공급자가 애플리케이션 역할을 사용하여 오브젝트에 대한 권한을 부여하지 않는 한 애플리케이션 오브젝트 내의 오브젝트를 볼 수 없습니다.

일반적으로 컨슈머가 스키마와 뷰를 사용하여 오브젝트 메타데이터를 쿼리하거나 Snowsight 를 사용하여 해당 쿼리에 대한 Query Profile 또는 Query History 를 보는 경우 Snowflake Native App Framework 는 애플리케이션 오브젝트 내의 오브젝트에 대한 정보를 수정합니다.

쿼리 프로필에서 수정된 정보

Snowflake Native App Framework 는 다음과 같은 컨텍스트에서 쿼리 프로필 의 정보를 수정합니다.

  • 앱이 설치되거나 업그레이드될 때 실행되는 쿼리입니다.

  • 앱이 소유한 저장 프로시저에서 발생하는 쿼리입니다.

  • 앱이 소유한 안전하지 않은 뷰 또는 함수가 포함된 쿼리입니다.

이러한 각 유형의 쿼리에 대해 Snowsight 는 전체 쿼리 프로필 트리를 표시하는 대신 쿼리 프로필 데이터를 비어 있는 단일 노드로 축소합니다.

쿼리 기록에서 수정된 정보

Snowflake Native App 과 관련된 쿼리의 경우 query_texterror_message 필드는 다음 컨텍스트의 쿼리 기록 에서 수정됩니다.

  • 앱이 설치되거나 업그레이드될 때 실행되는 쿼리.

  • 앱이 소유한 저장 프로시저의 하위 작업에서 발생하는 쿼리.

이러한 각 상황에서 Snowsight 의 쿼리 기록 셀은 공백으로 나타납니다.

SQL 명령 및 뷰에서 수정된 정보

컨슈머가 SHOW 또는 DESCRIBE 명령을 사용하여 애플리케이션 오브젝트 또는 앱이 소유한 오브젝트에 대한 정보를 보는 경우 구현 세부 사항에 대한 정보가 수정됩니다. 예를 들어, 함수 정의 및 함수 본문은 이러한 명령의 출력에서 수정됩니다.

구현 세부 사항에 대한 정보는 다음 컨텍스트의 ACCESS_HISTORY 뷰에서 수정됩니다.

  • 앱이 설치되거나 업그레이드될 때 생성되는 쿼리.

  • 앱이 소유한 저장 프로시저 및 사용자 정의 함수에 의해 생성된 쿼리.

또한 앱이 소유한 뷰의 경우 기본 테이블에 대한 정보가 수정됩니다.

동적 테이블에 MONITOR 또는 OPERATE 권한을 부여할 때 고려할 사항

공급자는 동적 테이블에 대한 MONITOR 또는 OPERATE 권한을 애플리케이션 역할에 부여할 때 주의를 기울여야 합니다. 이러한 권한을 통해 컨슈머는 동적 테이블의 메타데이터를 볼 수 있으며, 이 경우 앱의 구현 세부 정보가 노출될 수 있습니다. 컨슈머가 수행할 수 있는 작업에 대한 자세한 내용은 동적 테이블의 메타데이터 보기 권한 섹션을 참조하십시오.

차단된 컨텍스트 함수

애플리케이션 오브젝트 내의 오브젝트와 관련된 정보를 보호하기 위해 Snowflake Native App Framework 는 다음 컨텍스트 함수를 차단합니다.

컨텍스트 함수

공유 콘텐츠에서 차단됨(null 반환)

설정 스크립트와 Snowflake Native App 이 소유한 저장 프로시저 및 UDF에서 차단됨(예외를 발생시킴).

CURRENT_ROLE

CURRENT_ROLE_TYPE

CURRENT_USER

CURRENT_SESSION

IS_ROLE_IN_SESSION

CURRENT_IP_ADDRESS

CURRENT_AVAILABLE_ROLES

CURRENT_SECONDARY_ROLES

ALL_USER_NAMES

GET_USERS_FOR_COLLABORATION

CURRENT_WAREHOUSE

SYSTEM$ALLOWLIST

공유 콘텐츠 보호하기

공급자 데이터 콘텐츠의 개인 정보와 무결성을 보호하기 위해 Snowflake Native App Framework 는 다음과 같은 제한 사항을 구현합니다.

  • 공유 오브젝트는 애플리케이션 오브젝트와 설치된 Snowflake Native App 에 대해 읽기 전용입니다.

  • 공유 오브젝트는 컨슈머에게 직접 노출되지 않습니다. 오브젝트는 Snowflake Native App 설치 또는 업그레이드 중에 설정 스크립트가 실행될 때 설치된 뷰를 통해서만 노출됩니다.

  • 공급자만 공유 콘텐츠를 업데이트할 수 있습니다.

  • 다음 오브젝트만 애플리케이션 오브젝트 또는 설치된 Snowflake Native App 과 공유할 수 있습니다. 이러한 오브젝트에는 특정 권한이 있어야 합니다.

    • 스키마: 애플리케이션 패키지의 공유 콘텐츠에 USAGE 권한만 부여할 수 있습니다.

    • 테이블: 애플리케이션 패키지의 공유 콘텐츠에 SELECT 권한만 부여할 수 있습니다. 정의된 정책(행 액세스 정책, 마스킹 정책, 태그 기반 정책 등)이 있는 테이블은 공유할 수 없습니다. 컨슈머에게 노출 시 오브젝트에 대해 정책을 정의할 수 있습니다.

    • 뷰: 애플리케이션 패키지의 공유 콘텐츠에 SELECT 권한만 부여할 수 있습니다. 행 액세스, 마스킹, 태그 기반 등을 포함하여 정의된 정책이 있는 뷰는 공유할 수 없습니다.

참고

뷰 또는 뷰가 구성되는 원본이 되는 뷰는 JavaScript, Java, Python 또는 Scala 함수를 포함할 수 없습니다.

자세한 내용은 컨슈머가 앱에서 공유 오브젝트에 액세스하도록 허용 섹션을 참조하십시오.