ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Bigquery] 정책 태그(Policy Tags)란
    DB/Bigquery 2024. 2. 26. 00:24

    Bigquery의 정책 태그는 데이터 유형에 대한 분류 체계를 제공합니다. 이를 통해 데이터 관리 및 보안 규칙을 쉽게 적용할 수 있습니다. Bigquery의 정책 태그는 데이터 카탈로그에 대한 메타데이터를 제공하며, 이를 통해 데이터 거버넌스를 강화하고 데이터 액세스를 제어하며 데이터 보안을 향상시킬 수 있습니다.

    예를 들어 정책 태그를 통해 다음과 같은 액세스 검사를 시행할 수 있습니다.

    • TYPE_SSN을 포함하는 컬럼을 보려면 group:high-access에 있어야함
    • celery 라는 컬럼은 team:hr 이 있는 사람만 조회 가능

    컬럼 수준 액세스 제어 워크플로

    정책 태그의 액세스 제어 워크플로는 다음과 같습니다.

    1. 분류 및 정책 태그 정의
      1. 데이터의 분류 및 정책 태그를 만들고 관리합니다.
    2. BigQuery 컬럼에 정책 태그 할당
      1. BigQuery에서 스키마 주석을 사용하여 액세스를 제한하려는 각 컬럼에 정책 태그를 할당합니다.
    3. 분류에 액세스 제어를 적용
      1. 액세스 제어를 적용하면 분류의 모든 정책 태그에 정의된 액세스 제한이 적용됩니다.
    4. 정책 태그에 대한 액세스 관리
      1. 정책을 사용하여 각 정책 태그에 대한 액세스를 제한합니다. 정책은 정책 태그에 속한 각 컬럼에 적용됩니다.

    쿼리 시 사용자가 컬럼 데이터에 대한 액세스를 시도하면 BigQuery는 컬럼 정책 태그와 정책을 확인하여 사용자에게 데이터 액세스 권한이 있는지 확인합니다.

    정책 태그 권장 사항

    데이터 클래스 계층 구조 만들기

    정책 태그를 효율적으로 사용하기 위해선 먼저 비즈니스에 적합한 데이터 클래스의 계층 구조를 만드는 것이 중요합니다.

    조직에서 처리하는 데이터의 종류를 고려하여 적합한 데이터 클래스의 계층 구조를 만들어야합니다. 예를 들어 조직에 다음과 같은 데이터 클래스가 있을 수 있습니다.

    • PII 데이터
    • 재무 데이터
    • 고객 주문 내역

    몇 개의 Policy Tag로 여러 Column을 효율적으로 관리하며, 사용자 그룹에게 Policy Tag 별 권한을 주어 관리합니다. Policy Tag를 그룹화하여 루트 Policy Tag를 만들고, 상위 레벨에 권한을 부여하면 하위 Tag에도 적용됩니다.

    아래는 데이터 유형을 High, Medium, Low의 세 가지 최상위 정책 태그로 그룹화한 예시입니다.

    각 최상위 정책 태그에는 하위 정책 태그가 포함되어 있습니다. 예를 들어 High 정책 태그에는 Credit card, Government ****ID, Biometric 정책 태그가 포함되어 있습니다. 이러한 구조에는 다음과 같은 이점이 있습니다.

    • 최상위 정책 태그(High, Medium, Low)를 부여하면 하위 정책 태그를 포함하여 액세스 권한을 부여할 수 있음
      • 예) Low 정책 태그를 특정 그룹에 부여하면 하위 Email, Name, Address 정책 태그가 함께 적용
    • 정책 태그를 한 계층에서 다른 계층으로 이동할 수 있음
      • 예) address를 Low 계층에서 Medium 계층으로 이동하여 모든 Address 컬럼을 재분류하지 않고 액세스를 제한할 수 있음
    • 이와 같이 세분화된 액세스를 통해 소수의 데이터 분류 정책 태그만으로 다수의 컬럼에 대한 액세스를 관리할 수 있음

    컬럼 수준 액세스 제어에 사용되는 역할 및 API

    API

    정책 태그를 사용하기 위해선 BigQuery Data Policy API 를 활성화해야 합니다.

    또한 다음과 같이 읽기, 쓰기 제한이 되어 있으므로 할당량 조절이 필요하다면 조절해야 합니다.

    권한

    정책 태그가 설정된 컬럼의 데이터를 접근하기 위해선 FineGrainedReader 권한이 필요합니다.

    위의 권한은 IAM에서 부여하는 것이 아니라 생성한 정책 태그에서 태그 별로 권한을 부여해야만 합니다.

    정책 태그를 지정해야 하는 컬럼 분류하기

    사람이 직접 모든 테이블의 컬럼을 확인하면서 민감 정보를 찾거나 회사의 니즈에 따라 분류하는 것도 방법이지만 GCP의 Cloud Data Loss Prevention(Cloud DLP) 서비스를 사용하여 민감 데이터를 분류할 수 있습니다.

    해당 서비스를 사용하면 프로젝트, 테이블, 컬럼 수준으로 측정항목을 보고받을 수 있습니다.

    정책 태그가 설정된 테이블에 데이터를 쓸 때 주의사항

    정책 태그가 설정된 컬럼을 읽으려면 권한을 보유해야 합니다.

    • table (와일드카드(*) 포함)
    • view
    • table copy

    그러나 테이블에 어떠한 데이터를 쓸 때는 유형에 따라 요구사항이 달라집니다.

    insert, load

    insert일 경우, 권한이 필요하지 않습니다.

    update, delete, merge, copy

    정책 태그가 걸린 컬럼에 대한 권한이 없으면 작업을 수행할 수 없습니다.

    예시

    1. 정책 태그 생성

    1. 빅쿼리 > 정책 태그 선택

    1. 아래와 같이 생성

    1. 생성에 완료되면 아래와 같이 상세 설정을 확인할 수 있음

    2. 빅쿼리 컬럼에 정책 태그 설정

    1. 빅쿼리 콘솔에서 테이블의 스키마 수정 버튼 클릭

    1. 정책 태그를 추가할 컬럼 선택 후 , ADD POLICY TAG 클릭

    1. 1번에서 생성한 policy_tag_test에서 추가할 정책 태그 선택

    1. 추가가 완료된 정책 태그 확인

    1. 정책 태그가 설정된 컬럼은 미리보기에서 제외됨

    3. 정책 태그를 사용할 유저에게 권한 부여

    1. FineGrainedReader 권한이 없으면 * 또는 metric_name 컬럼을 조회하려 할 때, 다음과 같은 에러 확인

    1. 권한 추가를 위해 생성한 정책 태그에서 High를 선택

    1. 우측에서 세분화된 권한의 리더 역할 추가

    제한사항

    1. 컬럼에는 정책 태그를 1개만 포함할 수 있습니다.
    2. 테이블에는 최대 1,000개의 고유 정책 태그를 허용합니다.
    3. 정책 태그 구조의 뎁스는 최대 5개까지 가능합니다.
    4. 생성한 정책 태그와 적용할 빅쿼리 테이블의 위치(data location)이 동일해야 합니다.
    5. 정책 태그의 이름은 조직의 모든 프로젝트 사이에서 고유해야 합니다.
    6. 컬럼 또는 행 수준 액세스 제어를 사용 설정한 경우에는 리전 간에 테이블을 복사할 수 없습니다. 소스 테이블에 정책 태그가 있으면 리전 간 테이블 복사본이 거부됩니다.

    요약

    • 정책 태그를 설정하면 컬럼 조회를 한정된 인원에게만 접근하도록 가능
    • 정책 태그 설정된 컬럼에 권한이 없는 인원이 조회하려고 하면 쿼리 오류가 발생
    • 설정한 정책 태그에 권한을 부여하는 곳은 IAM이 아니라 정책 태그 페이지임

    레퍼런스

    https://cloud.google.com/bigquery/docs/column-level-security-intro?hl=ko

    https://cloud.google.com/bigquery/docs/best-practices-policy-tags?hl=ko

    https://cloud.google.com/bigquery/docs/column-level-security-writes?hl=ko

    https://cloud.google.com/bigquery/docs/column-level-security?hl=ko

    댓글