Ativar o acesso baseado em certificado para VMs

Esta página descreve como ativar o acesso baseado em certificado (CBA) para suas VMs Google Cloud . É possível usar o CBA para proteger o acesso de dispositivos confiáveis a Google Cloud VMs.

Visão geral

O CBA para VMs usa o recurso de acesso baseado no contexto Google Cloud para proteger o acesso usando o TLS mútuo (mTLS). Confira a seguir os principais componentes com os quais você trabalha para ativar e usar o CBA para VMs:

  • Access Context Manager: permite criar níveis de acesso que exigem certificados ao determinar o acesso a aplicativos da Web.
  • Identity-Aware Proxy (IAP): o encaminhamento de TCP do IAP permite estabelecer um túnel criptografado para encaminhar SSH, RDP e outros tipos de tráfego para instâncias de VM. Além disso, uma política do IAP oferece controle refinado sobre quais usuários têm permissão para estabelecer túneis para instâncias de VM e quais condições de acesso os usuários precisam atender para usar esses túneis.
  • Política do Chrome Enterprise: oferece autenticação mútua (mTLS) entre usuários e VMs ao usar o navegador Chrome.
  • Google Cloud CLI: fornece autenticação mútua (mTLS) entre usuários e VMs ao usar a CLI gcloud.

Antes de começar

Verifique se você criou níveis de acesso de CBA para o projeto Google Cloud .

Conceder papéis para acessar VMs pelo encaminhamento de TCP do IAP

É necessário conceder os papéis apropriados do Identity and Access Management (IAM) em um projeto para que usuários ou grupos de usuários usem o encaminhamento TCP do IAP para acessar VMs.

A tabela a seguir mostra os papéis predefinidos que você precisa conceder a administradores confiáveis para encaminhamento TCP e tarefas relacionadas.

Tarefa Papéis Mais informações
Encaminhamento do TCP Usuário do túnel protegido pelo IAP (roles/iap.tunnelResourceAccessor) Conceder acesso a todas as instâncias de VM em um projeto ou Conceder acesso a uma VM específica
Acesso SSH Administrador de instâncias do Compute (v1) (roles/compute.instanceAdmin.v1)
Login do SO (recomendado) Vários Como configurar papéis do Login do SO em contas de usuário
Usar uma conta de serviço Usuário da conta de serviço (roles/iam.serviceAccountUser) O papel serviceAccountUser

Para mais informações sobre como conceder papéis para o encaminhamento TCP do IAP, consulte Conceder papéis para o encaminhamento TCP do IAP.

Configurar o acesso baseado em certificado a uma VM

Embora o IAP-TCP permita conceder acesso a todas as instâncias de VM em um projeto, é necessário configurar o acesso baseado em certificado para cada instância de VM.

Para conceder a um usuário ou grupo de usuários o acesso baseado em certificado a uma VM, conceda o papel roles/iap.tunnelResourceAccessor na instância da VM. As outras funções podem ser concedidas no projeto.

Console

  1. Abra a página de administração do IAP e selecione a guia Recursos SSH e TCP.

    Acessar a página do IAP

  2. Selecione as instâncias da VM que você quer configurar. Clique em Mostrar painel de informações se ele não estiver visível.

  3. Clique em Adicionar principal e configure o seguinte:

    • Novos principais: especifique o usuário ou grupo de usuários a que você quer conceder acesso.
    • Selecione uma função: selecione Cloud IAP > Usuário de túnel protegido por IAP.
  4. Clique em Adicionar condição do IAM e configure uma condição:

    • Título: digite um nome para a condição.
    • Criador de condições: selecione Nível de acesso no menu suspenso Tipo de condição e selecione o nível de acesso baseado em certificado criado anteriormente.
  5. Clique em Salvar.

API

Para configurar o acesso baseado em certificado a uma VM, modifique o arquivo policy.json do aplicativo.

Consulte Como gerenciar o acesso a recursos protegidos pelo IAP para mais informações sobre como usar a API IAM para gerenciar políticas de acesso.

  1. Exporte as seguintes variáveis.

    export IAP_BASE_URL=https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_tunnel
    # Replace POLICY_FILE.JSON with the name of JSON file to use for setIamPolicy
    export JSON_NEW_POLICY=POLICY_FILE.JSON
    
  2. Consiga a política do IAM para a instância do Compute Engine usando o método getIamPolicy. O bit de dados vazio no final transforma a solicitação do curl em POST em vez de GET.

    curl -i -H "Authorization: Bearer $(gcloud auth print-access-token)" \
         ${IAP_BASE_URL}/zones/ZONE_NAME/instances/INSTANCE_ID or INSTANCE_NAME:getIamPolicy \
         -d ''
    
  3. Conceda o papel iap.tunnelResourceAccessor e o acesso baseado em certificado aos seus principais modificando o arquivo JSON da política do IAM.

    Confira a seguir um exemplo de um arquivo policy.json que concede o papel iap.tunnelResourceAccessor a um grupo de administradores da instância de VM, dando a eles acesso baseado em certificado a recursos de túnel protegidos pelo IAP.

    Se um principal tiver o papel de proprietário, ele terá permissão para usar o IAP para encaminhamento de TCP.

    {
      "policy": {
        "bindings": [
          {
            "role": "roles/iap.tunnelResourceAccessor",
            "members": ["group:instance-admins@example.com"],
            "condition": {
              "expression": "\"accessPolicies/POLICY_NAME/accessLevels/CERTIFICATE_BASED_ACCESS_LEVEL_NAME\" in request.auth.access_levels,
              "title": "CERTIFICATE_BASED_CONDITION_NAME"
            }
          }
        ]
      }
    }
    

    Para encontrar um nome de política, chame o método accessPolicies.list.

    GET https://accesscontextmanager.googleapis.com/v1/accessPolicies
    
  4. Defina seu novo arquivo policy.json usando o método setIamPolicy.

    curl -i -H "Content-Type:application/json" \
              -H "Authorization: Bearer $(gcloud auth print-access-token)" \
              ${IAP_BASE_URL}/zones/ZONE_NAME/instances/INSTANCE_ID or INSTANCE_NAME:setIamPolicy \
              -d @${JSON_NEW_POLICY}
    

Acessar VMs usando certificados de cliente

Para acessar VMs usando certificados de cliente, use um dos seguintes métodos.

Usar certificados de cliente no navegador Chrome para acessar VMs

  1. Configure o navegador Chrome usando uma das seguintes opções.
  2. No navegador Chrome, insira o seguinte domínio para acessar o console do Google Cloud: console-secure.cloud.google.com.
  3. Acesse Google Cloud VMs usando o encapsulamento do IAP.

Usar certificados de cliente na gcloud CLI para acessar VMs

  1. Configure a CLI gcloud usando um dos métodos a seguir.

  2. Acesse Google Cloud VMs usando o encapsulamento do IAP.