Usar o gerenciamento de código-fonte do Git

O Secure Source Manager oferece suporte a todos os SCM do Git comandos do cliente e tem solicitações de pull e rastreamento de problemas integrados. A autenticação HTTPS e SSH é aceita.

Funções exigidas

Para receber as permissões necessárias para usar o Git e interagir com um repositório do Secure Source Manager, 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.

Também é possível conseguir as permissões necessárias usando personalizados papéis ou outros predefinidos papéis.

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.

Instalar o Git e a Google Cloud CLI

  1. Instale o Git.

  2. Se o instalador do Git solicitar que você escolha um auxiliar de credenciais , selecione Nenhum (não usar um auxiliar de credenciais).

  3. Instale a CLI gcloud.

  4. A versão 395.0.0 ou mais recente da CLI gcloud é necessária para usar o Git com HTTPS. Para verificar a versão da CLI gcloud, execute o seguinte comando:

    gcloud --version
    
  5. Para atualizar a CLI gcloud, execute o seguinte comando.

    gcloud components update
    
  6. Após a atualização, execute gcloud init para inicializar a CLI gcloud.

    Consulte a documentação da CLI gcloud sobre como atualizar componentes para mais informações.

Configurar suas credenciais

Se você fizer a autenticação no Secure Source Manager usando um provedor de identidade de terceiros e a federação de identidade de colaboradores, não será necessário concluir esta seção. Em vez disso, crie uma configuração de login do pool de identidades de colaboradores.

Adicione o auxiliar de autenticação do Secure Source Manager à configuração global do Git executando o seguinte comando:

Linux

git config --global credential.'https://*.*.sourcemanager.dev'.helper gcloud.sh

As versões anteriores do Git podem não oferecer suporte a caracteres curinga. Para adicionar o auxiliar de autenticação sem caracteres curinga, execute o seguinte comando:

git config --global credential.'https://INSTANCE_ID-PROJECT_NUMBER-git.LOCATION.sourcemanager.dev'.helper gcloud.sh

Substitua:

  • INSTANCE_ID pelo nome da instância do Secure Source Manager.
  • PROJECT_NUMBER pelo número do projeto. Para receber ajuda para encontrar o número do projeto, consulte Identificar projetos.
  • LOCATION pela região da instância. Para mais informações sobre regiões, consulte Locais.

Windows

git config --global credential.https://*.*.sourcemanager.dev.helper gcloud.cmd

As versões anteriores do Git podem não oferecer suporte a caracteres curinga. Para adicionar o auxiliar de autenticação sem caracteres curinga, execute o seguinte comando:

git config --global credential.https://INSTANCE_ID-PROJECT_NUMBER-git.LOCATION.sourcemanager.dev.helper gcloud.cmd

Substitua:

  • INSTANCE_ID pelo nome da instância do Secure Source Manager.
  • PROJECT_NUMBER pelo número do projeto. Para receber ajuda para encontrar o número do projeto, consulte Identificar projetos.
  • LOCATION pela região da instância. Para mais informações sobre regiões, consulte Locais.

O auxiliar de autenticação usa a CLI gcloud para buscar suas Google Cloud credenciais ao usar comandos do Git com o Secure Source Manager.

Para fazer a autenticação novamente após a configuração inicial das credenciais, execute o seguinte comando da CLI gcloud:

gcloud auth login

Autenticar em uma VM do Compute Engine usando uma conta de serviço

É possível fazer a autenticação em uma máquina virtual (VM) do Compute Engine usando uma conta de serviço anexada.

Configurar a VM e a conta de serviço

Se você usar a conta de serviço padrão do Compute Engine, crie a VM com os escopos OAuth necessários:

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --scopes=openid,https://www.googleapis.com/auth/userinfo.profile,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/cloud-platform

Substitua:

  • VM_NAME: o nome da VM.
  • PROJECT_ID: o ID do Google Cloud projeto.
  • ZONE: a zona da VM.

Se você usar uma conta de serviço personalizada, crie a conta de serviço e, em seguida, crie a VM.

  1. Crie uma conta de serviço:

    gcloud iam service-accounts create SA_NAME --project=PROJECT_ID
    

    Substitua SA_NAME por um nome para a conta de serviço.

  2. Conceda permissão para usar a conta de serviço. Para criar uma VM com uma conta de serviço, você precisa do papel Usuário da conta de serviço (roles/iam.serviceAccountUser) na conta de serviço. Conceda esse papel ao principal que está criando a VM:

    gcloud iam service-accounts add-iam-policy-binding SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --member="user:USER_EMAIL" \
        --role="roles/iam.serviceAccountUser"
    

    Substitua USER_EMAIL pelo e-mail do usuário que está criando a VM.

  3. Crie a VM:

    gcloud compute instances create VM_NAME \
        --project=PROJECT_ID \
        --zone=ZONE \
        --scopes=openid,https://www.googleapis.com/auth/userinfo.profile,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/cloud-platform \
        --service-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

Conceder papéis do IAM à conta de serviço

