오브젝트 태그 지정

이 항목에서는 Snowflake에서 태그를 사용하는 방법에 대한 개념과 지침을 제공합니다.

태그와 함께 마스킹 정책을 사용하는 방법에 대해 자세히 알아보려면 태그 기반 마스킹 정책 섹션을 참조하십시오.

이 항목의 내용:

태그란 무엇입니까?

태그를 사용하면 데이터 관리자는 중앙 집중식 또는 분산형 데이터 거버넌스 관리 방식으로 규정 준수, 검색, 보호 및 리소스 사용의 사용 사례를 위해 민감한 데이터를 모니터링할 수 있습니다.

태그는 다른 Snowflake 오브젝트에 할당할 수 있는 스키마 수준 오브젝트입니다. 태그를 Snowflake 오브젝트에 할당할 때 태그에 임의의 문자열 값을 할당할 수 있습니다. Snowflake는 태그 및 해당 문자열 값을 키-값 페어로 저장합니다. 태그는 스키마에 고유하며 태그 값은 항상 문자열이어야 합니다.

CREATE TAG 문을 사용하여 태그를 만들고 태그를 오브젝트에 할당할 때 태그 문자열 값을 지정합니다. 태그가 이미 존재한다고 가정하고 CREATE <오브젝트> 문을 사용하여 오브젝트를 만드는 동안 오브젝트에 태그를 할당할 수 있습니다. 또는 ALTER <오브젝트> 문을 사용하여 기존 오브젝트에 태그를 할당할 수 있습니다.

동시에 단일 태그를 다른 오브젝트 타입에 할당할 수 있습니다(예: 웨어하우스 및 테이블에 동시에). 할당할 때 태그 문자열 값은 중복되거나 고유할 수 있습니다. 예를 들어, 여러 테이블을 cost_center 태그에 할당할 수 있으며 태그의 문자열 값이 항상 sales일 수 있습니다. 아니면, 문자열 값이 다를 수 있습니다(예: engineering, marketing, finance). 태그를 정의하고 태그를 Snowflake 오브젝트에 연결한 후에는 태그를 쿼리하여 오브젝트에서의 태그 사용을 모니터링함으로써 모니터링, 감사 및 보고 등 데이터 거버넌스 작업을 간소화할 수 있습니다.

태그는 테이블, 뷰 및 열에 할당할 수 있으므로, 태그를 설정한 후 태그를 쿼리하면 민감한 정보가 포함된 여러 데이터베이스 오브젝트 및 열을 검색할 수 있습니다. 검색할 때 데이터 관리자는 행 액세스 정책 을 사용한 선택적 필터링 또는 데이터 토큰화, 완전 마스킹, 부분 마스킹 또는 마스킹 미수행을 결정하기 위한 마스킹 정책 사용과 같이 데이터를 가장 잘 활용할 수 있는 방법을 결정할 수 있습니다.

웨어하우스에 태그를 지정하면 리소스 사용을 정확하게 모니터링할 수 있습니다. 리소스에 대한 태그를 쿼리하면 비용 센터 또는 기타 조직 단위를 기준으로 편리하게 리소스를 그룹화할 수 있습니다. 또한, 태그를 사용하면 프로젝트와 같이 상대적으로 단기간의 비즈니스 활동을 편리하게 분석하여 어떤 리소스가 언제 어떻게 사용되었는지에 대한 세부적인 정보를 얻을 수 있습니다.

오브젝트 및 열에 대한 태그 할당량

각 태그의 문자열 값은 최대 256자가 될 수 있으며, 태그에 허용되는 값 을 지정하는 옵션이 있습니다.

다음 설명은 테이블과 뷰가 아닌 모든 오브젝트에 적용됩니다.

Snowflake에서는 단일 오브젝트에 설정할 수 있는 고유한 태그 키의 최대 수가 50개입니다. CREATE <오브젝트> 또는 ALTER <오브젝트> 문에서 100은 단일 문에 지정할 수 있는 최대 태그 수입니다.

고유 태그의 최대 개수는 테이블과 뷰의 열을 포함하여 테이블과 뷰에 대해 약간 다릅니다.

테이블, 뷰, 열

테이블 또는 뷰와 해당 열의 경우, 단일 CREATE <오브젝트> 또는 ALTER <오브젝트> 문에 지정할 수 있는 고유 태그의 최대 개수는 100개입니다. 이 전체 값에는 다음과 같은 제한이 있습니다.

  • 단일 테이블 또는 뷰 오브젝트: 고유 태그 50개.

  • 단일 테이블 또는 뷰에 결합된 모든 열: 고유 태그 50개.

예를 들어 테이블의 단일 열에 그 열에 대해 설정된 10개의 고유한 태그가 있는 경우 Snowflake에서는 다음을 허용합니다.

  • 테이블에서 같은 열이나 다른 열 또는 테이블에 있는 열의 조합에서 추가 고유 태그 40개 설정.

  • 테이블 자체에서 추가 고유 태그 50개 설정.

