Definir políticas de acesso usando níveis de acesso

Nesta página, explicamos como definir políticas de acesso com base no contexto usando níveis de acesso.

Um nível de acesso é um conjunto de atributos ligados a solicitações com base em na origem delas. Usando informações como tipo de dispositivo, endereço IP e identidade do usuário, é possível designar o nível de acesso a ser concedido. Por exemplo, atribua um nível High_Trust às conexões da rede corporativa e um nível Medium_Trust a dispositivos externos que executam sistemas operacionais aprovados.

Uma política de acesso é um contêiner para todos os seus recursos do Access Context Manager, como níveis de acesso e perímetros de serviço.

Para mais informações sobre os níveis e as políticas de acesso, consulte a Visão geral do Access Context Manager.

Antes de começar

Ao definir um nível de acesso, as seguintes limitações se aplicam:

  • Não é possível usar um endereço IP como um atributo para conexões do Docker nem usar endereços IP particulares ao se conectar a clusters particulares usando kubectl ou uma instância gerenciada do Looker.
  • O Looker Studio sempre tem acesso irrestrito às APIs do Google Cloud , independentemente das políticas do Access Context Manager.
  • Os atributos do dispositivo não estão disponíveis para aplicativos clientes OAuth que não são do Google.

Definir a política usando os níveis de acesso

Console

Crie um nível de acesso básico:

  1. No console do Google Cloud , abra a página Access Context Manager.

    Acessar a página do Access Context Manager

  2. Se for solicitado, selecione um projeto.

  3. Na página Access Context Manager, clique em Novo.

  4. No painel Novo nível de acesso, faça o seguinte:

    1. Na caixa Título do nível de acesso, digite um título para o nível de acesso. O título precisa ter no máximo 50 caracteres, começar com uma letra e pode conter apenas números, letras, sublinhados e espaços.

    2. Na seção Condições, clique no botão Adicionar do tipo de atributo que você quer adicionar e informe os valores que serão aplicados a esse atributo.

      Para uma lista completa dos atributos que podem ser adicionados, consulte atributos de nível de acesso.

      Por exemplo, se quiser que o nível de acesso leve em consideração a origem de uma solicitação que vem de dentro da rede, selecione o atributo Sub-redes de IP.

      Repita esse passo para adicionar vários atributos à mesma condição. Quando uma condição tiver vários atributos, todos eles precisarão ser atendidos pela solicitação de acesso.

      Uma condição de nível de acesso pode incluir um atributo de cada tipo. Alguns atributos incluem outras opções, como o atributo da Política do dispositivo.

      Os níveis de acesso aceitam condições com base na identidade do usuário. No entanto, para adicionar identidades a uma condição, é necessário criar ou atualizar o nível de acesso usando a CLI gcloud ou a API.

    3. Use a opção Quando a condição for atendida, retornar para especificar se você quer que a condição exija que uma solicitação atenda a todos os atributos especificados (VERDADEIRO) ou se a solicitação precisa atender a qualquer critério, menos a esses atributos (FALSO).

      Por exemplo, se quiser negar solicitações de um determinado intervalo de endereços IP da rede, especifique-o usando o atributo Sub-redes de IP e defina a condição como FALSO.

    4. Outra opção é Adicionar outra condição ao nível de acesso e repetir as duas etapas anteriores. Basta clicar nessa opção.

      Por exemplo, para negar acesso a um subconjunto de endereços IP dentro de um intervalo de endereços IP mais amplo, crie uma nova condição, especifique o intervalo do subconjunto de endereços IP para o atributo Sub-rede de IP e defina a condição para retornar FALSO.

      Repita esse passo para adicionar várias condições ao mesmo nível de acesso.

    5. Se você criou mais de uma condição, use Combinar condição com para especificar se o nível de acesso precisa exigir que uma solicitação atenda a pelo menos uma das condições (OR) ou a todas (AND).

    6. Clique em Salvar.

gcloud

Se você não tiver uma política de acesso para sua organização, crie uma antes de continuar.