Conceda à conta de serviço acesso à instância e ao repositório do Secure Source Manager:

  1. Conceda acesso à instância:

    SA_EMAIL=$(gcloud compute instances describe VM_NAME --project=PROJECT_ID --zone=ZONE --format="get(serviceAccounts[0].email)")
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:$SA_EMAIL" \
        --role=roles/securesourcemanager.instanceAccessor
    
  2. Conceda acesso de leitura ao repositório.

    Para conceder acesso de leitura a um repositório específico, execute o seguinte comando:

    gcloud ssm repos add-iam-policy-binding REPOSITORY_ID \
        --instance=INSTANCE_ID \
        --location=LOCATION \
        --member="serviceAccount:$SA_EMAIL" \
        --role=roles/securesourcemanager.repoReader
    

    Substitua:

    • REPOSITORY_ID: o ID do repositório.
    • INSTANCE_ID: o ID da instância do Secure Source Manager.
    • LOCATION: a região da instância do Secure Source Manager.

    Para conceder acesso de gravação, use o papel roles/securesourcemanager.repoWriter.

    Recomendamos conceder acesso no nível do repositório para seguir o princípio de privilégio mínimo. Se você precisar conceder acesso a todos os repositórios em um projeto, consulte Controle de acesso com o IAM.

As permissões do IAM podem levar alguns minutos para serem propagadas.

Configurar o Git na VM

  1. Conecte-se à VM usando SSH:

    gcloud compute ssh VM_NAME --project=PROJECT_ID --zone=ZONE
    
  2. Na VM, instale o Git:

    sudo apt-get install git
    
  3. Na VM, configure o auxiliar de credenciais do Git conforme descrito em Configurar suas credenciais. Por exemplo, no Linux:

    git config --global credential.'https://*.*.sourcemanager.dev'.helper gcloud.sh
    

Depois de configurar o auxiliar de credenciais, o Git usa o Application Default Credentials da conta de serviço da VM para fazer a autenticação no Secure Source Manager. Agora é possível clonar um repositório. É necessário usar o URL do repositório HTTPS para fazer a autenticação com o Application Default Credentials.

Criar uma configuração de login do pool de identidades da força de trabalho

Não é necessário concluir esta seção, a menos que você esteja usando a federação de identidade de colaboradores para fazer a autenticação no Secure Source Manager com um provedor de identidade de terceiros.

Para fazer a autenticação com as credenciais do pool de identidades da força de trabalho na instância do Secure Source Manager usando comandos da CLI gcloud ou comandos do Git, é necessário criar uma configuração de login com o pool de identidades da força de trabalho.

Para criar uma configuração de login do pool de identidades de colaboradores, siga as instruções em Receber tokens de curta duração para a federação de identidade de colaboradores para criar um login baseado em navegador com a CLI gcloud.

Depois de fazer a autenticação, você pode usar comandos do Git para interagir com a instância do Secure Source Manager. É necessário fazer a autenticação novamente quando a duração da sessão do pool de identidades da força de trabalho expirar.

Clonar um repositório

Para clonar um repositório, execute o seguinte comando:

git clone REPOSITORY_URL

Em que REPOSITORY_URL é o URL HTTPS ou SSH exibido na parte de cima da página do repositório que você quer clonar.

Clonar com o Developer Connect

É possível clonar repositórios usando o proxy do Git do Developer Connect se você tiver vinculado o repositório do Secure Source Manager no Developer Connect. A clonagem com o Developer Connect usa o IAM para autenticar e autorizar o acesso ao repositório.

Antes de começar

  1. Siga as instruções para criar uma conexão com um repositório do Secure Source Manager no Developer Connect.
  2. Verifique se o proxy do Git está ativado na conexão do Developer Connect. Consulte Configurar e usar o proxy do Developer Connect para instruções sobre como ativar o proxy do Git.
  3. Conceda aos principais que precisam clonar usando o URI do proxy o papel roles/developerconnect.gitProxyReader no recurso GitRepositoryLink no Developer Connect. Consulte Controle de acesso do Developer Connect com o IAM para instruções sobre como conceder papéis.

Configurar credenciais para o Developer Connect

Adicione o auxiliar de autenticação do Developer Connect à configuração global do Git executando o seguinte comando:

Linux

git config --global credential.'https://*.developerconnect.dev'.helper gcloud.sh

Windows

git config --global credential.https://*.developerconnect.dev.helper gcloud.cmd

Clonar usando o URI do proxy

Para clonar um repositório usando o URI do proxy do Developer Connect, execute o seguinte comando:

git clone https://REGION-git.developerconnect.dev/v1/projects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID/gitRepositoryLinks/LINK_ID

Substitua:

  • REGION: a região dos recursos do Developer Connect.
  • PROJECT_ID: o ID do projeto dos recursos do Developer Connect.
  • CONNECTION_ID: o ID da conexão do Developer Connect.
  • LINK_ID: o ID do recurso GitRepositoryLink do Developer Connect.

Para instruções sobre como visualizar os detalhes do recurso GitRepositoryLink, consulte gcloud developer-connect connections git-repository-links. É possível usar os subcomandos list ou describe para visualizar os detalhes do link.

Enviar um repositório atual por push para o Secure Source Manager

É necessário criar um repositório do Secure Source Manager para atuar como um controle remoto antes de enviar por push para ele.

Para enviar seu repositório Git atual por push para um repositório vazio do Secure Source Manager, adicione o repositório do Secure Source Manager como um controle remoto e envie por push para ele.

  1. Para definir o repositório do Secure Source Manager como um controle remoto, execute o seguinte comando:

    git remote add origin REPOSITORY_URL
    

    Em que REPOSITORY_URL é o URL HTTPS ou SSH exibido na parte de cima da página do repositório.

  2. Para enviar por push ao repositório, execute o seguinte comando:

    git push -u origin main
    

Para mais informações sobre o gerenciamento de código-fonte do Git, leia a documentação do Git.

A seguir