BigQuery로 데이터 웨어하우스 마이그레이션: 데이터 거버넌스

이 문서는 온프레미스 데이터 웨어하우스를 BigQuery로 마이그레이션하는 방법을 설명하는 시리즈의 일부입니다. 이 문서는 필요한 데이터 거버넌스 및 제어를 이해하는 데 도움이 됩니다.

마이그레이션 시리즈는 다음과 같은 부분들로 구성됩니다.

소개

데이터 거버넌스는 수집에서 사용, 폐기에 이르는 수명 주기 동안 데이터를 관리하는 데 사용되는 원칙적인 접근법입니다. 데이터 거버넌스 프로그램은 데이터 활동을 둘러싼 정책, 절차, 책임, 제어를 명확하게 설명합니다. 이 프로그램은 조직의 데이터 무결성 및 보안 요구사항을 모두 충족하는 방식으로 정보를 수집, 유지 관리, 사용, 배포하는 데 도움이 되고 직원이 데이터를 발견하고 최대한 활용할 수 있도록 지원합니다.

모든 조직에서는 데이터가 수집될 때부터 유용한 정보를 얻는 데 사용될 수 있을 때까지 데이터 관리 및 거버넌스를 가장 중요하게 고려해야 합니다.

다음 세 가지 주요 구성요소를 중심으로 데이터 거버넌스 사례를 구축하는 것이 좋습니다.

  • 사람들이 데이터 정책을 정의하고 동의하고 시행할 수 있게 해주는 프레임워크
  • 온프레미스 시스템, 클라우드 스토리지, 데이터 웨어하우스 플랫폼에서 모든 데이터 애셋 제어, 감독, 관리에 필요한 효과적인 프로세스
  • 데이터 정책 준수를 감독하고 관리하는 데 적합한 도구 및 기술

다음 섹션에서는 Gartner 데이터 레이크 참조 아키텍처를 통한 데이터 거버넌스에 기반을 둔 데이터 거버넌스 프레임워크와 이를 구현하는 데 사용되는 도구 및 기술을 설명합니다. 거버넌스로 충족되는 비즈니스 요구사항과 데이터 거버넌스 운용과 관련된 프로세스에 대한 설명은 클라우드 데이터 거버넌스 원칙 및 권장사항 백서를 참조하세요.

데이터 액세스 관리

기존에는 회사에서 경계 보안을 사용하여 내부 리소스를 보호했습니다. 달걀 껍질 보안 또는 성과 성벽 보안이라고도 하는 경계 보안은 위협요소가 경계 외부에만 있으며 경계 벽 내부에 있는 모든 것을 신뢰할 수 있다고 가정합니다. 하지만 공격자가 내부 네트워크에 액세스할 수 있게 되면 다른 시스템으로 이동하여 귀중한 데이터 애셋을 거의 아무런 제약 없이 탐색할 수 있기 때문에 회사에 비용이 많이 드는 결과를 초래하면서 이 가정은 잘못되었다는 것이 입증되었습니다.

공격자는 취약점, 직원이 설치한 멀웨어, 소셜 엔지니어링, 기타 수단을 통해 내부 네트워크에 액세스할 수 있습니다. 그러나 경계 보안 모델에 허점을 만드는 악의적인 외부 에이전트만이 유일한 위협요소는 아닙니다. 내부 네트워크의 애셋이 올바르게 보호되지 않는다면 신뢰할 수 있는 직원도 고의로 또는 무의식적으로 데이터를 수정, 삭제 또는 유출할 수 있습니다.

마지막으로 기업 네트워크의 진화로 인해 주변 보안이 점점 복잡해지고 있습니다. 예를 들어 다음과 같은 상황에서는 경계를 적용하기가 어렵습니다.

  • 직원이 클라이언트 사이트, 공항 또는 가정과 같은 신뢰할 수 없는 네트워크에서 원격으로 작업해야 하는 경우
  • 공급업체, 파트너 및 계약업체가 데이터 리소스에 직접 액세스해야 하는 경우
  • 회사 시스템 중 일부가 클라우드에 있는 경우

기존 온프레미스 엔터프라이즈 데이터 웨어하우스에서 마이그레이션하는 경우 사용자가 쿼리에 액세스하거나 데이터를 볼 수 있도록 하는 현재의 접근법은 심층적이지 않거나, 복잡하고 유지 관리 비용이 많이 들거나 둘 다 해당될 수 있습니다. BigQuery와 같은 클라우드 데이터 웨어하우스로 이전하면 심층적인 보안이 제공되며, 보안 프레임워크가 관리형 서비스 솔루션에 포함되어 있으므로 유지보수 비용이 적게 듭니다.

이 문서의 나머지 부분에서는 Google Cloud 및 BigQuery에서 데이터 액세스 관리를 수행하는 방법을 소개하고 자세히 설명합니다. 목표는 엔터프라이즈 데이터 웨어하우스를 마이그레이션할 때 이 보안 프레임워크로 얻을 수 있는 이점에 대한 개요를 제공하는 것입니다. 다른 클라우드에서 마이그레이션하거나 BigQuery 리소스를 처음부터 새로 빌드하는 경우에도 동일한 원칙이 적용됩니다.

리소스 관리

Google Cloud에서 워크로드를 설정하려면 Google Cloud에서 모든 리소스를 제어하는 구조와 각 제품의 특정 지침을 준수해야 합니다.

Google Cloud의 모든 리소스는 계층 구조로 구성됩니다. 최하위 수준에는 BigQuery 데이터 세트, Cloud Storage 버킷, Compute Engine 가상 머신 등과 같은 기본 구성요소가 있습니다. 이러한 하위 수준 리소스는 프로젝트라는 논리 컨테이너로 그룹화됩니다. 프로젝트는 모든 Google Cloud 서비스 사용, 청구 관리, 프로젝트 리소스에 대한 역할 및 권한 할당의 기반을 형성합니다. 그리고 프로젝트는 회사 내 다른 부서나 팀에 해당하는 폴더로 그룹화됩니다. 계층 구조의 최상위에는 해당 계층 구조가 속하는 회사를 나타내고 여러 폴더를 포함하는 조직 노드가 있습니다. 자세한 내용은 리소스 계층 구조 문서를 참조하세요.

Google Cloud 관점에서 BigQuery 데이터 세트는 리소스 계층 구조의 최하위 수준에 있습니다. BigQuery 관점에서 자세히 보면 데이터 세트는 테이블과 뷰에 대한 액세스를 구성 및 제어하는 데 사용되는 최상위 컨테이너입니다. 원칙적으로 기존의 온라인 트랜잭션 처리(OLTP)온라인 분석 처리(OLAP) 환경의 데이터베이스 또는 네임스페이스와 유사합니다. 생성 시 데이터 세트의 위치를 선택합니다. 쿼리는 동일한 위치의 데이터 세트만 참조할 수 있으므로 데이터 세트를 처음 만들고 쿼리를 설계할 때 위치를 고려해야 합니다.

보안 프레임워크

Google의 BeyondCorp 이니셔티브제로 트러스트 보안에 기반을 둔 보안 프레임워크를 구축합니다. 이 프레임워크에서 동적 액세스 제어 원칙은 리소스에 액세스하려는 사용자 또는 기기가 다음 요구사항을 충족해야 한다고 정의합니다.

  1. 사용자 인증 정보를 사용하여 인증해야 합니다.
  2. 해당 리소스에 액세스할 수 있는 권한이 있어야 합니다.
  3. 암호화를 사용하여 통신해야 합니다.

이러한 요구사항은 회사 인트라넷 내부, 공용 WiFi, 기내 등에서 사용자 또는 기기 네트워크 위치에 관계없이 충족되어야 합니다.

이 문서의 후속 섹션에서는 BeyondCorp에 제시된 원칙을 포함하여 데이터 애셋에 대한 액세스 관리의 개념과 권장사항을 살펴봅니다. 이 기사에서는 또한 유출 방지 대책으로 경계 보안 오버레이를 구현하는 방법도 설명합니다.

인증 및 승인

인증이란 BigQuery와 상호작용하는 클라이언트를 확인하고 ID를 인증하는 프로세스를 말합니다. 승인이란 인증된 ID가 BigQuery 및 데이터 세트와 상호작용하는 데 필요한 권한을 확인하는 프로세스를 말합니다. 즉, 인증은 누구인지를 확인하고 승인은 무엇을 할 수 있는지를 확인합니다.

ID

Google Cloud에서 Cloud ID는 기본 제공 ID 공급업체입니다. 온프레미스 데이터 웨어하우스에서 마이그레이션할 때는 Microsoft Active Directory와 같은 기존 ID 공급업체를 Cloud ID와 페더레이션하는 것이 좋습니다. 그러면 기존 ID 공급업체를 계속 사용하여 다음 태스크를 처리할 수 있습니다.

  • 사용자와 그룹 프로비저닝 및 관리
  • 싱글 사인온(SSO) 설정
  • 다단계 인증 구성

BigQuery 사용자에는 인간은 물론 BigQuery 클라이언트 라이브러리 또는 REST API를 사용하여 통신하는 애플리케이션도 포함됩니다. 이러한 애플리케이션은 인간이 아닌 사용자를 나타내기 위해 고안된 특별한 유형의 Google ID인 서비스 계정을 사용하여 자신을 식별해야 합니다.

