기능 정책을 사용하여 앱이 만들 수 있는 오브젝트 제한하기

이 항목에서는 기능 정책을 사용하여 Snowflake Native App 에서 만들 수 있는 오브젝트를 제한하는 방법에 대해 설명합니다.

기능 정책 정보

앱이 자동 권한 부여를 사용하도록 구성된 경우 앱은 다음 권한을 사용하도록 요청할 수 있습니다.

  • EXECUTE TASK

  • EXECUTE MANAGED TASK

  • CREATE WAREHOUSE

  • CREATE COMPUTE POOL

  • BIND SERVICE ENDPOINT

  • CREATE DATABASE

  • CREATE EXTERNAL ACCESS INTEGRATION

컨슈머는 앱이 설치된 후에는 이러한 권한을 취소할 수 없습니다. 그러나 기능 정책을 통해 컨슈머는 앱이 생성할 수 있는 오브젝트를 제한할 수 있습니다.

예를 들어 앱이 웨어하우스 또는 컴퓨팅 풀을 생성하지 못하게 하려는 경우, 컨슈머 계정 관리자는 특정 앱 또는 모든 앱이 웨어하우스 또는 컴퓨팅 풀을 생성하지 못하도록 하는 기능 정책을 만들 수 있습니다.

기능 정책을 통해 컨슈머는 앱이 다음 오브젝트를 만들거나 사용하지 못하도록 제한할 수 있습니다.

  • COMPUTE POOLS

  • DATABASES

  • TASKS

  • WAREHOUSES

참고

외부 액세스 통합은 기능 정책을 사용하여 차단할 수 없습니다. 대신, 컨슈머는 앱 사양을 사용하여 앱의 엔드포인트를 승인하도록 선택할 수 있습니다.

제한 사항

  • 기능 정책은 데이터베이스, 스키마 또는 복제를 사용하는 데이터베이스 내의 모든 오브젝트에는 지원되지 않습니다. 복제 그룹의 일부인 오브젝트에 대해서는 기능 정책을 건너뜁니다.

워크플로

기능 정책을 사용하여 앱이 생성할 수 있는 오브젝트를 제한하는 일반적인 워크플로입니다.

  1. 앱 목록을 확인하여 앱이 요청하는 권한을 확인합니다.

  2. 제한하려는 오브젝트가 있는 경우 이러한 오브젝트를 차단하는 기능 정책을 만드십시오.

    자세한 내용은 새 기능 정책 만들기 섹션을 참조하십시오.

  3. 계정 또는 특정 오브젝트에 기능 정책을 적용합니다.

    자세한 내용은 계정 수준에서 기능 정책 할당하기앱에 기능 정책 적용하기 섹션을 참조하십시오.

기능 정책 우선 순위

컨슈머는 계정의 모든 애플리케이션 또는 지정된 애플리케이션에 기능 정책을 적용할 수 있습니다. 이들 중 둘 이상에 적용되는 기능 정책이 있는 경우 가장 구체적인 기능 정책이 상대적으로 더 일반적인 기능 정책보다 우선합니다. 다음은 우선 순위를 요약한 것입니다.

계정:

계정에 적용되는 기능 정책은 가장 일반적인 기능 정책입니다. 특정 오브젝트(예: 애플리케이션)에 적용되는 기능 정책에 의해 재정의됩니다.

오브젝트:

특정 오브젝트에 적용된 기능 정책이 계정에 적용된 기능 정책보다 우선합니다.

컨슈머는 이 우선순위를 사용하여 앱이 자신의 계정에서 생성할 수 있는 오브젝트를 세부적으로 조정할 수 있습니다. 예를 들어, 컨슈머는 계정의 모든 앱이 데이터베이스를 만들지 못하도록 하는 계정 수준 기능 정책을 적용할 수 있습니다. 앱이 설치 중에 데이터베이스를 만들려고 하면 설치가 실패합니다.

그러나 컨슈머는 제한 없이 기능 정책을 생성하고 특정 앱에 기능 정책을 적용할 수도 있습니다. 해당 앱은 데이터베이스를 만들 수 있습니다.

자세한 내용은 새 기능 정책 만들기 섹션을 참조하십시오.

