Criar níveis de acesso baseados no dispositivo

Neste documento, mostramos como os administradores podem criar níveis de acesso com base nos atributos do dispositivo (níveis de acesso baseados no dispositivo) usando o Access Context Manager.

Um nível de acesso é um conjunto de atributos usados para permitir o acesso a recursos com base em informações contextuais sobre a solicitação. Como administrador, você pode criar níveis de acesso básicos ou personalizados usando os atributos de 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 do 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 conferir as 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, insira 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 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 Conditions, selecione os atributos do dispositivo:
      1. Clique em Device Policy.
      2. Selecione os atributos necessários.

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

    4. Clique em Save.

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

    Criar um nível de acesso personalizado

    1. Na caixa Título do nível de acesso, insira 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 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 para um único valor booleano.

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

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

      device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

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

    4. Clique em Save.

    O nível de acesso recém-criado é exibido na página 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 os atributos de política do dispositivo para o nível de acesso.

      Exemplo: para limitar o acesso apenas a usuários com armazenamento criptografado no 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 a usuários com armazenamento criptografado do dispositivo e com o status aprovado do dispositivo, digite 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 ver um arquivo YAML abrangente com todos os atributos possíveis, consulte este exemplo de arquivo YAML de nível de acesso.

    Para encontrar os atributos de dispositivo disponíveis para 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 só pode conter 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 nível de acesso personalizado, ele contém uma expressão CEL formatada como um único par de chave-valor: `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, 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 só pode conter números, letras e sublinhados.
  • ACCESS_LEVEL_NAME: o nome exclusivo do nível de acesso. Ele precisa ter o seguinte formato: accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.
  • TITLE: um título legível. Ele precisa ser exclusivo da 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 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, 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 só pode conter números, letras e sublinhados.
  • ACCESS_LEVEL_NAME: o nome exclusivo do nível de acesso. Ele precisa ter o seguinte formato: accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.
  • TITLE: um título legível. Ele precisa ser exclusivo da política.
  • DESCRIPTION: uma descrição do nível de acesso e o uso dele.
  • CEL_EXPRESSION: uma expressão CEL que pode ser avaliada como booleana.

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 dependências de nível de acesso, consulte Criar um nível de acesso básico.

A seguir