Cloud ID는 ID 및 액세스 관리(IAM)라는 상위 제품의 앞부분입니다.

사용자가 인증된 후에도 BigQuery 및 해당 데이터 세트와 상호작용하는 데 필요한 권한이 사용자에게 있는지 확인해야 합니다.

액세스 관리

IAM은 인증 외에도 BigQuery 및 해당 데이터 세트에 대한 특정 권한이 있는 중앙 집중식 ID 승인 제어 기능을 제공합니다. IAM은 조직 전체에서 BigQuery의 보안 정책을 관리하고 프로젝트 수준의 액세스 이상으로 세분화된 수준에서 BigQuery 리소스에 대한 액세스 권한을 부여할 수 있습니다.

Cloud IAM에서는 권한에 따라 리소스에 허용되는 작업이 결정되지만 이러한 권한을 Google ID(사용자, 서비스 계정, Google 그룹스, Google Workspace 또는 Cloud ID 도메인)에 직접 할당할 수는 없습니다. 그 대신 권한의 모음인 역할을 Google ID에 할당하고 JSON 또는 YAML 파일로 선언된 정책을 사용하여 다음과 같은 Google Cloud 리소스 수준에서 이러한 바인딩을 적용할 수 있습니다.

  • 조직
  • 폴더
  • 프로젝트
  • 리소스 수준(BigQuery 데이터세트)

BigQuery 역할은 상기 모든 리소스 수준에서 바인딩될 수 있습니다. 예를 들면 다음과 같습니다.

  • 프로젝트 수준에서 사용자에게 할당할 수 있는 역할은 admin, metadataViewer, jobUser입니다.
  • BigQuery 데이터 세트 리소스 수준에서 사용자(또는 뷰)에게 할당할 수 있는 역할은 dataEditor, dataOwner, dataViewer입니다.
테이블 및 뷰의 IAM

BigQuery를 사용하면 데이터 세트의 리소스에 대해 전체 액세스 권한을 제공하지 않고 테이블 및 뷰와 같은 데이터 세트 내의 특정 리소스 유형에 대해 개별적으로 역할을 할당할 수 있습니다. 테이블 수준 권한은 테이블 또는 뷰에 액세스할 수 있는 사용자, 그룹, 서비스 계정을 결정합니다.

테이블 및 뷰 액세스 제어에 대한 자세한 내용은 테이블 액세스 제어 소개를 참조하세요.

루틴 또는 모델과 같은 개별 리소스에는 역할을 적용할 수 없습니다.

또는 기본 테이블에 액세스 권한을 부여하지 않고 승인 뷰를 사용하여 쿼리 결과에 대해 액세스 권한을 특정 사용자에게 부여할 수 있습니다. 승인된 뷰를 사용하여 테이블, 열, , 과 같은 하위 리소스 수준의 액세스를 제한할 수 있습니다. 하지만 사용자 요구 및 상황에 따라 가장 적합한 방법이 결정되지만 동일한 목적으로 승인된 뷰를 사용할 때는 데이터 분류의 두 형식인 열 수준 보안행 수준 보안에 대한 최신 구현이 일반적으로 권장됩니다.

엔드포인트 IAM

IAM을 사용하면 ID를 기반으로 인증 및 승인을 관리할 수 있습니다. 또한 BigQuery와 같은 공개 엔드포인트가 있는 서비스 주변에 보안 경계를 만들 수 있습니다. 이러한 액세스 제어 방법에 대한 자세한 내용은 네트워크 보안 섹션을 참조하세요.

구현 방법

마이그레이션을 위해 온프레미스 애플리케이션을 BigQuery에 연결해야 하는 경우가 종종 있습니다. 이 액세스가 필요한 경우의 예는 다음과 같습니다.

  • BigQuery에 데이터를 로드하는 온프레미스 데이터 파이프라인
  • BigQuery에서 데이터를 쿼리하거나 추출하는 온프레미스 보고, 분석 또는 기타 비즈니스 애플리케이션

BigQuery에서 데이터에 액세스하려면 애플리케이션이 API 요청과 함께 사용자 인증 정보를 가져오고 전송해야 합니다. 단기 또는 장기 사용자 인증 정보를 사용하여 온프레미스 애플리케이션 또는 다른 퍼블릭 클라우드에서 BigQuery API와 상호작용할 수 있습니다.

BigQuery 클라이언트는 서비스 계정 또는 사용자 인증 정보를 사용하여 인증되어야 합니다. 클라이언트가 인증되면 액세스 토큰 또는 키가 BigQuery API에 전달되어야 합니다. 그런 다음 이러한 사용자 인증 정보가 적절한 승인을 받았는지 확인하여 클라이언트에 BigQuery와의 모든 상호작용에 필요한 IAM 권한이 있는지 확인합니다.

단기 사용자 인증 정보

단기 사용자 인증 정보는 생성 시 짧은 시간(OAuth2.0OpenID의 경우 최대 수명 1시간, JWT의 경우 최대 수명 12시간)이 지나면 자동으로 만료됩니다. 서비스 계정 키를 관리하고 싶지 않거나 Google Cloud 서비스에 만료 기한이 지정된 권한을 부여하려면 단기 사용자 인증 정보를 사용하세요.

단기로 요청할 수 있는 사용자 인증 정보 유형은 다음과 같습니다.

  • OAuth 2.0 액세스 토큰
  • OpenID Connect ID 토큰
  • 자체 서명 JSON 웹 토큰(JWT)
  • 자체 서명 바이너리 객체(blob)

단기 사용자 인증 정보는 온프레미스 서비스가 Google Cloud ID 없이도 BigQuery와 통신할 수 있게 해줍니다. Google Cloud ID는 단기 사용자 인증 정보를 가져와야 하지만 토큰을 사용 중인 애플리케이션이나 서비스에는 Google Cloud ID가 필요 없습니다.

장기 사용자 인증 정보

장기 사용자 인증 정보(예: 서비스 계정 비공개 키 또는 OAuth 2.0 액세스 토큰과 갱신 토큰)는 삭제되거나 취소되기 전까지 BigQuery에 대한 액세스를 허용합니다. 서비스 계정 비공개 키는 생성된 후 계속 유지되므로 새로고칠 필요가 없습니다. OAuth 2.0 액세스 토큰은 만료 기한이 있지만 함께 제공되는 갱신 토큰으로 오래 사용할 수 있습니다. 이 갱신 토큰을 사용하면 갱신 토큰이 활성 상태인 경우에 한해 재인증 없이 새 액세스 토큰을 요청할 수 있습니다. 이 프로세스는 Google의 OAuth 2.0 플레이그라운드에 설명되어 있습니다.

장기 사용자 인증 정보는 늘어난 수명을 고려해서 원격 클라이언트 머신이나 워커 노드에서 주의해서 관리해야 합니다. 권한이 있는 사용자만 액세스할 수 있는 안전한 위치에 보관하는 것이 좋습니다. 사용자 인증 정보를 코드 저장소에 저장하지 마세요. 코드에 액세스할 수 있는 모든 사람이 키에도 액세스할 수 있으며 데이터에도 액세스할 수 있습니다. 사용자 인증 정보 유출 시 서비스 경계를 사용하여 이러한 원치 않는 외부 액세스 위험을 완화할 수 있습니다.

장기 사용자 인증 정보 저장 시 권장되는 전략은 다음과 같습니다.

  • 키 관리 서비스(KMS)가 지원되거나 지원되지 않는 Cloud Storage 사용
  • 안전한 온프레미스 스토리지 사용
  • 타사 보안 비밀 관리 솔루션

서비스 계정 비공개 키는 개별 서비스 계정에 속하는 암호화 서명된 JWT입니다. 서명된 JWT는 Bearer 토큰으로 직접 사용되므로 Google 승인 서버에 대한 네트워크 요청이 필요하지 않습니다. 키는 자동으로 만료되지 않으며 유출 시 액세스 권한이 취소되므로 정기적으로 키를 순환시키는 것이 보안 권장사항입니다. 이 프로세스를 위해서는 새 키를 생성하고 승인된 모든 사용자와 서비스가 새 키에 액세스할 수 있게 하고 이전 키를 삭제해야 합니다. 키를 순환시키면 키가 손상될 경우 유출이 감지되지 않아도 손상된 키의 BigQuery에 대한 액세스 권한이 자동으로 취소됩니다.

비익명 BigQuery 요청

비공개 서비스 계정 키와 갱신 토큰은 모두 서비스 계정을 사용한 인증을 지원합니다. 여러 사용자와 애플리케이션이 동일한 서비스 계정에 액세스할 수 있어서 사용자 또는 애플리케이션을 식별할 수 없기 때문에 이러한 요청은 익명입니다. 그러나 많은 기업 고객은 BigQuery와 같은 Google Cloud 리소스에 대한 액세스 권한이 요청을 시작한 개별 사용자에게 연결되어 있어야 한다고 요구합니다. 이 경우 OAuth 2.0 3-legged(3LO) 흐름을 사용하여 서비스 계정이 아닌 최종 사용자를 대신하여 인증할 수 있습니다.

2-legged 흐름에서 애플리케이션은 서비스 계정의 사용자 인증 정보를 직접 저장하고 해당 서비스 계정을 대신하여 BigQuery API를 호출합니다. 하지만 3-legged 흐름에서 리소스 소유자는 사용자 인증 정보를 직접 공유하지 않고 BigQuery 리소스에 대한 액세스 권한을 클라이언트에 부여합니다. 사용자 대신 요청이 전송되고 사용자 동의가 필요한 경우도 있습니다. 사용자가 인증되면 승인 코드를 액세스 토큰 및 갱신 토큰으로 교환할 수 있습니다.

