Snowflake Native App 에 대한 액세스 권한 부여하기

이 항목에서는 컨슈머가 자신의 계정에서 Snowflake Native App 이 오브젝트를 생성하고 액세스하도록 허용하는 방법을 설명합니다. 여기에는 앱에서 요청한 권한을 부여하거나 참조를 사용하여 기존 오브젝트에 대한 액세스를 활성화하는 것이 포함됩니다.

애플리케이션에서 요청한 권한 및 참조 정보

간단한 Snowflake Native App 에서는 설치 중에 설정 스크립트 실행 시 앱에서 필요한 모든 오브젝트가 APPLICATION 오브젝트 내부에 생성됩니다. 애플리케이션에서 필요한 모든 오브젝트가 설치된 애플리케이션 내에서 생성되고 액세스됩니다. 컨슈머는 자신의 계정에서 어떤 작업도 수행할 필요가 없습니다.

그러나 일부 앱에서는 컨슈머에게 계정에서 다음 유형의 작업을 수행하도록 요청할 수 있습니다.

  • 데이터베이스 또는 웨어하우스 만들기.

  • 작업 실행.

  • 기존 오브젝트(예: 테이블)에 액세스합니다.

Snowflake Native App 이 요청할 수 있는 액세스 권한 유형에는 다음 두 가지가 있습니다.

  • 앱이 일부 계정 수준 작업을 수행할 수 있도록 하는 권한. 앱은 다음 전역 권한을 요청할 수 있습니다.

    • EXECUTE TASK

    • EXECUTE MANAGED TASK

    • CREATE WAREHOUSE

    • MANAGE WAREHOUSES

    • CREATE DATABASE

    일부 앱은 SNOWFLAKE 데이터베이스에 대한 IMPORTED PRIVILEGES 권한을 요청할 수도 있습니다. 자세한 내용은 SNOWFLAKE 데이터베이스에 대한 IMPORTED PRIVILEGES 권한 부여하기 섹션을 참조하십시오.

  • 앱이 컨슈머 계정에 이미 존재하고 APPLICATION 오브젝트 외부에 있는 오브젝트에 액세스할 수 있도록 허용하는 참조. 공급자가 manifest.yml 파일에서 앱에 필요한 참조를 정의합니다.

    앱을 설치한 후 컨슈머는 오브젝트를 앱에 연결하는 참조 를 생성하여 오브젝트에 대한 액세스 권한을 부여할 수 있습니다.

    앱은 다음 유형의 오브젝트와 해당 권한에 대한 액세스를 요청할 수 있습니다.

    오브젝트 타입

    허용되는 권한

    TABLE

    SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES

    VIEW

    SELECT, REFERENCES

    EXTERNAL TABLE

    SELECT, REFERENCES

    FUNCTION

    USAGE

    PROCEDURE

    USAGE

    WAREHOUSE

    MODIFY, MONITOR, USAGE, OPERATE

    API INTEGRATION

    USAGE

컨슈머는 다음 섹션에서 설명하는 대로 Snowsight 를 사용하거나 SQL 명령을 실행하여 이러한 요청을 승인할 수 있습니다.

참고

요청된 권한을 부여하지 않거나 요청된 오브젝트에 대한 참조를 앱에 연결하지 않으면 앱의 일부가 올바르게 작동하지 않을 수 있습니다.

Snowsight를 사용하여 액세스 요청 관리하기

공급자가 Snowflake Native App 에서 사용자 인터페이스를 구현하는 경우 컨슈머는 Snowsight 를 사용하여 다음을 수행할 수 있습니다.

  • 전역 권한을 확인하고 부여합니다.

  • 컨슈머 계정의 기존 오브젝트에 대한 액세스 권한을 부여합니다.

전역 권한 부여하기

애플리케이션을 설치한 후 권한을 부여하거나 참조를 생성하려면 다음을 수행하십시오.

  1. Snowsight 에 로그인합니다.

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

  3. 애플리케이션을 선택합니다.

  4. 도구 모음에서 Security 아이콘을 선택합니다.

    애플리케이션에서 요청한 계정 수준 권한은 Account level privileges 아래에 나타납니다.

  5. Account-level privileges 섹션에서 Review 를 선택한 다음, 부여하려는 각 권한에 대한 슬라이더를 전환합니다.

  6. Save 를 선택합니다.

특정 오브젝트에 대한 액세스 권한 부여하기

공급자가 Snowflake Native App 에 대한 사용자 인터페이스를 구현하는 경우 컨슈머는 Snowsight 를 사용하여 자신의 계정에 있는 오브젝트에 대한 액세스 권한을 부여할 수 있습니다.

