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
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Secure Source Manager API.
-
Install the Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Secure Source Manager API.
-
Install the Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init
- Instale o componente
beta
da Google Cloud CLI:gcloud components install beta
-
Papel de administrador do Access Context Manager (
roles/accesscontextmanager.policyAdmin
) na organização -
Papel de proprietário da instância (
roles/sercuresourcemanager.instanceOwner
) na instância -
Para criar uma identidade de serviço e um pool de autoridade certificadora:
Gerente de operações do serviço de CA (
roles/privateca.caManager
) na organização 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 ePROJECT_NUM
é o número do seu projeto.Crie um pool de autoridade certificadora (CA) com solicitações de certificado baseadas em CSR permitidas.
Crie uma CA. É possível criar uma AC raiz ou subordinada, dependendo das suas necessidades.
- Para criar uma CA raiz, siga as instruções em Criar uma CA raiz.
- Para criar uma CA subordinada de uma CA principal em Google Cloud, siga as instruções em Criar uma CA subordinada
- Para criar uma CA subordinada a partir de uma CA externa, siga as instruções em Criar uma CA subordinada a partir de uma CA externa.
Para mais informações sobre as diferenças entre ACs raiz e subordinadas, consulte Determinar configurações da autoridade certificadora.
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.
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.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.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.Para criar endpoints do Private Service Connect, siga as instruções em Acessar serviços publicados por meio de endpoints.
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, executegcloud 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.
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.
- Mapeie o valor de
hostConfig.html
,hostConfig.api
ehostConfig.gitHttp
para o endereço IP interno do anexo do serviço HTTP. - 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
.- Mapeie o valor de
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
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 particularmy-instance
no localus-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
- Conecte o Cloud Build a uma instância do Secure Source Manager do Private Service Connect.
- Configure o Secure Source Manager em um perímetro do VPC Service Controls.
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.
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:
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:
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:
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
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.