Gerenciar o Login do SO em uma organização


Este documento descreve como usar o Login do SO para gerenciar o acesso a instâncias de VM em toda a organização.

Neste tópico, abordamos as seguintes tarefas:

Antes de começar

  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Política da organização de login do SO

Configure uma restrição de Login do SO na organização para garantir que todos os novos projetos e as instâncias de VM criadas neles tenham esse recurso ativado.

Quando essa restrição é configurada, as seguintes condições são aplicadas:

  • enable-oslogin=true está incluído nos metadados do projeto para todos os novos projetos.
  • As solicitações que definem enable-oslogin como false nos metadados da instância ou do projeto são rejeitadas para VMs e projetos novos e atuais.

Limitações

O login do SO não é compatível com os seguintes produtos, recursos e VMs:
  • Cloud Data Fusion versões 6.1.4 e anteriores
  • Cloud Composer
  • Clusters públicos do Google Kubernetes Engine (GKE) que executam versões anteriores à 1.23.5
  • Clusters particulares do GKE que executam versões do pool de nós anteriores à 1.20.5
  • Dataproc sem servidor
  • VMs do SQL Server e do Windows Server
  • VMs do Fedora CoreOS. Para gerenciar o acesso das instâncias às VMs criadas usando essas imagens, use o sistema de ignição do Fedora CoreOS.

Soluções alternativas para o Cloud Data Fusion, Cloud Composer e GKE

Para usar o Login do SO em organizações que usam o Cloud Data Fusion, o Cloud Composer e o GKE, ative a restrição de login do SO no nível da organização e desative seletivamente a restrição em projetos ou pastas dos projetos afetados.

Para mais informações sobre como editar políticas da organização, consulte Como criar e editar políticas.

Ativar a política da organização

Para ativar a política de Login do SO, é possível definir a restrição desse recurso em projetos e pastas específicos usando a CLI do Google Cloud. Também é possível definir a restrição de Login do SO em toda a organização usando o Console do Google Cloud ou a CLI do Google Cloud.

Console

Para definir a política da organização de Login do SO no console, conclua as seguintes etapas:

  1. No Console do Google Cloud, acesse a página Políticas da organização.

    Acessar a página "Políticas da organização"

  2. Na lista de políticas, clique em Requer Login do SO para ver as restrições desse recurso.
  3. Clique em Editar para editar suas restrições de Login do SO atuais.
  4. Na página Editar, selecione Personalizar.
  5. Para ativar a aplicação dessa restrição, selecione Ativado.
  6. Clique em Salvar para aplicar as configurações da restrição.

gcloud

Para definir a política da organização de Login do SO, use o comando gcloud beta resource-manager org-policies enable-enforce.

  1. Encontre o ID da sua organização

    gcloud organizations list
  2. Defina a restrição na sua organização. Substitua organization-id pelo ID da organização.

    gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \
        --organization=organization-id
    

É possível também aplicar a política da organização de Login do SO a uma pasta ou um projeto com as sinalizações --folder ou --project e o ID da pasta e do projeto, respectivamente.

Para pastas, execute o seguinte comando:

gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \
    --folder=folder-id

Para projetos, execute o seguinte comando:

gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \
    --project=project-id

Substitua:

Conceda acesso à instância a usuários fora da sua organização.

Por padrão, os usuários de fora da organização não podem definir chaves SSH para instâncias da organização nem receber acesso a elas. Em algumas situações, talvez seja necessário conceder acesso a instâncias para usuários que façam parte de uma organização diferente ou que tenham uma conta gmail.com do Google de uso doméstico.

O papel do IAM roles/compute.osLoginExternalUser permite que contas do Google externas interajam com os outros papéis do Login do SO para que configurem informações da conta POSIX.