네트워크 보안

Virtual Private Cloud 네트워크는 물리적 네트워크와 유사하지만 Google Cloud에 가상화되어 있습니다. 네트워크 수준에서 방화벽 규칙을 정의하여 가상 머신 인스턴스에서 들어오고 나가는 트래픽을 제어할 수 있습니다. 그러나 BigQuery 또는 Cloud Storage와 같은 API 기반 서비스에 대한 방화벽 규칙은 정의할 수 없습니다. 이러한 유형의 서비스에는 Google Virtual Private Cloud(VPC) 서비스 제어를 사용하여 트래픽을 제한할 수 있습니다.

VPC는 BigQuery 또는 Cloud Storage와 같은 공개 엔드포인트가 있는 Google API 기반 서비스 주변에 서비스 경계를 정의합니다. 서비스 경계는 경계 내부의 리소스와 경계 외부의 리소스 간 데이터 이그레스 및 인그레스를 제한하여 데이터 무단 반출 위험을 완화합니다. 이러한 제어를 올바르게 구현하면 권한이 없는 네트워크가 데이터 및 서비스에 액세스할 수 없으며 권한이 없는 Google Cloud 프로젝트에 데이터를 복사할 수 없습니다. 경계 내에서는 여전히 자유롭게 통신이 이루어질 수 있지만 경계 외부와의 통신은 제한됩니다.

VPC 서비스 제어를 IAM 액세스 제어와 함께 사용하는 것이 좋습니다. IAM이 세분화된 ID 기반 액세스 제어를 제공하는 경우 VPC 서비스 제어는 보다 광범위한 컨텍스트 기반 경계 보안을 지원합니다.

컨텍스트 인식 액세스 제어

공개 인터넷의 API 요청은 경계의 액세스 수준에 따라 서비스 경계 내 리소스에 대한 액세스가 허용되거나 거부됩니다. 요청은 IP 범위 및 사용자/서비스 계정 ID와 같은 클라이언트 컨텍스트에 따라 분류됩니다. 예를 들어 BigQuery API 요청이 유효한 사용자 인증 정보이지만 신뢰할 수 없는 네트워크에서 온 경우 다음 다이어그램과 같이 VPC 네트워크 및 서비스 경계에 대한 액세스가 거부될 수 있습니다.

유효한 사용자 인증 정보이지만 신뢰할 수 없는 네트워크의 BigQuery API 요청은 VPC 네트워크 및 서비스 경계에 대한 액세스가 거부될 수 있습니다.

서비스 경계

VPC 서비스 경계는 Google Cloud 조직 수준에서 구성되므로 보안 정책을 중앙 집중식으로 관리할 수 있습니다. 그런 다음 해당 조직 및 서비스(예: BigQuery API) 내의 여러 프로젝트를 각 경계에 할당할 수 있습니다. 동일한 서비스 경계에 있는 프로젝트 및 데이터는 이러한 모든 동작이 경계 내에서 유지되는 한 유연하게 데이터를 처리, 변환, 복사할 수 있습니다. 다음 다이어그램은 서비스 경계를 사용하는 방법을 보여줍니다.

동일한 서비스 경계에서 데이터 처리, 변환, 복사

다른 서비스 경계의 Google Cloud 리소스가 통신해야 하는 경우(예: 한 프로젝트 및 서비스 경계의 BigQuery와 다른 프로젝트 및 서비스 경계의 Compute Engine) 조직 수준에서 경계 브리지를 만들 수 있습니다. 경계 브리지를 사용하면 여러 서비스 경계에서 Google Cloud 리소스 간의 통신이 가능합니다. Google Cloud 프로젝트는 하나의 서비스 경계에만 속할 수 있지만 여러 경계 브리지의 일부가 될 수 있습니다.

하이브리드 환경의 데이터 액세스

하이브리드 온프레미스 및 클라우드 환경의 경우 온프레미스 네트워크용 비공개 Google 액세스를 구성하여 서비스 경계 및 온프레미스 환경 간 비공개 통신을 허용할 수 있습니다. 따라서 온프레미스 환경에서 BigQuery 데이터 세트에 액세스할 수 있습니다. 이러한 요청은 Google Cloud와의 비공개 연결(예: 경로 기반 VPN 또는 Cloud Interconnect 연결)을 통해 전송되어야 합니다. 요청은 비공개 인터넷을 통과하지 않습니다.

이 구성은 온프레미스 네트워크에서 Google Cloud 서비스에 저장된 데이터로 서비스 경계를 확장하여 민감한 정보가 비공개로 유지되도록 합니다. 이러한 비공개 통신 구성은 restricted.googleapis.com의 API에만 사용할 수 있습니다. 다음 다이어그램은 이 구성의 예시를 보여줍니다.

온프레미스 네트워크에서 Google Cloud 서비스에 저장된 데이터로 서비스 경계 확장

암호화

Google Cloud 및 BigQuery에서 데이터가 저장되고 전송되는 방식을 온프레미스 엔터프라이즈 데이터 웨어하우스와 비교하여 살펴볼 때는 보안 프레임워크를 재검토하는 것이 유용합니다.

BeyondCorp의 동적 액세스 제어 원칙에는 모든 액세스가 암호화되어야 한다고 나와 있습니다. 따라서 데이터 보호 방법으로 암호화를 도입하여 예상 밖의 데이터 유출 상황에서도 저장 데이터 또는 전송 중인 데이터를 읽을 수 없게 해야 합니다. 그러면 데이터 보호를 위한 방어막이 한층 강화됩니다.

저장 데이터 암호화

Google Cloud는 고객이 아무런 조치를 취하지 않아도 기본으로 저장된 데이터를 암호화합니다. 고급 암호화 표준(AES)은 미국 국립 표준 기술 연구소(National Institute of Standard and Technology)의 권고에 따라 저장 데이터를 암호화하는 데 사용됩니다.

BigQuery 데이터세트의 데이터는 디스크에 기록되기 전에 여러 청크로 분할됩니다. 각 청크는 고유한 데이터 암호화 키(DEK)로 암호화됩니다. 여러 키를 사용하면 예상치 못하게 DEK가 손상될 경우 '폭발 반경'이 해당 데이터 청크로 제한됩니다. 그리고 이러한 키는 자체적으로 고유한 키 암호화 키(KEK)를 사용하여 암호화됩니다. 암호화된 DEK는 연결된 데이터 근처에 저장되지만 KEK는 Cloud Key Management Service(KMS)에 중앙 집중식으로 저장됩니다. 이러한 계층 구조적 키 관리 방법을 봉투 암호화라고 합니다. 자세한 내용은 저장 데이터 암호화의 키 관리 섹션을 참조하세요.

다음 다이어그램은 저장 데이터 암호화의 작동 방식을 보여줍니다.

저장 데이터 암호화

기본적으로 모든 키는 Google에서 관리합니다. 그러나 키를 직접 관리하도록 선택할 수 있습니다. 이 기법을 고객 관리 암호화 키(CMEK)라고 합니다. 이 기법을 사용하면 Cloud KMS를 사용하여 대칭 암호화 키를 생성, 순환, 자동 순환, 폐기할 수 있습니다. BigQuery와 함께 CMEK를 사용하는 방법에 대한 자세한 내용은 Cloud KMS 키로 데이터 보호를 참조하세요.

전송 중인 데이터 암호화

데이터가 Google이나 Google의 대리인이 통제하지 않는 물리적 경계 외부로 이동할 때 Google Cloud는 모든 전송 중 데이터를 암호화하고 인증합니다. 이러한 경계 내에서 전송 중 데이터는 일반적으로 인증되지만 반드시 암호화될 필요는 없습니다.

전송 중 암호화는 연결이 설정 및 인증된 후 다음과 같이 잠재적 공격으로부터 데이터를 보호합니다.

  • 제3자가 일반적으로 제공하는 네트워크 하위 계층을 신뢰할 필요성을 없앱니다.
  • 통신에서 가로채기 시도가 발생하면 공격자의 데이터 액세스를 차단합니다.

전송 중 암호화는 대략적으로 다음과 같이 작동합니다. 데이터가 전송되기 전에 암호화된 후 엔드포인트가 인증되고, 데이터가 목적지에 도달하면 복호화되고 확인됩니다. 하지만 사용되는 보안 방법은 보호하는 연결 유형에 따라 다릅니다. 이 섹션에서는 암호화를 사용하여 BigQuery에서 들어오거나 나가는 연결을 보호하는 방법을 중점적으로 설명합니다.

BigQuery는 Google Cloud 서비스이므로 사용자 또는 애플리케이션이 요청을 보내면 요청이 Google 프런트엔드(GFE)라는 전 세계에 분산된 시스템에 먼저 도달합니다. GFE는 들어오는 HTTP(S), TCP, TLS 프록시 트래픽을 종료하고 DDoS 공격 대책을 제공하며 트래픽을 모든 서비스로 라우팅하고 부하를 분산시킵니다.

