서비스 계정을 사용하여 정책 만들기

서비스 계정은 특수한 유형의 계정이며, 일반적으로 인간이 아닌 애플리케이션 또는 컴퓨팅 워크로드(예: Compute Engine 인스턴스)에서 사용합니다. 이 계정은 계정 고유의 이메일 주소로 식별됩니다.

애플리케이션은 서비스 계정을 사용해 인증된 API 호출을 수행하는데, 이 인증은 서비스 계정 자체로 이루어지거나 Google Workspace 또는 도메인 전체 위임을 통해 Cloud ID 사용자로서 이루어집니다. 애플리케이션이 서비스 계정으로 인증되면 서비스 계정에 액세스 권한이 있는 모든 리소스에 액세스할 수 있습니다.

서비스 계정을 사용하여 트래픽 소스를 식별하고 필요에 따라 보안 웹 프록시 정책을 구성할 수 있습니다.

이 가이드에서는 다음을 수행하는 방법을 보여줍니다.

  • 빈 정책으로 보안 웹 프록시 인스턴스를 만듭니다.
  • 서비스 계정을 만들고 리소스에 연결합니다.
  • 서비스 계정을 사용하여 보안 웹 프록시 정책을 만듭니다.
  • 보안 웹 프록시 인스턴스를 만듭니다.
  • VM에서 연결을 테스트합니다.

시작하기 전에

빈 정책으로 보안 웹 프록시 인스턴스 만들기

보안 웹 프록시 인스턴스를 만들려면 먼저 빈 보안 정책을 만든 다음 웹 프록시를 만듭니다.

빈 보안 정책 만들기

콘솔

  1. Google Cloud 콘솔에서 네트워크 보안 페이지로 이동합니다.

    네트워크 보안으로 이동

  2. 보안 웹 프록시를 클릭합니다.

  3. 정책 탭을 클릭합니다.

  4. 정책 만들기를 클릭합니다.

  5. 만들려는 정책의 이름을 입력합니다(예: myswppolicy).

  6. 정책의 설명을 입력합니다(예: My new swp policy).

  7. 리전 목록에서 정책을 만들려는 리전을 선택합니다.

  8. 만들기를 클릭합니다.

Cloud Shell

  1. 원하는 텍스트 편집기를 사용하여 POLICY_FILE.yaml 파일을 만듭니다. POLICY_FILE을 정책 파일에 사용할 파일 이름으로 바꿉니다.

  2. 만든 YAML 파일에 다음을 추가합니다.

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    description: POLICY_DESCRIPTION
    

    다음을 바꿉니다.

    • PROJECT_NAME: 프로젝트의 이름
    • REGION: 이 정책이 적용되는 리전
    • POLICY_NAME: 만들려는 정책의 이름
    • POLICY_DESCRIPTION: 만들려는 정책의 설명
  3. 보안 정책을 가져옵니다.

    gcloud network-security gateway-security-policies import POLICY_NAME \
        --source=POLICY_FILE.yaml \
        --location=REGION
    

웹 프록시 만들기

콘솔

  1. Google Cloud 콘솔에서 네트워크 보안 페이지로 이동합니다.

    네트워크 보안으로 이동

  2. 보안 웹 프록시를 클릭합니다.

  3. 웹 프록시 설정을 클릭합니다.

  4. 만들려는 웹 프록시의 이름(예: myswp)을 입력합니다.

  5. 웹 프록시에 대한 설명(예: My new swp)을 입력합니다.

  6. 리전 목록에서 웹 프록시를 만들 리전을 선택합니다.

  7. 네트워크 목록에서 웹 프록시를 만들 네트워크를 선택합니다.

  8. 서브네트워크 목록에서 웹 프록시를 만들 서브네트워크를 선택합니다.

  9. 웹 프록시 IP 주소를 입력합니다.

  10. 인증서 목록에서 웹 프록시를 만드는 데 사용할 인증서를 선택합니다.

  11. 정책 목록에서 웹 프록시를 연결하기 위해 만든 정책을 선택합니다.

  12. 만들기를 클릭합니다.

Cloud Shell

  1. 원하는 텍스트 편집기를 사용하여 GATEWAY_FILE.yaml 파일을 만듭니다. GATEWAY_FILE을 웹 프록시 파일에 사용할 파일 이름으로 바꿉니다.

  2. 만든 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 주소를 선택하도록 필드를 생략합니다.

  3. 보안 웹 프록시 인스턴스를 만듭니다.

    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 오류가 발생합니다.

서비스 계정을 만들고 리소스에 연결

서비스 계정을 만들고 연결하려면 다음을 수행합니다.

  1. 서비스 계정을 만듭니다.

  2. 리소스에 서비스 계정을 연결합니다.

보안 웹 프록시 규칙 만들기

보안 웹 프록시 규칙을 만들려면 다음을 수행합니다.

  1. 원하는 텍스트 편집기를 사용하여 RULE_FILE.yaml 파일을 만듭니다. RULE_FILE을 선택한 파일 이름으로 바꿉니다.

  2. 선택한 서비스 계정의 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를 허용하려는 서비스 계정으로 바꿉니다. 서비스 계정의 이메일 주소여야 합니다.

  3. 만든 규칙을 가져옵니다.

    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 주소로 바꿉니다.

다음 단계