Autenticar usando chaves públicas SSH

Os usuários e as contas de serviço podem usar chaves públicas SSH para autenticar repositórios do Secure Source Manager. Nesta página, descrevemos como gerar um par de chaves SSH e adicioná-lo como um método de autenticação na interface da Web do Secure Source Manager.

O Secure Source Manager aceita os tipos de chave SSH RSA, ECDSA e Ed25519.

Funções exigidas

Para receber as permissões que você precisa para autenticar usando chaves públicas SSH, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esses papéis predefinidos contêm as permissões necessárias para autenticar usando chaves públicas SSH. Para acessar as permissões exatas que são necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para autenticar usando chaves públicas SSH:

  • securesourcemanager.sshkeys.createAny na instância do Secure Source Manager
  • Para atribuir uma chave SSH a uma conta de serviço: iam.serviceAccounts.actAs na conta de serviço

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Para informações sobre como conceder papéis do Secure Source Manager, consulte Controle de acesso com o IAM e Conceder acesso de instância aos usuários.

Gerar um par de chaves

Um par de chaves SSH consiste em uma chave privada que reside no seu sistema local e uma chave pública registrada Google Cloud.

Linux ou macOS

  1. Instale OpenSSH no seu sistema local.

  2. Em um prompt de comando, digite o seguinte:

    ssh-keygen -t KEY_TYPE -C "USER_EMAIL"
    

    Em que:

    • USER_EMAIL é seu endereço de e-mail;
    • KEY_TYPE é um dos campos rsa, ecdsa ou ed25519.

    Exemplo:

    ssh-keygen -t rsa -C "user@example.com"
    
    1. Quando solicitado, insira um local e um nome de arquivo para o arquivo de chave pública. Para aceitar o local padrão e o nome de arquivo padrão, pressione Enter.

    2. Quando solicitado, deixe a senha longa vazia e pressione Enter.

Windows

  1. Se você não tiver, instale o cliente OpenSSH (incluído no Windows 10 e versões mais recentes) e o Git para Windows no seu sistema local. As instruções a seguir usam o OpenSSH e o Git para Windows.

  2. Em um PowerShell ou prompt de comando, execute o seguinte comando:

    ssh-keygen -t KEY_TYPE -C "USER_EMAIL"
    

    Em que:

    • USER_EMAIL é seu endereço de e-mail;
    • KEY_TYPE é um dos campos rsa, ecdsa ou ed25519.

    Exemplo:

    ssh-keygen -t rsa -C "user@example.com"
    
    1. Quando solicitado, insira um local e um nome de arquivo para o arquivo de chave pública. Para aceitar o local padrão e o nome de arquivo (`%USERPROFILE%.ssh`), pressione Enter.

    2. Quando solicitado, deixe a senha longa vazia e pressione Enter.

Adicionar chave SSH ao agente SSH

Para usar o par de chaves SSH gerado, adicione a chave ao agente SSH. Se você não salvou a chave no local padrão, adicioná-la ao agente SSH ajuda o SSH a localizar a chave.

Linux ou macOS

  1. Inicie ssh-agent em segundo plano:

    eval "$(ssh-agent -s)"
    

    O comando retorna o ID do processo do agente (PID), por exemplo:

    Agent pid 3245
    

    Dependendo do seu ambiente, talvez seja necessário usar um comando diferente, por exemplo:

    • Para usar o acesso raiz, execute sudo -s -H antes de iniciar ssh-agent.
    • Para executar ssh-agent diretamente, use exec ssh-agent bash ou exec ssh-agent zsh.
  2. Adicione sua chave privada SSH ao ssh-agent.

    ssh-add ~/.ssh/FILENAME
    

    Em que FILENAME é o nome do arquivo de chave privada, por exemplo, id_rsa ou id_ed25519.