테이블 자체와 그 테이블의 열에 대해 고유 태그 50개의 제한이 충족되면 테이블 또는 테이블의 열에서 태그를 추가로 설정할 수 없습니다. 이때 테이블이나 테이블의 열에 추가 태그를 설정하려는 경우, 그다음에 고려해야 할 단계는 오브젝트에 대한 태그 할당량을 관리하는 방법입니다.

태그 할당량 관리하기

고유한 태그의 최대 개수 50개에는 DROP TAG 문을 사용해 태그를 삭제한 시점부터 24시간 동안 삭제한 태그가 포함됩니다. 기간을 이렇게 정하는 이유는 필요한 경우에 태그를 삭제한 사용자가 UNDROP TAG 문을 실행할 수 있도록 하기 위해서입니다. UNDROP TAG 작업이 24시간의 간격 내에 실행되면 Snowflake가 해당 삭제 작업 이전의 최신 상태였던 태그 할당(즉, 참조)을 복원합니다.

24시간의 기간이 만료되면 Snowflake가 삭제된 태그와 관련된 모든 참조를 제거합니다. 이때, 삭제된 태그를 한 번 참조한 오브젝트 또는 열에 새 태그를 할당할 수 있습니다.

오브젝트에 대한 태그 할당량을 관리하려면 다음 절차를 따르십시오.

  1. Account Usage에서 TAG_REFERENCES 뷰를 쿼리하여 태그 할당을 결정합니다.

  2. 오브젝트 또는 열에서 태그를 설정 해제합니다. 예:

    오브젝트의 경우 해당 ALTER <오브젝트> ... UNSET TAG 명령을 사용합니다.

    테이블 또는 뷰 열의 경우 해당 ALTER { TABLE | VIEW } ... { ALTER | MODIFY } COLUMN ... UNSET TAG 명령을 사용합니다.

  3. DROP TAG 문을 사용하여 태그를 삭제합니다.

태그 값 지정하기

태그 속성을 사용하여 ALLOWED_VALUES 오브젝트 에서 태그가 설정될 때 태그에 할당할 수 있는 문자열 값을 지정할 수 있습니다. 단일 태그에 가능한 문자열 값의 최대 개수는 300개입니다.

CREATE TAG 문으로 태그를 만들거나 바꿀 때, 또는 ALTER TAG 문으로 기존 태그 키를 수정하는 동안 이러한 값을 지정할 수 있습니다. ALTER TAG 문은 태그에 허용되는 값 추가 태그에 대한 기존 값 삭제를 지원합니다.

태그에 대해 허용된 값의 목록을 확인하려면 GET_DDL 함수 또는 SYSTEM$GET_TAG_ALLOWED_VALUES 함수를 호출하십시오.

예:

'finance''engineering' 의 두 가지 허용된 문자열 값만으로 cost_center 로 명명된 태그를 생성합니다.

create tag cost_center
    allowed_values 'finance', 'engineering';
Copy

허용되는 값을 확인합니다.

select get_ddl('tag', 'cost_center')

+------------------------------------------------------------------------------+
| GET_DDL('tag', 'cost_center')                                                |
|------------------------------------------------------------------------------|
| create or replace tag cost_center allowed_values = 'finance', 'engineering'; |
+------------------------------------------------------------------------------+
Copy

허용된 문자열 값으로 'marketing' 을 추가하도록 cost_center 로 명명된 태그를 수정합니다.

alter tag cost_center
    add allowed_values 'marketing';
Copy

허용된 문자열 값으로 'engineering' 을 삭제하도록 cost_center 로 명명된 태그를 수정합니다.

alter tag cost_center
    drop allowed_values 'engineering';
Copy

주어진 태그에 대해 허용된 문자열 값의 목록을 얻으려면 GET_DDL 함수 또는 SYSTEM$GET_TAG_ALLOWED_VALUES 함수를 호출하십시오. 예를 들어 태그 cost_centergovernance 로 명명된 데이터베이스와 tags 로 명명된 스키마에 저장되어 있다고 가정합니다.

select system$get_tag_allowed_values('governance.tags.cost_center');

+--------------------------------------------------------------+
| SYSTEM$GET_TAG_ALLOWED_VALUES('GOVERNANCE.TAGS.COST_CENTER') |
|--------------------------------------------------------------|
| ["finance","marketing"]                                      |
+--------------------------------------------------------------+
Copy

태그 계보

태그는 Snowflake 보안 오브젝트 계층 구조에 따라 상속됩니다. Snowflake는 사용자 Snowflake 환경의 보안 오브젝트 계층 구조에 최대한 가깝게 태그 키를 정의하는 것을 권장합니다.

태그 관리자는 테이블과 뷰에 마스킹 정책을 적용할 수 있습니다.

태그 상속이란 태그가 테이블에 적용되는 경우 해당 태그도 해당 테이블의 열에 적용됨을 의미합니다. 이러한 동작을 태그 계보라고 합니다.

