HIPAA 지원 프로젝트 설정

이 가이드에서는 미국 건강 보험 이동성 및 책임법(HIPAA)에서 정의한 보호 건강 정보(PHI) 등의 의료 데이터를 저장하고 처리하기 위해 Google Cloud 리소스 배포 자동화 프레임워크인 Google Cloud Healthcare Data Protection Toolkit을 단계별로 설명합니다. 이 가이드는 HIPAA 지원 Google Cloud Cloud Healthcare 아키텍처 문서와 함께 읽도록 작성되었습니다.

개요

이 가이드는 Google Cloud를 시작하고 데이터 저장, 분석 또는 애플리케이션 개발을 위해 Google Cloud 인프라를 구성하는 방법의 예시를 찾는 의료 조직을 위한 것입니다. 이 설정에는 적절한 액세스 구성, 감사 로그 유지, 의심스러운 활동 모니터링 같이 의료 데이터에 권장되는 여러 보안 및 개인정보 보호 권장사항과 제어가 포함됩니다. 이러한 권장 사항에 대한 자세한 내용은 Google Cloud HIPAA 백서를 참조하세요.

이 가이드에서는 PHI를 저장하고 처리할 수 있는 다양한 Google Cloud 서비스를 안내하지만, 모든 Google Cloud 리소스 유형 및 사용 사례를 다루지는 않습니다. 대신 리소스 유형의 하위 집합을 중점적으로 다룹니다. Google의 비즈니스 제휴 계약(BAA)에 따른 HIPAA 규정 준수를 지원하는 Google Cloud 서비스 목록은 Google Cloud의 HIPAA 규정 준수를 참조하세요. 보안, 개인정보 보호, 규정 준수에 관한 Google Cloud 문서를 검토하는 것이 좋습니다.

면책조항

  • 이 가이드는 참조 아키텍처를 설명하며, HIPAA 또는 기타 데이터 개인정보 보호 법률을 준수하기 위해 시행해야 하는 적절한 행정적, 기술적, 물리적 보호 수단에 대한 법적 조언이 아닙니다.
  • 이 가이드의 범위는 범위 내 리소스에 의해 저장되는 데이터를 보호 및 모니터링하는 것으로 제한됩니다. 가이드를 구현하더라도 다른 Google Cloud Storage 서비스에서 저장하거나 처리하는 파생 데이터 애셋이 자동으로 포함되지는 않습니다. 파생 데이터 애셋에는 유사한 보호 수단을 적용해야 합니다.
  • 이 가이드의 구현은 공식 Google 제품이 아니며, 참조 구현으로 만들어진 것입니다. 이 코드는 오픈소스 프로젝트인 Cloud Healthcare Data Protection Toolkit에 있습니다. 이 프로젝트는 Apache 라이선스, 버전 2.0에 따라 제공됩니다. 이 프레임워크를 출발점으로 사용하여 사용 사례에 맞게 구성할 수 있습니다. Google Cloud를 기반으로 빌드하는 환경과 애플리케이션을 HIPAA 요구 사항에 따라 올바르게 구성하고 보호할 책임은 사용자에게 있습니다.
  • 이 가이드에서는 GitHub에 있는 코드의 스냅샷을 살펴보며, 이 코드는 시간이 지남에 따라 업데이트되거나 변경될 수 있습니다. 참조 구현에는 이 가이드에서 다루는 것보다 많은 리소스 유형(예: Cloud SQL 인스턴스 또는 Kubernetes 클러스터)이 포함되어 있을 수 있습니다. 최신 범위는 README 파일을 참조하세요.

목표

이 가이드의 목표는 HIPAA 지원 Google Cloud 프로젝트를 설정하기 위한 참조 코드형 인프라(IaC) 구현을 제공하는 것입니다. 이 구현 전략은 다음 프로세스를 자동화합니다.

비용

Google Cloud는 고객에게 이 가이드에서 사용되는 여러 서비스에 적용되는 기간 제한 무료 체험판과 영구적인 항상 무료 사용 등급을 제공합니다. 자세한 내용은 Google Cloud 무료 등급 페이지를 참조하세요.

이 구현을 실행하는 동안 누적되는 데이터나 로그의 양에 따라 무료 체험판 또는 무료 등급의 한도를 초과하지 않고 구현을 완료할 수도 있습니다. 가격 계산기를 사용하여 예상 사용량을 기준으로 예상 비용을 산출할 수 있습니다.