Google Cloud 서비스에서 들어오고 나가는 트래픽에 추가 보안 조치를 적용해야 하는지 고려해야 합니다. 이러한 조치는 업스트림 및 다운스트림 프로세스를 마이그레이션할 때 관련이 있습니다. 예를 들어 Google Cloud에서 호스팅되는 커스텀 애플리케이션에 대한 사용자 또는 애플리케이션 간 요청은 여러 가지 방법으로 라우팅될 수 있습니다. 일반적으로 Cloud Load Balancing을 사용 중인 경우 트래픽이 GFE를 통과하므로 이 경로는 이전 카테고리에 속합니다. Cloud VPN을 사용 중인 경우 연결이 IPsec으로 보호됩니다. 반면에 외부 IP 주소, 네트워크 부하 분산기 IP 주소 또는 Cloud Dedicated Interconnect를 통해 VM에 직접 연결하는 경우에는 기본적으로 연결이 암호화되지 않습니다. 따라서 TLS와 같은 보안 프로토콜을 사용할 것을 적극 권장합니다.

Google Cloud가 각 연결 흐름에서 전송 중인 데이터 암호화를 처리하는 방법에 대한 자세한 내용은 Google Cloud의 전송 중인 데이터 암호화를 참조하세요.

암호 삭제

애플리케이션에서 필요한 경우(예: 테이블의 특정 열을 데이터 마스킹하거나 암호화 삭제가 필요한 경우) Google에서 기본적으로 제공하는 암호화 외에 자체 암호화를 적용할 수 있습니다.

암호화 삭제 또는 암호화 파쇄는 데이터를 암호화하는 데 사용된 키를 삭제하여 데이터를 복구할 수 없게 렌더링하는 프로세스입니다. 데이터를 더 이상 복호화할 수 없으므로 데이터가 효과적으로 삭제됩니다.

암호화된 전체 데이터가 아닌 키만 삭제되므로 이 삭제 방법은 빠르고 영구적이며 다음과 같은 경우에 일반적으로 사용됩니다.

  • 암호화된 데이터가 키보다 훨씬 큰 경우(예: 암호화된 디스크, 전화, 데이터베이스 레코드)
  • 암호화된 데이터를 삭제하는 데 너무 많은 비용이 들거나 해당 작업이 복잡하거나 실현 불가능한 경우(예: 많은 저장소를 통해 확산된 데이터 또는 수정 불가능한 스토리지)

BigQuery는 키 생성, AEAD 암호화 개념을 사용한 쿼리 내 데이터 암호화복호화 기능을 제공합니다.

데이터 검색

모든 규모의 조직에서 사용할 수 있는 데이터 볼륨, 다양성, 속도가 증가하고 있습니다. 이러한 데이터 확산은 여러 가지 과제를 가져옵니다.

  • 데이터가 여러 저장소에 분산되어 있고, 항상 정리되어 있는 것은 아니며, 복제된 경우도 있기 때문에 데이터를 검색하기가 점점 어려워지고 있습니다.
  • 데이터가 검색되더라도 데이터가 어디에서 왔는지, 실제로 원하는 데이터를 나타내는지, 비즈니스 결정을 내리는 데 참고할 만큼 신뢰할 수 있는지 확실하지 않습니다.
  • 데이터 관리도 어려워지고 있습니다. 데이터의 소유자가 누구이고, 누가 데이터에 액세스할 수 있으며, 데이터에 대한 액세스 권한을 얻는 프로세스가 무엇인지 확실하지 않습니다.

메타데이터는 데이터를 설명하는 속성으로 이루어져 있으며 상기 질문에 대한 해답을 제시합니다. 메타데이터를 수집하는 과정은 도서관의 카드식 목록을 작성하는 것과 유사합니다. 도서관의 모든 책에는 책의 저자, 출판연도, 판, 주제 등을 나타내는 물리적 카드가 있습니다. 책과 마찬가지로 데이터에도 소유자, 출처, 처리 날짜 또는 품질 등급과 같은 속성 세트가 첨부될 수 있습니다.

기존에는 회사에서 스프레드시트, 위키 페이지, 자체 개발 시스템, 제3자(타사) 소프트웨어와 같은 여러 가지 방법을 사용하여 메타데이터를 캡처하고 정리했습니다. 일반적인 문제는 수동 입력이 필요하다는 점과 선별 및 유지보수, 시스템 호환성 및 범위였습니다. 최종적인 문제는 데이터 검색 및 메타데이터 수집이 성장하는 조직에서는 확장될 수 없는, 사람에서 사람으로 전달되는 개인 경험에 의존하는 유기적인 프로세스인 경우가 많다는 점입니다. 이를 토대로 볼 때 이러한 경험이 없는 한 분석가가 자신이 액세스할 수 있는 데이터와 해당 데이터를 이해하는 방법을 어떻게 알 수 있을까요?

회사에서는 이러한 내부 과제 외에도 개인정보 보호법(GDPR), 바젤은행감독위원회(Basel Committee for Banking Supervision) 239(BCBS239), 건강 보험 이동성 및 책임법(HIPAA)과 같이 데이터를 추적, 보호, 보고하도록 하는 규제 및 규정 준수 요구사항의 증가에 따른 부담을 안고 있습니다.

Google Cloud는 이러한 고객 요구사항에 부응하기 위해 조직이 Google Cloud에서 데이터를 검색, 분류, 이해할 수 있게 해주는 완전 관리형, 확장형 메타데이터 관리 서비스인 Data Catalog를 제공합니다.

Data Catalog 아키텍처는 다음을 기반으로 합니다.

  • 메타데이터 저장소: Cloud Spanner에 기반을 두고 있습니다. Cloud Spanner는 모든 메타데이터 항목을 저장하는 데 사용되며 전 세계에 분산된 strong consistency를 가진 데이터베이스입니다.
  • 실시간 및 배치 syncer: 기술 메타데이터 자동 수집용
  • Google 검색 색인: Gmail 및 Google 드라이브 검색 기능에 사용되는 것과 동일한 기술을 지원하며 액세스제어 목록(ACL)이 내장된 확장형 고성능 시스템입니다.

Data Catalog는 모든 데이터 애셋에 대한 통합 뷰를 제공합니다. 따라서 믿을 수 있는 데이터 거버넌스 프로세스의 기초가 됩니다.

다음 다이어그램은 BigQuery, Pub/Sub, Cloud Storage에 메타데이터, 검색, 데이터 손실 방지 기능을 제공하는 Data Catalog를 사용하는 간소화된 아키텍처를 보여줍니다. 이러한 기능은 이후 섹션에서 설명합니다.

Data Catalog를 사용하여 메타데이터, 검색, 데이터 손실 방지를 제공하는 간소화된 아키텍처

메타데이터

데이터 검색 프로세스의 핵심은 의사 결정의 원동력이 될 적절한 데이터를 찾는 기능입니다. 도서관을 다시 예로 들면, 도서관에서 책을 찾으려면 사용 가능한 도서관 서적에 대한 메타데이터가 필요한 것처럼 빅 데이터 세계에서는 데이터 애셋에 대한 메타데이터가 있어야 데이터 애셋을 찾을 수 있습니다.

Data Catalog는 BigQuery, Pub/Sub, Cloud Storage에서 메타데이터를 자동으로 수집할 수 있습니다. 또한 기술과 비즈니스라는 두 가지 메타데이터 유형을 구분합니다.

기술 메타데이터에는 테이블 이름, 열 이름, 설명, 생성 날짜와 같은 정보가 포함됩니다. 이 유형의 메타데이터는 이미 소스 시스템에 있습니다. Data Catalog는 이러한 애셋이 생성될 때마다 사용자가 새 데이터 애셋을 수동으로 등록하지 않아도 기술 메타데이터를 색인으로 자동 수집합니다.

반면 데이터 애셋에는 개인 식별 정보(PII)가 열에 포함되어 있는지 여부, 데이터 애셋의 소유자, 삭제 기한 또는 보관 기한, 데이터 품질 점수와 같은 암시적 비즈니스 컨텍스트가 연결되어 있습니다. 이러한 유형의 메타데이터를 비즈니스 메타데이터라고 합니다.

비즈니스 메타데이터는 서로 다른 역할의 사용자가 비즈니스 컨텍스트의 서로 다른 부분에 관심이 있기 때문에 기술 메타데이터보다 더 복잡합니다. 예를 들어 데이터 분석가는 ETL 작업이 성공적으로 실행되었는지 여부, 처리된 행 수, 오류 또는 경고가 있는지 여부 등 ETL 작업의 상태에 관심이 있을 수 있습니다. 제품 관리자는 데이터가 공개 데이터와 비공개 데이터 중 무엇으로 분류되었는지, 데이터 수명 주기가 프로덕션, 테스트, QA 중 어디에 해당되는지에 관심이 있을 수 있습니다.

이러한 복잡성을 해결하려면 Data Catalog를 사용하여 비즈니스 메타데이터를 템플릿으로 그룹화하면 됩니다. 템플릿은 속성이라는 메타데이터 키-값 쌍의 그룹입니다. 템플릿 세트는 메타데이터의 데이터베이스 스키마와 유사합니다.

메타데이터 태그는 테이블과 열 모두에 적용할 수 있는 템플릿 인스턴스입니다. 이러한 태그가 열에 적용되면 사용자는 특정 열에 PII가 포함되어 있는지, 더 이상 사용되지 않는지 여부 등과 특정 수량을 계산하는 데 사용된 수식까지 확인할 수 있습니다. 기본적으로 비즈니스 메타데이터는 데이터를 의미 있게 사용하는 데 필요한 컨텍스트를 제공합니다.

