Criar níveis de acesso com base no dispositivo

Este documento mostra como os administradores podem criar níveis de acesso com base em atributos do dispositivo (níveis de acesso baseados em dispositivos) usando o Access Context Manager.

Um nível de acesso é um conjunto de atributos usados para permitir o acesso a recursos com base nas informações contextuais sobre a solicitação. Como administrador, você pode criar níveis de acesso básico ou personalizados usando os atributos do dispositivo coletados pela Verificação de endpoints.

Antes de começar

Criar um nível de acesso

Console

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

    Acessar o Access Context Manager

  2. Se solicitado, selecione sua organização.

  3. Na página do Access Context Manager, clique em Criar nível de acesso.

  4. No painel Novo nível de acesso, crie um nível de acesso básico ou personalizado. Para ver instruções, abra a seção necessária.

    Criar um nível de acesso básico

    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 Criar condições em, Selecione Modo básico.

      .
    3. Na seção Condições, selecione os atributos do dispositivo:
      1. Clique em . Device Policy.
      2. Selecione os atributos obrigatórios.

        Por exemplo, se você quiser aplicar a aprovação do administrador nos dispositivos, Selecione Exigir aprovação do administrador.

    4. Clique em Salvar.

    O nível de acesso recém-criado é exibido Access Context Manager.

    Criar um nível de acesso personalizado

    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 Criar condições em, Selecione Modo avançado.
    3. Na seção Condições, insira as expressões para seu nível de acesso personalizado. A condição precisa ser resolvida como um único valor booleano.

      Para encontrar os atributos de dispositivo disponíveis para sua expressão CEL, consulte os atributos do dispositivo coletados pela Verificação de endpoints.

      A expressão CEL a seguir permite o acesso apenas de dispositivos criptografados:

      device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

      Para exemplos e mais informações sobre a Common Expression Language (CEL) e níveis de acesso personalizados, consulte a Especificação do nível de acesso personalizado.

    4. Clique em Salvar.

    O nível de acesso recém-criado é exibido Access Context Manager.

CLI da gcloud

Para criar níveis de acesso, use o método gcloud access-context-manager level create.

  1. Crie um arquivo .yaml.

    • Para um nível de acesso básico, especifique atributos de política do dispositivo para o de nível de acesso.

      Exemplo: para limitar o acesso apenas a usuários com armazenamento criptografado do dispositivo, digite o seguinte no arquivo .yaml.

        - devicePolicy:
            allowedEncryptionStatuses
              - ENCRYPTED
      
    • Para um nível de acesso personalizado, especifique uma expressão CEL formatada como um único par de chave-valor: expression: "CEL_EXPRESSION"

      Exemplo: para limitar o acesso apenas aos usuários com armazenamento criptografado e com o status de dispositivo aprovado, insira o seguinte no arquivo .yaml.

      expression: "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && device.is_admin_approved_device"
      

    Para ver uma lista de atributos de nível de acesso da política do dispositivo e seu formato YAML, consulte Atributos da política do dispositivo. Para um arquivo YAML abrangente de todos os atributos possíveis, consulte este exemplo de arquivo YAML de nível de acesso.

    Para encontrar os atributos de dispositivo disponíveis nas especificações personalizadas, consulte Atributos do dispositivo coletados pela verificação de endpoints.

  2. Crie o nível de acesso.

    • Para um nível de acesso básico, execute o seguinte comando:

      gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
      --title=TITLE \
      --basic-level-spec=FILE_NAME.yaml\
      --policy=POLICY_NAME
    • Para um nível de acesso personalizado, execute o seguinte comando:

      gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
      --title=TITLE \
      --custom-level-spec=FILE_NAME.yaml\
      --policy=POLICY_NAME

    Em que:

    • ACCESS_LEVEL_NAME é o nome exclusivo do nível de acesso. Ele precisa ter o seguinte formato: accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.

    • LEVEL_ID é um nome para o nível de acesso. O nome precisa ter no máximo 50 caracteres, começar com uma letra e pode conter apenas números, letras e sublinhados.

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

    • FILE_NAME é o nome do arquivo .yaml. Para um nível de acesso básico, ele contém atributos de política do dispositivo. Para um modelo nível de acesso, ele contém uma expressão CEL formatada como um par de chave-valor único: "expression: "CEL_EXPRESSION".

    • POLICY_NAME é o nome da política de acesso da organização.

    Você verá uma saída semelhante a esta:

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

API

Crie um nível de acesso usando o método accessPolicies.accessLevels.create.

Criar um nível de acesso básico

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • POLICY_ID: o ID da política de acesso da sua organização.
  • LEVEL_ID: um nome para o nível de acesso. O nome precisa ter no máximo 50 caracteres, começar com uma letra e pode conter apenas números, letras e sublinhados.
  • ACCESS_LEVEL_NAME: o nome exclusivo do nível de acesso. Ele precisa ter os seguintes formato: accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.
  • TITLE: um título legível por humanos. Ele precisa ser exclusivo para a política.
  • DESCRIPTION: uma descrição do nível de acesso e o uso dele.
  • CONDITION: uma lista de requisitos para o nível de acesso a ser concedido.

Método HTTP e URL:

POST https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels

Corpo JSON da solicitação:


For basic access levels:

{
"name": ACCESS_LEVEL_NAME,
"title": TITLE,
  "description": DESCRIPTION,


  "basic": {
  "conditions": [
    {
    CONDITION
    }
   ],
  }
 },
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:


{
  "name": "operations/accessPolicies/84961948973/accessLevels/deviceEncrypted/create/1666896068847514",
  "metadata": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessContextManagerOperationMetadata"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessLevel",
    "name": "accessPolicies/84961948973/accessLevels/deviceEncrypted",
    "title": "accessPolicies/84961948973/accessLevels/deviceEncrypted",
    "basic": {
      "conditions": [
        {
          "devicePolicy": {
            "allowedEncryptionStatuses": [
              "ENCRYPTED"
            ]
          }
        }
      ]
    }
  }
}

Criar um nível de acesso personalizado

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • POLICY_ID: o ID da política de acesso da sua organização.
  • LEVEL_ID: um nome para o nível de acesso. O nome precisa ter no máximo 50 caracteres, começar com uma letra e pode conter apenas números, letras e sublinhados.
  • ACCESS_LEVEL_NAME: o nome exclusivo do nível de acesso. Ele precisa ter os seguintes formato: accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.
  • TITLE: um título legível por humanos. Ele precisa ser exclusivo para a política.
  • DESCRIPTION: uma descrição do nível de acesso e do uso dele.
  • CEL_EXPRESSION: uma expressão CEL avaliada como um booleano.

Método HTTP e URL:

POST https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels

Corpo JSON da solicitação:


{
"name": ACCESS_LEVEL_NAME,
"title": TITLE,
  "description": DESCRIPTION,

  "custom": {
   "conditions": [
     {
      "expr": {
     CEL_EXPRESSION
     }
    }
   ]
  }
 },
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:



{
  "name": "operations/accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelName/create/1666936427127701",
  "metadata": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessContextManagerOperationMetadata"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessLevel",
    "name": "accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelName",
    "title": "accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelTitle",
    "custom": {
      "expr": {
        "expression": "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED"
      }
    }
  }
}

Para mais informações sobre como criar níveis de acesso com várias condições e as dependências de nível de acesso, consulte Criar um nível de acesso básico.

A seguir