Use o comando gcloud access-context-manager levels create para criar um nível de acesso:

gcloud access-context-manager levels create LEVEL_NAME OPTIONS \
    --policy=POLICY

Substitua:

  • LEVEL_NAME: o nome exclusivo do nível de acesso. Ele precisa começar com uma letra e incluir apenas letras, números e sublinhados; O nome pode ter no máximo 50 caracteres.

  • OPTIONS: as opções necessárias da tabela a seguir.

    Opções
    basic-level-spec

    Um arquivo YAML que especifica uma ou mais condições para o nível de acesso.

    title

    Um título curto para o nível de acesso. O título do nível de acesso é exibido no console do Google Cloud .

    combine-function

    (Opcional) Determina como as condições são combinadas.

    Valores válidos: AND, OR

    description

    (Opcional) Uma descrição detalhada do nível de acesso.

  • POLICY: o ID da política de acesso da sua organização. Se você tiver uma política padrão definida, esse parâmetro será opcional.

Se quiser, inclua qualquer uma das flags da gcloud.

Arquivo YAML de especificação de nível básico

Ao usar a CLI gcloud para criar um nível de acesso, é necessário fornecer um arquivo YAML para a opção basic-level-spec. O arquivo YAML define uma ou mais condições para o nível de acesso. As condições precisam conter pelo menos um atributo. Quando uma condição contém mais de um atributo, eles são combinados como uma operação AND (todos precisam ser verdadeiros) ou como uma operação NAND (nenhum pode ser verdadeiro), dependendo se o atributo negate está incluído na condição.

Para uma lista completa dos atributos que podem ser incluídos no arquivo YAML, consulte atributos de nível de acesso.

Para mais informações sobre níveis de acesso e YAML, consulte o exemplo YAML para um nível de acesso.

Exemplo de comando

gcloud access-context-manager levels create Device_Trust \
    --basic-level-spec=corpdevspec.yaml \
    --combine-function=AND \
    --description='Access level that conforms to corporate spec.' \
    --title='Device_Trust Extended' \
    --policy=1521580097614100

API

Se você não tiver uma política de acesso para sua organização, crie uma antes de continuar.

Para criar um nível de acesso, ligue para accessLevels.create.

POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels

POLICY é o ID da política de acesso da organização.

Corpo da solicitação

O corpo da solicitação precisa incluir um recurso AccessLevel que especifique as condições que você quer para o novo nível de acesso. Cada Condition tem um ou mais atributos que são avaliados como uma operação AND (todos precisam ser verdadeiros) ou como uma operação NAND (nenhum pode ser verdadeiro), dependendo se o campo negate está definido como true. A avaliação resultante determina se a condição é atendida ou não.

Corpo da resposta

Se bem-sucedido, o corpo da resposta da chamada conterá um recurso Operation que fornece detalhes sobre a operação POST.

Configurações de políticas comuns

Os exemplos a seguir abordam algumas maneiras práticas que sua organização pode usar para implementar os níveis de acesso. Os exemplos pressupõem que sua organização já tenha uma política de acesso.

Limitar o acesso em uma rede corporativa

Neste exemplo, você verá como criar uma condição de nível de acesso que permita o acesso apenas de um intervalo especificado de endereços IP (por exemplo, aqueles dentro de uma rede corporativa).

Ao restringir o intervalo de endereços IP que recebem acesso, é possível dificultar a extração de dados para um invasor que esteja dentro ou fora da organização.

Neste exemplo, suponha que você queira criar um nível de acesso que permita que um grupo de auditores internos acesse o serviço de Cloud Logging para um projeto chamado dados confidenciais. Todos os dispositivos para eles recebem IPs em uma sub-rede que varia entre 203.0.113.0 e 203.0.113.127. Você sabe que não haverá dispositivos designados para essa sub-rede além daqueles usados pelos auditores.

Se você quiser usar um intervalo de endereços IP particular (por exemplo, 192.168.0.0/16 ou 172.16.0.0/12), consulte Permitir o acesso a recursos protegidos de um endereço IP interno para mais informações e um exemplo de implementação usando o VPC Service Controls.