Para conceder roles/compute.osLoginExternalUser e outros papéis com acesso a instâncias de Login do SO necessárias para usuários de fora da sua organização, conclua as seguintes etapas:

  1. No Console do Google Cloud, acesse a página de seleção do projeto e da organização.

    Acessar a página de seleção do projeto e da organização

  2. No menu suspenso Organização, selecione sua organização.
    1. Clique em Tudo para ver todas as organizações.
    2. Clique no nome da organização.
  3. Clique em Adicionar para acrescentar um novo papel a um usuário.
  4. Especifique o nome de usuário para quem você quer configurar o acesso à instância.
  5. Clique em Selecionar um papel para especificar os papéis que você quer conceder aos usuários.
  6. Na lista de papéis do Compute Engine, selecione Usuário externo do login do SO do Compute.
  7. Clique em Adicionar para confirmar a concessão do papel selecionado ao usuário.
  8. Conceda os outros papéis de acesso à instância do Login do SO ao usuário no nível do projeto ou da organização, se ainda não tiver feito isso.

Agora o usuário pode conectar-se a instâncias do projeto que tenham o Login do SO ativado.

Gerenciar a API OS Login

No nível da organização, é possível restringir o acesso à API OS Login ao configurar os controles de administrador do Google Workspace. Para fazer isso ou visualizar as opções de configuração, consulte Controlar quem usa o Google Cloud na sua organização. Como um administrador do Google Workspace, também é possível ativar ou desativar determinados recursos da API OS Login. Isso inclui as seguintes opções:

  • Escolher se quer incluir o sufixo de domínio nos nomes de usuário gerados pela API Login do SO. Por exemplo, no domínio example.com, o usuário user@example.com terá o nome de usuário user se a configuração para incluir o sufixo de domínio não estiver marcada.
  • Decidir se os membros da sua organização podem gerenciar chaves SSH usando a API Login do SO.
  • Restringir ou permitir o acesso à VM aos usuários que não fazem parte da sua organização.

Para mais informações sobre como ativar ou desativar as configurações da API Login do SO, consulte Escolher configurações para o Google Cloud Platform.

Auditar eventos de login do SO

Como um administrador do Google Workspace, é possível usar o SDK Admin do Google Workspace para fazer a auditoria das ações realizadas com a API OS Login. Ao analisar esses eventos, é possível rastrear quando um usuário adiciona, exclui ou atualiza uma chave SSH ou exclui informações da conta POSIX.

É possível recuperar os eventos de atividade de auditoria da API OS Login usando o SDK Admin do Google Workspace, basta chamar Activities.list() com applicationName=gcp. Para mais informações, consulte Eventos de atividade do Google Cloud na documentação das APIs de relatórios relacionadas ao SDK Admin do Google Workspace.

Modifique as contas de usuários usando a API Directory.

O Login do SO usa as configurações de usuário do Cloud Identity ou do Google Workspace para se conectar a uma instância. Se você é administrador de uma organização, poderá usar a API Directory para concluir as seguintes tarefas nas contas de usuário do Google Workspace ou do Cloud Identity:

  • Modificar as configurações de login da instância
  • Tornar o usuário um administrador
  • Modificar as propriedades do usuário, como nome da conta e e-mail
  • Adicionar e remover chaves SSH de um usuário
  • Modificar informações da conta POSIX
  • Alterar o nome de usuário com que ele se conecta à instância

Os exemplos a seguir mostram como modificar ou remover contas de usuário usando a API Directory. Para mais informações sobre as propriedades da conta que podem ser editadas, consulte a referência da API Directory.

Modificar propriedades da conta

Para modificar as informações da conta POSIX de um usuário ou gerenciar as chaves SSH do usuário, emita uma solicitação PUT para o método directory.users.update e especifique uma ou mais propriedades para alterar na conta de usuário.

Se você modificar as propriedades posixAccounts de um usuário, precisará especificar os valores atuais ou novos username, uid e gid na solicitação.

Se você modificar as propriedades sshPublicKeys do usuário, precisará especificar o valor key na solicitação.

Veja a seguir um exemplo de solicitação PUT:

PUT https://admin.googleapis.com/admin/directory/v1/users/USER_KEY

