Configure o acesso granular nas VMs


No Compute Engine, é possível usar o Login do SO para conceder aos usuários acesso a VMs e restringir os usuários com acesso a sudo. Se você quiser controlar quais usuários podem visualizar ou executar arquivos e executáveis específicos em VMs, use as políticas do SO para implantar políticas que automatizam e centralizam o gerenciamento de arquivos na frota de VMs.

Neste tutorial, mostramos como conceder acesso de visualização ao arquivo auth.log (/var/log/auth.log) em várias VMs para um grupo de usuários que não têm acesso de sudo que usam as políticas e grupos de login do SO.

Na maioria das configurações padrão, as permissões do arquivo auth.log são definidas como 640, e o arquivo pertence ao grupo adm. Um usuário que não tenha o papel do IAM roles/compute.osAdminLogin não está no grupo adm, não tem acesso no sudo e, portanto, não tem acesso de leitura ao o arquivo.

Este tutorial se concentra no gerenciamento de permissões do usuário em um arquivo específico, mas o fluxo de trabalho pode ser modificado e usado para definir permissões em outros arquivos ou executáveis em uma VM.

Objetivos

Neste tutorial, você aprenderá o seguinte:

  • Como criar um grupo do Linux de Login do SO
  • Como usar uma atribuição de política de SO para alterar as permissões de grupo de um arquivo em várias VMs de uma só vez

Custos

Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.

Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Antes de começar

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Instale ou atualize para a versão mais recente da Google Cloud CLI.
  4. Certifique-se de que você é um administrador dos grupos do Cloud Identity para sua organização. Se você não for um administrador do Grupos, peça para o administrador do Grupos da sua organização criar um grupo do Linux de Login do SO para você.
  5. Ativar VM Manager

Preparar o ambiente

Antes de conceder acesso ao arquivo auth.log, você precisa criar algumas VMs.

Crie três VMs usando o comando gcloud compute instances bulk create:

gcloud compute instances bulk create \
    --name-pattern=tutorial-# \
    --zone=us-west1-a \
    --count=3 \
    --labels=vm=tutorial \
    --metadata=enable-oslogin=TRUE

Você verá uma mensagem semelhante a esta:

`Bulk create request finished with status message: [VM instances created: 3, failed: 0.]`

Definir as permissões de grupo para o arquivo auth.log

Para conceder a um usuário acesso de leitura ao arquivo auth.log sem conceder a ele o papel do IAM roles/compute.osAdminLogin, altere o grupo que possui o arquivo para um grupo do Linux do qual o usuário é membro.

Criar um grupo do Linux de Login do SO

É possível criar um grupo do Linux de login do SO para adicionar um grupo complementar do Linux que aparece em cada VM com o login do SO ativado. Ao criar um grupo do Linux de Login do SO em vez de um grupo complementar do Linux, é possível controlar o grupo do Linux em todas as VMs de maneira unificada.

Para criar um grupo do Linux de Login do SO, use o comando gcloud beta identity groups create:

gcloud beta identity groups create logaccess@ORGANIZATION_DOMAIN \
    --organization=ORGANIZATION_DOMAIN \
    --posix-group=gid=12345,name=logaccess

Substitua ORGANIZATION_DOMAIN pelo domínio (example.com) associado à sua organização.

Criar uma atribuição de política do SO

É possível usar as políticas do SO para automatizar e centralizar a configuração das VMs. Você aplica políticas de SO a VMs usando atribuições de políticas de SO. Ao criar uma atribuição de política de SO com uma política que altera o grupo padrão do arquivo auth.log, é possível alterar o grupo padrão do arquivo auth.log em várias VMs de uma só vez, em vez de aplicar a alteração a uma VM por vez.

Para criar uma atribuição de política de SO, faça o seguinte:

  1. Abra um terminal na estação de trabalho.

  2. Crie um arquivo .yaml de atribuição de política de SO executando o seguinte comando:

    touch tutorial-os-policy-assignment.yaml
    
  3. Abra o arquivo tutorial-os-policy-assignment.yaml em um editor de texto e adicione as seguintes especificações:

    # OS policy assignment that sets the /var/log/auth.log group to logaccess.
    osPolicies:
     - id: log-access-policy
       mode: ENFORCEMENT
       resourceGroups:
           resources:
             - id: grant-log-access
               exec:
                 validate:
                   # Checks if the group is logaccess. If yes, exits  with code 100. If no,
                   # exits with code 101 and proceeds to the `enforce` step.
                   script:
                     if stat -c '%G' /var/log/auth.log | grep -q 'logaccess'; then exit 100; else exit 101; fi
                   interpreter: SHELL
                 enforce:
                   # Changes the group to logaccess and exits with code 100.
                   script:
                     chgrp logaccess /var/log/auth.log && exit 100
    instanceFilter:
     inclusionLabels:
       - labels:
           vm: tutorial
    rollout:
     disruptionBudget:
       fixed: 10
     minWaitDuration: 30s
    

Aplicar a atribuição de política de SO às VMs

Para aplicar a atribuição de política de SO às VMs, faça o seguinte:

  1. Aplique a política do SO usando o comando gcloud compute os-config os-policy-assignments create:

    gcloud compute os-config os-policy-assignments create log-access-assignment \
       --location=us-west1-a \
       --file=log-access-os-policy-assignment.yaml \
       --async
    

    A atribuição de política do SO é lançada para as VMs de acordo com as especificações de lançamento mencionadas no arquivo tutorial-os-policy-assignment.yaml.

  2. Confirme se a atribuição da política do SO foi lançada com sucesso para as VMs e se a atribuição da política do SO atualizou com sucesso o grupo padrão usando o comando gcloud compute os-config os-policy-assignment-reports list:

    gcloud compute os-config os-policy-assignment-reports list --location=us-west1-a
    

Adicionar usuários ao grupo do Linux de Login do SO

Quando você adiciona um usuário a um grupo do Login do SO no Linux, ele herda as permissões do grupo em todas as VMs que têm o Login do SO ativado. Para este tutorial, qualquer usuário adicionado ao grupo logaccess pode visualizar o arquivo auth.log sem o papel roles/compute.osAdminLogin do IAM.

Veja a documentação de Ajuda do Cloud Identity para saber como adicionar um usuário ao grupo logaccess.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

Excluir o projeto

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Excluir recursos individuais

Exclua as VMs que você criou usando o comando gcloud compute instances delete:

gcloud compute instances delete tutorial-1 tutorial-2 tutorial-3 \
    --zone=us-west1-a

A seguir