VPC 서비스 제어 구성

Virtual Private Cloud Service Controls(VPC 서비스 제어)를 사용하면 조직에서 Google Cloud 리소스 주위에 경계를 정의하여 데이터 무단 반출 위험을 완화할 수 있습니다.

Cloud Composer 환경은 서비스 경계 내에 배포될 수 있습니다. VPC 서비스 제어로 환경을 구성하면 Cloud Composer의 완전 관리형 워크플로 조정 기능을 활용하면서 민감한 정보를 비공개로 유지할 수 있습니다.

Cloud Composer에 대한 VPC 서비스 제어 지원은 다음을 의미합니다.

  • 이제 VPC 서비스 제어 경계 내에서 보안 서비스로 Cloud Composer를 선택할 수 있습니다.
  • Cloud Composer에서 사용하는 모든 기본 리소스는 VPC 서비스 제어 아키텍처를 지원하고 해당 규칙을 따르도록 구성됩니다.

VPC 서비스 제어를 사용하여 Cloud Composer 환경을 배포하면 다음 이점을 얻을 수 있습니다.

  • 데이터 무단 반출 위험 감소
  • 잘못 구성된 액세스 제어로 인한 데이터 노출 방지
  • 악의적인 사용자가 승인되지 않은 Google Cloud 리소스에 데이터를 복사하거나 인터넷에서 Google Cloud 리소스에 액세스하는 외부 공격자의 위험을 줄입니다.

서비스 경계 만들기

서비스 경계를 만들고 구성하는 방법을 알아보려면 서비스 경계 만들기를 참조하세요. 경계 내에 보호되는 서비스 중 하나로 Cloud Composer를 선택해야 합니다.

경계에서 환경 만들기

경계 내에 Cloud Composer를 배포하는 데 필요한 몇 가지 추가 단계가 있습니다. Cloud Composer 환경을 만들 경우 다음 안내를 따르세요.

  1. 프로젝트에 Access Context Manager APICloud Composer API를 사용 설정합니다. 자세한 내용은 API 사용 설정을 참조하세요.

  2. 다음 서비스 계정을 AccessLevel에 추가하고 서비스 경계에 연결하여 허용합니다.

    • cloud-logs@system.gserviceaccount.com - 이 서비스 계정을 사용하면 Cloud Composer가 프로젝트의 Cloud Monitoring 서비스에 로그를 저장할 수 있습니다.
  3. 환경을 최대로 보호하기 위해 경계에 Cloud SQL, Pub/Sub, Monitoring, Cloud Storage, Kubernetes Engine, Container Registry와 같은 서비스를 추가합니다.

  4. 버전 composer-1.10.4 이상을 사용합니다.

  5. Airflow 데이터베이스에서 DAG 직렬화를 사용 설정합니다. 이렇게 하려면 환경을 만들 때 core 섹션에서 [core] store_serialized_dags=True[core] store_dag_code=True 구성 재정의를 추가합니다. 자세한 내용은 DAG 직렬화를 참조하세요.

  6. 비공개 IP를 사용 설정하여 새 Cloud Composer 환경을 만듭니다. 이 설정은 환경 생성 중에 구성해야 합니다.

  7. 환경을 만들 때 Airflow 웹 서버에 대한 액세스를 구성해야 합니다. 최대 보호를 위해 특정 IP 범위에서 웹 서버에 대한 액세스만 허용합니다. 자세한 내용은 새 환경 만들기의 5단계를 참조하세요.

VPC 서비스 제어를 사용하여 기존 환경 구성

환경이 특정 조건을 충족하는 경우 경계 내에서 작동하도록 Cloud Composer를 구성할 수 있습니다.

  1. 환경은 Composer 베타 API를 사용하여 생성되고 비공개 IP가 사용 설정되어 있습니다.

  2. DAG 직렬화가 사용 설정되었습니다.

이러한 조건이 충족되면 위 섹션에 설명된 대로 경계가 생성되었다고 가정하여 환경이 포함된 프로젝트를 경계에 추가할 수 있습니다.

PyPI 패키지 설치