{
 "posixAccounts": [
  {
    "username": "USERNAME",
    "uid": "UID",
    "gid": "GID",
    "homeDirectory": "USER_HOME_PATH",
    "shell": "SHELL_PATH"
   }
  ],
 "sshPublicKeys": [
  {
    "key": "KEY_VALUE",
    "expirationTimeUsec": EXPIRATION_TIME
   }
  ],
}

Substitua:

  • USER_KEY: endereço de e-mail principal do usuário, endereço de e-mail de alias ou ID exclusivo do usuário.
  • USERNAME: o nome de usuário que o Compute Engine adiciona à VM para o usuário. Esse valor precisa ser exclusivo na sua organização e não pode terminar com um til ("~") ou conter um ponto (".").
  • UID: ID do usuário na VM dele. Essa propriedade precisa ser um valor entre 1001 e 60000 ou entre 65535 e 2147483647. Para acessar um Container-Optimized OS, o UID precisa ter um valor entre 65536 e 214748646. O UID precisa ser exclusivo na sua organização;
  • GID: o ID do grupo na VM a que o usuário pertence.
  • USER_HOME_PATH: (opcional) o diretório inicial na VM do usuário. Por exemplo, /home/example_username.
  • SHELL_PATH: (opcional) o caminho para o shell padrão do usuário depois que ele se conecta à instância. Por exemplo, /bin/bash ou /bin/sh.
  • KEY_VALUE: o valor da chave SSH pública.
  • EXPIRATION_TIME: (opcional) o prazo de validade da chave em microssegundos desde a época (1 segundo = 106 microssegundos).

Remover as propriedades da conta

Para limpar os dados posixAccounts e sshPublicKeys de um usuário, emita uma solicitação PUT para o método directory.users.update, configurando os campos posixAccounts e sshPublicKeys como null:

PUT https://admin.googleapis.com/admin/directory/v1/users/USER_KEY

{
 "posixAccounts": null,
 "sshPublicKeys": null
}

Substitua USER_KEY pelo endereço de e-mail principal do usuário, pelo endereço de e-mail do alias ou pelo ID exclusivo do usuário.

Usar grupos do Linux com o Login do SO

Os administradores da organização podem usar a API Cloud Identity Groups para configurar grupos complementares do Linux para usuários do Login do SO, criando e gerenciando grupos POSIX. O Login do SO vincula grupos POSIX a grupos Linux complementares nas VMs da sua organização para que você possa gerenciar as permissões que os usuários têm nas VMs.

Gerenciar a associação de usuários em grupos do Linux

Para criar um grupo POSIX, consulte Como criar e atualizar grupos POSIX.

Para adicionar usuários a um grupo, consulte Adicionar ou convidar usuários para um grupo.

Elas são atualizadas em até 10 minutos. As alterações em grupo são refletidas em todas as VMs recém-criadas. As atualizações do grupo POSIX podem levar até seis horas para serem propagadas para todas as VMs em execução. Os usuários talvez precisem sair ou usar o comando newgrp para observar as mudanças no grupo.

Limites de taxa para grupos do Linux com Login do SO

Grupos do Linux com Login do SO usam cota oslogin.googleapis.com/metadata_server_groups_requests. Por padrão, o limite de cota é de 60 solicitações/minuto por projeto para uma determinada região.

Se você precisar de uma limitação de taxa mais alta, solicite uma cota maior no Console do Google Cloud da página "Cotas".

Acessar "Cotas"

Usar a federação de identidade de colaboradores com o Login do SO

As organizações que usam a federação de identidade de colaboradores podem usar o Login do SO para gerenciar o acesso às VMs. Quando a federação de identidade de colaboradores está ativada em uma organização, o Login do SO usa a autenticação com base no certificado no lugar daquela com base em chave para verificar as identidades dos usuários.

Antes de começar

Limitações

  • A VM a que você está se conectando precisa ter o OpenSSH versão 7.4 ou mais recente para usar a federação de identidade da força de trabalho com o Login do SO.

  • Os usuários em organizações que usam a federação de identidade de colaboradores não podem acessar as portas seriais da VM.

Conectar-se a VMs que usam o Login do SO e a federação de identidade de colaboradores