특정 오브젝트에 대한 액세스 권한을 부여하려면 다음을 수행하십시오.

  1. Snowsight 에 로그인합니다.

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

  3. 애플리케이션을 선택합니다.

  4. 도구 모음에서 Security 아이콘을 선택합니다.

  5. Privileges to objects 섹션에서 액세스 권한을 부여하려는 오브젝트 옆에 있는 Add 를 선택합니다.

  6. Select Data 를 선택하고 액세스 권한을 부여하려는 데이터 제품을 선택합니다.

  7. Done 을 선택합니다.

오브젝트에 대한 권한 및 액세스 취소하기

권한을 취소하거나 오브젝트에 대한 액세스 권한을 제거하려면 다음을 수행하십시오.

  1. Snowsight 에 로그인합니다.

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

  3. 애플리케이션을 선택합니다.

  4. 도구 모음에서 Security 아이콘을 선택합니다.

    • 전역 권한을 취소하려면 Edit 버튼을 선택한 다음 취소하려는 권한에 대한 슬라이더를 전환합니다.

    • 특정 오브젝트에서 대한 액세스 권한을 취소하려면 Delete 버튼을 선택한 다음 Revoke Privilege 를 선택합니다.

참고

권한을 취소하거나 오브젝트에서 대한 액세스 권한을 제거하면 애플리케이션이 불안정해지거나 작동을 멈추는 결과를 낳을 수 있습니다.

SQL 명령을 사용하여 앱에 대한 권한 관리하기

애플리케이션 개발자가 권한 부여를 위한 인터페이스를 구현하지 않은 경우 SQL 명령을 사용하여 애플리케이션에 대한 액세스 요청을 관리해야 합니다.

애플리케이션에서 요청한 권한 보기

공급자가 애플리케이션에서 필요한 권한을 지정하면 권한 요청이 설치된 애플리케이션의 일부로 포함됩니다. 애플리케이션을 설치한 후 이러한 권한을 볼 수 있습니다.

애플리케이션에서 필요한 권한을 보려면 다음 예와 같이 SHOW PRIVILEGES 명령을 실행하십시오.

SHOW PRIVILEGES IN APPLICATION hello_snowflake_app;
Copy

Snowflake Native App 에 권한 부여하기

컨슈머는 앱에서 요청한 권한을 확인한 후 해당 권한을 앱에 부여할 수 있습니다.

예를 들어, 앱에 EXECUTE TASK 권한을 부여하려면 다음 예와 같이 GRANT PRIVILEGE 명령을 실행하십시오.

GRANT EXECUTE TASK ON ACCOUNT TO APPLICATION hello_snowflake_app;
Copy

Snowflake Native App 에 MANAGE WAREHOUSES 권한 부여하기

애플리케이션은 MANAGE WAREHOUSES 권한 을 통해 컨슈머 계정 내에서 웨어하우스를 생성, 수정, 사용할 수 있습니다. 앱에 MANAGE WAREHOUSES 권한을 부여하려면 다음 예와 같이 GRANT 를 사용하십시오.

GRANT MANAGE WAREHOUSES ON ACCOUNT TO APPLICATION hello_snowflake_app;
Copy

SNOWFLAKE 데이터베이스에 대한 IMPORTED PRIVILEGES 권한 부여하기

일부 애플리케이션은 컨슈머가 본인 계정의 SNOWFLAKE 데이터베이스에 대한 IMPORTED PRIVILEGES 권한을 부여하도록 요청할 수 있습니다. 이 권한은 SQL 명령으로만 부여할 수 있습니다. Snowsight 를 사용하여 이 권한을 부여할 수 없습니다. 애플리케이션에 이 권한이 필요한 경우 공급자는 예컨대 애플리케이션의 README 파일을 통해 이 요구 사항을 컨슈머에게 전달해야 합니다.

SNOWFLAKE 데이터베이스에 대한 IMPORT 권한을 부여하려면 다음 명령을 실행하십시오.

GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO APPLICATION hello_snowflake_app;
Copy

참고

IMPORTED PRIVILEGES 권한을 통해 앱이 컨슈머 계정과 관련된 사용량과 비용에 대한 정보에 액세스할 수 있습니다. 컨슈머는 이 권한을 부여하기 전에 이 정보를 앱과 공유할지 확인해야 합니다.

수동으로 오브젝트에 대한 액세스 권한 부여하기

