Crie uma instância do Private Service Connect

Esta página descreve como criar uma instância do Private Service Connect para o Secure Source Manager.

As instâncias do Private Service Connect não expõem pontos finais à Internet pública. Quando cria uma instância do Private Service Connect, são criados pontos finais para fornecer acesso SSH (Git) e HTTPS (Git, interface Web, API) à instância. Os pontos finais têm de ter endereços IP atribuídos na sua rede privada. Todo o tráfego de e para a instância do Private Service Connect passa pelos pontos finais do Private Service Connect.

Para mais informações sobre a utilização do Private Service Connect para aceder a serviços geridos de forma privada a partir de uma rede VPC, consulte o artigo Private Service Connect.

O Secure Source Manager é um serviço de inquilino único. Uma única instância do Secure Source Manager só deve incluir utilizadores de um único cliente, a menos que várias empresas com uma relação contratual precisem de usar uma única instância para colaboração.Google Cloud

Se estiver a trabalhar com várias empresas e quiser colaborar com elas no código fonte, recomendamos que crie uma instância separada para cada empresa.

Antes de começar

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Secure Source Manager API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  4. Install the Google Cloud CLI.

  5. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  6. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Enable the Secure Source Manager API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  9. Install the Google Cloud CLI.

  10. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  11. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  12. Instale o componente da betaCLI do Google Cloud:
    gcloud components install beta
  13. Funções necessárias

    Para receber as autorizações de que precisa para criar uma instância do Secure Source Manager do Private Service Connect, peça ao seu administrador que lhe conceda as seguintes funções do IAM:

    Crie uma identidade de serviço e um pool de autoridades de certificação

    Esta secção descreve o que fazer se estiver a usar o seu próprio certificado de AC. Para usar um certificado gerido pela Google, não tem de fazer nada além de executar o comando gcloud beta source-manager instances create sem criar uma identidade de serviço nem um conjunto de ACs. Google

    Se estiver a usar o seu próprio certificado de CA, em vez de usar um certificado gerido pela Google, tem de especificar um nome do conjunto da autoridade de certificação (CA) quando criar uma instância privada do Secure Source Manager.GoogleÉ enviado um pedido para assinar o certificado SSL HTTPS da instância para o conjunto de ACs.

    1. Execute o seguinte comando para criar uma identidade de serviço para a API Secure Source Manager no seu projeto:

      gcloud beta services identity create \
          --service=securesourcemanager.googleapis.com \
          --project=PROJECT_ID
      

      Onde PROJECT_ID é o ID do seu projeto.

      O resultado é semelhante ao seguinte:

      Service identity created: service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.com

      Em que service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.com é o agente de serviço do Secure Source Manager e PROJECT_NUM é o número do seu projeto.

    2. Crie um grupo de autoridades de certificação (AC) com pedidos de certificados baseados em CSR permitidos.

    3. Crie uma CA. Pode criar uma AC raiz ou subordinada consoante as suas necessidades.

      Para mais informações sobre as diferenças entre ACs raiz e subordinadas, consulte o artigo Determine as definições da autoridade de certificação.

    4. Conceda as autorizações de identidade do serviço da API Secure Source Manager para pedir novos certificados no conjunto de AC:

      gcloud privateca pools add-iam-policy-binding CA_POOL_NAME \
          --location=CA_LOCATION \
          --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com' \
          --role='roles/privateca.certificateRequester' \
          --project=CA_PROJECT_ID
      

      Substitua o seguinte:

      • CA_POOL_NAME com o nome que atribuiu ao conjunto de CAs.
      • CA_LOCATION com a região ou a zona do seu conjunto de ACs.
      • PROJECT_NUMBER com o número do projeto onde o Secure Source Manager está ativado. Pode localizar o número do projeto seguindo as instruções em Identificar projetos.
      • CA_PROJECT_ID com o ID do projeto do projeto no qual criou o conjunto de ACs.

    Crie uma instância do Secure Source Manager do Private Service Connect

    gcloud

    Crie uma instância do Private Service Connect com o seguinte comando:

    gcloud beta source-manager instances create INSTANCE_ID \
      --region=LOCATION \
      --project=PROJECT_ID \
      --is-private \
      --ca-pool=projects/CA_PROJECT/locations/CA_LOCATION/caPools/CA_POOL_NAME
    

    Substitua o seguinte:

    • INSTANCE_ID com o nome que quer dar à instância.
    • LOCATION com a região onde quer criar a instância. Para ver as localizações suportadas, consulte a secção Localizações.
    • PROJECT_ID com o nome do projeto no qual quer criar uma instância.
    • CA_PROJECT com o nome do projeto do conjunto de ACs, apenas se estiver a usar o seu próprio certificado da AC.
    • CA_LOCATION com a região onde criou o conjunto de ACs, apenas se estiver a usar o seu próprio certificado de AC.
    • CA_POOL_NAME com o nome do conjunto de ACs, apenas se estiver a usar o seu próprio certificado da AC.

    API

    Crie uma instância do Private Service Connect com o seguinte comando:

    curl \
        -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances?instance_id=INSTANCE_ID \
        -H "Content-Type: application/json" \
        -d '{"private_config":{"is_private":true,"ca_pool":"projects/CA_PROJECT/locations/CA_LOCATION/caPools/CA_POOL_NAME"}}'
    

    Substitua o seguinte:

    • INSTANCE_ID com o nome que quer dar à instância.
    • LOCATION com a região onde quer criar a instância. Para ver as localizações suportadas, consulte a secção Localizações.
    • PROJECT_ID com o nome do projeto no qual quer criar uma instância.
    • CA_PROJECT com o nome do projeto do conjunto de ACs, apenas se estiver a usar o seu próprio certificado da AC.
    • CA_LOCATION com a região onde criou o conjunto de ACs, apenas se estiver a usar o seu próprio certificado de AC.
    • CA_POOL_NAME com o nome do conjunto de ACs, apenas se estiver a usar o seu próprio certificado da AC.

    É iniciada uma operação de criação de instância de longa duração. A criação da instância demora até 60 minutos. O resultado é semelhante ao seguinte:

    Create request issued for [my-instance].
    done: false
    metadata:
      '@type': type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata
      apiVersion: v1
      createTime: '2023-02-27T20:57:52.315609549Z'
      requestedCancellation: false
      target: projects/my-project/locations/us-central1/instances/my-instance
      verb: create
    name: projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e
    

    Onde projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e está o OPERATION_NAME.

    Tome nota do OPERATION_NAME, uma vez que tem de o usar para verificar o estado da operação.

    Para verificar o estado da operação, execute o seguinte comando:

    gcloud beta source-manager operations describe OPERATION_NAME \
        --region=LOCATION
    

    Substitua o seguinte:

    • OPERATION_NAME com o nome da operação da resposta do comando create.
    • LOCATION com a região onde quer criar a instância. Para ver informações sobre as localizações suportadas, consulte a secção Localizações.

    Assim que a instância for criada, os pontos finais do Private Service Connect httpServiceAttachment e sshServiceAttachment, juntamente com os nomes de anfitrião para html, api, gitHttp e gitSsh, são apresentados no resultado.

    Aceda à instância privada

    Para aceder à sua instância do Private Service Connect, pode criar pontos finais do Private Service Connect com base em regras de encaminhamento ou criar back-ends do Private Service Connect com base em balanceadores de carga.

    Os back-ends do Private Service Connect baseados em balanceadores de carga são mais flexíveis e permitem a integração com outros serviços, como o Cloud Build, mas são mais complexos e têm faturação adicional. Google Cloud

    Os pontos finais do Private Service Connect baseados em regras de encaminhamento são mais simples e custam menos, mas não pode estabelecer ligação ao Cloud Build nem a outros Google Cloud serviços.

    Para configurar back-ends do Private Service Connect com base em balanceadores de carga para a sua instância do Private Service Connect e associá-la ao Cloud Build, consulte o artigo Associe o Cloud Build a uma instância do Private Service Connect.

    Configure pontos finais do Private Service Connect com base em regras de encaminhamento

    1. Para criar pontos finais do Private Service Connect, siga as instruções em Aceda a serviços publicados através de pontos finais.

    2. Para obter os URIs dos anexos de serviço HTTP e SSH da instância do Secure Source Manager, execute o seguinte comando:

      gcloud beta source-manager instances describe INSTANCE_ID \
          --region=LOCATION
      

      Substitua o seguinte:

      • INSTANCE_ID com o nome da sua instância. Para listar as instâncias numa determinada região, pode executar o comando gcloud beta source-manager instances list --region=LOCATION.
      • LOCATION com a localização da sua instância. Para ver informações sobre as localizações suportadas, consulte o artigo Localizações.

      O resultado é semelhante ao seguinte:

      createTime: '2023-09-22T18:21:35.729454612Z'
      hostConfig:
        api: my-project-012345678901-api.us-central1.p.sourcemanager.dev
        gitHttp: my-project-012345678901-git.us-central1.p.sourcemanager.dev
        gitSsh: my-project-012345678901-ssh.us-central1.p.sourcemanager.dev
        html: my-project-012345678901.us-central1.p.sourcemanager.dev
      name: projects/my-project/locations/us-central1/instances/my-instance
      privateConfig:
        caPool: projects/my-project/locations/us-central1/caPools/my-ca-pool
        httpServiceAttachment: projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/http-psc
        isPrivate: true
        sshServiceAttachment: projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psc
      state: ACTIVE
      updateTime: '2023-09-22T18:39:53.390563549Z'
      

      Onde:

      • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/http-psc é o URI do anexo do serviço HTTP da sua instância.
      • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psc é o URI do anexo do serviço SSH da sua instância.
    3. Depois de criar os pontos finais do Private Service Connect, tem de configurar registos de DNS privados. Para obter instruções sobre como configurar registos DNS privados, consulte o artigo Configure o DNS manualmente.

      1. Mapeie o valor de hostConfig.html, hostConfig.api e hostConfig.gitHttp para o endereço IP interno do anexo do serviço HTTP.
      2. Mapeie o valor de hostConfig.ssh para o endereço IP interno da associação de serviço SSH.

      Por exemplo, na saída do exemplo anterior, o valor de hostConfig.html é my-project-012345678901.us-central1.p.sourcemanager.dev.

      Google Cloud

    Use a CA com a API Secure Source Manager

    O Secure Source Manager tem um plano de controlo e um plano de dados. Os pontos finais do plano de dados são alojados diretamente pela sua instância do Secure Source Manager, pelo que tem de estabelecer ligação ao nome de anfitrião da API da sua instância para aceder aos mesmos.

    Para usar a sua instância privada do Secure Source Manager, tem de usar a CA que criou na secção Crie uma identidade de serviço e um conjunto de autoridades de certificação.

    1. Para transferir a AC, execute o seguinte comando:

      gcloud privateca pools get-ca-certs CA_POOL \
          --location LOCATION \
          --output-file=root-cert.pem \
          --project PROJECT
      
    2. Para fazer chamadas de API para a sua instância, transmita o certificado da AC para a API Secure Source Manager do plano de dados.

      Por exemplo, o comando seguinte transmite o certificado da AC root-cert.pem à API Secure Source Manager para listar os repositórios na instância privada my-instance na localização us-central1.

      curl \
          --cacert root-cert.pem \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          https://my-instance-01234567890-api.us-central1.sourcemanager.dev/v1/projects/01234567890/locations/us-central1/repositories
      

    O que se segue?