앱의 실행 파일에 대한 제한된 호출자 권한 부여하기

이 항목에서는 컨슈머가 |native-app|의 실행 파일에 호출자 권한을 부여하는 방법을 설명합니다.

앱에서 소유자의 권한 및 제한된 호출자의 권한 정보

앱의 컨텍스트에서는 다음 유형의 실행 파일이 지원됩니다.

  • 앱이 소유한 저장 프로시저

  • 컨테이너가 있는 앱에서 사용 가능한 서비스

이러한 각 유형의 실행 파일은 소유자 권한 또는 제한된 호출자 권한을 사용하도록 구성할 수 있습니다.

소유자의 권리:

기본적으로, 앱 내의 실행 파일은 소유자의 권한을 사용합니다. 실행 파일의 소유자, 즉 앱 자체에 부여된 권한으로 실행됩니다.

예를 들어, 소유자 권한을 통해 실행 파일이 공급자 계정의 데이터에 액세스하고 해당 데이터를 컨슈머에게 제공할 수 있습니다. 그러나 컨슈머가 데이터에 직접 액세스하는 것은 허용하지 않습니다.

예를 들어, CREATE PROCEDURE 명령은 기본적으로 소유자 권한을 사용하는 저장 프로시저를 생성합니다. 컨슈머는 애플리케이션 역할을 사용하여 액세스 권한이 부여된 경우 저장 프로시저 호출할 수 있습니다. 앱에 작업을 수행할 권한이 있는 경우 저장 프로시저는 해당 작업을 수행할 수 있습니다.

소유자 권한에 대한 일반 정보는 호출자 권한 및 소유자 권한 저장 프로시저 이해하기 섹션을 참조하세요.

제한된 호출자의 권한:

제한된 호출자의 권한은 실행 파일이 호출자의 권한으로 실행되도록 허용하지만, 실행 파일이 실행되는 호출자의 권한은 제한합니다. 제한된 호출자의 권한을 적용하면 컨슈머 계정의 관리자가 GRANT CALLER 명령을 사용해 명시적으로 허용하지 않는 한, 앱이 소유한 실행 파일은 특정 권한으로 실행될 수 없습니다.

참고

앱 실행 파일의 보안을 보장하기 위해 |native-apps|는 무제한 호출자의 권한을 지원하지 않습니다.

제한된 호출자의 권한에 대한 일반적인 정보는 제한된 호출자의 권한 섹션을 참조하십시오.

앱에서 제한된 호출자의 권한 범위

Snowflake는 컨슈머가 계정의 특정 오브젝트가 아닌 컨테이너 수준에서 호출자 권한을 부여할 것을 권장합니다.

스키마 수준:

스키마에 대한 호출자 권한은 부여하지만, 스키마의 오브젝트에 대한 권한은 부여하지 않습니다. 예를 들어, 스키마에 대한 CALLER USAGE 호출자 권한 부여는 스키마에 대한 USAGE 권한만 부여합니다. 특정 오브젝트(예: 함수)에 대한 액세스 권한을 부여하려면 GRANT INHERITED CALLER USAGE ON ALL FUNCTIONS IN SCHEMA를 사용합니다.

데이터베이스 수준:

데이터베이스 수준에서 호출자 권한을 부여하면 실행 파일은 데이터베이스와 데이터베이스의 모든 스키마에만 액세스할 수 있습니다. 예를 들어, 데이터베이스에 대한 CALLER USAGE 호출자 권한 부여는 데이터베이스에 대한 USAGE 권한을 부여합니다. 그러나 특정 오브젝트에 대한 액세스 권한을 부여하려면 다음 명령을 사용해야 합니다.

GRANT INHERITED CALLER USAGE ON ALL FUNCTIONS IN DATABASE;
Copy
계정 수준:

계정 수준에서 호출자 권한을 부여하면 실행 파일이 계정 수준 작업을 수행할 수 있습니다. CALLER USAGE 호출자 권한 부여는 실행 파일이 계정에 액세스하는 것만 허용하며 계정 내의 오브젝트에 대한 액세스는 제공하지 않습니다.

특정 오브젝트에 대한 액세스를 허용하려면 계정에서 특정 유형의 오브젝트에 대한 액세스 권한을 부여합니다. 예를 들어, CREATE DATABASE 호출자 권한 부여를 사용하면 다음 예와 같이 실행 파일이 컨슈머 계정에 데이터베이스를 생성할 수 있습니다.

GRANT CALLER CREATE DATABASE ON ACCOUNT TO my_app;
Copy

앱에 부여할 수 있는 계정 수준 호출자 권한

공급자는 다음과 같은 계정 수준 호출자 권한을 사용하도록 앱에서 실행 파일을 구성할 수 있습니다.

  • CREATE DATABASE

  • EXECUTE ALERT

  • EXECUTE MANAGED TASK

  • EXECUTE TASK

  • READ SESSION

  • VIEW LINEAGE

참고

컨슈머는 앱에 계정 수준 호출자 권한을 부여할 때 주의해야 합니다.

앱에 제한된 호출자의 권한을 부여하는 데 필요한 권한