다음 다이어그램은 샘플 고객 테이블(cust_tbl)과 해당 테이블 및 열에 연결된 여러 비즈니스 메타데이터 태그를 보여줍니다.

샘플 고객 테이블

Data Catalog는 직관적인 사용자 인터페이스 외에도 기술 사용자가 메타데이터에 주석을 달거나 메타데이터를 대량으로 검색할 수 있게 해주는 API도 제공합니다. 지원되는 언어는 Python, 자바, NodeJS입니다. API를 사용하면 메타데이터 태스크를 확장할 수 있을 뿐만 아니라 프로그래매틱 방식으로 Data Catalog와 통합할 수 있어 Data Catalog를 백엔드의 일부로 사용하는 커스텀 엔터프라이즈 애플리케이션을 구축할 수 있습니다.

데이터 애셋에 메타데이터를 추가했다면 데이터 검색의 기초는 만들어졌지만 절반은 완성되지 않은 것입니다. 나머지 절반은 기술 메타데이터와 비즈니스 메타데이터를 모두 사용하여 관련 결과를 반환하는 강력한 검색 기능을 통해 애셋을 검색하는 기능입니다.

Data Catalog는 소스에서 모든 메타데이터의 색인을 생성하고 프로그래매틱 통합을 위해 사용자 친화적 UI 및 API를 통해 제공합니다. 메타데이터와 일치하는 키워드를 사용하여 Google 검색 스타일로 작동합니다. 또한 고급 사용자에게 속성별 검색을 제공합니다. 속성별 검색에서 제공하는 직관적인 필터 및 한정된 조건자를 통해 사용자는 테이블, 데이터 세트 또는 파일만 검색하거나 특정 프로젝트, 조직 또는 특정 Google Cloud 제품 내에서만 검색하여 결과 범위를 좁힐 수 있습니다.

Data Catalog는 UI에 자주 검색되는 BigQuery 테이블 목록도 보여줍니다. 이 기능은 테이블 세부정보, 스키마, BigQuery 콘솔에 대한 편리한 빠른 액세스를 제공합니다.

액세스 제어

사용자가 메타데이터를 통해 검색하고 데이터 애셋을 검색할 수 있게 하면 사용자의 생산성, 독립성, 몰입도가 높아집니다. 그러나 모든 사람이 모든 메타데이터에 액세스할 수 있어야 하는 것은 아닙니다. 적절한 사람이 올바른 데이터에 액세스할 수 있게 되면 직원이 자신의 역할과 관련된 데이터 애셋의 하위 집합에 집중할 수 있으며 메타데이터 또는 데이터 무단 반출을 방지할 수 있습니다.

Data Catalog는 IAM과 통합되어 검색에서 선택한 데이터 애셋을 찾거나 애셋에 대한 비즈니스 메타데이터를 생성할 수 있는 사용자를 제어할 수 있습니다.

기술 메타데이터의 경우 액세스 관리를 단순화하기 위해 자동 수집에서 태그가 지정된 데이터에 부여된 메타데이터에 동일한 권한 집합을 적용합니다. 사용자가 데이터에 액세스할 수 있으면 추출된 기술 메타데이터에도 액세스할 수 있으며 Data Catalog 검색을 통해 데이터 애셋을 찾을 수 있습니다. 이 방법은 데이터 애셋이 등록되고 별도의 권한이 부여되기를 기다리는 대신 수동 개입이 필요 없는 합리적인 기본값을 제공합니다.

비즈니스 메타데이터의 경우 메타데이터에 액세스할 수 있는 사용자 또는 사용자 그룹을 정의합니다. 이러한 사용자 중 일부는 메타데이터와 데이터 중 하나에만 액세스할 수 있거나 둘 다 액세스할 수 없습니다.

  • 메타데이터에 액세스할 수 없으면 Data Catalog 검색에서 데이터 애셋을 찾을 수 없게 됩니다.
  • 메타데이터에 액세스할 수 있지만 데이터에는 액세스할 수 없는 경우 데이터 애셋을 찾을 수는 있지만 데이터를 읽을 수는 없습니다. 이 기능을 사용하면 기본 데이터를 노출하지 않고도 유용한 데이터 세트를 발견할 수 있으므로 보안을 손상시키지 않으면서 조직의 데이터 애셋의 유용성을 높일 수 있습니다. 그러면 사용자가 데이터 소유자에게 액세스 요청을 제기할 수 있으며 비즈니스 사용 사례, 데이터 민감도, 기타 요인에 따라 해당 요청이 승인되거나 거부될 수 있습니다.

이 섹션에서는 Data Catalog와 IAM을 통합하여 메타데이터에 대한 액세스 제어를 적용하는 방법을 소개했습니다. 또한 사용자에게 Data Catalog 역할을 부여하여 Data Catalog 제품 자체에 액세스할 수 있는 사용자를 제어할 수 있습니다. 데이터 애셋에 대한 액세스를 제어하려면 IAMVPC 서비스 제어를 함께 사용하세요. 자세한 내용은 Data Catalog IAM 문서를 참조하세요.

계보

데이터 웨어하우스와 관련하여 계보는 데이터 애셋이 출발지에서 목적지로 가는 경로를 나타냅니다. 데이터 애셋의 출발지는 제3자가 제공한 시장 데이터와 같은 외부 소스 또는 고객 트랜잭션을 저장하는 관계형 데이터베이스와 같은 내부 소스가 될 수 있습니다. 데이터 애셋 목적지는 대시보드, 보고서 또는 API로 제공되는 데이터 피드가 될 수 있습니다.

이 모든 경우에 목적지에서 제공되는 데이터가 원본 데이터에 적용된 변환을 정확하게 반영한다는 것을 알아야 합니다. 데이터 소비자는 수신하는 데이터를 신뢰할 수 있어야 하고, 규제 기관은 보고되는 데이터를 확인하고 이해하며, 내부 이해관계자는 비즈니스 프로세스와 데이터 처리 파이프라인의 상호 관계의 격차를 식별하는 것이 중요합니다.

캡처해야 할 데이터는 비즈니스 사례의 범위에 따라 다릅니다. 여기에는 출발지 데이터 소스, 데이터 소유자, 데이터 애셋이 변환되는 비즈니스 프로세스 또는 변환 중에 포함된 애플리케이션 및 서비스와 같은 메타데이터가 포함될 수 있습니다.

이 정보를 수동으로 캡처하면 오류가 발생하기 쉬우며 중요한 비즈니스 사례에서는 확장할 수 없습니다. 따라서 프로그래매틱 관점에서 데이터 계보에 접근하는 것이 좋습니다.

  • 비즈니스 또는 규제 요구사항을 충족하기 위해 캡처할 메타데이터 속성 세트를 결정합니다.
  • 이 비즈니스 메타데이터를 캡처할 템플릿을 만듭니다. Data Catalog는 double, string, boolean, datetime, enum과 같은 5가지 데이터 유형을 지원하므로 이를 결합하여 풍부한 태그를 만들 수 있습니다. 마지막 형식은 일련의 커스텀 값을 사용하여 데이터 변환의 단계 또는 유사한 열거 값을 설명할 수 있습니다.
  • Data Catalog API를 사용하여 데이터 파이프라인의 각 관련 단계에 대한 관련 계보 메타데이터를 기록합니다.

Data Catalog 대신 Google CDAP의 관리형 버전인 Cloud Data Fusion을 사용하여 데이터 변환을 구현할 수 있습니다. Cloud Data Fusion은 단일 통제 환경에서 데이터 처리 환경을 캡슐화하여 데이터 세트 및 필드 수준에서 계보가 자동으로 기록되도록 합니다. 자세한 내용은 오픈소스 계보 관련 CDAP 문서를 참조하세요.

데이터 분류 및 관리

엔터프라이즈 데이터 웨어하우스에서 수집되는 데이터 볼륨, 속도, 다양성은 데이터 분류 및 관리에 문제를 일으킬 수 있습니다.

데이터 분류란 고유한 특성을 사용하여 데이터를 형식, 형태 또는 범주별로 분류하는 프로세스입니다. 여러 데이터 형식에 적절한 거버넌스 정책을 적용하려면 데이터를 효과적으로 분류할 수 있어야 합니다.

예를 들어 비즈니스 문서의 내용에 따라 비보안 또는 기밀과 같은 민감도 수준으로 분류할 수 있습니다. 이러한 각 유형마다 특정 관리 정책이 적용될 수 있습니다. 예를 들어 기밀 문서는 특정 사용자 그룹만 액세스해야 하며 7년 동안 보관해야 합니다.

데이터 관리 내에서 고려해야 할 몇 가지 요소가 있습니다.

  • 데이터 변경 관리: 데이터 차원이 변경될 때 효과를 제어합니다. 데이터 차원은 자주 변경되지 않지만 수정될 경우 팩트 테이블의 데이터가 더 이상 업데이트된 차원에 맞지 않아서 파급 효과가 발생할 수 있습니다.
  • 참조 데이터 관리: 조직의 모든 시스템에 참조 데이터에 대한 정확하고 일관된 보기를 제공합니다.
  • 보관 및 삭제: 사용자가 데이터를 수정 또는 삭제하지 못하게 하는 방법과 데이터가 자동으로 만료되도록 하는 방법

