객체 태깅 소개
객체 태깅 소개
이 주제는 객체 태깅의 개념, 태그를 데이터 보호와 리소스 사용 모니터링에 사용하는 방법, 지원되는 객체, 한계를 소개해요.
본문
태그란 무엇인가?
태그는 다른 Snowflake 객체에 할당할 수 있는 스키마 수준 객체예요. 사용자는 태그를 Snowflake 객체에 할당할 때 태그를 임의의 문자열 값과 연결해요. Snowflake는 태그와 태그의 문자열 값을 키-값 쌍으로 저장해요. 태그는 스키마에 대해 고유해야 하며 태그 값은 항상 문자열이에요. 같은 태그에 두 개 이상의 문자열 값을 할당하려면 다중 값 태그를 사용하세요. 일반적인 거버넌스 사용 사례를 위해 Snowflake가 모든 계정에 만드는 Snowflake 제공 태그를 할당할 수 있어요.
객체 태깅의 일반적인 특징은 다음과 같아요:
- 객체는 동시에 여러 태그를 가질 수 있어요. 자세한 내용은 태그 할당량을 참조하세요.
- 단일 태그는 동시에 여러 객체 유형에 할당될 수 있어요(예: 웨어하우스와 테이블에 동시에).
- 할당 시 태그 문자열 값은 중복되거나 고유하게 유지될 수 있어요. 예를 들어 여러 테이블에
cost_center태그를 할당하고 항상 문자열 값sales를 가질 수 있어요. 또는 각 테이블마다 문자열 값이 다를 수도 있어요(예:engineering,marketing,finance).
태그를 정의하고 Snowflake 객체에 할당한 후에는 이를 쿼리해 객체의 사용을 모니터링하고 감사 및 보고와 같은 데이터 거버넌스 작업을 용이하게 할 수 있어요.
주요 특징
- 사용 편의성: 태그를 한 번 정의하고 원하는 만큼 많은 객체에 적용해요.
- 태그 상속: 태그는 상속되므로 보안 가능 객체 계층 구조에서 더 높은 객체에 태그를 적용하면 모든 하위 객체에 태그가 적용돼요. 예를 들어 테이블에 태그를 설정하면 해당 테이블의 모든 열이 태그를 상속받아요.
- 자동 전파: 소스 객체에서 대상 객체로 태그가 자동으로 전파되도록 태그를 구성해요.
- 복제와의 일관된 할당: Snowflake는 주 데이터베이스 내의 태그와 태그 할당을 2차 데이터베이스로 복제해요.
- 중앙 집중식 또는 분산 관리: 태그는 내부 및 외부 규제 요구 사항을 준수하는 데 도움이 되는 다양한 관리 방식을 지원해요. 중앙 집중식 접근 방식에서는
tag_admin커스텀 역할을 만들어 태그를 만들고 Snowflake 객체에 적용할 수 있어요. 분산 접근 방식에서는 개별 팀이 Snowflake 객체에 태그를 적용하고tag_admin커스텀 역할이 일관된 태그 명명을 보장하기 위해 태그를 만들어요.
데이터 보호에 태그 사용
태그는 테이블, 뷰, 열에 할당할 수 있으므로 태그를 설정하고 태그를 쿼리하면 민감 정보를 포함하는 수많은 데이터베이스 객체와 열을 발견할 수 있어요. 발견 후 데이터 관리자(스튜어드)는 행 접근 정책을 통한 선택적 필터링이나 마스킹 정책을 통한 토큰화/전체 마스킹/부분 마스킹/마스킹 안 함 여부 결정 등 데이터를 가장 잘 제공할 방법을 결정할 수 있어요.
객체 태깅과 마스킹 정책을 결합해 데이터 거버넌스를 간소화할 수도 있어요. 이 방식에서는 마스킹 정책을 태그에 할당한 다음 테이블이나 열에 태그를 할당해요. 열의 데이터 유형이 마스킹 정책 서명의 데이터 유형과 일치하면 태그된 열은 마스킹 정책에 의해 자동으로 보호돼요. 자세한 내용은 태그 기반 마스킹 정책을 참조하세요.
리소스 사용 모니터링에 태그 사용
웨어하우스에 태그를 할당하면 정확한 리소스 사용 모니터링이 가능해져요. 리소스의 태그를 쿼리하면 비용 센터나 기타 조직 단위별로 리소스를 쉽게 그룹화할 수 있어요. 또한 태그는 프로젝트 같은 비교적 단기적인 비즈니스 활동을 분석해 리소스가 무엇에, 언제, 어떻게 사용됐는지에 대한 더 세밀한 인사이트를 제공하는 데 도움이 될 수 있어요.
리소스 사용 모니터링에 태그를 사용하는 예는 비용 귀속을 위한 객체 태그 설정을 참조하세요.
태그가 객체와 연결되는 방식
태그는 다음과 같은 방식으로 객체와 연결될 수 있어요:
- 누군가 CREATE
- 객체가 Snowflake 보안 가능 객체 계층 구조에서 더 높은 객체의 태그를 상속받음. 예를 들어 계정의 웨어하우스는 계정에 설정된 태그를 상속받아요. 태그 상속 참조.
- 태그가 한 객체에서 다른 객체로 자동 전파됨. 태그는 객체가 다른 객체에 의존할 때(예: 태그된 테이블 기반의 뷰)나 데이터가 태그된 객체에서 다른 객체로 이동할 때(예: CTAS 문으로 테이블 만들기) 전파될 수 있어요. 사용자 정의 태그를 이용한 자동 태그 전파 참조.
- 민감 데이터를 포함하는 것으로 분류된 열에 태그가 자동으로 설정됨. 민감 데이터 분류가 태그 맵을 사용해 이러한 태그를 설정하는 방법은 분류 태그 정보를 참조하세요.
- 누군가 CREATE TABLE … LIKE 또는 CREATE TABLE … CLONE 명령을 사용해 태그가 있는 기존 테이블에서 테이블을 만듦.
태그가 객체와 연결된 방식 확인
다음 뷰와 함수에는 태그가 객체와 어떻게 연결됐는지 보여주는 apply_method 열이 포함돼요.
- 뷰: ACCOUNT_USAGE.TAG_REFERENCES
- 함수: INFORMATION_SCHEMA.TAG_REFERENCES, INFORMATION_SCHEMA.TAG_REFERENCES_ALL_COLUMNS, ACCOUNT_USAGE.TAG_REFERENCES_WITH_LINEAGE
예를 들어 태그가 객체에 수동으로 설정됐는지 전파됐는지 확인하려면 다음 명령을 실행하고 apply_method 열의 값을 확인할 수 있어요:
SELECT tag_name, tag_value, apply_method, level, domain
FROM TABLE(my_db.INFORMATION_SCHEMA.TAG_REFERENCES('my_table', 'TABLE'));
태그 할당량
단일 객체(테이블과 뷰 포함)에 최대 50개의 태그를 설정할 수 있어요.
태그 한도에 도달했고 하나를 삭제하려면 ALTER
열에 대한 별도 할당량
단일 테이블의 열에 최대 50개의 서로 다른 태그를 설정할 수 있어요. 이는 모든 열을 합친 제한이에요.
열 제한은 테이블에 설정된 태그 수 제한과는 별개예요. 예를 들어 다음 테이블을 테이블과 열 양쪽에 태그를 설정해 만든다고 가정하세요:
CREATE TABLE t1 (
COL1 INT WITH TAG (tag1='col1', tag2='col1'),
COL2 INT WITH TAG (tag1='col2'),
)
WITH TAG (tag3='t1');
Snowflake는 다음을 허용해요:
- 테이블
t1에 태그 49개를 더 설정. t1의 열에 태그 48개를 더 설정. 제한은 서로 다른 태그에 대한 것이므로tag1은 두 번 계산되지 않아요.
CREATE TABLE 또는 ALTER TABLE 문을 실행해 테이블의 열에 태그를 적용할 때, 고유한 태그-엔터티 연관의 최대 수는 100이에요. 여기서 엔터티는 테이블 또는 열이에요. 예를 들어 열이 1,000개인 테이블이 있고 모든 열에 같은 태그를 연결하려면 ALTER 문을 10번 실행해야 해요.
Enterprise Edition이 필요한 기능
태그 생성과 설정은 모든 계정에서 사용할 수 있어요. 하지만 고급 기능 중에는 Enterprise Edition 이상이 필요한 것들이 있어요. 다음 기능을 사용하려면 계정이 Enterprise Edition 이상이어야 해요:
지원되는 객체
다음 표는 Snowflake 보안 가능 객체 계층 구조를 기준으로 태그가 지원되는 객체(열 포함)를 나열해요.
아래 표에 별도로 명시되지 않는 한, 태그는 CREATE
태그는 CREATE TABLE, CREATE VIEW, ALTER TABLE … MODIFY COLUMN, 또는 ALTER VIEW 문을 사용해 열에 설정할 수 있어요.
| 객체 계층 | 지원되는 객체 | 참고 |
|---|---|---|
| 조직 | 계정 | 전역 APPLY TAG 권한이 있는 역할이 현재 계정에 태그를 설정할 수 있음. |
| 계정 | 애플리케이션 | |
| 애플리케이션 패키지 | ||
| 컴퓨트 풀 | ||
| 데이터베이스 | ||
| 장애 조치 그룹 | ||
| 통합 | 모든 유형이 지원됨. 통합에 태그를 설정하려면 ALTER INTEGRATION 명령 사용. | |
| 네트워크 정책 | 네트워크 정책에 태그를 설정하려면 ALTER NETWORK POLICY 명령 사용. | |
| 복제 그룹 | ||
| 역할 | ||
| 공유 | 태그는 데이터 공유 공급자가 공유에 설정함. 이 태그는 데이터 공유 소비자에게 보이지 않음. 공유에 태그를 설정하려면 ALTER SHARE 명령 사용. | |
| Snowflake CoWork | Snowflake CoWork 객체에 태그를 설정하려면 ALTER SNOWFLAKE INTELLIGENCE를 사용. 예시는 Snowflake CoWork 리소스 예산 참조. | |
| 사용자 | ||
| 웨어하우스 | ||
| 데이터베이스 | 데이터베이스 역할 | 데이터베이스 역할에 태그를 설정하려면 ALTER DATABASE ROLE 명령 사용. |
| 스키마 | ||
| 스키마 | 집계 정책 | |
| AI 게이트웨이 | 프리뷰 기능 — 모든 계정에서 사용 가능. Cortex AI 게이트웨이에 태그를 설정하려면 ALTER AI GATEWAY 명령 사용. | |
| 알림 | ||
| 백업 세트 | WORM 백업용. 특정 데이터베이스, 스키마 또는 테이블에 대한 백업 세트 포함. | |
| BUDGET 인스턴스 | SNOWFLAKE.CORE.BUDGET 클래스 인스턴스에 태그를 설정하려면 ALTER BUDGET 명령 사용. | |
| CLASSIFICATION 인스턴스 | SNOWFLAKE.ML.CLASSIFICATION 클래스 인스턴스에 태그를 설정하려면 ALTER SNOWFLAKE.ML.CLASSIFICATION 명령 사용. | |
| Cortex Agent | Cortex Agent에 태그를 설정하려면 ALTER AGENT 명령 사용. | |
| Cortex Search 서비스 | Cortex Search 서비스에 태그를 설정하려면 ALTER CORTEX SEARCH SERVICE 명령 사용. | |
| 동적 테이블 | ||
| 이벤트 테이블 | ||
| 외부 함수 및 UDF | 외부 함수나 UDF에 태그를 설정하려면 ALTER FUNCTION 명령 사용. | |
| 외부 테이블 | CREATE EXTERNAL TABLE 문으로 태그가 있는 외부 테이블을 만들 수 있음. 외부 테이블의 태그 할당을 관리하려면 ALTER TABLE 명령 사용. | |
| Git 리포지토리 | ||
| Apache Iceberg™ 테이블 | ||
| 이미지 리포지토리 | ||
| 인터랙티브 테이블 | ||
| 조인 정책 | ||
| 구체화된 뷰 | ||
| 노트북 | ||
| 비밀번호 정책 | ||
| 파이프 | ALTER PIPE 문으로 파이프에 태그 설정. | |
| 정책 | 마스킹, 비밀번호, 행 접근, 세션, 집계, 조인, 또는 프로젝션 정책에 해당하는 ALTER |
|
| 프로시저 | ALTER PROCEDURE 문으로 저장 프로시저에 태그 설정. | |
| 프로젝션 정책 | ||
| 시맨틱 뷰 | ||
| 세션 정책 | ||
| 스냅샷 | 블록 스토리지 볼륨 스냅샷용. | |
| 스테이지 | ALTER STAGE 문으로 스테이지에 태그 설정. | |
| 스트림 | ||
| Streamlit | ||
| 테이블 | ||
| 태스크 | ALTER TASK 문으로 태스크에 태그 설정. | |
| 뷰 | ||
| 테이블 또는 뷰 | 열 | 이벤트 테이블 포함. |
| 시맨틱 뷰 | 논리 테이블, 차원, 팩트, 지표 |
제한 사항 및 고려 사항
- 미래 그랜트: 태그에 대한 권한의 미래 그랜트는 지원되지 않아요. 대안으로 커스텀 역할에 APPLY TAG 권한을 부여해 그 역할이 다른 객체에 태그를 적용할 수 있게 하세요.
- Snowflake 네이티브 앱: 버전 스키마에 태그가 존재할 때 설정 스크립트를 만들 때 주의하세요. 자세한 내용은 버전 스키마 고려 사항을 참조하세요.