Criar níveis de acesso com base no dispositivo

Neste documento, mostramos como os administradores podem criar níveis de acesso com base nos atributos do dispositivo (níveis de acesso com base 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ásico ou personalizado 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 do Access Context Manager.

    Acessar o Access Context Manager

  2. Se for solicitado, selecione a 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 só pode conter 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 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 só pode conter 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 com 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 o suporte à Common Expression Language (CEL) e os 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 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 atributos de política do dispositivo para o 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 par de chave-valor único: expression: "CEL_EXPRESSION"

      Exemplo: para limitar o acesso apenas a usuários com armazenamento criptografado do dispositivo e com o status de dispositivo aprovado, 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 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 nível de acesso personalizado, 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, 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 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, 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 para a política.
  • DESCRIPTION: uma descrição do nível de acesso e o uso dele.
  • CEL_EXPRESSION: uma expressão CEL 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