Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
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의 VPC 서비스 제어 정보
- 모든 VPC 서비스 제어 네트워크 제약조건은 Cloud Composer 환경에도 적용됩니다. 자세한 내용은 VPC 서비스 제어 문서를 참조하세요.
Cloud Composer 환경이 경계로 보호되는 경우 공개 PyPI 저장소에 대한 액세스가 제한됩니다. 자세한 내용은 VPC 서비스 제어에서 PyPI 패키지 설치를 참고하세요.
환경에 비공개 IP 네트워킹이 사용될 경우 비공개 Google 액세스를 통해 비공개 IP 환경에서 사용할 수 있는 Google API, 서비스, 도메인에 대한 트래픽을 제외한 모든 내부 트래픽이 VPC 네트워크로 라우팅됩니다.
VPC 네트워크 구성 방법에 따라 비공개 IP 환경은 VPC 네트워크를 통해 인터넷에 액세스할 수 있습니다.
VPC 서비스 제어 모드에서 웹 서버에 대한 액세스는 경계로 보호되며 경계 외부의 액세스가 차단됩니다. 서비스 경계 외부에서 액세스할 수 있도록 하려면 필요에 따라 액세스 수준 또는 인그레스 및 이그레스 규칙을 구성합니다. 또한 웹 서버에 대한 액세스를 특정 IP 범위로 제한할 수 있습니다.
서비스 경계 만들기
서비스 경계를 만들고 구성하는 방법은 서비스 경계 만들기를 참조하세요. 경계 내에 보호되는 서비스 중 하나로 Cloud Composer를 선택해야 합니다.
경계에서 환경 만들기
경계 내에 Cloud Composer를 배포하려면 다음 단계를 따르세요.
프로젝트에 Access Context Manager API 및 Cloud Composer API를 사용 설정합니다. 자세한 내용은 API 사용 설정을 참조하세요.
서비스 경계에 다음 VPC 액세스 가능 서비스가 있는지 확인합니다. 없으면 환경을 만들 수 없습니다.
- Cloud Composer API(composer.googleapis.com)
- Compute Engine API(compute.googleapis.com)
- Kubernetes Engine API(container.googleapis.com)
- Container Registry API(containerregistry.googleapis.com)
- Artifact Registry API(artifactregistry.googleapis.com)
- Cloud Storage API(storage.googleapis.com)
- Cloud SQL Admin API(sqladmin.googleapis.com)
- Cloud Logging API(logging.googleapis.com)
- Cloud Monitoring API(monitoring.googleapis.com)
- Cloud Pub/Sub API(pubsub.googleapis.com)
- Security Token Service API(sts.googleapis.com)
- Cloud Resource Manager API(cloudresourcemanager.googleapis.com)
- Service Directory API(servicedirectory.googleapis.com)
- Cloud KMS 또는 CMEK 키를 사용하는 경우 Cloud Key Management Service API (cloudkms.googleapis.com)
- Secret Manager를 보안 비밀 백엔드로 사용하는 경우 Secret Manager API (secretmanager.googleapis.com)
새 Cloud Composer 환경을 만듭니다.
비공개 IP를 사용 설정해야 합니다. 이 설정은 환경을 만드는 동안 구성해야 합니다.
Airflow 웹 서버에 대한 액세스를 구성해야 합니다. 보호를 강화하려면 특정 IP 범위에서만 웹 서버 액세스를 허용합니다. 자세한 내용은 웹 서버 네트워크 액세스 구성을 참조하세요.
기본적으로 Airflow UI 및 API에 대한 액세스는 보안 경계 내에서만 허용됩니다. 보안 경계 외부에서 사용할 수 있게 하려면 액세스 수준 또는 인그레스 및 이그레스 규칙을 구성합니다.
기존 환경을 경계에 추가
다음과 같은 경우에는 해당 환경이 포함된 프로젝트를 경계에 추가할 수 있습니다.
- 이전 섹션에 설명된 대로 이미 경계를 만들거나 구성했습니다.
- 환경에서 비공개 IP를 사용합니다.
VPC 서비스 제어에서 PyPI 패키지 설치
기본 VPC 서비스 제어 구성에서 Cloud Composer는 VPC 네트워크의 내부 IP 주소 공간에서 연결할 수 있는 비공개 저장소의 PyPI 패키지 설치만 지원합니다.
VPC 서비스 제어 경계 내의 모든 Cloud Composer 환경은 기본적으로 공개 PyPI 저장소에 액세스할 수 없습니다.
비공개 저장소에서 설치
권장 구성은 비공개 PyPI 저장소를 설정하고 조직에서 사용하는 검증된 패키지로 채운 다음 비공개 저장소에서 Python 종속 항목을 설치하도록 Cloud Composer를 구성하는 것입니다.
공개 저장소에서 설치
원격 저장소
공개 저장소에서 패키지를 설치하는 데 권장되는 방법입니다.
비공개 IP 공간 외부의 저장소에서 PyPI 패키지를 설치하려면 다음 단계를 따르세요.
- Artifact Registry 원격 저장소를 만듭니다.
- 이 저장소에 업스트림 소스에 대한 액세스 권한을 부여합니다.
- Artifact Registry 저장소에서 패키지를 설치하도록 Airflow를 구성합니다.
외부 연결
비공개 IP 공간 외부의 저장소에서 PyPI 패키지를 설치하려면 다음 단계를 따르세요.
환경의 서비스 계정에는 다음 IAM 역할이 있어야 합니다.
- Composer 작업자 (
composer.worker
) - 서비스 계정 사용자(
iam.serviceAccountUser
)
Google API 및 서비스에 대한 연결 구성
VPC 서비스 제어 구성에서 네트워크 트래픽을 제어하려면 restricted.googleapis.com
을 통해 Google API 및 서비스에 대한 액세스를 구성합니다. 이 도메인은 VPC 서비스 제어를 지원하지 않는 Google API 및 서비스에 대한 액세스를 차단합니다.
Cloud Composer 환경에서는 다음 도메인을 사용합니다.
*.googleapis.com
은 다른 Google 서비스에 액세스하는 데 사용됩니다.*.composer.cloud.google.com
은 환경의 Airflow 웹 서버에 액세스할 수 있도록 하는 데 사용됩니다. 이 규칙은 환경을 만들기 전에 적용되어야 합니다.- 대신 특정 리전에 대한 규칙을 만들 수 있습니다. 이렇게 하려면
REGION.composer.cloud.google.com
을 사용합니다.REGION
을 환경이 위치한 리전으로 바꿉니다(예:us-central1
).
- 대신 특정 리전에 대한 규칙을 만들 수 있습니다. 이렇게 하려면
(선택사항)
*.composer.googleusercontent.com
은 환경의 Airflow 웹 서버에 액세스할 때 사용됩니다. 이 규칙은 VPC 네트워크에서 실행되는 인스턴스에서 Airflow 웹 서버에 액세스하는 경우에만 필요하며 다른 경우에는 필요하지 않습니다. 이 규칙의 일반적인 시나리오는 VPC 네트워크 내에서 Airflow REST API를 호출하려는 경우입니다.- 대신 특정 환경에 대한 규칙을 만들 수 있습니다. 이렇게 하려면
ENVIRONMENT_WEB_SERVER_NAME.composer.googleusercontent.com
을 사용합니다.ENVIRONMENT_WEB_SERVER_NAME
을 환경 Airflow UI URL의 고유한 부분으로 바꿉니다(예:bffe6ce6c4304c55acca0e57be23128c-dot-us-central1
).
- 대신 특정 환경에 대한 규칙을 만들 수 있습니다. 이렇게 하려면
*.pkg.dev
는 환경을 만들거나 업데이트할 때와 같은 환경 이미지를 가져오는 데 사용됩니다.*.gcr.io
GKE는 Cloud Composer 버전에 관계없이 Container Registry 도메인에 대한 연결이 필요합니다.
restricted.googleapis.com
엔드포인트에 대한 연결을 구성합니다.
도메인 | DNS 이름 | CNAME 레코드 | A 레코드 |
---|---|---|---|
*.googleapis.com
|
googleapis.com. |
DNS 이름: *.googleapis.com. 리소스 레코드 유형: CNAME 표준 이름: googleapis.com. |
리소스 레코드 유형: A IPv4 주소: 199.36.153.4 , 199.36.153.5 , 199.36.153.6 , 199.36.153.7
|
*.composer.cloud.google.com
|
composer.cloud.google.com. |
DNS 이름: *.composer.cloud.google.com. 리소스 레코드 유형: CNAME 표준 이름: composer.cloud.google.com. |
리소스 레코드 유형: A IPv4 주소: 199.36.153.4 , 199.36.153.5 , 199.36.153.6 , 199.36.153.7
|
*.composer.googleusercontent.com
(선택사항, 설명 참조) |
composer.googleusercontent.com. |
DNS 이름: *.composer.googleusercontent.com. 리소스 레코드 유형: CNAME 표준 이름: composer.googleusercontent.com. |
리소스 레코드 유형: A IPv4 주소: 199.36.153.4 , 199.36.153.5 , 199.36.153.6 , 199.36.153.7
|
*.pkg.dev
|
pkg.dev. |
DNS 이름: *.pkg.dev. 리소스 레코드 유형: CNAME 표준 이름: pkg.dev. |
리소스 레코드 유형: A IPv4 주소: 199.36.153.4 , 199.36.153.5 , 199.36.153.6 , 199.36.153.7
|
*.gcr.io
|
gcr.io. |
DNS 이름: *.gcr.io. 리소스 레코드 유형: CNAME 표준 이름: gcr.io. |
리소스 레코드 유형: A IPv4 주소: 199.36.153.4 , 199.36.153.5 , 199.36.153.6 , 199.36.153.7
|
DNS 규칙을 만들려면 다음 안내를 따르세요.
새 DNS 영역을 만들고 이 영역의 DNS 이름으로 DNS 이름을 사용합니다.
예:
pkg.dev.
CNAME 레코드에 대한 레코드 세트를 추가합니다.
예:
- DNS 이름:
*.pkg.dev.
- 리소스 레코드 유형:
CNAME
- 표준 이름:
pkg.dev.
- DNS 이름:
A 레코드를 사용하여 레코드 세트를 추가합니다.
예:
- 리소스 레코드 유형:
A
- IPv4 주소:
199.36.153.4
,199.36.153.5
,199.36.153.6
,199.36.153.7
- 리소스 레코드 유형:
자세한 내용은 Google API 및 서비스에 대한 비공개 연결 설정을 참조하세요.
방화벽 규칙 구성
프로젝트에 묵시적인 방화벽 규칙을 재정의하는 규칙이나 기본 네트워크에서 미리 입력된 규칙을 수정하는 규칙과 같은 기본이 아닌 방화벽 규칙이 있는 경우 다음 방화벽 규칙이 구성되어 있는지 확인합니다.
예를 들어 모든 이그레스 트래픽을 거부하는 방화벽 규칙이 있는 경우 Cloud Composer가 환경을 만들지 못할 수 있습니다. 문제를 방지하려면 목록에 이어지고 전역 deny
규칙보다 우선순위가 높은 선택적인 allow
규칙을 정의합니다.
환경의 트래픽을 허용하도록 VPC 네트워크를 구성합니다.
- VPC 네트워크의 규칙을 확인, 추가, 업데이트하는 방법을 알아보려면 방화벽 규칙 사용을 참조하세요.
- 연결 도구를 사용하여 IP 범위 간 연결을 검증합니다.
- 네트워킹 태그를 사용하여 액세스를 추가로 제한할 수 있습니다. 환경을 만들 때 이러한 태그를 설정할 수 있습니다.
설명 | 방향 | 작업 | 소스 또는 대상 | 프로토콜 | 포트 |
---|---|---|---|---|---|
DNS Cloud DNS에 대한 VPC 서비스 제어 지원에 설명된 대로 구성. |
- | - | - | - | - |
Google API 및 서비스 | 이그레스 | 허용 | Google API 및 서비스에 사용하는 restricted.googleapis.com 의 IPv4 주소 |
TCP | 443 |
환경의 클러스터 노드 | 이그레스 | 허용 | 환경의 서브네트워크 기본 IP 주소 범위 | TCP, UDP | 모두 |
환경의 클러스터 포드 | 이그레스 | 허용 | 환경의 서브네트워크에 있는 포드의 보조 IP 주소 범위 | TCP, UDP | 모두 |
환경 클러스터 컨트롤 플레인 | 이그레스 | 허용 | GKE 컨트롤 플레인 IP 범위 | TCP, UDP | 모두 |
(환경에서 Private Service Connect를 사용하는 경우) 연결 서브네트워크 | 이그레스 | 허용 | Cloud Composer 연결 서브네트워크 범위 | TCP | 3306, 3307 |
(환경에서 VPC 피어링을 사용하는 경우) 테넌트 네트워크 | 이그레스 | 허용 | Cloud Composer 테넌트 네트워크 IP 범위 | TCP | 3306, 3307 |
IP 범위를 가져오려면 다음 안내를 따르세요.
포드, 서비스, 컨트롤 플레인 주소 범위는 환경 클러스터의 클러스터 페이지에서 확인할 수 있습니다.
Google Cloud 콘솔에서 환경 페이지로 이동합니다.
환경 목록에서 환경 이름을 클릭합니다. 환경 세부정보 페이지가 열립니다.
환경 구성 탭으로 이동합니다.
클러스터 세부정보 보기 링크를 클릭합니다.
환경 구성 탭에서 환경의 Cloud Composer 테넌트 네트워크 IP 범위를 볼 수 있습니다.
환경 구성 탭에서 환경의 서브네트워크 ID 및 Cloud Composer 연결 서브네트워크 ID를 확인할 수 있습니다. 서브네트워크의 IP 범위를 가져오려면 VPC 네트워크 페이지로 이동하고 네트워크 이름을 클릭하여 세부정보를 확인합니다.
VPC 서비스 제어 로그
환경 만들기 문제를 해결할 때 VPC 서비스 제어로 생성된 감사 로그를 분석할 수 있습니다.
다른 로그 메시지 외에도 로그에서 해당 환경의 구성요소를 구성하는 cloud-airflow-prod@system.gserviceaccount.com
및 service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com
서비스 계정 관련 정보를 확인할 수 있습니다.
Cloud Composer 서비스는 cloud-airflow-prod@system.gserviceaccount.com
서비스 계정을 사용하여 해당 환경의 테넌트 프로젝트 구성요소를 관리합니다.
Composer 서비스 에이전트 서비스 계정이라고도 하는 service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com
서비스 계정은 서비스 및 호스트 프로젝트에서 환경 구성요소를 관리합니다.