이 구현을 마치면 만든 리소스를 삭제하여 비용이 계속 청구되지 않도록 할 수 있습니다. 자세한 내용은 삭제를 참조하세요.

시작하기 전에

  1. 온보딩 권장사항 가이드를 검토합니다.
  2. Google Cloud의 HIPAA 규정 준수를 검토합니다.
  3. PHI와 관련하여 Google Cloud 서비스를 사용 중인 경우 Google Cloud로 BAA를 실행합니다.
  4. 기본 Google Cloud 설정이 완료되었는지 확인합니다.

환경 초기화

  1. 셸에서 Cloud Healthcare Data Protection Toolkit을 다운로드합니다. 참고: Cloud Shell에서 도우미 스크립트를 실행하려는 경우, 여기서 멈추고 다음 단계로 건너뛸 수 있습니다.

  2. 도구 및 종속 서비스를 설치합니다.

    • Bazel - 오픈소스 빌드 및 테스트 도구
    • Terraform - Cloud 프로비저닝 도구
    • Cloud SDK - Google Cloud에서 호스팅되는 리소스 및 애플리케이션을 관리하기 위한 도구 모음
    • Git - 분산 버전 제어 시스템
  3. 인증을 설정합니다.

    gcloud auth login
        

배포 준비 체크리스트

시작하기 전에 다음 정보를 기록해 두시기 바랍니다.

Google Cloud는 권한 제어를 위해 지원되는 G Suite 또는 Cloud ID 도메인 또는 공개 Google 그룹스의 Google 계정 및 그룹을 사용합니다. Google Cloud에서는 프로젝트를 수정하지 않고도 그룹 구성원별로 쉽게 개별 권한을 제어할 수 있도록 사전 정의된 역할에 대한 그룹 집합을 만드는 것이 좋습니다.

개념 문서에 설명된 사용자 그룹을 만들거나 존재 여부를 확인합니다. 조직이 G Suite 고객이거나 스크립트를 사용하여 기존 Google Cloud 조직의 리소스를 프로비저닝하려는 경우 관리자에게 사용자 그룹을 요청하세요. 관리자는 이를 위해 Google 관리 콘솔을 사용합니다. Cloud ID 도움말을 사용하여 관리자를 확인하세요. 조직 사용자는 Google Cloud ID에서 설정됩니다. 기본적으로 설정 과정에서 관리자로 지정된 이메일 계정은 조직 관리자로 할당됩니다. 이 사용자는 다른 IAM 역할을 만들고 할당할 수 있습니다. 데이터 전송, 분석, 보안 감사에 필요한 다양한 리소스에 대한 액세스는 IAM 그룹 및 관련 역할에 의해 제어됩니다.

또한 배포 스크립트를 실행하는 사용자는 보안 프로젝트를 비롯하여 생성될 모든 프로젝트의 소유자 그룹에 있어야 합니다. 배포가 완료되면 해당 그룹에서 해당 사용자를 삭제할 수 있습니다. 위에서 만든 OWNERS_GROUP의 구성원으로 현재 사용 중인 사용자를 추가합니다. G Suite 관리 콘솔에 로그인합니다.

또는 상용 계정 외부에서 테스트하려는 경우 Google 그룹스를 사용할 수 있습니다.

각 Google 그룹스를 만들 때 아래 기본 권한의 보안 설정을 사용하여 만듭니다.

  • 그룹 유형: 이메일 목록
  • 주제 보기: 그룹의 모든 구성원( 및 관리자)
  • 게시물: 관리자 및 소유자만
  • 그룹 가입: 초대된 사용자만

환경 정보 수집 및 프로젝트 리소스 이름 지정

구성 파일은 YAML 형식이며 만들려는 각 리소스와 해당 속성을 나열합니다. 선택할 수 있는 샘플 구성 파일 수는 늘어납니다. 원격 감사 로그 구성 파일을 사용하는 것이 좋습니다.

overall 섹션에는 모든 프로젝트에 적용되는 organizationbilling 세부정보가 포함되어 있습니다.

  • audit_logs_project 섹션에서 감사 로그를 호스팅할 프로젝트를 정의합니다.
  • forseti 섹션에서 Forseti 리소스를 호스팅할 프로젝트를 정의합니다.
  • projects 아래에 필요한 모든 데이터 호스팅 프로젝트를 나열합니다.

