개인정보보호법 본격 시행 시절 데이터베이스 암호화 솔루션이 큰 인기를 끌었던 기억이 납니다. 데이터베이스 암호화와 접근 제어를 다소 느슨히 하던 기업들은 규제 준수를 위해 써드파티 솔루션 도입을 서둘러야 했습니다. 규제 준수는 사내 시스템만 해서 되는 게 아닙니다. 클라우드 이용이 늘면서 외부에 있는 데이터까지 규제 준수에 신경 써야 합니다.
강력한 테이블 수준 접근 제어
BigQuery table-level access controls(Table ACLs) 기능을 공개했습니다. Table ACL을 이용하면 더 세밀한 접근 제어를 할 수 있습니다. 이 기능은 다른 데이터웨어하우스 시스템과 호환성도 좋아 보안 정책 적용 편의성도 좋습니다.
Table ACL은 구글 클라우드가 제공하는 엔터프라이즈를 위한 접근 제어 플랫폼인 Cloud IAM (Cloud Identity and Access Management)를 기반으로 합니다. Table ACL을 적용하면 보안 기본 원칙 중 하나인 ‘최소 권한(least privilege)’에 따라 사용자 또는 서비스별로 필요한 최소한의 정보만 접근할 수 있도록 할 수 있습니다. BigQuery 테이블 수준에서 접근 제어를 강화할 수 있는 것입니다.
컬럼 수준에서 한 발 더 들어가 테이블 수준까지 접근 제어 지원
Table ACL은 컬럼 수준 접근 제어 기능인 BigQuery column-level security와 함께 적용하면 데이터 보안을 더 효과적으로 할 수 있습니다. 두 기능을 조합하면 한국 개인정보보호법, 유럽연합 GDPR, 미국 캘리포니아 소비자 개인정보보호법(CCPA) 등의 규제에 효과적으로 대응할 수 있습니다.
Table ACL을 적용하면 데이터 세트 전체가 아니라 단일 테이블 단위로 공유를 할 수 있습니다. 간편한 방식으로 권한 있는 사용자나 연계 서비스가 테이블 단위로 읽기/쓰기를 할 수 있는 것입니다.
Table ACL 시작하기
BigQuery 웹 화면에서 “share table” 버튼을 누르면 Cloud IAM 퍼미션 패널이 뜹니다. 이 화면에서 Table ACL 기능을 설정합니다. 방식은 데이터 세트 공유와 같습니다.
Table ACL 기능은 BigQuery 명령어나 REST API를 통해서도 적용할 수 있습니다. 두 방법 모두 Cloud IAM Policy JSON으로 접근 제어 정책을 정의하고 적용합니다. 다음 예를 보시죠. alice@example.com에 데이터 소유자 권한을 부여하고, bob@example.com은 데이터 뷰어 권한을 주는 예입니다.
{ “bindings”:[ { “members”:[ “user:alice@example.com” ], “role”:”roles/bigquery.dataOwner” }, { “members”:[ “user:bob@example.com” ], “role”:”roles/bigquery.dataViewer” } ], “etag”:”ABAC”, “version”:1 } |
테이블 정책 설정을 위해 bq get-iam-policy 및 bq set-iam-policy 명령을 사용할 수 있습니다. REST API를 이용할 경우 tables.getIamPolicy 및 table.setIamPolicy를 이용하면 됩니다. IAM 정책 관련 상세 내용은 관련 페이지를 참조 바랍니다. Table ACL 기능의 세부 내용은 관련 문서를 참고하십시오.