Usar contas de serviço para criar políticas

Uma conta de serviço é uma conta especial não humana do Google que aplicativos, processos automatizados ou cargas de trabalho de computação, como uma instância do Compute Engine, usam para fazer chamadas de API autorizadas. Ao contrário das contas de usuário, uma conta de serviço é identificada apenas pelo endereço de e-mail exclusivo.

Os aplicativos usam contas de serviço para autenticar e acessar Google Cloud recursos. Quando um aplicativo é autenticado usando uma conta de serviço, ele ganha acesso aos recursos para os quais a conta de serviço recebeu permissões explícitas do Identity and Access Management. Isso fornece um método seguro, auditável e centralizado para autorização de máquina para máquina.

Para o Secure Web Proxy, as contas de serviço desempenham um papel crucial na autorização e na aplicação de políticas. Ao usar uma conta de serviço para identificar a origem do tráfego de uma carga de trabalho, é possível criar políticas detalhadas do Secure Web Proxy que permitem ou negam especificamente o tráfego da Web com base na identidade do aplicativo, e não apenas no endereço IP.

Nesta página, você aprende a fazer o seguinte:

Antes de começar

  • Conclua as etapas de configuração inicial.

  • Peça a um administrador da organização para conceder acesso a uma conta de serviço.

  • Verifique se você tem a versão 406.0.0 ou mais recente da Google Cloud CLI instalada:

    gcloud version | head -n1
    

    Se você tiver uma versão anterior da CLI gcloud instalada, atualize a versão:

    gcloud components update --version=406.0.0
    

Criar uma instância do Secure Web Proxy com uma política vazia

Para criar uma instância do Secure Web Proxy, primeiro crie uma política de segurança vazia e, em seguida, um proxy da Web que use a política.

Criar uma política de segurança vazia

Console

  1. No Google Cloud console do, acesse a página Políticas do SWP.

    Acessar políticas do SWP

  2. Clique em Criar uma política.

  3. No campo Nome, insira um nome para a política, como myswppolicy.

  4. No campo Descrição, insira uma descrição para a política, como My new swp policy.

  5. Em Regiões, selecione a região em que você quer criar a política, como us-central1.

  6. Clique em Criar.

Cloud Shell

  1. Use seu editor de texto preferido para criar um arquivo policy.yaml.

  2. Adicione o seguinte ao arquivo policy.yaml que você criou:

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

    Substitua:

    • PROJECT_NAME: nome do seu projeto

    • REGION: região em que a política é criada, como us-central1

    • POLICY_NAME: nome da política

    • POLICY_DESCRIPTION: descrição da política

  3. Importe a política de segurança usando o gcloud network-security gateway-security-policies import comando:

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

Criar um proxy da Web

Console

  1. No Google Cloud console do, acesse a página Proxies da Web.

    Acessar proxies da Web

  2. Clique em Criar um proxy da Web seguro.

  3. No campo Nome, insira um nome para o proxy da Web, como myswp.

  4. No campo Descrição, insira uma descrição para o proxy da Web, como My new swp.

  5. Em Modo de roteamento, selecione uma das seguintes opções:

    • Explícito: implanta a instância do Secure Web Proxy no modo de proxy explícito.
    • Próximo salto: implanta a instância do Secure Web Proxy no modo de próximo salto.
  6. Em Regiões, selecione a região em que você quer criar o proxy da Web, como us-central1.

  7. Em Rede, selecione a rede em que você quer criar o proxy da Web.

  8. Em Sub-rede, selecione a sub-rede VPC que você criou durante a configuração inicial.

  9. Opcional: no campo Endereço IP do proxy da Web, insira o endereço IP do Secure Web Proxy.

    É possível inserir um endereço IP do intervalo de endereços IP do Secure Web Proxy que reside na sub-rede criada na etapa anterior. Se você não inserir o endereço IP, a instância do Secure Web Proxy vai escolher automaticamente um endereço IP da sub-rede selecionada.

  10. Em Certificado, selecione o certificado que você quer usar para criar o proxy da Web.

  11. Em Política, selecione a política que você criou para associar o proxy da Web.

  12. Clique em Criar.

Cloud Shell

  1. Use seu editor de texto preferido para criar um arquivo gateway.yaml.

  2. Adicione o seguinte ao arquivo 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
    routingMode: ROUTING_MODE
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    

    Substitua:

    • GATEWAY_NAME: nome dessa instância do Secure Web Proxy

    • GATEWAY_PORT_NUMBERS: lista de números de porta para esse gateway, como [80,443]

    • CERTIFICATE_URLS: lista de URLs de certificados SSL

    • SUBNETWORK: sub-rede VPC que você criou durante a configuração inicial

    • ROUTING_MODE: especifique o modo de roteamento do proxy da Web necessário:

      • EXPLICIT_ROUTING_MODE: implanta a instância do Secure Web Proxy no modo de proxy explícito
      • NEXT_HOP_ROUTING_MODE: implanta a instância do Secure Web Proxy no modo de próximo salto
    • GATEWAY_IP_ADDRESS: lista opcional de endereços IP para as instâncias do Secure Web Proxy nas sub-redes de proxy que você criou anteriormente nas etapas de configuração inicial

      Se você optar por não listar endereços IP, omita o campo para permitir que o proxy da Web escolha um endereço IP para você.

  3. Crie a instância do Secure Web Proxy usando o gcloud network-services gateways import comando:

    gcloud network-services gateways import GATEWAY_NAME \
        --source=gateway.yaml \
        --location=REGION
    

Testar a conectividade