위에 나와있는 기본 VPC 서비스 제어 구성에서 Cloud Composer는 VPC 네트워크의 비공개 IP 주소 공간에서 연결할 수 있는 비공개 저장소의 PyPI 패키지 설치만 지원합니다. 이 프로세스의 권장 구성은 비공개 PyPI 저장소를 설정하고 조직에서 사용하는 검증된 패키지로 채운 다음 비공개 저장소에서 Python 종속 항목을 설치하도록 Cloud Composer를 구성하는 것입니다.

비공개 IP 공간 외부의 저장소에서 PyPI 패키지를 설치할 수도 있습니다. 다음 단계를 따르세요.

  1. 비공개 IP 공간에서 실행되는 Composer가 외부 PyPI 저장소와 연결될 수 있도록 Cloud NAT를 구성합니다.
  2. Composer 클러스터에서 저장소로 나가는 연결을 허용하도록 방화벽 규칙을 구성합니다.

이 설정을 사용할 때는 외부 저장소 사용에 따른 위험을 이해하고 여기에 익숙해지도록 합니다. 외부 저장소의 콘텐츠와 무결성을 신뢰할 수 있는지 확인하세요. 이러한 연결은 잠재적으로 유출 벡터로 사용될 수 있기 때문입니다.

네트워크 구성 체크리스트

경계 내부에 Cloud Composer 환경을 만들려면 VPC 네트워크를 올바르게 구성해야 합니다. 아래에 나열된 구성 요구 사항을 따라야 합니다.

  • Cloud Console에서 VPC 네트워크 > 방화벽 섹션으로 이동하여 다음 방화벽 규칙이 구성되었는지 확인합니다.

    • GKE 노드 IP 범위에서 모든 곳으로 이그레스 허용, 포트 53
    • GKE 노드 IP 범위에서 GKE 노드 IP 범위로 이그레스 허용, 모든 포트
    • GKE 노드 IP 범위에서 GKE 마스터 IP 범위로 이그레스 허용, 모든 포트
    • GKE 노드 IP 범위에서 199.36.153.4/30으로 이그레스 허용, port 443(restricted.googleapis.com)
    • GCP 상태 확인 130.211.0.0/22,35.191.0.0/16에서 노드 IP 범위로 인그레스 허용 TCP 포트 80 및 443
    • 노드 IP 범위에서 GCP 상태 확인으로 이그레스 허용 TCP 포트 80 및 443

    VPC 네트워크의 규칙을 확인, 추가, 업데이트하는 방법을 알아보려면 방화벽 규칙 사용을 참조하세요.

  • restricted.googleapis.com 엔드포인트에 대한 연결을 구성합니다.

    • *.googleapis.com에서 restricted.googleapis.com로의 DNS 매핑 존재 확인
    • DNS *.gcr.iogoogleapis.com 엔드포인트와 마찬가지로 199.36.153.4/30로 결정해야 합니다. 이렇게 하려면 CNAME *.gcr.io -> gcr.io. A gcr.io. -> 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7과 같이 새 영역을 만듭니다.

    자세한 내용은 Google API 및 서비스로 비공개 연결 설정을 참조하세요.

제한사항

  • 모든 VPC 서비스 제어 네트워크 제약조건은 Cloud Composer 환경에도 적용됩니다. 자세한 내용은 VPC 서비스 제어 문서를 참조하세요.

  • DAG 직렬화를 사용 설정하면 Airflow가 렌더링된 템플릿을 웹 UI에 함수와 함께 표시하지 않습니다. 이 문제는 Airflow 및 Cloud Composer의 이후 버전에서 수정될 예정입니다.

  • DAG 직렬화가 사용 설정된 상태에서는 async_dagbag_loader 플래그를 True로 설정하는 것이 지원되지 않습니다.

  • DAG 직렬화를 사용 설정하면 Cloud Composer가 배포된 VPC 네트워크의 보안이 저하될 수 있으므로 모든 Airflow 웹 서버 플러그인이 사용 중지됩니다. 이는 Airflow 연산자와 센서 등을 포함하여 스케줄러 또는 작업자 플러그인의 동작에 영향을 주지 않습니다.

  • Cloud Composer가 경계 내에서 실행 중인 경우 공개 PyPI 저장소에 대한 액세스가 제한됩니다. 비공개 IP 모드에서 PyPi 모듈을 설치하는 방법을 알아보려면 Python 종속 항목 설치를 참조하세요.