주어진 오브젝트에서 상속된 태그를 재정의할 수 있습니다. 예를 들어 테이블 열이 sales라는 문자열 값과 함께 cost_center라는 이름의 태그를 상속하는 경우, sales_na와 같은 더 구체적인 태그 문자열 값으로 태그를 업데이트하여 북미 영업 비용 센터를 지정할 수 있습니다. 또한, 새 태그를 테이블 열에 적용할 수도 있습니다. ALTER TABLE … ALTER COLUMN 문을 사용하여 해당 열에서 태그 문자열 값을 업데이트하고 열에 하나 이상의 추가 태그를 설정합니다.

태그 키를 정의하고 태그를 Snowflake 오브젝트에 할당한 후에는 지정된 테이블 함수를 사용하여 태그, 태그 참조 및 태그 계보를 모니터링하거나 이 항목의 SQL로 태그 모니터링하기 에서와 같이 뷰를 쿼리할 수 있습니다.

참고

태그 계보에는 중첩된 오브젝트에 대한 전파 가 포함되지 않습니다. 예:

table_1 » view_1 » materialized_view_1

기본 테이블 또는 뷰와 관련하여 중첩된 오브젝트가 이미 존재하는 경우, 기본 오브젝트에 태그가 설정되어 있더라도 중첩된 오브젝트에 자동으로 태그가 설정되지는 않습니다. 이 예에서는 table_1 에 태그를 설정해도 같은 태그가 view_1materialized_view_1 에 설정되지는 않습니다. 이 동작은 열의 경우도 마찬가지입니다.

기본 오브젝트 또는 열의 태그가 중첩된 오브젝트로도 넘어가도록 해야 하는 경우, 중첩된 오브젝트에서 CREATE OR REPLACE 문을 실행하는 것과 함께, SQL 문이 중첩된 오브젝트 또는 열에 태그를 지정하도록 하십시오.

이점

사용 편의성:

태그를 한 번 정의하면 여러 다른 오브젝트에 여러 번 적용할 수 있습니다.

태그 계보:

태그는 상속되므로, 보안 오브젝트 계층 구조에서 높은 수준의 오브젝트에 태그를 적용하면 모든 하위 오브젝트에도 해당 태그가 적용됩니다. 예를 들어, 테이블에 태그를 설정하면 해당 테이블의 모든 열에 태그가 상속됩니다.

복제 시 일관적인 할당:

Snowflake는 기본 데이터베이스의 태그 및 태그 할당을 보조 데이터베이스로 복제합니다.

자세한 내용은 이 항목의 복제 섹션을 참조하십시오.

민감한 데이터 추적 및 리소스 사용:

태그를 사용하면 민감한 데이터(예: PII, 시크릿)를 편리하게 식별하고 Snowflake 리소스 사용 현황을 확인할 수 있습니다. 동일한 시스템의 데이터와 메타데이터를 사용하여 분석가는 태그 정의(예: cost_center, department)에 따라 어떤 리소스가 Snowflake 크레딧을 가장 많이 사용하는지 빠르게 결정할 수 있습니다.

중앙 집중식 또는 분산형 관리:

태그는 내부 및 외부 규정 요구 사항을 준수할 수 있도록 다양한 관리 방식을 지원합니다.

중앙 집중식 방식에서 tag_admin 사용자 지정 역할은 태그를 생성하여 Snowflake 오브젝트에 적용합니다.

분산형 방식에서 개별 팀은 Snowflake 오브젝트에 태그를 적용하고 tag_admin 사용자 지정 역할은 태그를 생성하여 일관적으로 태그 이름을 지정할 수 있습니다.

고려 사항

향후 권한 부여:

태그에 대한 향후 권한 부여 는 지원되지 않습니다.

해결 방법으로 APPLY TAG 권한을 사용자 지정 역할에 부여하여 해당 역할이 또 다른 오브젝트에 태그를 적용하도록 허용하십시오.

Snowflake Native App:

버전이 지정된 스키마에 태그가 있는 경우 설정 스크립트를 생성할 때 주의하십시오. 자세한 내용은 버전 스키마 고려 사항 을 참조하십시오.

Snowflake 오브젝트 및 기능과 함께 태그 사용하기

태그가 Snowflake 오브젝트 및 기능에 영향을 주는 방법에 대한 설명은 다음과 같습니다.

지원되는 오브젝트

다음 테이블에는 Snowflake 보안 가능 오브젝트 계층 구조를 기반으로 하는 열을 포함하여, 태그에 지원되는 오브젝트가 나와 있습니다.

아래 테이블에서 달리 지정하지 않는 한 CREATE <오브젝트> 문 또는 ALTER <오브젝트> 문으로 오브젝트에 태그를 설정할 수 있습니다.

CREATE TABLE, CREATE VIEW, ALTER TABLE … MODIFY COLUMN 또는 ALTER VIEW 문을 사용하여 열에 태그를 설정할 수 있습니다.

오브젝트 계층 구조

지원되는 오브젝트

참고

조직

계정

전역 APPLY TAG 권한을 가진 역할이 현재 계정 에 태그를 설정 할 수 있습니다.

