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

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

기능 정책 정보

앱이 :doc:`자동 권한 부여<requesting-auto-privs>`를 사용하도록 구성된 경우 앱은 다음 권한을 사용하도록 요청할 수 있습니다.

  • 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. 계정 또는 특정 오브젝트에 기능 정책을 적용합니다.

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

기능 정책 사용 시 복제 고려 사항

예를 들어 복제 그룹 또는 장애 조치 그룹에서 :code:`ALLOWED_DATABASES = policy_db`를 설정하는 등 정책이 포함된 데이터베이스를 지정할 때 계정 수준의 기능 정책 참조가 복제됩니다.

계정이 이미 대상 계정에 복제된 경우 컨슈머 계정 관리자는 다음을 수행해야 합니다.

  1. 기능 정책을 성공적으로 복제하는 데 필요한 데이터베이스와 오브젝트 유형을 포함하도록 소스 계정의 복제 또는 장애 조치 그룹을 업데이트합니다.

  2. 새로 고침 작업을 실행하여 대상 계정을 업데이트합니다.

참고

기능 정책은 계정 수준 정책 할당과 동일한 계정에 있어야 합니다.

계정에 기능 정책이 설정되어 있고 정책이 포함된 policy_db를 포함하도록 복제 또는 장애 조치 그룹을 업데이트하지 않으면 대상 계정에 허상 참조가 생성됩니다. 이 경우 허상 참조는 정책의 정규화된 이름이 소스 계정의 데이터베이스를 가리키므로 Snowflake가 대상 계정에서 정책을 찾을 수 없음을 의미합니다. 결과적으로 대상 계정 또는 대상 계정의 사용자는 기능 정책을 준수할 필요가 없습니다.

기능 정책을 성공적으로 복제하려면 복제 또는 장애 조치 그룹에 허상 참조를 방지하는 데 필요한 오브젝트 유형과 데이터베이스가 포함되어 있는지 확인합니다.

자세한 내용은 복제 고려 사항 섹션을 참조하십시오.

기능 정책 우선 순위

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

계정:

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

오브젝트:

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

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

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

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

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

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

권한

오브젝트

참고

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