Google Cloud 환경에 대한 다음 정보를 수집하고 파일을 업데이트합니다.

매개변수 샘플 값
organization_id 12345678
billing_account 000000-000000-000000
location 미국 또는 EU 또는 아시아(BigQuery 및 Cloud Storage용)

기본 설정은 미국 또는 EU 또는 아시아 경계 내의 멀티 리전 데이터 스토리지입니다.
TTL days audit 섹션의 이 필드는 감사 로그의 보관 기간을 결정합니다(현재는 스토리지 버킷만 해당).

예시 값은 365입니다.
project_id 세 개의 프로젝트에 고유한 이름을 제공합니다.

  1. audit_logs_project
  2. Forseti
  3. 데이터세트 프로젝트 (projects.project_id)
stackdriver_alert_email [your admin email id]
owners_group hipaa-sample-project-owner@google.com
auditors_group hipaa-sample-project-auditor@google.com

이 도구 키트를 사용하면 일관된 이름 지정 규칙 및 리소스 라벨 지정 등의 권장사항을 따를 수 있습니다. 프로젝트 이름, Cloud Storage 버킷 및 BigQuery 데이터세트 이름, VPC 이름을 결정합니다. 이름 지정 권장사항은 다음 문서를 참조하세요.

다음을 사용하여 배포 구성 파일에 추가할 수 있는 필수 정보를 수집합니다. 이름 지정 규칙을 설정할 때 다음 예시에 설명된 요소를 고려해 보세요.

  • 회사 이름: Altostrat Company: altoco
  • 비즈니스 단위: 인사 관리: hr
  • 애플리케이션 코드: 보상 시스템: comp
  • 리전 코드: northamerica-northeast1: na-ne1, europe-west1: eu-we1
  • 환경 코드: dev, test, uat, stage, prod
매개변수 샘플 이름 지정 규칙
project_id 프로젝트 이름 지정 규칙을 결정합니다.

예:
{org-name}-{app/bu/purpose}-{environment}

altoco-edw-prod

audit_logs_project 섹션의 감사 로그를 호스팅할 프로젝트를 정의합니다.

forseti 섹션에서 Forseti 리소스를 호스팅할 프로젝트를 정의합니다.