계정

애플리케이션

애플리케이션 패키지

데이터베이스

통합

모든 유형 이 지원됩니다.

ALTER INTEGRATION 명령을 사용하여 통합에 태그를 설정합니다.

네트워크 정책

ALTER NETWORK POLICY 명령을 사용하여 네트워크 정책에 태그를 설정합니다.

역할

공유

태그는 데이터 공유 공급자의 의해 공유에 설정됩니다. 이러한 태그는 데이터 공유 컨슈머에게 표시되지 않습니다. ALTER SHARE 명령을 사용하여 공유에 태그를 설정합니다.

사용자

웨어하우스

데이터베이스

데이터베이스 역할

ALTER DATABASE ROLE 명령을 사용하여 데이터베이스 역할에 태그를 설정합니다.

스키마

스키마

경고

외부 함수와 UDF

ALTER FUNCTION 명령을 사용하여 외부 함수 또는 UDF에 태그를 설정합니다.

외부 테이블

CREATE EXTERNAL TABLE 문을 사용하여 태그가 포함된 외부 테이블을 생성할 수 있습니다.

외부 테이블의 태그 할당을 관리하려면 ALTER TABLE 명령을 사용하십시오.

Iceberg 테이블

구체화된 뷰

파이프

ALTER PIPE 문으로 파이프에 태그를 설정합니다.

정책

해당 ALTER <정책> 문으로 마스킹, 비밀번호, 행 액세스, 세션 정책에 태그를 설정합니다.

절차

ALTER PROCEDURE 문으로 저장 프로시저에 태그를 설정합니다.

스테이지

ALTER STAGE 문으로 스테이지에 태그를 설정합니다.

스트림

테이블

작업

ALTER TASK 문으로 작업에 태그를 설정합니다.

테이블 또는 뷰

이벤트 테이블 을 포함합니다.

오브젝트 태깅 및 마스킹 정책

자세한 내용은 태그 기반 마스킹 정책 섹션을 참조하십시오.

열에 직접 할당된 마스킹 정책이 태그 기반 마스킹 정책보다 우선합니다.

CREATE TABLE 문

CREATE TABLE … LIKE 에서 원본 테이블에 할당된 태그가 대상 테이블에 할당됩니다.

복제

태그 및 해당 할당은 원본 계정에서 대상 계정으로 복제할 수 있습니다.

원본 계정에서 처음 복제한 후에는 대상 계정에서 태그 할당을 수정할 수 없습니다. 예를 들어, 보조 데이터베이스(즉, 복제된 데이터베이스)에서의 태그 설정은 허용되지 않습니다. 대상 계정에서 태그 할당을 수정하려면 원본 계정에서 태그 할당을 수정하고 대상 계정에 복제하십시오.

데이터베이스 복제 의 경우, 다음 조건 중 하나가 참이면 복제 작업이 실패합니다.

  • 기본 데이터베이스가 Enterprise 이상 계정에 있고 태그가 포함되어 있지만 복제가 승인된 1개 이상의 계정이 하위 에디션에 있습니다.

  • 기본 데이터베이스에 포함된 오브젝트에 다른 데이터베이스의 태그에 대한 현수 참조 가 있습니다.

허상 참조 오류를 방지하려면 복제 그룹 또는 장애 조치 그룹 을 사용하여 데이터베이스 및 계정 수준 오브젝트를 복제하십시오. 복제 그룹에 다음이 포함되도록 하십시오.

  • ALLOWED_DATABASES 속성의 태그를 포함하는 데이터베이스.

  • OBJECT_TYPES 속성에 태그가 있는 기타 계정 수준 오브젝트(예: ROLES, WAREHOUSES).

    자세한 내용은 CREATE REPLICATION GROUPCREATE FAILOVER GROUP 섹션을 참조하십시오.

참고

복제 및 장애 조치 그룹이나 데이터베이스 복제를 사용하는 경우:

  • 장애 조치/장애 복구 기능은 Business Critical Edition 이상의 Snowflake 계정에서만 사용할 수 있습니다.

    자세한 내용은 여러 계정에 걸쳐 복제 및 장애 조치 도입 섹션을 참조하십시오.

  • ALTER DATABASE 문이나 복제 그룹 또는 장애 조치 그룹에 대한 CREATE OR ALTER 문에서 데이터베이스 복제를 위한 IGNORE EDITION CHECK 절을 지정하면 대상 계정이 Business Critical 보다 낮은 버전일 때 태그 복제가 발생할 수 있습니다.

    자세한 내용은 이러한 명령의 절 설명을 참조하십시오.

복제

  • 원본 오브젝트(예: 테이블)의 태그 연결은 복제된 오브젝트에서 유지 관리됩니다.

  • 데이터베이스 또는 스키마의 경우:

    해당 데이터베이스 또는 스키마에 저장된 태그도 복제됩니다.

    데이터베이스 또는 스키마가 복제되면 해당 스키마 또는 데이터베이스에 있는 태그도 복제됩니다.

    테이블 또는 뷰가 원본 스키마/데이터베이스에 존재하고 같은 스키마 또는 데이터베이스의 태그에 대한 참조가 있는 경우, 복제된 테이블 또는 뷰가 원본 스키마 또는 데이터베이스의 태그 대신 (대상 스키마/데이터베이스에서) 복제된 해당 태그에 매핑됩니다.