공급자가 manifest.yml 파일의 오브젝트에 대한 참조를 정의하면 이 참조 정의는 설치된 앱의 일부로 포함됩니다. 컨슈머는 자신의 계정에서 오브젝트에 대한 참조를 생성하여 앱이 오브젝트에 액세스할 권한을 부여할 수 있습니다. 공급자가 컨슈머 계정의 오브젝트에 대한 액세스를 허용하기 위한 사용자 인터페이스를 만들지 않은 경우 컨슈머는 수동으로 액세스 권한을 부여할 수 있습니다.

컨슈머는 오브젝트에 대해 요청된 권한이 있는 경우 앱과 연결할 오브젝트에 대한 참조를 생성할 수 있습니다. 예를 들어 테이블과 같은 오브젝트에 SELECT 및 INSERT 권한이 필요한 경우 컨슈머는 테이블에 대해 SELECT 및 INSERT 권한이 있는 역할을 사용하여 참조를 생성해야 합니다. 오브젝트 유형과 각 오브젝트에 부여되는 특정 필수 권한을 보려면 앱에서 요청한 참조 보기 를 확인하십시오.

참고

참조는 오브젝트에 대한 어떤 권한도 부여하지 않습니다. 참조를 생성하는 데 사용된 역할이 오브젝트에 대한 권한을 잃으면 참조는 더 이상 유효하지 않습니다. 컨슈머는 다음 중 하나를 수행해야 합니다.

  • 참조를 생성한 역할에 필요한 권한을 복원합니다.

  • 오브젝트에 대해 필요한 권한이 있는 역할을 사용하여 참조를 다시 생성합니다.

앱에서 요청한 참조 보기

컨슈머는 다음 예와 같이 SHOW REFERENCES 명령을 실행하여 앱에서 요청한 참조를 볼 수 있습니다.

SHOW REFERENCES IN APPLICATION hello_snowflake_app;
Copy

이 명령은 앱에 정의된 모든 참조 목록을 표시합니다. 또한 참조를 생성하기 위해 컨슈머 역할이 오브젝트에 대해 가져야 하는 권한도 표시합니다.

참조를 생성하고 참조를 앱에 연결하기

애플리케이션에서 요청한 참조를 확인 한 후 컨슈머는 다음 예와 같이 SYSTEM$REFERENCE 시스템 함수를 실행하여 참조를 생성할 수 있습니다.

SELECT SYSTEM$REFERENCE('table', 'db1.schema1.table1', 'persistent', 'select', 'insert');
Copy

이 명령은 참조를 생성하고 오브젝트에 대한 식별자를 반환합니다. 식별자는 다음 예와 유사한 형태입니다.

ENT_REF_TABLE_16617302895522_2CDD20F5C047A5B87B2CE36F6837715786AF9F2D

컨슈머는 이 식별자를 콜백 저장 프로시저에 전달하여 참조를 앱에 연결합니다.

참고

컨슈머는 앱에서 요청한 각 참조에 대해 이 명령을 실행해야 합니다.

참조를 애플리케이션에 연결하려면 SYSTEM$REFERENCE 시스템 함수를 호출하여 반환된 식별자를 콜백 저장 프로시저에.전달해야 합니다. 콜백 프로시저는 공급자가 참조를 앱에 연결하기 위해 Snowflake Native App 에 생성하는 저장 프로시저입니다.

콜백 프로시저를 사용하려면 다음 명령을 실행하십시오.

CALL app.config.register_single_reference(
  'consumer_table', 'ADD', 'ENT_REF_TABLE_16617302895522_2CDD20F5C047A5B87B2CE36F6837715786AF9F2D');
Copy

이 예에서 register_single_reference() 저장 프로시저는 식별자가 ENT_REF_TABLE_16617302895522_2CDD20F5C047A5B87B2CE36F6837715786AF9F2D 인 참조를 앱에 연결합니다.

참고

공급자는 앱에 다른 콜백 프로시저를 포함할 수 있습니다. 애플리케이션의 README 파일에 이들을 지정해야 합니다.

한 단계로 앱에 대한 참조를 생성하고 연결하기

애플리케이션에서 요청한 참조를 확인 한 후 컨슈머는 참조를 생성하고 SYSTEM$REFERENCE 시스템 함수를 콜백 저장 프로시저에 인자로 전달하여 참조를 앱에 연결할 수 있습니다.

다음 예에서는 SYSTEM$REFERENCE 시스템 함수를 콜백 저장 프로시저에 인자로 전달하는 구문을 보여줍니다.

CALL app.config.register_single_reference(
 'consumer_table', 'ADD', SYSTEM$REFERENCE('table', 'db1.schema1.table1',
 'PERSISTENT', 'SELECT', 'INSERT'));
Copy

이 예에서는 참조를 생성하고 식별자를 콜백 함수에 전달하여 참조를 앱에 연결합니다.