컨슈머로서 앱에 호출자 권한을 부여하려면 ACCOUNTADMIN 역할을 사용하거나 MANAGE CALLER GRANTS 권한이 있는 역할을 사용해야 합니다. 자세한 내용은 GRANT CALLER 섹션을 참조하십시오.

Snowsight 를 사용하여 앱의 실행 파일에 호출자 권한 부여하기

Snowsight 를 사용하여 컨슈머 계정의 오브젝트에 대한 앱에 호출자 권한을 부여할 수 있습니다.

참고

앱에서 호출자 권한 부여 취소, 특정 테이블에 호출자 권한 부여 또는 계정 수준 호출자 권한 부여 등 다른 작업을 수행하려면 적절한 SQL 명령을 사용해야 합니다.

  1. Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 Catalog » Apps 를 선택합니다.

  3. 앱을 선택합니다.

  4. 도구 모음에서 Settings 아이콘을 클릭한 다음 Privileges 탭을 선택합니다.

    앱이 제한된 호출자 권한을 지원하는 경우 Privileges 탭에 Restricted caller’s rights 섹션이 표시됩니다.

    참고

    공급자가 제한된 호출자의 권한 UI 를 표시하도록 앱을 구성한 경우에만 Snowsight 에서 호출자 권한을 부여할 수 있습니다.

  5. Add grants 를 클릭합니다.

  6. Access scope 를 선택합니다.

    호출자의 권한이 스키마, 데이터베이스 또는 계정 수준에서 적용되는지 여부를 결정합니다. 앱에 불필요한 권한이 부여되지 않도록 가능한 한 범위가 가장 적은 옵션을 선택해야 합니다.

    조심

    계정 수준 범위를 선택할 때는 지원되는 모든 오브젝트 유형에 대해 앱에 대한 호출자의 권한을 부여할 수 있으므로 주의하십시오.

  7. 스키마 또는 데이터베이스 범위를 선택한 경우 요구 사항에 따라 스키마 또는 데이터베이스를 선택합니다.

참고

여러 스키마 또는 데이터베이스를 선택할 수 있습니다. 다른 데이터베이스에서 스키마를 선택할 수도 있습니다.

  1. Next 을 클릭합니다.

  2. 호출자에게 권한을 부여할 오브젝트 유형을 선택합니다.

    검색을 사용하여 오브젝트 유형을 찾습니다. 오브젝트 유형 목록은 위에서 선택한 범위에 따라 달라집니다.

    오브젝트 유형을 선택하면 목록에서 해당 오브젝트의 항목이 각 오브젝트 유형에 대해 사용 가능한 권한으로 확장됩니다.

  3. 부여할 권한을 선택합니다.

    각 오브젝트 유형에 대해 여러 권한을 선택할 수 있습니다. 다른 오브젝트 유형에 대한 권한을 선택할 수도 있습니다.

    참고

    Snowflake는 선택한 모든 오브젝트에 USAGE 권한을 자동으로 부여합니다.

  4. Next 을 클릭합니다.

  5. Grant summary 를 선택하여 선택한 범위, 오브젝트 유형 및 권한을 확인합니다.

    참고

    앞으로 생성되는 선택한 유형의 모든 오브젝트는 선택한 범위와 오브젝트 유형을 사용하여 동일한 권한으로 생성됩니다.

  6. SQL 을 선택하면 Snowsight 가 실행할 GRANT CALLER 명령을 볼 수 있습니다.

    참고

    필요한 경우 이러한 명령을 복사하여 워크시트에서 수동으로 실행할 수 있습니다.

  7. Save 를 클릭합니다.

선택한 범위, 오브젝트 및 권한은 Restricted caller’s rights section 에 표시됩니다.

선택한 권한을 수정하려면 Edit 를 클릭하고 요구 사항에 따라 권한을 선택하거나 선택 해제합니다.

SQL 을 사용하여 앱의 실행 파일에 호출자 권한 부여하기

제한된 호출자 권한을 요청하는 앱을 구성하는 경우 다음 작업을 수행하여 앱에 호출자 권한을 부여하십시오.

  1. 앱 목록을 확인하여 공급자가 앱에 RCR 실행 파일이 있다고 전달했는지 확인합니다.

  2. 목록에 언급된 대로 호출자에게 권한을 부여합니다. 다음 예에서는 GRANT CALLER 명령을 사용하여 특정 데이터베이스 및 스키마의 모든 테이블에 SELECT 권한을 부여하는 방법을 보여줍니다.

    GRANT CALLER USAGE ON DATABASE db1
      TO APPLICATION hello_snowflake_app;
    GRANT CALLER USAGE ON SCHEMA db1.sch1
      TO APPLICATION hello_snowflake_app;
    GRANT INHERITED CALLER SELECT ON ALL TABLES IN SCHEMA db.sch1
      TO APPLICATION hello_snowflake_app;
    
    Copy

    이 명령을 사용하면 호출자 권한이 제한된 실행 파일이 db.sch1 데이터베이스 및 스키마가 있는 모든 테이블의 데이터베이스 쿼리 실행에 액세스할 수 있습니다. 모든 테이블에 SELECT 권한을 부여하는 것 외에 데이터베이스 및 스키마에 USAGE 권한도 부여해야 합니다.