데이터 공유

  • 공유 뷰와 태그가 서로 다른 데이터베이스에 존재할 때는 태그가 포함된 데이터베이스에 대한 REFERENCE_USAGE 권한을 공유에 부여합니다. 자세한 내용은 여러 데이터베이스에서 데이터 공유하기 섹션을 참조하십시오.

  • 데이터 공유 컨슈머 계정에서:

    • SHOW TAGS 명령을 실행하는 역할에 공유 태그가 포함된 스키마에 대한 USAGE 권한이 있는 경우 SHOW TAGS 를 실행하면 공유 태그가 반환됩니다.

      공급자가 공유 또는 공유 데이터베이스 역할에 태그에 대한 READ 권한을 부여하는 경우 컨슈머는 공유 태그에 대한 태그 할당을 볼 수 있습니다. 자세한 내용은 공유 태그 참조 를 확인하십시오.

    • 데이터 공유 공급자 계정의 태그가 공유 테이블에 할당되면 데이터 공유 컨슈머가 SYSTEM$GET_TAG 함수 또는 TAG_REFERENCES Information Schema 테이블 함수를 호출하여 태그 할당을 볼 수 없습니다.

태그 생성 및 할당하기

다음은 Snowflake에서 태그를 사용하기 위한 전체적인 개요입니다.

  • CREATE TAG 문을 사용하여 태그를 만듭니다.

  • Snowsight 또는 ALTER <오브젝트> 명령을 사용하여 기존 Snowflake 오브젝트에 태그를 할당합니다.

    CREATE <오브젝트> 명령을 사용하여 오브젝트에 태그를 할당할 수 있습니다. ALTER <오브젝트> 명령만으로 태그 설정을 지원하는 오브젝트를 평가하려면 이 항목의 지원되는 오브젝트 섹션을 참조하십시오.

태그를 할당한 후 SQL 또는 Snowsight 를 사용하여 태그 사용량을 모니터링할 수 있습니다. 자세한 내용은 이 항목의 SQL로 태그 모니터링하기Snowsight 로 태그 모니터링하기 섹션을 참조하십시오.

간단히 하기 위해, 이 워크플로에서는 태그에서 중앙 집중식 관리 방식을 사용하고, tag_admin 사용자 지정 역할에 CREATE TAG 권한과 전역 APPLY TAG 권한이 모두 있는 것으로 가정합니다.

  1. 사용자 지정 역할을 만들고 권한을 할당합니다.

    중앙 집중식 방식에서는 tag_admin 사용자 지정 역할이 Snowflake 오브젝트에 대한 태그 생성 및 할당 작업을 수행합니다.

    이 예에서는 ACCOUNTADMIN 시스템 역할을 사용함에 유의하십시오. 프로덕션 환경에서 권한이 더 높은 역할을 사용하는 것이 바람직하지 않은 경우, tag_admin 사용자 지정 역할에 권한을 할당하는 역할에 tag_admin 사용자 지정 역할의 자격을 확인하기 위해 필요한 권한이 있는 확인하십시오. 자세한 내용은 이 항목의 태그 관리하기 섹션을 참조하십시오.

    USE ROLE USERADMIN;
    CREATE ROLE tag_admin;
    USE ROLE ACCOUNTADMIN;
    GRANT CREATE TAG ON SCHEMA mydb.mysch TO ROLE tag_admin;
    GRANT APPLY TAG ON ACCOUNT TO ROLE tag_admin;
    
    Copy
  2. 태그 관리자 역할을 하는 사용자에게 tag_admin 사용자 지정 역할을 부여합니다.

    USE ROLE USERADMIN;
    GRANT ROLE tag_admin TO USER jsmith;
    
    Copy
  3. CREATE TAG 문을 실행하여 태그를 생성합니다.

    USE ROLE tag_admin;
    USE SCHEMA mydb.mysch;
    CREATE TAG cost_center;
    
    Copy
  4. 태그를 Snowflake 오브젝트 또는 열에 할당합니다.

    SQL:

    ALTER <오브젝트> 명령으로 존재하는 지원되는 모든 오브젝트와 열에 태그를 설정할 수 있습니다. 일부 오브젝트는 오브젝트를 만들거나 바꿀 때 태그 설정을 지원합니다. 자세한 내용은 이 항목의 지원되는 오브젝트 섹션에 있는 표를 참조하십시오.

    예:

    • 새 웨어하우스에 태그를 설정하려면 CREATE WAREHOUSE 명령을 사용합니다.

      USE ROLE tag_admin;
      CREATE WAREHOUSE mywarehouse WITH TAG (cost_center = 'sales');
      
      Copy
    • 기존 웨어하우스에 태그를 설정하려면 ALTER WAREHOUSE 명령을 사용합니다.

      USE ROLE tag_admin;
      ALTER WAREHOUSE wh1 SET TAG cost_center = 'sales';
      
      Copy
    • 기존 열에 태그를 설정하려면, 테이블 열의 경우 ALTER TABLE … MODIFY COLUMN 명령을 사용하거나 뷰 열의 경우 ALTER VIEW … MODIFY COLUMN 명령을 사용합니다. 단일 명령에 태그를 2개 이상 설정하거나 설정을 취소할 수 있음에 유의하십시오.

      ALTER TABLE hr.tables.empl_info
        MODIFY COLUMN job_title
        SET TAG visibility = 'public';
      
      Copy
    Snowsight:

    Snowsight 를 사용하여 기존 테이블, 뷰, 열에 태그를 설정할 수 있습니다.

    태그를 설정하는 옵션은 여러 가지가 있습니다.

    • 오브젝트 탐색기를 사용하여(즉, Data » Databases) 원하는 테이블, 뷰 또는 열로 이동합니다.

      More 메뉴(즉, ...) » Edit 를 선택하고 + Tag 를 선택합니다. 표시되는 메시지에 따라 태그 할당을 관리합니다.

    • Snowsight 의 거버넌스 영역(즉, Monitoring » Governance)으로 이동하여 다음을 수행합니다.

      • 타일, 배포 비율, 가장 많이 사용되는 태그 또는 테이블 중 하나를 선택합니다. Dashboard 에서 항목을 선택하면 Snowsight 에서 Tagged Objects 탭으로 리디렉션됩니다.

      • 필요에 따라 필터를 수정합니다. 오브젝트 또는 열을 선택하면 Snowsight 가 오브젝트 탐색기의 해당 위치로 리디렉션합니다. 필요에 따라 태그 할당을 업데이트합니다.

    • Tagged Objects 탭으로 직접 이동합니다. 필터를 수정하고 오브젝트 또는 열을 선택하고 태그 할당을 관리합니다.

    참고

    거버넌스 영역에 액세스하려면 다음 중 하나를 수행하십시오.

    • ACCOUNTADMIN 역할을 사용합니다.

    • GOVERNANCE_VIEWER OBJECT_VIEWER 데이터베이스 역할이 부여된 역할에 사용합니다.

      이러한 데이터베이스 역할에 대한 자세한 내용은 SNOWFLAKE 데이터베이스 역할 섹션을 참조하십시오.