기능 정책을 사용하는 데 필요한 권한

다음 표에서는 기능 정책을 만들고 사용하는 데 필요한 권한에 대해 설명합니다.

권한

오브젝트

참고

CREATE FEATURE POLICY

SCHEMA

기능 정책을 만드는 데 필요합니다. 이 권한은 기능 정책이 포함된 스키마에 부여되어야 합니다.

APPLY FEATURE POLICY

ACCOUNT

APPLY 또는 OWNERSHIP

FEATURE POLICY

기능 정책으로 작업하기

컨슈머는 Snowsight 또는 SQL 에서 기능 정책의 수명 주기를 관리할 수 있습니다.

새 기능 정책 만들기

컨슈머는 기능 정책을 생성하여 앱이 특정 유형의 오브젝트를 생성하지 못하도록 금지할 수 있습니다. 다음 예에서는 앱이 데이터베이스를 만들지 못하도록 하는 기능 정책을 만드는 방법을 보여줍니다.

CREATE DATABASE feature_policy_db;
CREATE SCHEMA sch;
CREATE FEATURE POLICY block_create_db_policy
  BLOCKED_OBJECT_TYPES_FOR_CREATION = (DATABASE);
Copy

참고

기능 정책은 스키마로 만들어야 합니다.

컨슈머는 다음 예시와 같이 오브젝트 생성을 제한하지 않는 기능 정책을 만들 수도 있습니다.

CREATE FEATURE POLICY block_nothing_policy
  BLOCKED_OBJECT_TYPES_FOR_CREATION = ();
Copy

계정 수준에서 기능 정책 할당하기

컨슈머는 다음 예시와 같이 ALTER ACCOUNT 명령을 사용하여 계정 수준에서 기능 정책을 적용할 수 있습니다.

ALTER ACCOUNT
  SET FEATURE POLICY feature_policy_db.sch.block_create_db_policy
  FOR ALL APPLICATIONS;
Copy

이 명령은 계정에 설치된 모든 앱에 대해 block_create_db_policy 정책을 적용합니다. 이 정책을 적용한 후에는 앱에서 더 이상 데이터베이스를 만들 수 없습니다.

앱에 기능 정책 적용하기

앱을 수동으로 만들 때 기능 정책을 적용하려면 다음 예시와 같이 CREATE APPLICATION 명령의 WITH FEATURE POLICY 절을 사용합니다.

CREATE APPLICATION hello_snowflake_app
  WITH FEATURE POLICY = feature_policy_db.block_create_db_policy;
Copy

앱에 기능 정책을 적용하려면 다음 예시와 같이 ALTER APPLICATION 명령을 사용합니다.

ALTER APPLICATION hello_snowflake_app
  SET FEATURE POLICY feature_policy_db.block_create_db_policy;
Copy

기능 정책 적용 취소하기

계정 수준에서 기능 정책을 적용 해제하려면 다음 예와 같이 ALTER ACCOUNT 명령을 사용합니다.

ALTER ACCOUNT UNSET FEATURE POLICY FOR ALL APPLICATIONS;
Copy

특정 앱에 대한 기능 정책을 적용 해제하려면 다음 예시와 같이 ALTER APPLICATION 명령을 사용합니다.

ALTER APPLICATION FEATURE_POLICY_TEST_APP UNSET FEATURE POLICY;
Copy

기능 정책 삭제하기

기능 정책을 삭제하려면 다음 예시와 같이 DROP FEATURE POLICY 명령을 사용합니다.

DROP FEATURE POLICY block_create_db_policy;
Copy

기능 정책에 대한 정보 보기

액세스 권한이 있는 계정의 기능 정책을 보려면 SHOW FEATURE POLICIES 명령을 사용합니다.

SHOW FEATURE POLICIES ON ACCOUNT;
Copy

앱에 적용된 기능 정책을 보려면 다음 명령을 사용합니다.

SHOW FEATURE POLICIES ON APPLICATION hello_snowflake_app;
Copy

특정 기능 정책에 대한 정보를 보려면 다음 예시와 같이 DESCRIBE FEATURE POLICY 를 사용하십시오.

DESCRIBE FEATURE POLICY feature_policy_db.block_create_db_policy;
Copy