Usar o gerenciamento de código-fonte do Git

O Secure Source Manager é compatível com todos os comandos de cliente do Git SCM e tem solicitações de pull e rastreamento de problemas integrados. A autenticação HTTPS e SSH são compatíveis.

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 papéis personalizados 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 à instância aos usuários.

Instalar o Git e a Google Cloud CLI

  1. Instale o Git.

  2. Se o instalador do Git pedir para Escolher um auxiliar de credenciais, selecione Nenhum (não usar um auxiliar de credenciais).

  3. Instale a CLI da gcloud.

  4. A versão 395.0.0 ou posterior 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. Depois de atualizar, execute gcloud init para inicializar a CLI gcloud.

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

Configurar suas credenciais

Se você se autenticar 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 à sua configuração global do Git executando o seguinte comando:

Linux

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

Talvez as versões anteriores do Git não sejam compatíveis com caracteres curinga. Para adicionar o helper 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 com o nome da sua instância do Secure Source Manager.
  • PROJECT_NUMBER pelo número do projeto. Para ajuda encontrar o número do projeto, consulte Identificar projetos.
  • LOCATION com a 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

Talvez as versões anteriores do Git não sejam compatíveis com caracteres curinga. Para adicionar o helper 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 com o nome da sua instância do Secure Source Manager.
  • PROJECT_NUMBER pelo número do projeto. Para ajuda encontrar o número do projeto, consulte Identificar projetos.
  • LOCATION com a 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 credenciaisGoogle Cloud ao usar comandos do Git com o Secure Source Manager.

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

gcloud auth login

Autenticar de 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 projeto Google Cloud .
  • ZONE: a zona da VM.

Se você usar uma conta de serviço personalizada, crie a conta e depois 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. Conceder 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 a função roles/securesourcemanager.repoWriter.

    É recomendável 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.

Pode levar alguns minutos para que as permissões do IAM sejam 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 as credenciais padrão do aplicativo da conta de serviço da VM para autenticar no Secure Source Manager. Agora você pode clonar um repositório. Você precisa usar o URL do repositório HTTPS para autenticar 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 autenticar o Secure Source Manager com um provedor de identidade terceirizado.

Para autenticar com as credenciais do pool de identidades da força de trabalho na sua instância do Secure Source Manager usando comandos da CLI gcloud ou do Git, crie uma configuração de login com seu 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 e crie um login baseado em navegador com a CLI gcloud.

Depois de se autenticar, use os comandos do Git para interagir com sua instância do Secure Source Manager. Você precisa se autenticar novamente quando a duração da sessão do seu pool de identidades da força de trabalho expirar.

Clonar um repositório

Clone um repositório executando o seguinte comando:

git clone REPOSITORY_URL

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 Git do Developer Connect se você tiver vinculado seu 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 sua 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 a função roles/developerconnect.gitProxyReader no recurso GitRepositoryLink do 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 à sua 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 seus recursos do Developer Connect.
  • PROJECT_ID: o ID do projeto dos seus recursos do Developer Connect.
  • CONNECTION_ID: o ID da sua conexão do Developer Connect.
  • LINK_ID: o ID do recurso GitRepositoryLink do Developer Connect.

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

Enviar um repositório atual para o Secure Source Manager

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

Para enviar seu repositório Git atual 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 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 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