SQL로 태그 모니터링하기

다른 Account Usage 뷰 2개, Information Schema 테이블 함수 2개, Account Usage 테이블 함수 및 시스템 함수를 사용하여 SQL로 태그를 모니터링할 수 있습니다.

태그 사용을 모니터링하는 방법을 결정하는 두 가지 일반적인 접근 방식을 생각해보면 도움이 될 수 있습니다.

태그 검색

Snowflake는 태그를 나열하고 주어진 태그 키의 태그 문자열 값을 식별하기 위해 다음 옵션을 지원합니다.

  • 계정의 태그 식별:

    공유 SNOWFLAKE 데이터베이스의 Account Usage 스키마에서 TAGS 뷰를 사용합니다. 이 뷰는 현재 태그와 삭제된 태그에 대한 정보를 제공하는 Snowflake 계정의 모든 태그에 대한 카탈로그 로 생각할 수 있습니다. 예:

    SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TAGS
    ORDER BY TAG_NAME;
    
    Copy
  • 주어진 태그의 값 식별:

    SYSTEM$GET_TAG 시스템 함수를 사용하여 지정된 태그와 Snowflake 오브젝트 또는 열에 할당된 태그 값을 반환합니다.

    SELECT SYSTEM$GET_TAG('cost_center', 'my_table', 'table');
    
    Copy

할당 식별하기

Snowflake는 쿼리가 계정 또는 특정 데이터베이스를 대상으로 해야 하는지 여부와 태그 계보가 필요한지 여부에 따라 태그 할당을 식별하는 다양한 옵션을 지원합니다.

  • 계보가 있는 계정 수준 쿼리:

    Account Usage 테이블 함수 TAG_REFERENCES_WITH_LINEAGE 를 사용하여 태그 계보도 포함하는 주어진 태그 키와 태그 값을 가진 모든 오브젝트를 확인합니다.

    SELECT *
    FROM TABLE(
      snowflake.account_usage.tag_references_with_lineage(
        'my_db.my_schema.cost_center'
      )
    );
    
    Copy
  • 계보가 없는 계정 수준 쿼리:

    Account Usage TAG_REFERENCES 뷰를 사용하여 주어진 태그 키와 태그 값은 있지만 태그 계보는 포함하지 않는 모든 오브젝트를 확인합니다.

    SELECT * FROM snowflake.account_usage.tag_references
    ORDER BY TAG_NAME, DOMAIN, OBJECT_ID;
    
    Copy
  • 계보가 있는 데이터베이스 수준 쿼리:

    모든 Snowflake 데이터베이스에는 Snowflake Information Schema 가 포함됩니다. Information Schema 테이블 함수 TAG_REFERENCES 를 사용하여 주어진 데이터베이스에 태그 계보도 포함하는 주어진 태그를 가진 모든 오브젝트를 확인합니다.

    SELECT *
    FROM TABLE(
      my_db.INFORMATION_SCHEMA.TAG_REFERENCES(
        'my_table',
        'table'
      )
    );
    
    Copy
  • 계보가 있는 테이블 또는 뷰의 모든 열에서 모든 태그에 대한 데이터베이스 수준 쿼리:

    Information Schema 테이블 함수 TAG_REFERENCES_ALL_COLUMNS 를 사용하여 주어진 테이블 또는 뷰의 모든 열에 설정된 모든 태그를 가져옵니다.

    오브젝트 이름이 뷰(즉, 뷰, 구체화된 뷰)인 경우에도 열을 포함하는 모든 오브젝트에 대해 도메인 TABLE사용해야 합니다.

    SELECT *
    FROM TABLE(
      INFORMATION_SCHEMA.TAG_REFERENCES_ALL_COLUMNS(
        'my_table',
        'table'
      )
    );
    
    Copy

