본문 바로가기
Database

빅쿼리 보안

by BTC_문땅훈 2023. 7. 7.

 

 

베하 !

문땅훈과 루피입니다😊

 

 

오늘은 빅쿼리 보안에 대해 알아보겠습니다.

 

민감한 정보가 있는 데이터 보안은 정말 중요합니다. 즉, 모두에게 보여지면 당연히 안되는 것이고, 특정 사용자, 부서마다 부여된 권한에 따라 데이터들이 보여야 합니다.

여기서 민감한 컬럼 정보들에 대해 세분화된 권한을 부여해주는 BigQuery Column 보안인 ‘Policy Tags’가 있습니다.

 


 

Policy Tags

  • 빅쿼리 데이터베이스 내에서 데이터 에 대한 보안 및 액세스 제어를 설정하는 데 사용되는 도구
  • Policy Tag를 사용하면 데이터를 그룹화하고 정책을 적용하여 특정 사용자 또는 그룹에 대한 데이터 액세스 제어 가능
  • 데이터의 구조, 민감도 또는 규정 준수와 같은 특성을 기반으로 데이터에 태그를 할당
  • 사용자, 역할 또는 프로젝트와 연결하여 정책을 생성하고 적용 가능
  • 보안 및 데이터 관리를 강화하고 민감한 데이터에 대한 액세스 제어를 효과적으로 관리 가능

이 때, 정책 태그의 특징으로 그룹화와 정책 설정: Policy Tag를 사용하여 데이터를 그룹화하고 각 그룹에 대한 정책을 설정할 수 있습니다.

즉, 계층을 나눠서 권한 설정이 가능합니다. (High, Medium, Low 유형으로 나뉨 그 안에 어떤 데이터가 속해있는지 구성)

  • 전체 정책 태그 그룹에 한 번에 액세스 권한 부여 가능
    • (EX) Low 계층에 대해 Data Catalog Fine Grained Reader 역할 부여
  • 한 계층에서 다른 계층으로 이동 가능
    • (EX) Address를 Low 계층에서 Medium계층으로 이동하여 모든 Address 열을 재분류하지 않고 액세스를 제한할 수 있습니다.

 

설정 방법

  • BigQuery > 정책태그에서 새분류로 설정해줄 태그 생성

 

생성 뒤 테이블 스키마 수정 > ‘ADD POLICY TAG’ 클릭하여 하여 적용해줄 컬럼에 해당 Policy Tags를 설정해주시면 됩니다!

 


 

Row Level Security (행 보안)

  • 사용자의 자격 조건을 기준으로 데이터를 필터링하고 테이블의 특정 행에 액세스하도록 허용
  • 행 수준 보안은 행 수준 액세스 정책을 통해 BigQuery 테이블의 데이터 하위 집합에 대한 세분화된 액세스 제어를 실현함으로써 최소 권한의 원칙 확장
  • 하나의 테이블에 여러 개의 행 수준 액세스 정책 포함 가능

 

EX1 ) Region 기반 행 보안

[출처] https://cloud.google.com/bigquery/docs/row-level-security-intro?hl=ko

예시를 들어보자면 dataset1.table1 테이블에 region 열에는 여러 리전 데이터가 포함되어 있습니다.

데이터 소유자 또는 관리자는 행 수준 보안을 사용하여 'group:apac의 사용자는 APAC 리전의 파트너만 볼 수 있음'과 같은 정책을 구현할 수 있습니다.

  • sales-apac@example.com 그룹의 사용자 = Region = "APAC"
  • sales-us@example.com 그룹의 사용자 = US 리전의 행만 보입니다.

즉, 사용자에게 권한이 부여된 해당 행 데이터(리전)에만 접근 할 수 있습니다.

us_filter라는 행 수준 액세스 정책은 미국의 영업 책임자인 jon@example.com을 포함한 여러 항목에 액세스 권한을 부여하며, 이제 이들은 모두 US 리전에 속하는 행에 액세스할 수 있습니다.

 

 

EX2 ) 민감한 정보를 기준으로 행 보안

[출처] https://cloud.google.com/bigquery/docs/row-level-security-intro?hl=ko

  • Salary(급여) 테이블에서 grantee_list는 회사 도메인의 구성원만 쿼리하도록 제한
  • 예시를 들었을 때 SESSION_USER() 함수를 통해 사용자의 이메일 주소를 기준으로 쿼리를 실행하는 사용자에게 속한 행인 jim@example.com 에만 액세스를 제한합니다.

 

기타 제한사항

  • 테이블 하나에 최대 100개의 행 액세스 정책이 있을 수 있습니다.
  • 행 액세스 정책은 Legacy SQL과 호환되지 않습니다. 행 수준 액세스 정책이 있는 테이블 쿼리에는 표준 SQL이 사용되어야 합니다. Legacy SQL 쿼리는 오류와 함께 거부됩니다.
  • JSON열에서는 행 수준 액세스 정책을 적용할 수 없습니다.
  • 일부 BigQuery 기능은 행 수준 보안과 호환되지 않습니다.
  • 행 수준 액세스 정책 만들기, 교체 또는 삭제는 DDL 문으로 수행되어야 합니다.
  • 테이블 샘플링은 행 수준 보안과 호환되지 않습니다.

 

 

그럼 또 다음에 만나요 ~ 

 

 

베빠 ! 😀

댓글