기능 정책을 사용하여 앱이 만들 수 있는 오브젝트 제한하기¶
이 항목에서는 기능 정책을 사용하여 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
참고
외부 액세스 통합은 기능 정책을 사용하여 차단할 수 없습니다. 대신, 컨슈머는 앱 사양을 사용하여 앱의 엔드포인트를 승인하거나 거부할 수 있습니다.
워크플로¶
앱이 생성할 수 있는 오브젝트를 제한하기 위해 기능 정책을 사용하는 일반적인 워크플로는 다음과 같습니다.
앱 목록을 확인하여 앱이 요청하는 권한을 확인합니다.
제한하려는 오브젝트가 있는 경우 이러한 오브젝트를 차단하는 기능 정책을 만드십시오.
자세한 내용은 새 기능 정책 만들기 섹션을 참조하십시오.
계정 또는 특정 오브젝트에 기능 정책을 적용합니다.
자세한 내용은 계정 수준에서 기능 정책 할당하기 및 앱에 기능 정책 적용하기 섹션을 참조하십시오.
기능 정책 사용 시 복제 고려 사항¶
예를 들어 복제 그룹 또는 장애 조치 그룹에서 :code:`ALLOWED_DATABASES = policy_db`를 설정하는 등 정책이 포함된 데이터베이스를 지정할 때 계정 수준의 기능 정책 참조가 복제됩니다.
계정이 이미 대상 계정에 복제된 경우 컨슈머 계정 관리자는 다음을 수행해야 합니다.
기능 정책을 성공적으로 복제하는 데 필요한 데이터베이스와 오브젝트 유형을 포함하도록 소스 계정의 복제 또는 장애 조치 그룹을 업데이트합니다.
새로 고침 작업을 실행하여 대상 계정을 업데이트합니다.
참고
기능 정책은 계정 수준 정책 할당과 동일한 계정에 있어야 합니다.
계정에 기능 정책이 설정되어 있고 정책이 포함된 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);
참고
기능 정책은 스키마 내에서 생성해야 합니다.
컨슈머는 다음 예시와 같이 오브젝트 생성을 제한하지 않는 기능 정책을 만들 수도 있습니다.
CREATE FEATURE POLICY block_nothing_policy
BLOCKED_OBJECT_TYPES_FOR_CREATION = ();
계정 수준에서 기능 정책 할당하기¶
컨슈머는 다음 예시와 같이 ALTER ACCOUNT 명령을 사용하여 계정 수준에서 기능 정책을 적용할 수 있습니다.
ALTER ACCOUNT
SET FEATURE POLICY feature_policy_db.sch.block_create_db_policy
FOR ALL APPLICATIONS;
이 명령은 계정에 설치된 모든 앱에 대해 block_create_db_policy 정책을 적용합니다. 이 정책을 적용한 후에는 앱에서 더 이상 데이터베이스를 만들 수 없습니다.
앱에 기능 정책 적용하기¶
앱을 수동으로 만들 때 기능 정책을 적용하려면 다음 예시와 같이 CREATE APPLICATION 명령의 WITH FEATURE POLICY 절을 사용합니다.
CREATE APPLICATION hello_snowflake_app
WITH FEATURE POLICY = feature_policy_db.block_create_db_policy;
앱에 기능 정책을 적용하려면 다음 예시와 같이 ALTER APPLICATION 명령을 사용합니다.
ALTER APPLICATION hello_snowflake_app
SET FEATURE POLICY feature_policy_db.block_create_db_policy;
기능 정책 적용 취소하기¶
계정 수준에서 기능 정책을 적용 해제하려면 다음 예와 같이 ALTER ACCOUNT 명령을 사용합니다.
ALTER ACCOUNT UNSET FEATURE POLICY FOR ALL APPLICATIONS;
특정 앱에 대한 기능 정책을 적용 해제하려면 다음 예시와 같이 ALTER APPLICATION 명령을 사용합니다.
ALTER APPLICATION FEATURE_POLICY_TEST_APP UNSET FEATURE POLICY;
기능 정책 삭제하기¶
기능 정책을 삭제하려면 다음 예시와 같이 DROP FEATURE POLICY 명령을 사용합니다.
DROP FEATURE POLICY block_create_db_policy;
기능 정책에 대한 정보 보기¶
액세스 권한이 있는 계정의 기능 정책을 보려면 SHOW FEATURE POLICIES 명령을 사용합니다.
SHOW FEATURE POLICIES ON ACCOUNT;
앱에 적용된 기능 정책을 보려면 다음 명령을 사용합니다.
SHOW FEATURE POLICIES ON APPLICATION hello_snowflake_app;
특정 기능 정책에 대한 정보를 보려면 다음 예시와 같이 DESCRIBE FEATURE POLICY 를 사용하십시오.
DESCRIBE FEATURE POLICY feature_policy_db.block_create_db_policy;