BigQuery로 마이그레이션할 때는 Cloud Data Loss Prevention(DLP)과 같은 자동 데이터 분류 기능을 활용하세요. 다음 섹션에서는 Google Cloud에서 이러한 데이터 분류 및 관리 문제를 해결하는 데 도움이 되는 기능과 기법을 제공합니다.

데이터 손실 방지

많은 조직에는 수백 개의 열이 있는 수천 개의 테이블이 있습니다. 이러한 테이블 중 일부는 Column_5와 같이 정확하지 않거나 알아보기 어렵지만 PII가 포함된 열 이름이 있습니다. 이로 인해 PII를 식별하고 이후에 해당 데이터에 정책을 적용하기가 어렵습니다.

Cloud DLP는 강력한 데이터 검사, 분류, 익명화 플랫폼에 대한 액세스를 제공합니다. DLP API는 자동으로 데이터를 스캔하고 Data Catalog 태그를 만들어 민감한 정보를 식별합니다. 기존 BigQuery 테이블, Cloud Storage 버킷, 데이터 스트림에서 사용할 수 있습니다.

Cloud DLP는 데이터를 스캔하고 이메일, 신용카드 번호, 주민등록번호와 같은 PII를 식별하여 신뢰도 수준(예: 99%)과 함께 보고하므로 다량의 데이터를 자동으로 처리할 수 있습니다. ETL/ELT 파이프라인에서 PII 인식을 간소화하려면 다음을 수행하면 됩니다.

  • 격리 버킷에 데이터를 수집합니다.
  • Cloud DLP를 실행하여 PII를 식별합니다. 전체 데이터 세트를 스캔하거나 데이터를 샘플링하면 됩니다. Cloud Functions와 같은 독립형 스크립트나 파이프라인의 변환 단계에서 DLP API를 호출할 수 있습니다. 이 문서에서는 후자를 사용한 예시를 보여줍니다.
  • 데이터를 웨어하우스로 옮깁니다.

Cloud DLP에는 패턴, 형식, 체크섬을 식별하는 사전 정의된 감지기가 100개 이상 제공됩니다. 또한 Cloud DLP는 마스킹, 토큰화, 가명처리, 날짜 이동 등 데이터 익명화를 위한 일련의 도구를 제공합니다. 또한 사전이나 정규 표현식을 사용하여 커스텀 감지기를 만들 수도 있습니다. '핫워드' 규칙을 추가하여 결과의 정확성을 높이고 제외 규칙을 설정하여 거짓양성 수를 줄일 수 있습니다.

Cloud DLP를 사용하면 데이터를 분류하고 적절한 사람에게 적절한 액세스 권한을 부여하여 데이터 거버넌스를 개선할 수 있습니다.

열 수준 보안

데이터 분류 개념을 기반으로 빌드되는 BigQuery는 데이터에 대한 유형 기반의 분류인 정책 태그를 사용하여 민감한 열에 대해 세밀한 액세스 권한을 제공합니다. BigQuery 열 수준 보안을 사용하면 쿼리 시 사용자에게 적절한 액세스 권한이 있는지 확인하는 정책을 만들 수 있습니다.

열 수준 보안에 대해 정책 태그를 사용하는 방법에 대한 자세한 내용은 BigQuery 열 수준 보안 소개를 참조하세요.

행 수준 보안

행 수준 보안을 사용하면 사용자의 자격 조건을 기준으로 데이터를 필터링하고 테이블의 특정 행에 액세스하도록 허용할 수 있습니다. 행 수준 보안은 행 수준 액세스 정책을 통해 BigQuery 테이블의 데이터 하위 집합에 대한 세분화된 액세스 제어를 실현함으로써 최소 권한의 원칙을 확장합니다. 행 수준 액세스 정책은 열 수준 보안과 함께 테이블에 공존할 수 있습니다.

행 수준 보안에 대해 행 액세스 정책을 사용하는 방법에 대한 자세한 내용은 BigQuery 행 수준 보안 소개를 참조하세요.

마스터 데이터 관리

참조 데이터라고도 하는 마스터 데이터는 조직 전체에서 사용되는 데이터입니다. 마스터 데이터 애셋의 일반적인 예시로는 고객, 제품, 공급업체, 위치, 계정이 있습니다. 마스터 데이터 관리(MDM)는 조직 전체에서 마스터 데이터의 정확성과 일관성을 보장하는 일련의 절차입니다.

서로 다른 시스템과 부서가 제대로 기능하고 상호작용하려면 데이터의 정확성과 일관성이 중요합니다. 그렇지 않으면 조직의 부서마다 동일한 항목에 대한 서로 다른 레코드가 있을 수 있으며 이로 인해 비용이 많이 드는 오류가 발생할 수 있습니다. 예를 들어 클라이언트가 회사 웹사이트에서 주소를 업데이트할 때 청구 부서가 다른 클라이언트 저장소에서 데이터를 읽는 경우 향후 청구서가 이 클라이언트에 도달하지 않을 수 있습니다.

MDM에서 권한 시스템은 특정 마스터 데이터 애셋의 정보 출처입니다. 조직의 다른 시스템은 해당 애셋에 대한 권한 시스템의 마스터 데이터를 사용하는 것이 이상적입니다. 그러나 다음 시나리오에서 설명하는 것처럼 항상 그럴 수 있는 것은 아닙니다.

권한 시스템과의 직접적인 통신

이 시나리오에서 시스템은 지정된 마스터 데이터 애셋을 담당하는 권한 시스템과 직접 통신합니다. 권한 시스템은 마스터 데이터를 생성 및 업데이트하는 반면, 조직의 다른 시스템은 항상 해당 권한 시스템에서 이를 사용합니다.

회사 전체에서 제품의 권한 시스템으로 사용되는 제품 정보 관리(PIM) 시스템

예를 들어 이 다이어그램에서는 제품 정보 관리(PIM) 시스템이 회사 전체에서 제품의 권한 시스템으로 사용됩니다. 고객 관계 관리(CRM) 시스템과 같은 다른 시스템은 제품 마스터 데이터가 필요할 경우 PIM에서 해당 데이터를 검색합니다. CRM 시스템 자체는 회사의 고객과 같은 다른 데이터 애셋의 권한 시스템이 될 수 있습니다.

이 시나리오는 복잡한 변환 파이프라인 없이 마스터 데이터 애셋을 해당 권한 시스템에 유지하기 때문에 이상적입니다. 소비자 시스템에 마스터 데이터의 특정 하위 집합만 필요하거나 제공된 것과 다른 형식의 데이터가 필요한 경우 해당 시스템은 이를 필터링하거나 변환해야 합니다.

단일 소스의 골든 카피

이 시나리오에서 소비자 시스템은 권한 시스템과 직접 통신할 수 없습니다. 이러한 제한의 원인은 다음 예시와 같이 다양합니다.

  • 권한 시스템에 조직 전체의 요청량을 처리하기에 충분한 용량이나 가용성이 없을 수 있습니다.
  • 시스템 간의 통신이 보안 정책에 의해 제한되거나 인프라 제한으로 인해 실행 불가능할 수 있습니다.

이러한 제한을 극복하려면 데이터 웨어하우스를 사용하여 소비자 시스템에 마스터 데이터를 제공하면 됩니다. 클라우드로 마이그레이션하면 BigQuery에서 가용성이 높고, 높은 수준의 동시 실행을 처리할 수 있으며, IAM 규칙에 따라 조직 내에서 광범위하게 액세스할 수 있는 저장소를 기본적으로 제공합니다. 따라서 골든 카피를 호스팅할 때는 BigQuery가 우선 고려 대상입니다.

ELT 데이터 파이프라인을 만들어서 권한 시스템에서 마스터 데이터를 읽고, 데이터 웨어하우스에 로드한 후 소비자에게 배포하는 것이 좋습니다. 소비자마다 동일한 마스터 데이터 애셋에 대한 요구사항이 달라서 먼저 데이터 웨어하우스에 애셋을 변경하지 않은 상태로 저장하고 소비자를 위한 특수한 변환을 작성하는 것이 적합하므로 ETL 파이프라인보다 ELT 파이프라인을 사용하는 것이 좋습니다. Google Cloud에서는 Dataflow를 사용하여 BigQuery에 기본적으로 연결할 수 있는 파이프라인을 만들 수 있습니다. 그런 다음 Cloud Composer를 사용하여 이러한 파이프라인을 조정할 수 있습니다.

권한 시스템은 데이터 애셋의 정보 출처로 유지되며, 데이터 웨어하우스에 복사된 마스터 데이터는 골든 카피로 참조됩니다. 데이터 웨어하우스는 권한 시스템이 되지 않습니다.

권한 시스템은 데이터 애셋의 정보 출처로 유지됩니다.

예를 들어 이 다이어그램에서 CRM 시스템은 PIM 시스템에서 직접 제품 데이터를 요청할 수 없습니다. PIM 시스템에서 데이터를 추출하여 데이터 웨어하우스에 복사하고 변환을 수행한 후 다른 시스템(그 중 하나가 CRM 시스템)에 배포하는 ETL 파이프라인을 작성합니다.

