Data Catalog 는 Google Cloud의 Data Analytics 제품군에 포함된 확장 가능한 완전 관리형 메타데이터 관리 서비스
데이터 자산 관리는 적절한 도구 없이는 시간과 비용이 많이 소요될 수 있다.
Data Catalog는 조직이 데이터 자산을 찾고, 선별하고, 설명할 수 있는 중앙 집중식 장소를 제공힌다.
Data Catalog와 상호 작용하는 두 가지 방법
유용한 데이터 검색
데이터 소비자는 데이터의 위치와 출처를 알 수 없다. 데이터 '늪'을 탐색해야 함.
대부분의 데이터는 잘 문서화되어 있지 않으며 문서화되어 있더라도 제대로 유지관리되어 있지 않아서 데이터 소비자는 유용한 정보를 얻기 위해 어떤 데이터를 사용해야 할지 모른다.
데이터가 사람들의 머리 속에만 있으면 찾을 수 없으며 손실되기가 쉽다.
데이터 이해
프로덕션에서 사용할 수 있도록 최신이며 정제, 검증, 승인된 최신 데이터인가?
여러 중복 데이터 세트 중 관련이 있는 어떤 데이터 세트가 관련성이 있고 최신인가?
해당 데이터 세트는 다른 데이터 세트와 어떤 관련이 있나?
누가 데이터를 사용하고 누가 소유자인가?
누가 어떤 프로세스로 데이터를 변환하나?
위와 같은 질문들에 대해 대한 답을 얻을 수 있다.
데이터를 유용하게 활용
데이터 제작자가 소비자를 위해 효율적으로 데이터를 전달할 수 있다.
데이터 소비자가 데이터 액세스를 요청하는 방법을 알아내고 데이터 액세스를 요청하며 정의된 응답 시간 없이 대기하고 에스컬레이션하고 다시 대기해야 한다면 시간을 낭비할 수 있는데 이를 방지해준다.
Data Catalog는 여러 Google Cloud 시스템 소스에서 데이터 항목의 메타데이터를 분류할 수 있다.
애셋 자동 카탈로그
Data Catalog는 다음 Google Cloud 애셋을 자동으로 분류
아래와 같이 테이블의 각 열마다 비즈니스 메타데이터 태그를 연결할 수 있다.
태그 템플릿
새 태그를 빠르게 만드는 데 사용할 수 있는 재사용 가능한 텝플릿.
데이터에 태그를 지정하려면 먼저 태그 템플릿을 하나 이상 만들어야 한다.
태그 템플릿 필드
태그에는 정보를 저장할 수 있는 필드가 하나 이상 포함되어야 한다.
태그의 필드는 태그 템플릿에서 정의되고, 모든 태그는 태그 템플릿 인스턴스이며 특정 테이블이나 열에 적용할 수 있다.
ex) 열에 있는 태그는 해당 열에 PII가 포함되어 있는지, 지원 중단되었는지 또는 특정 값을 계산하는 데 사용된 수식 등을 알려줄 수 있다.
데이터 세트 및 테이블 생성
policy_tags_demo 데이터 세트를 만들어준다.
빅쿼리 공개 데이터 세트 테이블을 복사해올 것이다.
여기선 taxi_trip 테이블을 사용하므로 해당 테이블을 복사해주자.
아래 쿼리를 날리면 데이터가 잘 나오는 것을 확인할 수 있다.
SELECT company, COUNT(*) AS number_of_trips
FROM `<프로젝트 ID>.policy_tags_demo.my_taxi_trips_copy` GROUP BY company
company 열에 대한 액세스 제어 설정을 해볼 것이다.
분류 및 정책 태그 만들기
분류는 조직 단위에서 관리되는 리소스이고 정책 태그를 그룹화하고 관리한다. 정책 태그는 분류 내에서만 있을 수 있다
.
Sensitive taxi data라는 이름의 태그를 붙여줄 것이다.
만들고 나서 액세스 제어를 적용해야 company 열에 대한 액세스가 제한된다.
(하지만 뒤에 나오겠지만 조직 단위의 권한이 필요한데 현재 권한이 없는 상태다.)
company 열에 정책 태그 추가
빅쿼리에서 아래 쿼리를 날리면 원래 액세스 거부로 오류가 떠야 한다.
SELECT company, COUNT(*) AS number_of_trips
FROM `PROJECT_ID.policy_tags_demo.my_taxi_trips_copy` GROUP BY company
하지만 앞서 말했던 것처럼 조직 단위의 권한에서 bigquery:dataPolicies.list권한이 현재 나에게 없기 때문에 액세스 제어를 적용할 수가 없었다.
액세스 제어를 설정하면 company 열에 대한 쿼리를 할 수 없고 액세스 하려면 사용하려는 유저에 대한 권한을 부여해줘야 한다.
아래 사진처럼 Data Catalog에 세분화된 권한의 리더 권한을 해당 유저에 부여해줘야 함.