네트워크 연결에 대한 보안 구성
이 페이지에서는 소비자 네트워크 관리자가 네트워크 연결을 사용하는 VPC 네트워크에서 보안을 관리하는 방법을 설명합니다.
Private Service Connect 인터페이스는 프로듀서 조직에서 만들고 관리하지만 소비자 VPC 네트워크에 있습니다. 소비자 측 보안을 위해서는 소비자 VPC 네트워크의 IP 주소 범위를 기반으로 하는 방화벽 규칙을 사용하는 것이 좋습니다. 이 방식을 사용하면 소비자는 프로듀서의 네트워크 태그를 사용하지 않고 Private Service Connect 인터페이스에서 들어오는 트래픽을 제어할 수 있습니다.
방화벽 규칙과 함께 네트워크 태그를 사용하는 것은 지원되지만 소비자가 태그를 제어하지 않으므로 권장하지 않습니다.
프로듀서-소비자 간 인그레스 제한
예를 들어 소비자가 프로듀서에게 producer-ingress-subnet
액세스 권한을 부여하고 프로듀서가 restricted-subnet
에 액세스하지 못하도록 차단하려는 그림 1의 구성 예시를 가정해 보겠습니다.
다음 방화벽 규칙은 제한된 프로듀서 소비자 간 인그레스를 허용합니다.
우선순위가 낮은 규칙은 네트워크 연결 서브넷의 IP 주소 범위
attachment-subnet
에서 들어오는 모든 이그레스 트래픽을 거부합니다.gcloud compute firewall-rules create deny-all-egress \ --network=consumer-vpc \ --action=DENY \ --rules=ALL \ --direction=EGRESS \ --priority=65534 \ --source-ranges="10.0.1.48/28" \ --destination-ranges="0.0.0.0/0"
우선순위가 더 높은 규칙은
attachment-subnet
의 IP 주소 범위에서producer-ingress-subnet
주소 범위에 있는 대상으로의 이그레스를 허용합니다.gcloud compute firewall-rules create allow-limited-egress \ --network=consumer-vpc \ --action=ALLOW \ --rules=ALL \ --direction=EGRESS \ --priority=1000 \ --source-ranges="10.0.1.48/28" \ --destination-ranges="10.10.2.0/24"
인그레스 허용 규칙은
attachment-subnet
의 트래픽에 대해 묵시적 인그레스 거부 규칙을 재정의합니다.gcloud compute firewall-rules create allow-ingress \ --network=consumer-vpc \ --action=ALLOW \ --rules=ALL \ --direction=INGRESS \ --priority=1000 \ --source-ranges="10.0.1.48/28"
소비자-프로듀서 간 이그레스 허용
소비자 네트워크가 프로듀서 네트워크에 대해 트래픽을 시작하도록 하려면 인그레스 방화벽 규칙을 사용하면 됩니다.
소비자가 subnet-1
에서 Private Service Connect 연결을 통해 프로듀서 네트워크에 액세스하도록 허용하려는 그림 2의 구성 예시를 가정해 보겠습니다.
다음 방화벽 규칙은 subnet-1
만 Private Service Connect 연결을 통해 프로듀서 네트워크에 액세스할 수 있도록 합니다.
gcloud compute firewall-rules create vm-subnet-allow-ingress \ --network=consumer-vpc \ --action=ALLOW \ --rules=ALL \ --direction=INGRESS \ --priority=1000 \ --source-ranges="10.10.2.0/24" \ --destination-ranges="10.0.1.48/28"
프로듀서 간 보안 구성
프로듀서 애플리케이션이 다른 프로듀서 애플리케이션에 액세스해야 하는 시나리오에서 보안을 위해 VPC 방화벽 규칙을 사용할 수 있습니다.
소비자가 다른 VPC 네트워크에 호스팅되는 두 가지 서로 다른 타사 관리형 서비스를 사용하는 경우를 가정해 보겠습니다. 한 서비스는 데이터베이스이고, 다른 서비스는 분석을 제공합니다. 데이터를 분석하려면 분석 서비스가 데이터베이스 서비스에 연결되어야 합니다. 한 가지 방법은 서비스에서 직접 연결을 만드는 것입니다. 그러나 두 타사 서비스가 직접 연결되면 소비자는 데이터에 대한 제어와 가시성을 잃게 됩니다.
보다 안전한 접근 방식은 그림 3과 같이 Private Service Connect 인터페이스, Private Service Connect 엔드포인트, VPC 방화벽 규칙을 사용하는 것입니다.
이 접근 방식에서 소비자 네트워크는 한 서브넷의 엔드포인트를 통해 데이터베이스 애플리케이션에 연결하고 다른 서브넷의 네트워크 연결을 통해 분석 애플리케이션에 연결합니다. 분석 애플리케이션의 트래픽은 Private Service Connect 인터페이스 및 네트워크 연결을 통과하고 소비자 네트워크를 전환한 후 endpoint-subnet
의 엔드포인트를 통해 이그레스하여 데이터베이스 애플리케이션에 도달할 수 있습니다.
소비자 VPC 네트워크에서 VPC 방화벽 규칙은 attachment-subnet
의 모든 이그레스 트래픽을 거부합니다. 우선순위가 더 높은 다른 방화벽 규칙은 attachment-subnet
및 consumer-private-subnet
에서 엔드포인트로의 이그레스 트래픽을 허용합니다. 따라서 분석 애플리케이션의 트래픽이 데이터베이스 애플리케이션의 VPC 네트워크에 도달할 수 있으며 이 트래픽은 소비자의 엔드포인트를 통해 이동해야 합니다.
다음 방화벽 규칙은 그림 4에서 설명한 구성을 만듭니다.
방화벽 규칙이
attachment-subnet
의 모든 이그레스 트래픽을 차단합니다.gcloud compute firewall-rules create consumer-deny-all-egress \ --network=consumer-vpc \ --action=DENY \ --rules=all \ --direction=EGRESS \ --priority=65534 \ --source-ranges="10.0.1.48/28" \ --destination-ranges="0.0.0.0/0"
방화벽 규칙은 포트 80에서
attachment-subnet
및consumer-private-subnet
부터 엔드포인트로 이그레스 TCP 트래픽을 허용합니다.gcloud compute firewall-rules create consumer-allow-80-egress \ --network=intf-consumer-vpc \ --allow=tcp:80 \ --direction=EGRESS \ --source-ranges="10.0.1.48/28,10.10.2.0/24" \ --destination-ranges="10.0.1.66/32" \ --priority=1000