Console

  1. No console do Google Cloud , abra o Access Context Manager.

    Acessar a página do Access Context Manager

  2. Se for solicitado, selecione "Projeto".

  3. Na parte de cima da página Chrome Enterprise Premium, clique em Novo.

  4. No painel Novo nível de acesso, na seção Condições, clique em Adicionar atributo e, em seguida, clique em Sub-redes de IP.

  5. Na caixa Sub-redes de IP, selecione IP público ou IP particular.

    • Se você selecionar IP público, insira um ou mais intervalos IPv4 ou IPv6 formatados como blocos CIDR.

      Neste exemplo, para limitar o acesso apenas aos auditores, insira 203.0.113.0/25 na caixa Sub-redes de IP.

    • Se você selecionar IP particular, clique em Selecionar redes VPC. É possível especificar redes VPC usando uma das três opções disponíveis na lista Import options.

      • Opção 1:

        1. Selecione Procurar redes VPC na sua organização e selecione as redes VPC.

        2. Clique em Adicionar as redes VPC selecionadas.

        3. Clique em Selecionar sub-redes de IP e selecione as sub-redes.

        4. Clique em Adicionar sub-redes IP.

      • Opção 2:

        1. Selecione Inserir manualmente o endereço da rede VPC e insira uma ou mais redes VPC.

        2. Clique em Adicionar rede VPC.

        3. Clique em Selecionar sub-redes de IP e selecione as sub-redes.

        4. Clique em Adicionar sub-redes IP.

      • Opção 3:

        1. Selecione Fazer upload do arquivo CSV (substitui as redes atuais).

          Se você usar um arquivo CSV para adicionar redes e sub-redes da VPC a um nível de acesso, o Access Context Manager vai substituir as redes e sub-redes da VPC selecionadas anteriormente.

        2. Clique em Procurar e faça o upload do arquivo CSV. No arquivo CSV, é necessário especificar as redes e sub-redes VPC no seguinte formato:

          VPC_NETWORK_NAME_1       | IP_RANGE_1       | IP_RANGE_2       | ...
          VPC_NETWORK_NAME_2       | .                | .                | ...
          .                        | .                | .                | ...
          .                        | .                | .                | ...
          
        3. Clique em Importar redes.

          Usando o arquivo CSV, o Access Context Manager preenche os nomes da rede VPC e as informações de sub-rede nas caixas Endereço da rede VPC e Sub-redes IP, respectivamente.

      Para informações sobre o nome da rede VPC e o formato de endereço IP privado, consulte Usar endereço IP interno em níveis de acesso.

  6. Clique em Salvar.

gcloud

  1. Crie um arquivo YAML para um nível de acesso que inclua um ou mais intervalos IPv4 ou IPv6 formatados como blocos CIDR.

    Neste exemplo, para limitar o acesso apenas aos auditores, insira o seguinte no arquivo YAML:

    - ipSubnetworks:
      - 203.0.113.0/25
    

    Se você quiser usar um endereço IP privado, insira as seguintes informações no arquivo YAML:

    - vpcNetworkSources:
      - vpcSubnetwork:
          network: VPC_NETWORK_NAME
          vpcIpSubnetworks:
          - IP_RANGE
    

    Substitua VPC_NETWORK_NAME e IP_RANGE pelos valores descritos na seção Usar endereço IP interno em níveis de acesso.

  2. Salve o arquivo. Neste exemplo, o arquivo é chamado CONDITIONS.yaml.

  3. Crie o nível de acesso.

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY

    Substitua:

    • NAME: o nome exclusivo do nível de acesso. Ele precisa começar com uma letra e incluir apenas letras, números e sublinhados;

    • TITLE: um título legível para humanos. Ele precisa ser exclusivo para a política.

    • POLICY: o ID da política de acesso da organização. Se você tiver uma política padrão definida, esse parâmetro será opcional.

    A resposta será semelhante a esta:

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

  1. Crie um corpo de solicitação para criar um recurso AccessLevel que inclua um ou mais intervalos IPv4 ou IPv6 formatados como blocos CIDR.

    Neste exemplo, para limitar o acesso apenas aos auditores, insira o seguinte no corpo da solicitação:

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "ipSubnetworks": [
             "203.0.113.0/25"
           ]
         }
       ]
     }
    }

    Substitua:

    • NAME: o nome exclusivo do nível de acesso. Ele precisa começar com uma letra e incluir apenas letras, números e sublinhados;

    • TITLE: um título legível. Ele precisa ser exclusivo para a política.

    Se você quiser usar um endereço IP particular, insira as seguintes informações no corpo da solicitação:

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "vpcNetworkSources": [
            {
              "vpcSubnetwork": {
                "network": VPC_NETWORK_NAME,
                "vpcIpSubnetworks": [
                  IP_RANGE
                ]
              }
            }
           ]
         }
       ]
     }
    }

    Substitua VPC_NETWORK_NAME e IP_RANGE pelos valores descritos na seção Usar endereço IP interno em níveis de acesso.

  2. Crie o nível de acesso chamando accessLevels.create.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY é o ID da política de acesso da organização.

