인증된 모든 사용자를 대상으로 하는 BigQuery 접근 설정

BigQuery의 allAuthenticatedUsers에 권한을 부여하면 조직 밖의 인증된 사용자도 데이터에 접근할 수 있습니다. 필요한 대상과 역할로 접근을 제한하세요.

설명

BigQuery의 allAuthenticatedUsers는 조직 내부 사용자만 의미하지 않습니다. Google 계정으로 인증한 인터넷 사용자와 서비스 계정을 포함하며, 개인 Gmail 계정도 대상이 될 수 있습니다. 인증하지 않은 익명 사용자는 포함하지 않습니다.

이 그룹에 데이터셋 역할을 부여하면 조직 밖의 사용자도 해당 역할에서 허용하는 작업을 수행할 수 있습니다. 내부용 데이터는 필요한 사용자, 그룹 또는 서비스 계정으로 접근 대상을 제한하세요. 실제 접근 범위는 데이터셋의 권한뿐 아니라 상위 리소스에서 상속된 권한도 함께 확인해야 합니다.

잠재적 영향

  • 유효한 권한 부여가 적용되면, 조직 밖의 인증된 사용자도 해당 역할에서 허용하는 작업을 수행할 수 있습니다. 읽기 권한이 포함되어 있다면 의도하지 않은 데이터 조회나 복사로 이어질 수 있습니다.
  • 범위가 넓은 사용자 그룹에 쓰기 또는 관리 권한을 부여하면 영향도 커질 수 있습니다. 그룹 이름만으로 실제 부여된 권한이나 데이터 노출 범위를 판단해서는 안 됩니다.
  • 기존 접근 목록을 잘못 교체하면 필요한 사용자나 서비스의 접근도 끊길 수 있습니다. 공개 권한 제거와 업무에 필요한 권한 유지를 함께 확인해야 합니다.

해결 방법

  1. 실제 데이터셋의 접근 목록과 IAM 정책, 상위 리소스에서 상속된 권한을 확인하세요. 의도적인 공개 데이터 제공인지 판단하고, 내부용 데이터라면 불필요한 allAuthenticatedUsers 부여를 제거하세요.
  2. 필요한 사용자, 그룹 또는 서비스 계정과 최소한의 역할을 명시하세요.
  3. 기존 권한은 지원되는 BigQuery 접근 제어 변경 절차로 명시적으로 철회하세요. 접근 목록을 갱신할 때 보존할 항목을 포함하세요. google.cloud 1.14.0 모듈에서 access를 생략하거나 빈 목록으로 바꾸는 것은 기존 권한을 철회하는 방법이 아닙니다.
  4. 변경 후 실제 정책을 다시 읽고, 허용해야 할 사용자와 허용하지 않을 사용자의 접근을 각각 확인하세요. 다른 경로로 부여된 권한이 남아 있는지도 점검하세요.

예시

인증 사용자 그룹 지정

yaml
---
- name: create a dataset
  google.cloud.gcp_bigquery_dataset:
    name: my_example_dataset
    access:
      - special_group: allAuthenticatedUsers
    dataset_reference:
      dataset_id: my_example_dataset
    project: test_project
    auth_kind: serviceaccount
    service_account_file: "/tmp/auth.pem"
    state: present

새 데이터셋의 기본 접근

yaml
- name: create a dataset
  google.cloud.gcp_bigquery_dataset:
    name: my_example_dataset
    dataset_reference:
      dataset_id: my_example_dataset
    project: test_project
    auth_kind: serviceaccount
    service_account_file: /tmp/auth.pem
    state: present

설명:

  • 인증 사용자 그룹 지정: allAuthenticatedUsers를 지정했지만 접근 항목에 role이 없습니다. 부여할 역할을 명시하지 않은 불완전한 설정이므로 그대로 배포하지 마세요.
  • 새 데이터셋의 기본 접근: 생성 시 access를 생략하면 BigQuery는 프로젝트 소유자 그룹(projectOwners), 쓰기 권한 그룹(projectWriters), 읽기 권한 그룹(projectReaders)과 데이터셋 생성자에 대한 기본 접근을 추가합니다. 자동으로 최소 권한이 되는 것은 아니며, 기존 데이터셋의 공개 접근 권한을 철회하는 예시도 아닙니다. 프로젝트와 인증 파일 경로는 실제 환경에 맞게 구성해야 합니다.

참조