서비스 계정은 일반적으로 사용자가 아닌 Compute Engine 인스턴스와 같은 애플리케이션 또는 컴퓨팅 워크로드에서 사용하는 특별한 유형의 계정입니다. 서비스 계정은 계정 고유의 이메일 주소로 식별됩니다.
애플리케이션은 서비스 계정을 사용해 인증된 API 호출을 수행하는데, 이 인증은 서비스 계정 자체로 이루어지거나 Google Workspace 또는 도메인 전체 위임을 통해 Cloud ID 사용자로서 이루어집니다. 애플리케이션이 서비스 계정으로 인증되면 서비스 계정에 액세스 권한이 있는 모든 리소스에 액세스할 수 있습니다.
서비스 계정을 사용하여 트래픽 소스를 식별하고 필요에 따라 보안 웹 프록시 정책을 구성할 수 있습니다.
이 가이드에서는 다음을 수행하는 방법을 보여줍니다.
- 빈 정책으로 보안 웹 프록시 인스턴스를 만듭니다.
- 서비스 계정을 만들고 리소스에 연결합니다.
- 서비스 계정을 사용하여 보안 웹 프록시 정책을 만듭니다.
- 보안 웹 프록시 인스턴스를 만듭니다.
- VM에서 연결을 테스트합니다.
시작하기 전에
초기 설정 단계를 완료합니다.
조직 관리자에게 서비스 계정에 대한 액세스 권한을 부여합니다.
Google Cloud CLI 버전 406.0.0 이상이 설치되었는지 확인합니다.
gcloud version | head -n1
이전 gcloud CLI 버전이 설치되어 있는 경우 버전을 업데이트합니다.
gcloud components update --version=406.0.0
빈 정책으로 보안 웹 프록시 인스턴스 만들기
보안 웹 프록시 인스턴스를 만들려면 먼저 빈 보안 정책을 만든 다음 웹 프록시를 만듭니다.
빈 보안 정책 만들기
콘솔
Google Cloud 콘솔에서 네트워크 보안 페이지로 이동합니다.
보안 웹 프록시를 클릭합니다.
정책 탭을 클릭합니다.
정책 만들기를 클릭합니다.
만들려는 정책의 이름을 입력합니다(예:
myswppolicy
).정책의 설명을 입력합니다(예:
My new swp policy
).리전 목록에서 정책을 만들려는 리전을 선택합니다.
만들기를 클릭합니다.
Cloud Shell
원하는 텍스트 편집기를 사용하여
POLICY_FILE
.yaml 파일을 만듭니다.POLICY_FILE
을 정책 파일에 사용할 파일 이름으로 바꿉니다.만든 YAML 파일에 다음을 추가합니다.
name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME description: POLICY_DESCRIPTION
다음을 바꿉니다.
PROJECT_NAME
: 프로젝트의 이름REGION
: 이 정책이 적용되는 리전POLICY_NAME
: 만들려는 정책의 이름POLICY_DESCRIPTION
: 만들려는 정책의 설명
보안 정책을 가져옵니다.
gcloud network-security gateway-security-policies import POLICY_NAME \ --source=POLICY_FILE.yaml \ --location=REGION
웹 프록시 만들기
콘솔
Google Cloud 콘솔에서 네트워크 보안 페이지로 이동합니다.
보안 웹 프록시를 클릭합니다.
웹 프록시 설정을 클릭합니다.
만들려는 웹 프록시의 이름(예:
myswp
)을 입력합니다.웹 프록시에 대한 설명(예:
My new swp
)을 입력합니다.리전 목록에서 웹 프록시를 만들 리전을 선택합니다.
네트워크 목록에서 웹 프록시를 만들 네트워크를 선택합니다.
서브네트워크 목록에서 웹 프록시를 만들 서브네트워크를 선택합니다.
웹 프록시 IP 주소를 입력합니다.
인증서 목록에서 웹 프록시를 만드는 데 사용할 인증서를 선택합니다.
정책 목록에서 웹 프록시를 연결하기 위해 만든 정책을 선택합니다.
만들기를 클릭합니다.
Cloud Shell
원하는 텍스트 편집기를 사용하여
GATEWAY_FILE
.yaml 파일을 만듭니다.GATEWAY_FILE
을 웹 프록시 파일에 사용할 파일 이름으로 바꿉니다.만든 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/SUBNET_NAME addresses: [GATEWAY_IP_ADDRESS] scope: samplescope
다음을 바꿉니다.
GATEWAY_NAME
: 이 인스턴스의 이름GATEWAY_PORT_NUMBERS
: 이 게이트웨이의 포트 번호 목록(예:[80,443]
)CERTIFICATE_URLS
: SSL 인증서 URL의 목록SUBNET_NAME
:GATEWAY_IP_ADDRESS
가 포함된 서브넷의 이름GATEWAY_IP_ADDRESS
: 이전에 초기 설정 단계에서 만든 프록시 서브넷 내의 보안 웹 프록시 인스턴스에 대한 IP 주소 목록(선택사항)IP 주소를 나열하지 않도록 선택한 경우 웹 프록시가 자동으로 IP 주소를 선택하도록 필드를 생략합니다.
보안 웹 프록시 인스턴스를 만듭니다.
gcloud network-services gateways import GATEWAY_NAME \ --source=GATEWAY_FILE.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
오류가 발생합니다.
서비스 계정을 만들고 리소스에 연결
서비스 계정을 만들고 연결하려면 다음을 수행합니다.
보안 웹 프록시 규칙 만들기
보안 웹 프록시 규칙을 만들려면 다음을 수행합니다.
원하는 텍스트 편집기를 사용하여
RULE_FILE
.yaml 파일을 만듭니다.RULE_FILE
을 선택한 파일 이름으로 바꿉니다.선택한 서비스 계정의 URL에 대한 액세스를 허용하려면 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
에 대한 액세스를 허용하려면sessionMatcher
에 대해 만든 YAML 파일에 다음을 추가합니다.sessionMatcher: "source.matchServiceAccount('SERVICE_ACCOUNT') && host() == 'example.com'"
SERVICE_ACCOUNT
를 허용하려는 서비스 계정으로 바꿉니다. 서비스 계정의 이메일 주소여야 합니다.
만든 규칙을 가져옵니다.
gcloud network-security gateway-security-policies rules import RULE_NAME \ --source=RULE_FILE.yaml \ --location=REGION \ --gateway-security-policy=POLICY_NAME
연결 테스트
연결을 테스트하려면 연결된 SERVICE_ACCOUNT
가 있는 리소스에서 curl
명령어를 사용합니다.
curl -x https://IPv4_ADDRESS:443 http://example.com
--proxy-insecure
IPv4_ADDRESS
를 보안 웹 프록시 인스턴스의 IPv4 주소로 바꿉니다.