Depois de criar o nível de acesso, é necessário aplicá-lo usando uma vinculação de acesso para que ele seja aplicado.

Limitar o acesso por atributos de dispositivo

Neste exemplo, você verá como criar um nível de acesso que concede acesso somente a dispositivos que atendem a um conjunto de requisitos especificado, como uma determinada versão do sistema operacional (SO).

As informações sobre dispositivos são fornecidas ao Chrome Enterprise Premium usando a Verificação de endpoint. Os seguintes critérios podem ser verificados ao determinar se o acesso será concedido:

  • O bloqueio de tela está ativado.
  • A criptografia de armazenamento está ativada.
  • O dispositivo está executando um tipo de sistema operacional e uma versão especificados.

Para este exemplo, suponha que sua organização use apenas máquinas que tenham o ChromeOS ou o Windows instalado. Para adicionar uma camada de segurança, crie um nível de acesso que impeça o acesso de qualquer pessoa que use outros sistemas operacionais. Além disso, para gerenciar riscos, tenha certeza de que apenas determinadas versões dos sistemas operacionais possam ter acesso.

Console

  1. No console do Google Cloud , abra a página do Access Context Manager.

    Acessar a página do Access Context Manager

  2. Se for solicitado, selecione um projeto.

  3. Na parte de cima da página Chrome Enterprise Premium, clique em Novo.

  4. No painel Novo nível de acesso, na seção Condições, clique em Adicionar atributo e, em seguida, clique em Política do dispositivo.

  5. Adicione os atributos da política do dispositivo:

    1. Clique em Adicionar Política do SO e em Política do Chrome OS.

    2. Na caixa Versão mínima, insira a versão mínima do ChromeOS que você quer permitir.

    3. Repita as etapas 1 e 2 para a Política do SO Windows.

  6. Clique em Salvar.

gcloud

  1. Crie um arquivo YAML para um nível de acesso que inclua uma política do dispositivo com restrições de SO.

    Neste exemplo, para permitir apenas dispositivos com uma versão mínima aceitável do ChromeOS e do Windows, insira o seguinte no arquivo YAML:

    - devicePolicy:
        osConstraints:
          - osType: DESKTOP_CHROME_OS
            minimumVersion: 11316.165.0
          - osType: DESKTOP_WINDOWS
            minimumVersion: 10.0.1809
    
  2. Salve o arquivo. Neste exemplo, o arquivo é chamado CONDITIONS.yaml.

  3. Crie o nível de acesso.

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY

    Substitua:

    • NAME: o nome exclusivo do nível de acesso. Ele precisa começar com uma letra e incluir apenas letras, números e sublinhados;

    • TITLE: um título legível para humanos. Ele precisa ser exclusivo para a política.

    • POLICY: o ID da política de acesso da organização. Se você tiver uma política padrão definida, esse parâmetro será opcional.

    A resposta será semelhante a esta:

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

  1. Crie um corpo de solicitação para criar um recurso AccessLevel que inclua uma política de dispositivo com restrições de SO.

    Neste exemplo, para permitir apenas dispositivos com uma versão mínima aceitável do ChromeOS e do Windows, insira o seguinte no corpo da solicitação:

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "devicePolicy": {
             "osConstraints": [
               {
                 "osType": "DESKTOP_CHROME_OS",
                 "minimumVersion": "11316.165.0"
               },
               {
                 "osType": "DESKTOP_WINDOWS",
                 "minimumVersion": "10.0.1809"
               }
             ]
           {
         }
       ]
     }
    }

    Substitua:

    • NAME: o nome exclusivo do nível de acesso. Ele precisa começar com uma letra e incluir apenas letras, números e sublinhados;

    • TITLE: um título legível para humanos. Ele precisa ser exclusivo para a política.

  2. Crie o nível de acesso chamando accessLevels.create.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY é o ID da política de acesso da organização.