Snowsight 로 태그 모니터링하기

Snowsight Monitoring » Governance 영역을 사용하여 테이블, 뷰, 열과 함께 정책 및 태그 사용량을 모니터링하고 보고할 수 있습니다. DashboardTagged Objects 의 두 가지 서로 다른 인터페이스가 있습니다.

DashboardTagged Objects 인터페이스를 사용할 때 다음 세부 사항에 유의하십시오.

  • DashboardTagged Objects 인터페이스에는 실행 중인 웨어하우스가 필요합니다.

  • Snowsight 는 Dashboard 를 12시간마다 업데이트합니다.

  • Tagged Objects 정보 대기 시간은 최대 2시간까지 될 수 있으며 최대 1,000개의 오브젝트를 반환합니다.

Snowsight의 거버넌스 영역에 액세스하기

Governance 영역에 액세스하려면 Snowflake 계정이 Enterprise Edition 이상 이어야 합니다. 또한 다음 중 하나를 수행해야 합니다.

  • ACCOUNTADMIN 역할을 사용합니다.

  • GOVERNANCE_VIEWER OBJECT_VIEWER 데이터베이스 역할이 직접 부여된 계정 역할을 사용합니다.

    이러한 데이터베이스 역할 부여와 함께 계정 역할을 반드시 사용해야 합니다. 현재, Snowsight 는 테이블, 뷰, 데이터 액세스 정책, 태그에 대한 액세스 권한이 있는 역할 계층 구조와 사용자 정의 데이터베이스 역할을 평가하지 않습니다.

    계정 역할에 이러한 두 가지 데이터베이스 역할이 부여되었는지 확인하려면 SHOW GRANTS 명령을 사용하십시오.

    SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
    
    Copy
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    | created_on                    | privilege | granted_on    | name                        | granted_to | grantee_name    | grant_option | granted_by |
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    | 2024-01-24 17:12:26.984 +0000 | USAGE     | DATABASE_ROLE | SNOWFLAKE.GOVERNANCE_VIEWER | ROLE       | DATA_ENGINEER   | false        |            |
    | 2024-01-24 17:12:47.967 +0000 | USAGE     | DATABASE_ROLE | SNOWFLAKE.OBJECT_VIEWER     | ROLE       | DATA_ENGINEER   | false        |            |
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    

    계정 역할에 이러한 데이터베이스 역할 중 하나 또는 둘 다 부여되지 않은 경우 GRANT DATABASE ROLE 명령을 사용하고 SHOW GRANTS 명령을 다시 실행하여 권한 부여를 확인하십시오.

    USE ROLE ACCOUNTADMIN;
    GRANT DATABASE ROLE SNOWFLAKE.GOVERNANCE_VIEWER TO ROLE data_engineer;
    GRANT DATABASE ROLE SNOWFLAKE.OBJECT_VIEWER TO ROLE data_engineer;
    SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
    
    Copy

    이러한 데이터베이스 역할에 대한 자세한 내용은 SNOWFLAKE 데이터베이스 역할 섹션을 참조하십시오.

대시보드

데이터 관리자는 Dashboard 인터페이스를 사용하여 다음과 같은 방법으로 태그 및 정책 사용을 모니터링할 수 있습니다.

  • 적용 범위: 테이블, 뷰 또는 열에 정책 또는 태그가 있는지 여부를 기준으로 개수와 백분율을 지정합니다.

  • 배포: 가장 자주 사용되는 정책과 태그를 나열하고 계수합니다.

적용 범위와 배포를 통해 데이터가 얼마나 잘 보호되고 태그가 지정되었는지에 관해 알 수 있습니다.

개수, 백분율, 정책 이름 또는 태그 이름을 선택하면 Tagged Objects 인터페이스가 열립니다. Tagged Objects 인터페이스는 Dashboard 에서 선택한 항목을 기준으로 필터를 자동으로 업데이트합니다.

