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

Nesta página, descrevemos como criar uma instância do Private Service Connect.

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

Para mais informações sobre como usar o Private Service Connect para acessar serviços gerenciados de maneira privada em uma rede VPC, consulte Private Service Connect.

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

Se você trabalha com várias empresas e quer colaborar com elas no código-fonte, recomendamos criar uma instância separada para cada uma.

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.

    Go to project selector

  3. Enable the Secure Source Manager API.

    Enable the API

  4. Install the Google Cloud CLI.

  5. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

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

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

    Go to project selector

  8. Enable the Secure Source Manager API.

    Enable the API

  9. Install the Google Cloud CLI.

  10. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

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

    gcloud init
  12. Instale o componente beta da Google Cloud CLI:
    gcloud components install beta
  13. Funções exigidas

    Para receber as permissões necessárias para criar uma instância do Secure Source Manager do Private Service Connect, peça ao administrador para conceder a você os seguintes papéis do IAM:

    Criar uma identidade de serviço e um pool de autoridade certificadora

    Esta seção descreve o que fazer se você estiver usando seu próprio certificado de CA. Para usar um certificado gerenciado pelo Google, basta executar o comandogcloud beta source-manager instances create sem criar uma identidade de serviço e um pool de CA.

    Se você estiver usando seu próprio certificado de CA em vez de um certificado gerenciado pelo Google, especifique um nome de pool de autoridade de certificação (CA) ao criar uma instância particular do Secure Source Manager. Uma solicitação para assinar o certificado SSL HTTPS da instância é enviada ao pool de CA.

    1. Execute o comando a seguir 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
      

      PROJECT_ID é o ID do projeto.

      O resultado será assim:

      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 pool de autoridade certificadora (CA) com solicitações de certificado baseadas em CSR permitidas.

    3. Crie uma CA. É possível criar uma AC raiz ou subordinada, dependendo das suas necessidades.

      Para mais informações sobre as diferenças entre ACs raiz e subordinadas, consulte Determinar configurações da autoridade certificadora.

    4. Conceda à identidade de serviço da API Secure Source Manager permissões para solicitar novos certificados no pool de ACs:

      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:

      • CA_POOL_NAME com o nome que você deu ao pool de CAs.
      • CA_LOCATION pela região ou zona do seu pool de CA.
      • PROJECT_NUMBER com o número do projeto em que o Secure Source Manager está ativado. Para encontrar o número do projeto, siga as instruções em Como identificar projetos.
      • CA_PROJECT_ID com o ID do projeto em que você criou o pool de CAs.

    Criar 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:

    • INSTANCE_ID com o nome que você quer dar à instância.
    • LOCATION com a região em que você quer criar a instância. Para locais compatíveis, consulte Locais.
    • PROJECT_ID com o nome do projeto em que você quer criar uma instância.
    • CA_PROJECT com o nome do projeto do pool de CAs, somente se você estiver usando seu próprio certificado de CA.
    • CA_LOCATION com a região em que você criou o pool de CAs, somente se estiver usando seu próprio certificado de CA.
    • CA_POOL_NAME com o nome do pool de CAs, somente se você estiver usando seu próprio certificado de CA.

    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:

    • INSTANCE_ID com o nome que você quer dar à instância.
    • LOCATION com a região em que você quer criar a instância. Para locais compatíveis, consulte Locais.
    • PROJECT_ID com o nome do projeto em que você quer criar uma instância.
    • CA_PROJECT com o nome do projeto do pool de CAs, somente se você estiver usando seu próprio certificado de CA.
    • CA_LOCATION com a região em que você criou o pool de CAs, somente se estiver usando seu próprio certificado de CA.
    • CA_POOL_NAME com o nome do pool de CAs, somente se você estiver usando seu próprio certificado de CA.

    Uma operação de longa duração para criar instância é iniciada. A criação da instância leva até 60 minutos. O resultado será assim:

    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
    

    Em que projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e é o OPERATION_NAME.

    Anote o OPERATION_NAME, porque você vai precisar dele para verificar o status da operação.

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

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

    Substitua:

    • OPERATION_NAME com o nome da operação da resposta do comando create.
    • LOCATION com a região em que você quer criar a instância. Para informações sobre os locais compatíveis, consulte Locais.

    Depois que a instância for criada, os endpoints do Private Service Connect httpServiceAttachment e sshServiceAttachment, junto com os nomes de host para html, api, gitHttp e gitSsh, serão listados na saída.

    Acessar a instância privada

    Para acessar sua instância do Private Service Connect, crie endpoints do Private Service Connect com base em regras de encaminhamento ou 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 do Google Cloud , como o Cloud Build, mas são mais complexos e têm faturamento adicional.

    Os endpoints do Private Service Connect baseados em regras de encaminhamento são mais simples e baratos, mas não é possível se conectar ao Cloud Build ou a outros serviços do Google Cloud .

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

    Configurar endpoints do Private Service Connect com base em regras de encaminhamento

    1. Para criar endpoints do Private Service Connect, siga as instruções em Acessar serviços publicados por meio de endpoints.

    2. Para receber 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:

      • INSTANCE_ID pelo nome da instância. Para listar instâncias em uma determinada região, execute gcloud beta source-manager instances list --region=LOCATION.
      • LOCATION com o local da instância. Para informações sobre os locais compatíveis, consulte Locais.

      A saída será assim:

      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'
      

      Em que:

      • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/http-psc é o URI do anexo de serviço HTTP da sua instância.
      • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psc é o URI do anexo de serviço SSH da sua instância.
    3. Depois de criar os endpoints do Private Service Connect, configure registros DNS particulares. Para instruções sobre como configurar registros DNS particulares, consulte Configurar 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 conexã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.

    Usar a CA com a API Secure Source Manager

    O Secure Source Manager tem um plano de controle e um plano de dados. Os endpoints do plano de dados são hospedados diretamente pela sua instância do Secure Source Manager. Portanto, você precisa se conectar ao nome do host da API da instância para acessá-los.

    Para usar sua instância particular do Secure Source Manager, use a CA criada na seção Criar uma identidade de serviço e um pool de autoridades certificadoras.

    1. Para fazer o download da CA, 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 sua instância, transmita o certificado da CA à API Secure Source Manager do plano de dados.

      Por exemplo, o comando a seguir transmite o certificado da CA root-cert.pem para a API Secure Source Manager para listar repositórios na instância particular my-instance no local 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
      

    A seguir