Windows

  1. Inicie ssh-agent.

    • Se você estiver usando o Git Bash, inicie ssh-agent:

      eval "$(ssh-agent -s)"
      
    • Se você estiver usando o PowerShell ou o prompt de comando, inicie o serviço ssh-agent. No PowerShell, execute:

      Set-Service ssh-agent -StartupType Automatic; Start-Service ssh-agent
      
  2. Adicione sua chave privada SSH ao ssh-agent.

    • Se você estiver usando o Git Bash:

      ssh-add ~/.ssh/FILENAME
      
    • Se você estiver usando o PowerShell ou o prompt de comando:

      ssh-add $env:USERPROFILE\.ssh\FILENAME
      

    Em que FILENAME é o nome do arquivo de chave privada, por exemplo, id_rsa ou id_ed25519.

Adicionar chaves SSH para usuários

  1. Na interface da Web do Secure Source Manager, na página da instância ou do repositório, clique no menu mais opções.
  2. Clique em Chaves SSH do usuário.

    A página Chaves SSH do usuário é aberta e uma lista de todas as chaves criadas é exibida.

  3. Na página Chaves SSH do usuário, clique em Adicionar chave.

  4. Na página Adicionar chave SSH, insira os seguintes valores para a chave:

    1. Título: adicione um título descritivo para a chave.
    2. Chave pública SSH: cole a string de chave pública. Para receber a string de chave pública, abra o arquivo de chave pública (FILENAME.pub) em um editor de texto ou execute um dos seguintes comandos:

      Linux ou macOS

      cat ~/.ssh/FILENAME.pub
      

      Windows

      cat $env:USERPROFILE\.ssh\FILENAME.pub
      

      Substitua FILENAME pelo nome do arquivo de chave.

É possível usar chaves SSH para autenticar qualquer repositório do Secure Source Manager, desde que você tenha as permissões necessárias nesse repositório.

Adicionar chaves SSH para contas de serviço

Para permitir o acesso programático ao repositório, adicione uma chave SSH para uma conta de serviço.

  1. Se você ainda não tem uma conta de serviço que quer usar, crie uma conta de serviço.
  2. Na interface da Web do Secure Source Manager, clique no menu mais opções.
  3. Clique em Chaves SSH da conta de serviço. A página Chaves SSH da conta de serviço é aberta e uma lista de todas as chaves adicionadas é exibida.
  4. Na página Chaves SSH da conta de serviço, clique em Adicionar chave.
  5. Na página Adicionar chave SSH da conta de serviço, insira os seguintes valores para a chave:

    1. Título: um título descritivo para a chave
    2. Conta de serviço: o e-mail da conta de serviço que você quer usar a chave SSH no formato SA_NAME@PROJECT_ID.iam.gserviceaccount.com

      Em que

      • SA_NAME é o nome da conta de serviço.
      • PROJECT_ID é o ID do projeto em que a conta de serviço foi criada.
    3. Chave pública SSH: sua chave SSH pública. Consulte Gerar um par de chaves para informações sobre como gerar um par de chaves SSH.

  6. Se a conta de serviço não estiver no mesmo projeto que a instância do Secure Source Manager, conceda ao agente de serviço do Secure Source Manager um dos seguintes papéis ou permissões na conta de serviço que você quer usar:

    • Permissão iam.serviceAccounts.signJwt
    • Papel Criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator)

    Execute o comando a seguir para adicionar uma política do IAM à conta de serviço do Secure Source Manager para conceder a ela o papel Criador de token da conta de serviço.

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT \
        --member="serviceAccount:service-INSTANCE_PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"
    

    Em que SERVICE_ACCOUNT é a conta de serviço que você quer usar e INSTANCE_PROJECT_NUMBER é o número do projeto da instância do Secure Source Manager.

    O SERVICE_ACCOUNT precisa ser formatado como um ID numérico de conta de serviço ou como um e-mail, como: 123456789876543212345 ou my-iam-account@somedomain.com.

A seguir