projects 아래에 필요한 모든 데이터 호스팅 프로젝트를 나열합니다.
{storage_name} 버킷 이름 예: {org-name hash}-{source}-{type}-{bu/region}-{seq#}

08uy6-cerner-inpatient-east-1

보안 강화를 위해 조직 이름의 해시를 사용합니다.
BigQuery 데이터세트 이름 예: {org-name}_{bu/region}_{app/module}

altoco_east_edw
VPC 이름 예:
{org-name}-{bu/region}-{environment}-{seq#}

altoco-east-prod-vpc-1

스크립트 이해하기

Cloud Healthcare Data Protection Toolkit은 필요에 따라 Terraform, Cloud Foundation Toolkit, 커스텀 로직을 높은 수준에서 사용하여 리소스를 프로비저닝하고, 권장사항에 따라 Cloud IAM 및 로깅을 설정하며 Forseti 모니터링을 사용 설정합니다.

도우미 스크립트

기본 도우미 스크립트 apply.goYAML 구성 파일에서 구성을 읽고 해당 구성 파일에 나열된 프로젝트를 만들거나 수정합니다. 스크립트는 감사 로그 프로젝트와 Forseti 프로젝트를 만듭니다. 그런 다음 스크립트는 projects에 나열된 각 프로젝트에 대해 데이터 호스팅 프로젝트를 만듭니다. 이 스크립트는 나열된 각 프로젝트에 대해 다음을 수행합니다.

  • 프로젝트가 아직 없는 경우 프로젝트를 만듭니다.
  • 프로젝트에서 결제를 사용 설정합니다.
  • 버킷을 만들어 Terraform 상태를 저장합니다(프로젝트 내에서 로컬로 또는 중앙 DevOps 프로젝트에서 원격으로).
  • Cloud Monitoring을 사용하여 수행해야 하는 작업공간을 만들거나 선택하라는 메시지가 표시됩니다. 자세한 내용은 모니터링 가이드를 참조하세요.
  • 보안 규칙 모니터링을 위한 모니터링 알림을 만듭니다.
  • 서비스, 모니터링 리소스, 데이터 보관 리소스를 포함하여 프로젝트 내에 로컬로 저장된 리소스를 배포합니다.
  • 감사 로그 데이터 리소스와 싱크를 프로젝트 내에서 로컬로 생성하거나 중앙 감사 프로젝트에 원격으로 생성합니다.
  • Forseti 모니터링 리소스를 만듭니다.

도우미 스크립트 rule_generator.goYAML 구성 파일에서 구성을 읽고 Forseti 규칙을 생성하며 로컬 디렉터리 또는 Cloud Storage 버킷에 작성합니다.

참고: 현재 규칙 생성은 이전 관리자 기반 구성에서만 작동합니다.

스크립트 실행

데이터 보호 도구 키트를 사용하면 구성 파일을 사용하여 단일 배포에 필요한 모든 리소스를 설명할 수 있습니다. 구성 파일은 YAML 형식이며 만들려는 각 리소스와 해당 속성을 나열합니다.

  1. 루트 폴더에서 샘플 구성 파일을 복사합니다.

  2. 현재 위치가 ./healthcare/deploy 폴더인지 확인합니다.

        cp ./samples/simple/config.yaml .
        nano config.yaml
        
  3. 구성 파일의 적절한 위치에서 이전에 수집한 매개변수를 업데이트합니다.

기본 도우미 스크립트 apply.go의 매개변수는 다음과 같이 정의됩니다.

--config_path
배포 구성의 상대 또는 절대 경로입니다.
--projects
배포 구성에서 쉼표로 구분된 프로젝트 ID 목록입니다. 이 매개변수를 건너뛰면 배포 구성에 나열된 모든 프로젝트를 나타낼 수 있습니다. 스크립트는 새 프로젝트를 만들고 기존 프로젝트를 업데이트합니다.
--dry_run
연습 실행을 지정하는 데 사용됩니다. --dry_run을 제외하여 표준 실행을 지정합니다.

도우미 스크립트 rule_generator.go의 매개변수는 다음과 같이 정의됩니다.

--config_path
배포 구성의 상대 또는 절대 경로입니다.
--output_path
규칙 생성 스크립트가 규칙 파일을 출력하는 경로입니다. 로컬 디렉터리 또는 Cloud Storage 버킷일 수 있습니다. 설정을 해제하면 Forseti 서버 버킷에 직접 작성합니다.

연습 실행 모드

연습 실행을 수행하면 지정된 배포 구성에서 스크립트가 수행하는 모든 작업을 검토할 수 있지만, 실제로 수행하는 것은 아닙니다. 실제로 배포가 예상대로 수행되는지 확인할 수 있습니다.

    bazel run cmd/apply:apply -- \
        --config_path=[CONFIG_FILE] \
        --projects=[PROJECTS] \
        --dry_run
    

프로젝트 생성 모드

연습 실행에서 명령어를 검사한 후 배포할 준비가 되면 --dry_run 매개변수를 사용하지 않고 스크립트를 실행합니다.

    bazel run cmd/apply:apply -- \
        --config_path=[CONFIG_FILE] \
        --projects=[PROJECTS]
    

업데이트 모드

리소스를 기존 프로젝트에 추가하거나 기존 설정을 수정하려면 --projects 플래그에 이전에 배포된 프로젝트를 지정합니다.

    bazel run cmd/apply:apply -- \
        --config_path=[CONFIG_FILE] \
        --projects=[PROJECTS]
    

규칙 생성

기본 스크립트를 사용하여 Forseti 프로젝트를 배포한 경우 규칙 생성 스크립트를 실행하여 규칙을 생성하고 업로드할 수 있습니다. 기본적으로 규칙은 Forseti 서버 버킷에 업로드됩니다. 나만의 Forseti 규칙 집합을 만들려면 이 단계를 건너뜁니다.

    bazel run cmd/rule_generator:rule_generator -- \
        --config_path=[CONFIG_FILE]
    

결과 확인

도우미 스크립트는 많은 명령을 캡슐화합니다. 이 섹션에서는 스크립트를 성공적으로 실행한 후 Cloud Console에서 예상되는 사항을 강조합니다.

Cloud Console

Cloud Console에서 프로젝트를 사용할 수 있습니다.

Cloud Console에 나열된 프로젝트

Cloud IAM

각 프로젝트에서 Cloud ConsoleOWNERS_GROUP을 프로젝트 소유자로, AUDITORS_GROUP을 프로젝트의 보안 검토자로 표시합니다.

콘솔에서의 프로젝트에 대한 권한

위의 스크린샷에는 OWNERS_GROUPAUDITORS_GROUP의 멤버십만 표시되어 있지만, 프로젝트에서 사용 설정한 API 때문에 프로젝트 수준 액세스 권한이 있는 몇몇 서비스 계정이 표시될 수 있습니다. 가장 일반적인 서비스 계정은 다음과 같습니다.

Storage 브라우저

Storage 브라우저에는 로그를 저장하기 위해 새로 생성된 버킷이 표시됩니다. 버킷 이름, 스토리지 클래스, 위치는 모두 배포 구성을 따릅니다. 이 예시는 로컬 로그 정렬을 위한 것입니다. 원격 로그 정렬에서 이 버킷은 데이터와 다른 프로젝트에 있으며, 로컬 로그 모드에서 모든 데이터 프로젝트의 로그를 통합합니다. 로컬 로그 모드에서는 프로젝트마다 자체 로그 버킷이 있습니다.

로컬 로그 모드에서 모든 데이터 프로젝트 로그 통합

수명 주기

로그 버킷에 수명 주기가 사용 설정됩니다. 값보다 오래된 객체의 삭제 작업이 배포 구성의 ttl_days에 의해 지정되는 것을 수명 주기 정책에서 확인하세요.

수명 주기 정책 보기

  • cloud-storage-analytics@google.com에 대한 권한 외에 나머지 권한은 지정한 대로 설정됩니다. cloud-storage-analytics@google.com이 버킷에 대한 쓰기 액세스 권한을 보유해야 하는 이유를 알아보려면 로그 문서를 참조하세요.

    쓰기 권한이 있는 그룹

  • Storage 브라우저에는 데이터를 저장하기 위해 새로 생성된 버킷이 표시됩니다. 버킷 이름, 기본 스토리지 클래스, 위치는 배포 구성의 사양과 일치합니다.

    새로 생성된 버킷

  • 각 데이터 버킷의 객체는 버전 관리됩니다. 다음 명령어를 실행하여 확인하고, bucket_name을 버킷 이름으로 바꿉니다.

        gsutil versioning get gs://bucket_name
        
  • 데이터 버킷의 액세스 및 스토리지 로그가 캡처되어 로그 버킷에 저장되어 있고 데이터 버킷이 생성될 때 로깅이 시작되었습니다. 확인하려면 다음 명령어를 실행합니다.

        gsutil logging get gs://bucket_name
        
  • 각 버킷의 권한은 사용자의 사양에 따라 설정됩니다.

    버킷에 대한 쓰기 권한이 있는 그룹

Google Cloud Console

Cloud Console에서 모든 서비스에 대해 데이터 액세스 로그가 사용 설정되었습니다.

관리 콘솔의 데이터 액세스 로그

Cloud Console

Cloud Console에서 BigQuery API가 사용 설정되어 있는지 확인합니다.

Cloud Console에서 BigQuery API 사용 설정

BigQuery

Cloud Console에서 Cloud Logging이 Cloud 감사 로그를 싱크하는 데이터세트가 표시되는지 확인합니다. 또한 설명, 데이터세트 ID, 데이터 위치 값이 배포 구성과 앞서 본 로깅 내보내기 싱크의 사양과 일치하는지 확인합니다.

BigQuery는 Cloud Logging이 Cloud 감사 로그를 싱크하는 데이터세트를 표시함

데이터세트에 대한 액세스가 사양에 따라 설정되어 있는지 확인합니다.

또한 Cloud Logging 로그를 BigQuery로 스트리밍하는 서비스 계정에 데이터세트에 대한 수정 권한이 부여되었는지 확인합니다.

BigQuery 데이터 권한

데이터 저장을 위해 새로 생성된 데이터세트가 표시되고 설명, 데이터세트 ID, 데이터 위치 값과 각 데이터세트의 라벨이 배포 구성의 사양과 일치하는지 확인합니다.

BigQuery는 새로 생성된 데이터세트를 표시함

데이터세트에 대한 액세스 권한이 지정한 대로 설정되어 있는지 확인합니다. 프로젝트에서 사용 설정한 API에 따라 상속된 권한이 있는 다른 서비스 계정이 표시될 수도 있습니다.

데이터 저장을 위한 BigQuery 데이터 권한

Pub/Sub

Pub/Sub에 새로 생성된 주제가 표시되고, 주제 이름, 구독 목록, 각 구독의 세부정보(예: 전송 유형확인 기한)가 배포 구성의 사양과 일치하는지 확인합니다.

또한 주제에 대한 액세스 권한이 배포 구성과 일치하는지 확인합니다. 예를 들어 다음 스크린샷은 주제의 소유권을 상속하는 OWNERS_GROUP과 주제 편집자 역할을 가진 READ_WRITE_GROUP을 보여줍니다. 프로젝트에서 사용 설정한 API에 따라 상속된 권한이 있는 다른 서비스 계정이 표시될 수 있습니다.

Pub/Sub에 새로 생성된 주제 표시

Cloud Logging

Cloud Console에서 새 내보내기 싱크가 표시되는지 확인합니다. 대상작성자 ID 값을 기록해 두고 다음에 BigQuery에 표시될 값과 비교합니다.

새 내보내기 싱크를 보여주는 Cloud Logging

감사 로그에서 의심스러운 활동 이슈를 계산하도록 로그 기반 측정항목이 설정되어 있는지 확인합니다.

Cloud Logging에 의심스러운 활동 이슈를 계산하도록 설정된 로그 기반 측정항목이 표시됩니다

Cloud Monitoring 알림

Cloud Monitoring에 해당 로그 기반 측정항목에 대한 알림 정책이 포함되어 있는지 확인합니다.

  1. Google Cloud Console에서 Monitoring으로 이동합니다.

    Cloud Monitoring

  2. 알림 메뉴에서 정책 개요를 선택합니다.

Monitoring은 해당 로그 기반 측정항목에 따라 실행되는 알림 정책을 표시합니다.

쿼리 로그

감사 로그를 BigQuery로 스트리밍하면 다음 SQL 쿼리를 사용하여 의심스러운 활동 유형별로 로그 기록을 시간순으로 구성할 수 있습니다. BigQuery 편집기 또는 BigQuery 명령줄 인터페이스를 통해 이 쿼리를 시작점으로 사용하여 요구사항을 충족하기 위해 작성해야 하는 쿼리를 정의합니다.

```sql
    SELECT timestamp,
           resource.labels.project_id                              AS project,
           protopayload_auditlog.authenticationinfo.principalemail AS offender,
           'IAM Policy Tampering'                                  AS offenseType
    FROM   `hipaa-sample-project.cloudlogs.cloudaudit_googleapis_com_activity_*`
    WHERE  resource.type = "project"
           AND protopayload_auditlog.servicename =
               "cloudresourcemanager.googleapis.com"
           AND protopayload_auditlog.methodname = "setiampolicy"
    UNION DISTINCT
    SELECT timestamp,
           resource.labels.project_id                              AS project,
           protopayload_auditlog.authenticationinfo.principalemail AS offender,
           'Bucket Permission Tampering'                           AS offenseType
    FROM   `hipaa-sample-project.cloudlogs.cloudaudit_googleapis_com_activity_*`
    WHERE  resource.type = "gcs_bucket"
           AND protopayload_auditlog.servicename = "storage.googleapis.com"
           AND ( protopayload_auditlog.methodname = "storage.setiampermissions"
                  OR protopayload_auditlog.methodname = "storage.objects.update" )
    UNION DISTINCT
    SELECT timestamp,
           resource.labels.project_id                              AS project,
           protopayload_auditlog.authenticationinfo.principalemail AS offender,
           'Unexpected Bucket Access'                              AS offenseType
    FROM   `hipaa-sample-project.cloudlogs.cloudaudit_googleapis_com_data_access_*`
    WHERE  resource.type = 'gcs_bucket'
           AND ( protopayload_auditlog.resourcename LIKE
                 '%hipaa-sample-project-logs'
                  OR protopayload_auditlog.resourcename LIKE
                     '%hipaa-sample-project-bio-medical-data' )
           AND protopayload_auditlog.authenticationinfo.principalemail NOT IN(
               'user1@google.com', 'user2@google.com' )
    ```
    

다음 이미지는 BigQuery 명령줄 인터페이스를 사용하여 쿼리를 실행할 경우의 샘플 결과를 보여줍니다.

BigQuery 명령줄 인터페이스를 사용하여 쿼리를 실행할 경우 샘플 결과

삭제

  1. Cloud Console에서 리소스 관리 페이지로 이동합니다.

    리소스 관리 페이지로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제 를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

다음 단계