Conecte-se a VMs que usam o Login do SO com a federação de identidade de colaboradores usando o console do Google Cloud, a gcloud CLI ou outros clientes SSH.

Console

Quando você se conecta a VMs que usam o Login do SO com a federação de identidade de colaboradores via SSH no navegador, o Compute Engine configura o certificado SSH em seu nome quando você tenta se conectar.

Para se conectar a VMs, faça isto:

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.

    SSH button next to instance name.

gcloud

Quando você se conecta a VMs que usam o Login do SO com a federação de identidade de colaboradores via gcloud CLI, o Compute Engine configura o certificado SSH em seu nome quando você tenta se conectar.

Conecte-se a uma VM usando SSH executando o comando gcloud compute ssh:

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Execute este comando:

    gcloud compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME

    Conecte-se à VM executando o seguinte comando:

    • PROJECT_ID: o ID do projeto que contém a VM.
    • ZONE: o nome da zona em que a VM está localizada.
    • VM_NAME: o nome da VM

    Se você tiver definido as propriedades padrão para a Google Cloud CLI, poderá omitir as sinalizações --project e --zone desse comando. Exemplo:

    gcloud compute ssh VM_NAME

IAP Desktop

Quando você se conecta a VMs que usam o Login do SO com a federação de identidade de colaboradores via Desktop IAP, o Compute Engine configura o certificado SSH em seu nome quando você tenta se conectar.

Para se conectar a uma VM usando o IAP Desktop, faça o seguinte:

  1. Instale o IAP Desktop na sua estação de trabalho, se ainda não tiver feito isso.

  2. Abra o IAP Desktop. A janela Adicionar projetos será aberta.

  3. Quando solicitado, faça login com a federação de identidade de colaboradores.

  4. Na janela Adicionar projetos, insira o ID ou o nome do projeto que contém as VMs a que você quer se conectar.

  5. Na janela Project Explorer, clique com o botão direito do mouse no nome da VM novamente e selecione Conectar para se conectar à VM.

Cliente SSH

Para se conectar a uma VM que usa o Login do SO com a federação de identidade de colaboradores via cliente SSH, faça isto:

  1. Crie uma chave SSH caso ainda não tenha uma.
  2. Assine sua chave SSH pública usando o método users.projects.locations.signSshPublicKey:

    POST https://oslogin.googleapis.com/v1beta/users/USER/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey
    
    {
     "ssh_public_key": "PUBLIC_KEY"
    }
    

    Substitua:

    • USER: uma identidade exclusiva em um pool de colaboradores, no seguinte formato:

      principal:%2F%2Fiam.googleapis.com%2Flocations%2Fglobal%2FworkforcePools%2POOL_ID%2Fsubject%2FSUBJECT_ATTRIBUTE_VALUE
      

      Substitua:

    • PROJECT_ID: o ID do projeto que contém a VM a que você quer se conectar.

    • LOCATION: a zona onde está localizada a VM a que você quer se conectar.

    • PUBLIC_KEY: o conteúdo do arquivo da sua chave pública SSH.

  3. Copie o certificado SSH da saída do método user.signSshPublicKey e salve o conteúdo em um novo arquivo.

  4. Execute o comando a seguir para definir permissões no arquivo do certificado SSH:

    sudo chmod 600 FILE_NAME
    

    Substitua FILE_NAME pelo nome do arquivo.

  5. Conecte-se à VM usando o seguinte comando:

    ssh -i PATH_TO_PRIVATE_KEY -o CertificateFile=PATH_TO_SSH_CERTIFICATE USERNAME@EXTERNAL_IP
    

    Substitua:

    • PATH_TO_PRIVATE_KEY: o caminho para o arquivo da sua chave SSH particular.
    • PATH_TO_SSH_CERTIFICATE: o caminho para o arquivo do seu certificado SSH.
    • USERNAME: o valor do mapeamento de atributos google.posix_username do usuário.
    • EXTERNAL_IP: o endereço IP externo da VM.

A seguir