시스템이 마스터 데이터를 일괄적으로 또는 분석 목적으로 검색하는 경우 골든 카피를 BigQuery에 저장하는 것이 이상적입니다. 하지만 마스터 데이터에 대한 대다수의 액세스가 단일 행 조회를 수행하는 시스템에서 발생하는 경우 이러한 조건에 최적화된 다른 저장소를 고려할 수 있습니다(예: Cloud Bigtable). 두 저장소를 모두 사용하여 균형을 잡을 수도 있습니다. 트래픽이 가장 많은 저장소에 골든 카피를 저장합니다. 항상 골든 카피 시스템에서 데이터를 추출하고 다른 저장소에 동기화하는 것이 좋습니다. 데이터 파이프라인을 사용하여 이를 수행할 수 있습니다.

여러 소스의 골든 카피

이전 시나리오에서는 지정된 마스터 데이터 애셋에 단일 권한 시스템을 사용했습니다. 그러나 실제로는 조직의 여러 시스템을 사용하여 동일한 애셋의 다른 특성을 유지할 수 있습니다. 예를 들어 PIM 시스템은 크기, 중량, 출처와 같은 기술 및 물류 제품 정보의 정보 출처가 될 수 있습니다. 그러나 제품 카탈로그 관리 시스템은 색상, 영업 채널, 가격, 계절성과 같은 영업 관련 제품 정보의 정보 출처가 될 수 있습니다. 예를 들어 이전에 MDM에 포함되지 않았거나 인수 및 합병을 통해 조직에 통합된 시스템에서는 동일한 애셋의 중복 속성이 있는 여러 시스템을 두는 것도 일반적입니다.

이 경우 다음 다이어그램과 같이 여러 소스의 마스터 데이터를 데이터 웨어하우스에 저장된 단일 골든 카피로 병합하는 더 복잡한 파이프라인이 필요합니다. 그러면 데이터가 이전 섹션과 유사한 방식으로 소비자 시스템에 배포됩니다. 데이터 웨어하우스는 여전히 권한 시스템이 아니라 마스터 데이터 골든 카피의 저장소입니다.

여러 소스의 마스터 데이터를 데이터 웨어하우스에 저장된 단일 골든 카피로 병합하는 복잡한 파이프라인

Google Cloud에서 Dataflow는 Directed Acyclic Graph(DAG)로 표현된 복잡한 파이프라인을 구축하는 도구로 자리매김했습니다. 이러한 파이프라인은 여러 소스에서 데이터를 읽고 병합된 결과를 BigQuery에 기록합니다. 또 다른 옵션은 Cloud Data Fusion과 같은 시각적 도구를 사용하여 파이프라인을 만드는 것입니다. Cloud Data Fusion은 데이터 소스 및 싱크를 위한 많은 플러그인도 제공합니다.

지연 변경 측정기준

별표 또는 눈송이 스키마에서 측정기준 테이블의 속성은 절대 변경되지 않거나 자주 변경되지 않아야 합니다. 절대 변경되지 않는 속성을 원래 속성이라고 합니다. 예를 들어 생년월일과 원래 신용 점수가 있습니다. 속성이 자주 변경되지 않는 경우 해당 속성에 속하는 측정기준을 지연 변경 측정기준(SCD)이라고 합니다. SCD가 변경되면 팩트 테이블에 이미 있는 데이터는 이전 버전의 SCD를 참조해야 합니다. 따라서 SCD 기록을 유지할 방법이 필요합니다.

데이터 웨어하우스를 마이그레이션할 때는 SCD 처리 방법을 통합하거나 기존 방법을 개선할 수 있는 기회를 고려하세요.

기존의 SCD 처리 방법

SCD 변경사항을 처리하는 기존의 방법을 SCD 유형 0~6이라고 합니다. 가장 일반적인 방법은 SCD 유형 2이며 측정기준 테이블에 추가 열을 만들어 기록 데이터를 추적합니다. 추가된 열은 서로게이트 키이며 버전, 유효 기간 시작일/종료일 또는 현재 날짜에 현재 행을 나타내는 플래그를 추가한 것입니다. BigQuery에서 이러한 기법과 다른 기법을 적용하는 방법에 대한 자세한 내용은 변경 관리를 참조하세요.

기능 데이터 엔지니어링

Apache Airflow의 제작자인 맥심 부시민이 Functional Data Engineering이라는 기사에서 SCD를 처리하는 또 다른 방법을 제시했습니다. 이 자료에서는 데이터 파이프라인이 방향성 상호 종속 항목을 반영하기 위해 DAG로 구성된 확정적이고 멱등성이 있는 태스크의 모음으로 구성된 패러다임을 제안합니다.

태스크는 출력이 입력에만 의존하고 로컬 또는 글로벌 상태에는 의존하지 않을 때 확정적이므로 기능 프로그래밍 개념을 따릅니다. 태스크는 동일한 입력 매개변수를 사용하여 두 번 이상 실행될 수 있고 여전히 동일한 출력을 생성할 때 멱등성이 있는 것으로 간주됩니다. 즉, 추가 부작용이 발생하지 않아야 합니다. (컴퓨팅에서 이와 관련 예시로 REST PUT 연산이 있습니다.) 태스크 실행을 태스크의 인스턴스라고 합니다. 입력이 서로 다른 태스크 인스턴스는 동일한 출력 테이블의 서로 다른 파티션에 데이터를 기록합니다.

태스크의 입력 중 하나는 측정기준이므로 부시민은 ETL 실행이 트리거될 때마다 측정기준 스냅샷을 만들 것을 권장합니다. 측정기준 스냅샷은 ETL 실행에 필요한 모든 측정기준 행을 타임스탬프와 함께 복제합니다. 측정기준 테이블은 다양한 시점의 스냅샷 모음이 됩니다. 이러한 스냅샷은 SCD의 변경 기록을 유지하고, 모든 태스크 인스턴스가 재실행되고 일관되고 재현 가능한 출력을 얻을 수 있도록 합니다.

이 방법은 SCD 유형 2와 같은 SCD를 처리하는 기존의 방식과 다릅니다. 복잡하게 서로게이트 키와 추가 열을 관리하지 않아도 되므로 엔지니어링 시간이 줄어들고 스토리지 비용이 비교적 적게 듭니다. 이 기사에서는 두 가지 방법이 공존할 수 있음을 인정합니다.

BigQuery에서 SCD 처리

BigQuery는 측정기준 테이블을 포함한 별표 및 눈송이 스키마를 지원합니다. 따라서 앞의 두 가지 방법 중 하나를 적용할 수 있습니다.

BigQuery는 한 단계 더 나아가 중첩 및 반복 필드의 기본 지원을 통해 스키마 비정규화를 촉진합니다. 이 필드는 이벤트 발생 시점에 속성이 중요한 경우 팩트 테이블에서 사용할 수 있습니다. 또한 측정기준 테이블에서 전체 측정기준 행 대신 변경 속성의 이전 값만 유형 2 또는 스냅샷 방식으로 기록하는 데 사용할 수 있습니다.

데이터 보관 및 삭제

특정 상황에서 사용자가 BigQuery에서 데이터를 수정하거나 삭제하지 못하게 할 수 있습니다. 이러한 작업을 허용하는 권한이 포함된 역할에서 해당 사용자를 삭제하여 이 제한을 적용할 수 있습니다. 이러한 역할은 bigquery.dataOwner, bigquery.dataEditor, bigquery.admin입니다. 또 다른 옵션은 특정 편집 및 삭제 권한이 포함되지 않은 커스텀 IAM 역할을 만드는 것입니다.

전자 기록 보관에 대한 규정을 준수해야 하는 경우에는 데이터를 Cloud Storage로 내보내고 특정 기록 보관 규정을 해결하는 데 도움이 되는 버킷 잠금 기능을 사용하는 것이 좋습니다.

다른 상황에서는 지정된 기간이 지나면 자동으로 데이터를 삭제해야 할 수 있습니다. BigQuery는 구성 가능한 만료일을 통해 이 요구사항을 충족할 수 있습니다. 데이터 세트, 테이블, 특정 테이블 파티션에 만료일을 적용할 수 있습니다. 불필요한 데이터 만료는 비용 관리 및 스토리지 최적화의 척도입니다. 자세한 내용은 BigQuery 권장사항을 참조하세요. Google Cloud의 데이터 삭제에 대한 광범위한 개요는 이 문서 페이지를 참조하세요.

Google Cloud 고객은 규제의 적용을 받는다고 판단될 경우 스스로 법률 자문 및 해당 규제 당국의 감독 하에 해당 요건에 대한 자체 규정 준수 평가를 완료해야 합니다.

데이터 품질 관리

데이터 품질 관리 프로세스에는 다음이 포함됩니다.

  • 유효성 검사용 컨트롤 만들기
  • 품질 모니터링 및 보고 사용 설정
  • 이슈 심각도 평가를 위한 심사 프로세스 지원
  • 근본 원인 분석을 사용 설정하고 데이터 문제에 대한 구제 조치 권장
  • 데이터 이슈 추적

데이터 소비자마다 데이터 품질 요구사항이 다를 수 있으므로 데이터 품질에 대한 기대치와 데이터 유효성 검사 및 모니터링 프로세스를 지원하는 기법과 도구를 문서화하는 것이 중요합니다. 데이터 품질 관리를 위한 올바른 프로세스를 설정하면 보다 신뢰할 수 있는 분석용 데이터를 제공할 수 있습니다.

품질 메타데이터