모니터링 정보는 여러 Account Usage 뷰에서 복잡하고 쿼리 집약적인 작업 실행에 대한 대안 또는 보완책입니다.

이러한 뷰에는 COLUMNS, POLICY_REFERENCES, TABLES, TAG_REFERENCESVIEWS 뷰가 포함될 수 있지만 이에 국한되는 것은 아닙니다.

태그가 지정된 오브젝트

데이터 관리자는 이 테이블을 사용하여 Dashboard 의 적용 범위와 배포를 특정 테이블, 뷰 또는 열 목록에 빠르게 연결할 수 있습니다. 다음과 같이 테이블 결과를 수동으로 필터링할 수도 있습니다.

  • Tables 또는 Columns 를 선택합니다.

  • 태그의 경우 태그를 사용하거나 사용하지 않거나 특정 태그를 기준으로 필터링할 수 있습니다.

  • 정책의 경우 정책을 사용하거나 사용하지 않거나 특정 정책을 기준으로 필터링할 수 있습니다.

테이블에서 행을 선택하면 Data » Databases 에서 Table Details 또는 Columns 탭이 열립니다. 필요에 따라 태그 및 정책 할당을 편집할 수 있습니다.

태그 관리하기

태그 권한

사용자가 태그를 생성, 설정 및 소유할 수 있는지 여부를 결정하기 위해 Snowflake에서 지원하는 권한은 다음과 같습니다.

스키마의 모든 오브젝트에 대해 작업하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한도 필요합니다.

권한

사용법

CREATE

스키마에 새 태그를 생성할 수 있습니다.

APPLY

Snowflake 오브젝트에서 태그에 대한 설정 및 설정 해제 작업을 수행할 수 있습니다. 구문 예제는 DDL 명령, 작업 및 권한 요약 섹션을 참조하십시오.

OWNERSHIP

태그의 소유권을 이전하며, 태그에 대한 모든 권한을 부여할 수 있습니다. 태그의 대부분 속성을 변경하려면 필요합니다.

태그 DDL 참조

Snowflake는 태그 생성과 관리를 위해 다음 DDL을 지원합니다.

Snowflake는 태그 오브젝트에 대한 설명 작업을 지원하지 않습니다.

DDL 명령, 작업 및 권한 요약

다음 테이블은 태그 권한과 DDL 작업 사이의 관계를 요약하여 보여줍니다.

작업

필요한 권한

태그 만들기.

동일한 스키마에서 CREATE TAG 권한이 있는 역할.

태그 변경.

태그에 대한 OWNERSHIP 권한이 있는 역할.

태그 삭제 및 삭제 취소.

태그에 대한 USAGE 권한 및 태그가 있는 데이터베이스 및 스키마에 대한 OWNERSHIP 권한이 있는 역할.

태그 표시.

다음 중 1개: . 태그가 있는 스키마에 대한 USAGE 권한이 있는 역할, 또는 . ACCOUNT에 대한 APPLY TAG 권한이 있는 역할.

오브젝트에 태그 설정 또는 설정 취소.

개별 오브젝트의 경우, 계정에 대한 APPLY TAG 권한 또는 태그에 대한 APPLY TAG 권한 및 태그가 설정된 오브젝트에 대한 OWNERSHIP 권한이 있는 역할. 지원되는 오브젝트 섹션을 참조하십시오.

열에 태그 설정 또는 설정 해제.

계정에 대한 APPLY TAG 권한이 있는 역할 또는 태그에 대한 APPLY 권한 및 테이블 또는 뷰에 대한 OWNERSHIP 권한이 있는 역할입니다.

오브젝트에서 태그 가져오기.

SYSTEM$GET_TAG, TAG_REFERENCESTAG_REFERENCES_WITH_LINEAGE 참조.

Snowflake는 오브젝트에 태그를 만들고 설정할 수 있는 다양한 권한을 지원합니다.

  1. tag_admin 사용자 지정 역할이 모든 오브젝트/열에 대한 태그를 만들고 설정하는 중앙 집중식 태그 관리 접근 방식의 경우, 다음 권한이 필요합니다.

    use role securityadmin;
    grant create tag on schema <db_name.schema_name> to role tag_admin;
    grant apply tag on account to role tag_admin;
    
    Copy
  2. 하이브리드 관리 접근 방식에서는, 태그가 일관되게 명명되고 개별 팀 또는 역할이 특정 태그에 대한 APPLY 권한을 갖도록 보장하기 위해 단일 역할에 CREATE TAG 권한이 주어집니다.

    예를 들어, 사용자 지정 역할 finance_role 이 소유한 테이블과 뷰에 태그 cost_center 를 설정할 권한을 이 역할에 부여할 수 있습니다(즉, 역할이 테이블 또는 뷰에 대해 OWNERSHIP 권한을 가짐).

    use role securityadmin;
    grant create tag on schema <db_name.schema_name> to role tag_admin;
    grant apply on tag cost_center to role finance_role;
    
    Copy