Para testar a conectividade, use o comando curl de qualquer instância de máquina virtual (VM) na rede de nuvem privada virtual (VPC):

  curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure

Se tudo estiver funcionando corretamente, a instância do Secure Web Proxy vai retornar um código de status 403 Forbidden. Esse erro confirma o seguinte:

  • A instância do Secure Web Proxy foi implantada e está recebendo tráfego ativamente.

  • A política do Secure Web Proxy está aplicando corretamente a postura de segurança padrão de rejeitar todo o tráfego até que você defina regras allow específicas nas próximas seções.

Criar uma conta de serviço e conceder papéis do IAM

  1. Crie uma conta de serviço: use o gcloud iam service-accounts create comando para criar uma conta de serviço chamada my-swp-sa no seu Google Cloud projeto.

    gcloud iam service-accounts create my-swp-sa \
        --display-name="Secure Web Proxy service account" \
        --description="Service account for Secure Web Proxy instances"
  2. Conceda papéis do IAM à conta de serviço: use o gcloud projects add-iam-policy-binding comando para conceder os papéis do IAM necessários à conta de serviço para que ela possa gerenciar ou usar recursos no seu Google Cloud projeto.

    Por exemplo, para permitir que a conta de serviço use recursos de rede, conceda a ela o papel Usuário da rede do Compute (roles/compute.networkUser).

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:my-swp-sa@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/compute.networkUser"

    Substitua PROJECT_ID pelo ID do seu Google Cloud projeto.

Criar uma regra do Secure Web Proxy

Console

  1. No Google Cloud console do, acesse a página Políticas do SWP.

    Acessar políticas do SWP

  2. Clique no nome da política que você criou anteriormente, como myswppolicy.

  3. Clique em Adicionar regra.

  4. Para cada regra, faça o seguinte:

    1. No campo Prioridade, insira uma ordem de avaliação numérica para a regra. As regras são avaliadas da prioridade mais alta para a mais baixa, em que 0 é a mais alta.

    2. No campo Nome, insira um nome para a regra.

    3. No campo Descrição, insira uma descrição para a regra.

    4. Em Ação, selecione uma das seguintes opções:

      • Permitir: para permitir solicitações de conexão que correspondam à regra.
      • Negar: para negar solicitações de conexão que correspondam à regra.
    5. No campo Status, selecione uma das seguintes opções para a aplicação da regra:

      • Ativado: para aplicar a regra na instância do Secure Web Proxy.
      • Desativado: para não aplicar a regra na instância do Secure Web Proxy.
    6. Na seção Correspondência de sessão, especifique o endereço de e-mail da conta de serviço que você criou anteriormente. Exemplo:

        sessionMatcher: "source.matchServiceAccount(SERVICE_ACCOUNT) && host() == 'example.com'"
      

      Para mais informações sobre a sintaxe de SessionMatcher, consulte a referência da linguagem do matcher CEL.

    7. Na seção Correspondência de aplicativo, especifique os critérios para correspondência da solicitação.

    8. Clique em Adicionar regra.

  5. Para adicionar outra regra, clique em Adicionar regra.

Cloud Shell

  1. Use seu editor de texto preferido para criar o arquivo rule.yaml.

  2. Para permitir o acesso a um URL da conta de serviço apropriada, adicione o seguinte ao arquivo rule.yaml que você criou:

    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
    

    Substitua:

    • RULE_NAME: nome dessa regra
    • RULE_DESCRIPTION: descrição da regra
    • RULE_PRIORITY: prioridade dessa regra; um número menor corresponde a uma prioridade maior
    • CEL_EXPRESSION: uma expressão da Linguagem de expressão comum (CEL). Para mais informações, consulte a referência da linguagem do matcher CEL.

    Por exemplo, para permitir o acesso a example.com do recurso com a conta de serviço necessária, adicione o seguinte ao arquivo YAML que você criou para o sessionMatcher:

    ```yaml
    sessionMatcher: "source.matchServiceAccount('SERVICE_ACCOUNT') && host() == 'example.com'"
    ```
    

    Substitua SERVICE_ACCOUNT pela conta de serviço que você quer permitir. Esse precisa ser o endereço de e-mail da conta de serviço.

  3. Importe as regras que você criou usando o gcloud network-security gateway-security-policies rules import comando:

    gcloud network-security gateway-security-policies rules import RULE_NAME \
        --source=RULE_FILE.yaml \
        --location=REGION \
        --gateway-security-policy=POLICY_NAME
    

Testar a conectividade

É possível testar a conectividade novamente para validar se toda a configuração do Secure Web Proxy, incluindo a conta de serviço, as regras de política de segurança e o gateway, está funcionando conforme o esperado.

Para testar a conectividade, use o comando curl do recurso, como uma instância de VM, com o SERVICE_ACCOUNT anexado:

curl -x https://IPv4_ADDRESS:443 http://example.com 
--proxy-insecure

Substitua IPv4_ADDRESS pelo endereço IPv4 da instância do Secure Web Proxy.

Se tudo funcionar corretamente, você vai receber um código de status 200 OK. Esse código de status confirma os seguintes resultados principais:

  • Autorização bem-sucedida: prova que o tráfego originário do recurso é identificado corretamente pela conta de serviço atribuída e que essa identidade corresponde à regra allow que você adicionou à política de segurança.

  • Funcionalidade de ponta a ponta: valida se o tráfego está fluindo corretamente pelo caminho configurado, do recurso > para a instância do Secure Web Proxy > passando pela política de segurança > e chegando ao destino externo.

A seguir