데이터 웨어하우스는 의사 결정권자에게 방대한 양의 선별된 데이터에 대한 액세스 권한을 제공합니다. 그러나 데이터 웨어하우스의 모든 데이터가 동일하게 취급되어야 하는 것은 아닙니다.

  • 의사 결정 시 데이터의 품질이 높을수록 의사 결정에 더 많은 영향을 미치며, 품질이 낮을수록 더 적은 영향을 미칩니다.
  • 데이터 품질 모니터링 시 품질이 낮은 데이터를 사용하여 자동 또는 수동 알림을 트리거하면 데이터가 데이터 웨어하우스에 도달하기 전에도 해당 데이터를 생성하는 프로세스를 확인할 수 있습니다.

또한 조직의 부서마다 데이터 품질에 대한 기준이 다를 수 있습니다. 예를 들어 저급 데이터는 개발 및 테스트용으로는 완벽하지만 재무 또는 규정 준수용으로는 사용할 수 없는 것으로 간주될 수 있습니다.

이 섹션에서는 의사 결정권자와 프로세스에 제공되는 데이터를 평가하는 데 필요한 컨텍스트를 제공하는 메커니즘인 메타데이터를 설명합니다.

구조와 형식

메타데이터는 데이터 검증을 위해 데이터에 연결된 구조화된 정보입니다. 데이터 품질과 관련하여 메타데이터를 사용하면 정확성, 최신성, 완전성과 같은 관련 속성을 수집할 수 있습니다.

데이터 품질 메타데이터(DQM)에 캡처된 시맨틱스와 특정 속성은 검증 대상인 비즈니스 컨텍스트에 종속됩니다. 용이한 커뮤니케이션 및 관리를 위해 기업 전체에서 표준 속성 세트를 채택할 것을 강력히 권장합니다. ISO/IEC 25012:2008 데이터 품질 모델과 같은 업계 표준 또는 Data Management(DAMA) 커뮤니티와 같은 전문 조직의 권장사항에 따라 속성 세트를 선택할 수 있습니다.

DQM이 저장되고 의사 결정권자에게 제공되는 형식도 중요한 고려사항입니다. 의사 결정 작업에 따라 적합한 형식이 다를 수 있습니다. 예를 들어 모게스 등은 DQM의 다음 형식 목록을 컴파일하고 제공합니다.

  • N 수준 서수: 우수, 양호, 평균과 같은 유한한 값 세트
  • 범위: 서수보다 유연성이 높은 품질 수준을 나타내기 위해 하한 및 상한이 있는 숫자 척도입니다(예: 0~100).
  • 확률: 데이터가 정확할 확률을 나타내는 0~1 단위의 데이터 품질
  • 그래픽: 품질 수준을 나타내는 색상과 같은 시각적 큐

클라우드의 품질 메타데이터

기존에는 기업이 일관된 DQM 저장소를 유지하지 않고 공유된 지식에 의존했습니다. 이러한 지식은 스프레드시트, 인트라넷 페이지, 임시 데이터베이스 테이블과 같은 분리된 저장소에서 캡처됩니다. 이처럼 분산된 DQM 소스를 발견, 검색, 이해, 관리하는 활동은 협업을 방해하며 의사 결정에 도움이 되는 가치에 비해 단점이 더 클 수 있습니다.

Data Catalog는 중앙 집중식 메타데이터 관리 방법을 제공합니다.

  • 비즈니스 메타데이터라고도 하는 커스텀 메타데이터 태그는 사용자가 표준 정의의 일부로 선택하고 각 비즈니스 컨텍스트에 맞게 맞춤설정할 수 있는 논리 템플릿으로 그룹화한 모든 데이터 품질 속성을 지원합니다.
  • 서수 속성을 나타내는 커스텀 열거 유형과 여러 그래픽 표현으로 사용할 수 있는 범위, 확률, 숫자 값을 나타내는 실수 및 문자열 유형을 지원합니다. Data Catalog UI 또는 API 및 클라이언트 라이브러리를 통해 이러한 메타데이터 값에 액세스하여 의사 결정권자를 위한 커스텀 애플리케이션을 빌드할 수 있습니다.
  • 업스트림 프로세스에서 Data Catalog API를 사용할 수 있습니다. 특정 소스의 데이터 품질이 기준 미달일 경우 프로세스는 품질이 낮은 데이터에 태그를 지정하고 이러한 데이터가 BigQuery에 도달하기 전에 알림을 트리거합니다. 데이터 자체는 인증 및 구제 조치와 재처리를 위해 Cloud Storage의 격리 버킷으로 전송될 수 있습니다.

DQM 고려사항

DQM이 없으면 의사 결정권자가 품질이 낮은 데이터를 사용하고 서투른 결정을 내릴 가능성이 더 높습니다. 실제로 DQM을 추가하면 의사 결정권자가 대안 생성을 위해 습득해야 하는 지식의 양을 감당하지 못해서 제때에 올바른 의사 결정을 내리지 못할 수 있습니다.

따라서 의사 결정권자에게 DQM의 시맨틱스 및 권장사항에 대해 교육하는 것이 중요합니다. 모게스 등은 품질이 낮은 데이터 사용 시 타격이 큰 중요한 태스크에는 DQM 및 교육을 제공하면 유용하다고 말합니다. 그러나 DQM은 높은 효율이 필요한 태스크나 제대로 교육을 받지 못한 직원에게 사용할 경우 비생산적일 수 있습니다.

감사

조직은 시스템을 감사하여 올바르게 작동하는지 확인할 수 있어야 합니다. 보안팀은 모니터링, 감사, 추적을 통해 비즈니스 손상 또는 손실을 입기 전에 데이터를 수집하고, 위협을 식별하고, 위협에 대응할 수 있습니다. 위협을 신속하게 완화하고 전반적인 보안 상태를 평가하기 위해 정기적인 감사를 수행하여 제어의 효과를 확인하는 것이 중요합니다. 외부 감사관과 규정 준수를 입증하기 위해 감사가 필요할 수도 있습니다.

정상적인 데이터 액세스 제어를 보장하기 위한 첫 번째 단계는 Google Cloud 프로젝트 및 개별 BigQuery 데이터 세트와 연결된 사용자 및 그룹을 정기적으로 감사하는 것입니다. 이러한 사용자가 소유자 또는 관리자여야 하나요? 아니면 보다 제한적인 역할로도 자신이 맡은 직무를 충분히 수행할 수 있나요? 프로젝트에 대한 IAM 정책을 변경할 수 있는 권한이 있는 사람을 감사하는 것도 중요합니다.

로그 분석의 두 번째 단계는 BigQuery 데이터 및 메타데이터와 관련하여 '누가, 무엇을, 어디서, 언제했는가?'라고 자문하는 것입니다.

  • 데이터의 경우 BigQuery는 기본적으로 관리 활동 및 데이터 액세스 감사 로그라는 불변의 로그 스트림 두 개를 Cloud Logging에 제공합니다.
  • 메타데이터의 경우 Data Catalog는 감사 로깅 스트림을 모두 지원합니다. 단, BigQuery와 달리 데이터 액세스 로깅을 수동으로 사용 설정해야 합니다.

관리자 활동 로그는 로그 호출 관련 로그 항목이나 리소스의 구성 또는 메타데이터를 수정하는 다른 관리 작업을 포함합니다. 예를 들어 새 서비스 계정 생성 또는 새 사용자에게 BigQuery 데이터세트에 대한 읽기 액세스 권한 부여와 같은 IAM 권한 변경이 관리자 활동 로그에 기록됩니다.

데이터 액세스 로그는 사용자가 제공한 데이터를 생성하거나 수정하거나 읽는 사용자 인증 API 호출을 기록합니다. 예를 들어 사용자가 BigQuery 데이터 세트를 쿼리하거나 쿼리 결과를 요청한 경우 데이터 액세스 로그가 기록됩니다. 쿼리 주체를 서비스 계정이 아닌 사용자로 표시하면 데이터 액세스 감사가 용이해집니다.

두 가지 유형의 로그 모두 지정된 특정 조건에서 트리거되는 Cloud Monitoring 알림을 만들 수 있습니다. 이러한 알림이 트리거되면 이메일, SMS, 타사 서비스는 물론 웹훅을 포함한 여러 채널을 통한 알림이 커스텀 URL에 전송될 수 있습니다.

감사 로그에는 중요한 정보가 포함될 수 있으므로 로그에 대한 액세스를 제한하는 것이 좋습니다. 감사 로그에 대한 액세스 권한IAM 역할을 사용하여 제한할 수 있습니다.

또한 다음과 같은 이유 때문에 Cloud Logging에서 BigQuery 데이터 세트로 BigQuery 감사 로그를 내보내는 것도 고려해야 합니다.

  • Cloud Logging은 제한된 로그 보관 기간 동안에만 감사 로그를 보관합니다. BigQuery 또는 Cloud Storage와 같은 다른 안전한 스토리지 위치로 내보내면 장기적으로 보관할 수 있습니다.
  • BigQuery에서는 로그에 대해 SQL 쿼리를 실행하여 분석을 위한 복잡한 필터링을 사용 설정할 수 있습니다.
  • 또한 Data Studio와 같은 시각화 도구를 사용하여 대시보드를 만들 수 있습니다.

자세한 내용은 Google Cloud 감사 로그 사용 시 권장사항 블로그 글을 참조하세요.

다음 단계