객체 태그 모니터링
객체 태그 모니터링
Snowsight 또는 SQL을 사용해 태그와 태그가 어떻게 구현됐는지 모니터링할 수 있어요.
본문
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'
)
);