Depois de criar o nível de acesso, é necessário aplicá-lo usando uma vinculação de acesso para que ele seja aplicado.

Limitar o acesso a dispositivos corporativos confiáveis com certificados válidos

É possível usar o acesso baseado em certificado (CBA) para exigir certificados X.509 verificados para acesso aos recursos do Google Cloud. A credencial extra fornece um sinal mais forte da identidade do dispositivo e ajuda a proteger sua organização contra roubo de credenciais ou perda acidental, exigindo que as credenciais do usuário e o certificado do dispositivo original estejam presentes antes de conceder acesso.

Antes de continuar, verifique se a extensão do Chrome e o app auxiliar da Verificação de endpoints estão implantados em todos os dispositivos que precisam de acesso aos recursos doGoogle Cloud . Eles se tornam dispositivos confiáveis aos quais você pode conceder acesso. Consulte Implantar a verificação de endpoint para usar com o acesso baseado em certificado para mais detalhes.

Para criar uma política que exija acesso baseado em certificado, você precisa ter um nível de acesso com uma especificação de nível de acesso personalizada.

Console

  1. No console do Google Cloud , abra a página Access Context Manager.

    Acessar a página do Access Context Manager

  2. Se for solicitado, selecione um projeto.

  3. Clique em Criar nível de acesso.

  4. No painel Novo nível de acesso, selecione Modo avançado. É necessário ter uma licença do Chrome Enterprise Premium para usar esse modo.

  5. Na seção Condições, insira a seguinte expressão na caixa Expressão CEL.

    certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
    
  6. Clique em Salvar.

gcloud

  1. Crie um arquivo YAML para um nível de acesso que inclua a aplicação de certificados.

    expression: "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE"
    
  2. Salve o arquivo. Neste exemplo, o arquivo é chamado CONDITIONS.yaml.

  3. Crie o nível de acesso.

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY

Substitua:

  • NAME: o nome exclusivo do nível de acesso. O nome precisa começar com uma letra e incluir apenas letras, números e sublinhados.

  • TITLE: um título legível. Ele precisa ser exclusivo para a política.

  • POLICY: o ID da política de acesso da sua organização. Se você tiver uma política padrão definida, esse parâmetro será opcional.

A resposta será semelhante a esta:

Create request issued for: NAME
Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1234] to complete...done.
Created level NAME.

API

  1. Crie um arquivo de corpo de solicitação para um nível de acesso que inclua uma política do dispositivo com restrições de SO.

    {
     "name": "require_certificate",
     "title": "Certificate-Based Access",
     "description": "An example certificate-based access level.",
     "custom": {
       "expr": {
         "expression": "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE",
         "title": "Require a valid certificate",
         "description": "Permits requests from a device with a valid mTLS certificate."
        }
      }
    }
  2. Crie o nível de acesso chamando accessLevels.create.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY é o ID da política de acesso da organização.

Depois de criar o nível de acesso, é necessário aplicá-lo usando uma vinculação de acesso para que ele seja aplicado.