이 페이지에서는 Resource Manager 태그를 보안 웹 프록시 정책에 연결하는 방법을 설명합니다. Resource Manager 태그는 가상 머신 (VM) 인스턴스와 같은 다양한 Google Cloud 리소스에 연결할 수 있는 라벨입니다. 태그를 사용하여 기존 조직 라벨로 네트워크 전반에 조건부 액세스 제어를 적용할 수 있습니다.
이러한 태그를 사용하여 다음 작업을 수행할 수 있습니다.
워크로드 세분화:
production또는development와 같은 다양한 환경과frontend또는database와 같은 서비스 유형을 고유하게 식별할 수 있습니다.액세스 제어 중앙화: 이러한 태그를 기반으로 보안 웹 프록시 정책을 설정할 수 있습니다. 예를 들어 '
tag segment=production태그가 있는 리소스에서 시작된 트래픽만 특정 URL 집합에 액세스할 수 있습니다.'라는 정책 규칙을 만들 수 있습니다.
이 페이지에서는 다음을 수행하는 방법을 보여줍니다.
- 빈 정책으로 보안 웹 프록시 인스턴스 만들기
- VM 인스턴스에 Resource Manager 태그 만들기 및 연결
- 보안 웹 프록시 규칙 만들기
- 전체 보안 웹 프록시 구성의 연결 테스트
시작하기 전에
초기 설정 단계를 구성합니다.
조직 관리자에게 태그를 만들고 업데이트하는 데 필요한 역할을 부여합니다.
Google Cloud CLI 버전 406.0.0 이상이 설치되었는지 확인합니다.
gcloud version | head -n1이전 gcloud CLI 버전이 설치되어 있는 경우 버전을 업데이트합니다.
gcloud components update --version=406.0.0
빈 정책으로 보안 웹 프록시 인스턴스 만들기
보안 웹 프록시 인스턴스를 만들려면 먼저 빈 보안 정책을 만든 다음 정책을 사용하는 웹 프록시를 만들어야 합니다.
빈 보안 정책 만들기
콘솔
Google Cloud 콘솔에서 SWP 정책 페이지로 이동합니다.
정책 만들기를 클릭합니다.
이름 필드에 정책 이름(예:
myswppolicy)을 입력합니다.설명 필드에 정책에 대한 설명을 입력합니다(예:
My new swp policy).리전에서 정책을 만들 리전(예:
us-central1)을 선택합니다.만들기를 클릭합니다.
Cloud Shell
원하는 텍스트 편집기를 사용하여
policy.yaml파일을 만듭니다.만든
policy.yaml파일에 다음을 추가합니다.name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME description: POLICY_DESCRIPTION다음을 바꿉니다.
PROJECT_NAME: 프로젝트 이름REGION: 정책이 생성된 리전(예:us-central1)POLICY_NAME: 정책 이름POLICY_DESCRIPTION: 정책에 대한 설명
gcloud network-security gateway-security-policies import명령어를 사용하여 보안 정책을 가져옵니다.gcloud network-security gateway-security-policies import POLICY_NAME \ --source=POLICY_FILE.yaml \ --location=REGION
웹 프록시 만들기
콘솔
Google Cloud 콘솔에서 웹 프록시 페이지로 이동합니다.
보안 웹 프록시 만들기를 클릭합니다.
이름 필드에 웹 프록시의 이름(예:
myswp)을 입력합니다.설명 필드에 웹 프록시에 대한 설명(예:
My new swp)을 입력합니다.라우팅 모드에서 명시적 옵션을 선택합니다.
리전에서 웹 프록시를 만들 리전을 선택합니다(예:
us-central1).네트워크에서 웹 프록시를 만들 네트워크를 선택합니다.
(선택사항) 웹 프록시 IP 주소 필드에 보안 웹 프록시 IP 주소를 입력합니다.
이전 단계에서 만든 서브네트워크에 있는 보안 웹 프록시 IP 주소 범위의 IP 주소를 입력할 수 있습니다. IP 주소를 입력하지 않으면 보안 웹 프록시 인스턴스가 선택한 서브네트워크에서 IP 주소를 자동으로 선택합니다.
인증서에서 웹 프록시를 만드는 데 사용할 인증서를 선택합니다.
정책에서 웹 프록시를 연결하기 위해 만든 정책을 선택합니다.
만들기를 클릭합니다.
Cloud Shell
원하는 텍스트 편집기를 사용하여
gateway.yaml파일을 만듭니다.gateway.yaml파일에 다음을 추가합니다.name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME type: SECURE_WEB_GATEWAY ports: [GATEWAY_PORT_NUMBERS] certificateUrls: [CERTIFICATE_URLS] gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME network: projects/PROJECT_NAME/global/networks/NETWORK_NAME subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNETWORK addresses: [GATEWAY_IP_ADDRESS] scope: samplescope다음을 바꿉니다.
GATEWAY_NAME: 이 보안 웹 프록시 인스턴스의 이름GATEWAY_PORT_NUMBERS: 이 게이트웨이의 포트 번호 목록(예:[80,443])CERTIFICATE_URLS: SSL 인증서 URL 목록GATEWAY_IP_ADDRESS: 이전에 초기 설정 단계에서 만든 프록시 서브넷 내의 보안 웹 프록시 인스턴스에 대한 IP 주소 목록(선택사항)IP 주소를 나열하지 않도록 선택한 경우 웹 프록시가 자동으로 IP 주소를 선택하도록 필드를 생략합니다.
gcloud network-services gateways import명령어를 사용하여 보안 웹 프록시 인스턴스를 만듭니다.gcloud network-services gateways import GATEWAY_NAME \ --source=gateway.yaml \ --location=REGION
연결 테스트
연결을 테스트하려면 Virtual Private Cloud (VPC) 네트워크 내의 모든 가상 머신 (VM) 인스턴스에서 curl 명령어를 사용합니다.
curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure
모든 것이 올바르게 작동하면 보안 웹 프록시 인스턴스가 403 Forbidden 상태 코드를 반환합니다. 이 오류는 다음을 확인합니다.
보안 웹 프록시 인스턴스가 성공적으로 배포되었으며 트래픽을 수신하고 있습니다.
보안 웹 프록시 정책은 다음 섹션에서 특정
allow규칙을 정의할 때까지 모든 트래픽을 거부하는 기본 보안 자세를 올바르게 적용합니다.
Resource Manager 태그 만들기 및 연결
-
예: 제한된 환경의 태그를 만들려면 다음 단계를 따르세요.
목적을
GCE_FIREWALL로 설정하여gcloud resource-manager tags keys create명령어를 사용하여 태그 키 (access-level)를 만듭니다.생성 명령어의 출력에서 또는
gcloud resource-manager tags keys list명령어를 사용하여 태그 키 ID를 가져옵니다. 이 ID는 태그 값을 특정 태그 키에 연결하는 데 필요합니다.태그 키 ID를 상위 요소로 지정하여
gcloud resource-manager tags values create명령어를 사용하여 태그 값 (restricted)을 만듭니다.
# Create the tag key # The output provides a unique ID, such as "tagKeys/1234567890" gcloud resource-manager tags keys create "access-level" \ --parent="organizations/1234567890" \ --purpose="GCE_FIREWALL" \ --purpose-values="execution_env=ANS" # Create the tag value and connect it to the key # The "--parent" flag identifies to which key this value belongs gcloud resource-manager tags values create "restricted" \ --parent="tagKeys/1234567890" -
이러한 태그를 연결하면 VM 인스턴스의 아웃바운드 트래픽이 특정 태그 ID와 연결되므로 프록시가 워크로드를 인식하고 보안 정책 규칙을 적용할 수 있습니다.
예:
internal-tool라는 VM 인스턴스가 있다고 가정해 보겠습니다.gcloud resource-manager tags bindings create명령어를 사용하여restricted태그 값을internal-tool에 연결할 수 있습니다. 이 태그 할당을 통해 프록시는internal-toolVM 인스턴스에서 시작된 트래픽을 식별할 수 있습니다.# Attach the "restricted" tag to a specific VM instance gcloud resource-manager tags bindings create \ --parent="//[compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/internal-tool](https://compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/internal-tool)" \ --tag-value="tagValues/987654321"
보안 웹 프록시 규칙 만들기
콘솔
Google Cloud 콘솔에서 SWP 정책 페이지로 이동합니다.
정책 이름(예:
myswppolicy)을 클릭합니다.규칙 추가를 클릭합니다.
각 규칙에 대해 다음을 수행합니다.
우선순위에 규칙의 평가 순서(번호순)를 입력합니다. 규칙은 가장 높은 우선순위에서 가장 낮은 우선순위로 평가되며
0이 가장 높은 우선순위입니다.이름 필드에 규칙 이름을 입력합니다.
설명 필드에 규칙에 대한 설명을 입력합니다.
작업에서 다음 옵션 중 하나를 선택합니다.
- 허용: 규칙과 일치하는 연결 요청을 허용합니다.
- 거부: 규칙과 일치하는 연결 요청을 거부합니다.
상태 필드에서 규칙 시행에 대한 다음 옵션 중 하나를 선택합니다.
- 사용 설정됨: 보안 웹 프록시 인스턴스에 규칙을 적용합니다.
- 사용 중지됨: 보안 웹 프록시 인스턴스에 규칙을 적용하지 않습니다.
세션 일치 섹션에서 이전 섹션에서 만든 태그의 고유 ID를 지정합니다. 예를 들면 다음과 같습니다.
sessionMatcher: "source.matchTag('TAG_VALUE') && host() == 'example.com'"SessionMatcher의 구문에 대한 자세한 내용은 CEL 일치자 언어 참조를 참고하세요.애플리케이션 일치 섹션에서 요청을 일치시키는 기준을 지정합니다.
규칙 추가를 클릭합니다.
Cloud Shell
원하는 텍스트 편집기를 사용하여
rule.yaml파일을 만듭니다.필수 태그의 URL에 대한 액세스를 허용하려면
rule.yaml파일에 다음을 추가합니다.name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME description: RULE_DESCRIPTION enabled: true priority: RULE_PRIORITY sessionMatcher: CEL_EXPRESSION basicProfile: ALLOW다음을 바꿉니다.
RULE_NAME: 이 규칙의 이름RULE_DESCRIPTION: 규칙에 대한 설명RULE_PRIORITY: 이 규칙의 우선순위입니다. 숫자가 작을수록 우선순위가 높습니다.CEL_EXPRESSION: Common Expression Language (CEL) 표현식입니다. 자세한 내용은 CEL 일치자 언어 참조를 참고하세요.
예를 들어 필수 태그에서
example.com에 대한 액세스를 허용하려면 YAML 파일에 다음sessionMatcher줄을 추가합니다.sessionMatcher: "source.matchTag('TAG_VALUE') && host() == 'example.com'"TAG_VALUE를 허용하려는 태그로 바꿉니다. 태그가 숫자 리소스 식별자 형식(예:tagValues/567890123456)을 따르는지 확인합니다.gcloud network-security gateway-security-policies rules import명령어를 사용하여 만든 규칙을 가져옵니다.gcloud network-security gateway-security-policies rules import RULE_NAME \ --source=RULE_FILE.yaml \ --location=REGION \ --gateway-security-policy=POLICY_NAME
정책 구성 테스트
연결을 다시 테스트하여 ID에 Resource Manager 태그를 사용하는 보안 웹 프록시 정책이 의도한 대로 작동하는지 확인할 수 있습니다.
연결을 테스트하려면 적절한 TAG_VALUE 태그와 연결된 VM에서 curl 명령어를 사용합니다.
curl -x https://IPv4_ADDRESS:443 http://example.com
--proxy-insecure
IPv4_ADDRESS를 보안 웹 프록시 인스턴스의 IPv4 주소로 바꿉니다.
모든 것이 올바르게 작동하면 200 OK 또는 403 Forbidden 상태 코드가 수신됩니다. 이러한 응답은 다음 주요 결과를 확인합니다.
태그 기반 성공:
200 OK상태 코드는 올바른 리소스 관리자 태그가 연결된 VM의 트래픽이 정책 규칙과 일치하고 프록시를 통해 허용되는지 확인합니다. 이 확인된 일치 항목으로 인해 연결이 성공합니다.태그 기반 거부:
403 Forbidden상태 코드는 지정된 태그가 없거나 잘못된 태그가 있는 VM의 트래픽이 정책에 의해 액세스가 올바르게 거부되었음을 확인합니다. 이 시행을 통해 태그 기반 세분화 및 시행이 의도한 대로 작동하는지 확인할 수 있습니다.