객체 태그 모니터링

객체 태그 모니터링

Snowsight 또는 SQL을 사용해 태그와 태그가 어떻게 구현됐는지 모니터링할 수 있어요.

출처: Monitor object tags

본문

Snowsight로 태그 모니터링

Snowsight의 Tags & policies 영역에 대한 다음 정보를 사용하세요. SQL로 태그를 모니터링하려면 SQL로 태그 모니터링을 참조하세요.

Snowsight의 Governance & security » Tags & policies 영역을 사용해 테이블, 뷰, 열과 함께 정책과 태그의 사용을 모니터링하고 보고할 수 있어요. Dashboard와 Tagged Objects 두 가지 인터페이스가 있어요.

Dashboard와 Tagged Objects 인터페이스를 사용할 때 다음 세부 사항에 유의하세요.

  • Dashboard와 Tagged Objects 인터페이스는 실행 중인 웨어하우스가 필요해요.
  • Snowsight는 Dashboard를 12시간마다 업데이트해요.
  • Tagged Objects 정보 지연 시간은 최대 2시간이며 최대 1000개 객체를 반환해요.

Snowsight에서 Governance 영역 접근

Tags & policies 영역에 접근하려면 Snowflake 계정이 Enterprise Edition 이상이어야 해요. 또한 다음 중 하나를 수행해야 해요:

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

이러한 데이터베이스 역할 그랜트가 있는 계정 역할을 사용해야 해요. 현재 Snowsight는 테이블, 뷰, 데이터 접근 정책, 태그에 접근할 수 있는 역할 계층 구조와 사용자 정의 데이터베이스 역할을 평가하지 않아요.

계정 역할에 이 두 데이터베이스 역할이 부여됐는지 확인하려면 SHOW GRANTS 명령을 사용하세요:

SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
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;

이 데이터베이스 역할에 대한 자세한 내용은 SNOWFLAKE 데이터베이스 역할을 참조하세요.

Dashboard

데이터 관리자는 Dashboard 인터페이스를 사용해 태그와 정책 사용을 다음과 같이 모니터링할 수 있어요.

  • Coverage(적용 범위): 테이블, 뷰 또는 열에 정책이나 태그가 있는지에 따라 개수와 백분율을 지정해요.
  • Prevalence(보급률): 가장 자주 사용되는 정책과 태그를 나열하고 개수를 세요.

적용 범위와 보급률은 데이터가 얼마나 잘 보호되고 태그됐는지에 대한 스냅샷을 제공해요.

개수, 백분율, 정책 이름, 또는 태그 이름을 선택하면 Tagged Objects 인터페이스가 열려요. Tagged Objects 인터페이스는 Dashboard에서 선택한 내용에 따라 필터를 자동으로 업데이트해요.

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

이 뷰에는 COLUMNS, POLICY_REFERENCES, TABLES, TAG_REFERENCES, VIEWS 뷰가 포함될 수 있지만 이에 국한되지는 않아요.

Tagged Objects

데이터 관리자는 이 테이블을 사용해 Dashboard의 적용 범위와 보급률을 특정 테이블, 뷰, 열 목록에 빠르게 연결할 수 있어요. 또한 테이블 결과를 다음과 같이 수동으로 필터링할 수 있어요.

  • Tables 또는 Columns 선택.
  • 태그의 경우 태그 있음, 태그 없음, 또는 특정 태그로 필터링.
  • 정책의 경우 정책 있음, 정책 없음, 또는 특정 정책으로 필터링.

테이블에서 행을 선택하면 Catalog » Explorer의 Table Details 또는 Columns 탭이 열려요. 필요에 따라 태그와 정책 할당을 편집할 수 있어요.

SQL로 태그 모니터링

두 개의 Account Usage 뷰, 두 개의 Information Schema 테이블 함수, Account Usage 테이블 함수, 그리고 시스템 함수를 사용해 SQL로 태그를 모니터링할 수 있어요.

태그 사용을 모니터링하는 방법을 결정할 때 두 가지 일반적인 접근 방식을 고려하는 것이 도움이 돼요.

태그 발견

Snowflake는 태그를 나열하고 주어진 태그 키에 대한 문자열 값을 식별하는 다음 옵션을 지원해요.

  • 계정의 태그 식별: 공유 SNOWFLAKE 데이터베이스의 Account Usage 스키마에 있는 TAGS 뷰를 사용하세요. 이 뷰는 Snowflake 계정의 모든 태그에 대한 카탈로그로 생각할 수 있으며 현재 및 삭제된 태그에 대한 정보를 제공해요. 예를 들어:
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TAGS
  ORDER BY tag_name;
  • 주어진 태그의 값 식별: SYSTEM$GET_TAG 시스템 함수를 사용해 지정된 태그와 Snowflake 객체 또는 열에 할당된 태그 값을 반환해요.
SELECT SYSTEM$GET_TAG('cost_center', 'my_table', 'table');

할당 식별

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

  • 계정 수준 쿼리(계보 포함): Account Usage 테이블 함수 TAG_REFERENCES_WITH_LINEAGE를 사용해 주어진 태그 키와 태그 값을 가진 모든 객체(태그를 상속받은 객체 포함)를 확인해요:
SELECT *
  FROM TABLE(
 SNOWFLAKE.ACCOUNT_USAGE.TAG_REFERENCES_WITH_LINEAGE(
   'my_db.my_schema.cost_center'
 )
  );
  • 계정 수준 쿼리(계보 없음): Account Usage TAG_REFERENCES 뷰를 사용해 주어진 태그 키와 태그 값을 가진 모든 객체를 확인하되, 태그를 상속받은 객체는 포함하지 않아요:
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TAG_REFERENCES
  ORDER BY tag_name, domain, object_id;
  • 데이터베이스 수준 쿼리(계보 포함): 모든 Snowflake 데이터베이스에는 Snowflake Information Schema가 포함돼요. Information Schema 테이블 함수 TAG_REFERENCES를 사용해 주어진 데이터베이스에서 주어진 태그를 가진 모든 객체(태그를 상속받은 객체 포함)를 확인해요:
SELECT *
  FROM TABLE(
 my_db.INFORMATION_SCHEMA.TAG_REFERENCES(
   'my_table',
   'table'
 )
  );
  • 테이블 또는 뷰의 모든 열에 대한 모든 태그 데이터베이스 수준 쿼리(계보 포함): Information Schema 테이블 함수 TAG_REFERENCES_ALL_COLUMNS를 사용해 주어진 테이블 또는 뷰의 모든 열에 설정된 모든 태그를 얻어요. 객체 이름이 뷰(즉, 뷰, 구체화된 뷰)라도 열을 포함하는 모든 객체에는 도메인 TABLE을 사용해야 해요.
SELECT *
  FROM TABLE(
 INFORMATION_SCHEMA.TAG_REFERENCES_ALL_COLUMNS(
   'my_table',
   'table'
 )
  );

더 알아보기