Las instancias de Private Service Connect no exponen ningún extremo a Internet pública. Cuando creas una instancia de Private Service Connect, se crean extremos para proporcionar acceso SSH (Git) y HTTPS (Git, interfaz web, API) a la instancia. Los extremos deben tener asignadas direcciones IP en tu red privada. Todo el tráfico hacia y desde la instancia de Private Service Connect pasa por los extremos de Private Service Connect.
Para obtener más información sobre el uso de Private Service Connect para acceder a servicios administrados de forma privada desde una red de VPC, consulta Private Service Connect.
Secure Source Manager es un servicio de usuario único. Una sola instancia de Secure Source Manager solo debe incluir usuarios de un Google Cloud cliente, a menos que varias empresas que tengan una relación contractual necesiten usar una sola instancia para la colaboración.
Si trabajas con varias empresas y deseas colaborar con ellas en el código fuente, te recomendamos que crees una instancia separada para cada empresa.
Antes de comenzar
-
Accede a tu cuenta de Google.
Si todavía no tienes una cuenta, regístrate para obtener una nueva.
-
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
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 theserviceusage.services.enablepermission. Learn how to grant roles.-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
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 theserviceusage.services.enablepermission. Learn how to grant roles.-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
Roles obligatorios
Para obtener los permisos que que necesitas para crear una instancia de Private Service Connect Secure Source Manager, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Rol de administrador de Access Context Manager (
roles/accesscontextmanager.policyAdmin) en la organización -
Rol de propietario de la instancia (
roles/securesourcemanager.instanceOwner) en la instancia -
Para crear una identidad de servicio y un grupo de autoridades certificadoras:
Administrador de operaciones del servicio de CA (
roles/privateca.caManager) en la organización
Crea una identidad de servicio y un grupo de autoridades certificadoras
En esta sección, se describe cómo usar tu propio certificado de CA. Debes usar tu propio certificado de CA si deseas usar dominios personalizados con tu instancia privada. Para usar un certificado administrado por Googlesin dominios personalizados,
no necesitas hacer nada más que ejecutar el
gcloud source-manager instances create
comando sin crear una identidad de servicio ni un grupo de CA. Para obtener más información, consulta Crea una instancia de Private Service Connect Secure Source Manager.
Si usas tu propio certificado de CA, debes especificar un nombre de grupo de autoridades certificadoras (AC) cuando crees una instancia privada de Secure Source Manager. Se envía una solicitud para firmar el certificado SSL HTTPS de la instancia al grupo de CA.
Ejecuta el siguiente comando para crear una identidad de servicio para la API de Secure Source Manager en tu proyecto:
gcloud beta services identity create \ --service=securesourcemanager.googleapis.com \ --project=PROJECT_IDEn el ejemplo anterior, PROJECT_ID es el ID de tu proyecto.
El resultado es similar a este:
Service identity created: service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.comEn el ejemplo anterior,
service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.comes el agente de servicio de Secure Source Managery PROJECT_NUM es el número de tu proyecto.Crea un grupo de autoridades certificadoras (AC) con las solicitudes de certificados basadas en CSR habilitadas.
Crea una CA. Puedes crear una CA raíz o subordinada según tus necesidades.
- Para crear una CA raíz, sigue las instrucciones en Crea una CA raíz.
- Para crear una CA subordinada a partir de una CA superior en Google Cloud, sigue las instrucciones en Crea una CA subordinada
- Para crear una CA subordinada a partir de una CA externa, sigue las instrucciones en Crea una CA subordinada a partir de una CA externa.
Para obtener más información sobre las diferencias entre las CAs raíz y subordinadas, consulta Determina la configuración de la autoridad certificadora.
Otorga los permisos de identidad de servicio de la API de Secure Source Manager para solicitar certificados nuevos en el grupo de CA:
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_IDReemplaza lo siguiente:
- CA_POOL_NAME por el nombre que le diste a tu grupo de CA.
- CA_LOCATION por la región o zona de tu grupo de CA.
- PROJECT_NUMBER por el número de proyecto en el que está habilitado Secure Source Manager. Para ubicar el número de proyecto, consulta Identifica proyectos.
- CA_PROJECT_ID por el ID del proyecto en el que creaste el grupo de CA.
Crea una instancia de Private Service Connect Secure Source Manager
Puedes asignar dominios personalizados a tu instancia privada para los extremos HTML, API, Git HTTP y Git SSH. Los dominios personalizados requieren tu propio certificado de CA. Por lo tanto, debes proporcionar un grupo de CA cuando crees una instancia con dominios personalizados. Solo puedes configurar dominios personalizados durante la creación de la instancia con la API. No puedes modificarlos después de crear la instancia.
gcloud
Crea una instancia de Private Service Connect con el siguiente comando:
gcloud 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
Reemplaza lo siguiente:
- INSTANCE_ID por el nombre que deseas asignar a la instancia.
- LOCATION por la región en la que deseas crear la instancia. Para obtener información sobre las ubicaciones compatibles, consulta Ubicaciones.
- PROJECT_ID por el nombre del proyecto en el que deseas crear una instancia.
- CA_PROJECT por el nombre del proyecto del grupo de CA. Es obligatorio si usas tu propio certificado de CA.
- CA_LOCATION por la región en la que creaste el grupo de CA. Es obligatorio si usas tu propio certificado de CA.
- CA_POOL_NAME por el nombre del grupo de CA. Es obligatorio si usas tu propio certificado de CA.
API
Crea una instancia de Private Service Connect con el siguiente 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","custom_host_config":{"api":"API_CUSTOM_DOMAIN", "html":"HTML_CUSTOM_DOMAIN", "git_ssh":"GIT_SSH_CUSTOM_DOMAIN", "git_http":"GIT_HTTP_CUSTOM_DOMAIN"}}}'
Reemplaza lo siguiente:
- INSTANCE_ID por el nombre que deseas asignar a la instancia.
- LOCATION por la región en la que deseas crear la instancia. Para obtener información sobre las ubicaciones compatibles, consulta Ubicaciones.
- PROJECT_ID por el nombre del proyecto en el que deseas crear una instancia.
- CA_PROJECT por el nombre del proyecto del grupo de CA. Es obligatorio si usas tu propio certificado de CA o dominios personalizados.
- CA_LOCATION por la región en la que creaste el grupo de CA. Es obligatorio si usas tu propio certificado de CA o dominios personalizados.
- CA_POOL_NAME por el nombre del grupo de CA. Es obligatorio si usas tu propio certificado de CA o dominios personalizados.
- API_CUSTOM_DOMAIN por tu dominio personalizado para el acceso a la API, por ejemplo,
api.source.example.com. Solo es obligatorio si usas dominios personalizados. - HTML_CUSTOM_DOMAIN por tu dominio personalizado para el acceso a la IU web, por ejemplo,
source.example.com. Solo es obligatorio si usas dominios personalizados. - GIT_SSH_CUSTOM_DOMAIN por tu dominio personalizado para el acceso a Git SSH, por ejemplo,
ssh.source.example.com. Solo es obligatorio si usas dominios personalizados. - GIT_HTTP_CUSTOM_DOMAIN por tu dominio personalizado para el acceso a Git HTTP, por ejemplo,
git.source.example.com. Solo es obligatorio si usas dominios personalizados.
Terraform
Para crear una instancia de Private Service Connect con Terraform, usa el
google_secure_source_manager_instance
recurso con el private_config.is_private campo establecido en true.
Se inicia una operación de larga duración para crear la instancia. La instancia tarda hasta 60 minutos en crearse. El resultado es similar a este:
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
en el que projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e es el OPERATION_NAME.
Necesitas el OPERATION_NAME para verificar el estado de la operación.
Para verificar el estado de la operación, ejecuta el siguiente comando:
gcloud source-manager operations describe OPERATION_NAME \
--region=LOCATION
Reemplaza lo siguiente:
- OPERATION_NAME por el nombre de la operación de la respuesta del comando create.
- LOCATION por la región en la que deseas crear la instancia. Para obtener información sobre las ubicaciones compatibles, consulta Ubicaciones.
Una vez que se crea la instancia, los extremos de Private Service Connect httpServiceAttachment y sshServiceAttachment, junto con los nombres de host para html, api, gitHttp y gitSsh, se muestran en el resultado.
Accede a la instancia privada
Puedes acceder a tu instancia de Private Service Connect creando extremos de Private Service Connect basados en reglas de reenvío o creando backends de Private Service Connect basados en balanceadores de cargas.
Los backends de Private Service Connect basados en balanceadores de cargas son más flexibles y te permiten integrarlos con otros Google Cloud servicios como Cloud Build, pero son más complejos y tienen facturación adicional.
Los extremos de Private Service Connect basados en reglas de reenvío son más simples y cuestan menos. Sin embargo, no puedes conectarte a Cloud Build ni a otros Google Cloud servicios.
Para configurar backends de Private Service Connect basados en balanceadores de cargas para tu instancia de Private Service Connect y conectarla a Cloud Build, consulta Conecta Cloud Build a una instancia de Private Service Connect.
Configura extremos de Private Service Connect basados en reglas de reenvío
Para crear extremos de Private Service Connect, sigue las instrucciones en Accede a los servicios publicados a través de extremos.
Para obtener los URIs de los adjuntos de servicio HTTP y SSH de tu instancia de Secure Source Manager, ejecuta el siguiente comando:
gcloud source-manager instances describe INSTANCE_ID \ --region=LOCATIONReemplaza lo siguiente:
- INSTANCE_ID por el nombre de tu instancia. Para enumerar
instancias en una región determinada, ejecuta
gcloud source-manager instances list --region=LOCATION. - LOCATION por la ubicación de tu instancia. Para obtener información sobre las ubicaciones compatibles, consulta Ubicaciones.
El resultado incluye lo siguiente:
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'projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/http-psces el URI del adjunto de servicio HTTP de tu instancia.projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psces el URI del adjunto de servicio SSH de tu instancia.
- INSTANCE_ID por el nombre de tu instancia. Para enumerar
instancias en una región determinada, ejecuta
Después de crear los extremos de Private Service Connect, debes configurar los registros DNS privados. Para obtener instrucciones para configurar registros DNS privados, consulta Configura DNS de forma manual. Si configuraste dominios personalizados para tu instancia, crea registros DNS que asignen tus dominios personalizados a las direcciones IP internas de los adjuntos de servicio. De lo contrario, usa los nombres de host en el campo
hostConfigde la instancia:- Asigna el valor de
hostConfig.html(o tu dominio personalizado de HTML),hostConfig.api(o tu dominio personalizado de API) yhostConfig.gitHttp(o tu dominio personalizado de Git HTTP) a la dirección IP interna del adjunto de servicio HTTP. - Asigna el valor de
hostConfig.ssh(o tu dominio personalizado de Git SSH) a la dirección IP interna del adjunto de servicio SSH.
Por ejemplo, en el resultado del ejemplo anterior, el valor de
hostConfig.htmlesmy-project-012345678901.us-central1.p.sourcemanager.dev.- Asigna el valor de
Autenticación de Git con dominios personalizados
Si usas dominios personalizados para tu instancia privada, realiza la siguiente configuración del cliente en cada máquina para usar Git a través de HTTPS.
Esta configuración conecta Git con el auxiliar de credenciales gcloud para autenticar tu dominio personalizado.
Configura Git para usar el auxiliar
gcloudpara tu dominio HTTP de Git personalizado:git config --global credential.'https://GIT_HTTP_CUSTOM_DOMAIN'.helper gcloud.shReemplaza GIT_HTTP_CUSTOM_DOMAIN por el dominio personalizado que configuraste para el acceso a Git HTTP.
Autoriza tu dominio personalizado en
gcloud:gcloud config set core/credentialed_hosted_repo_domains GIT_HTTP_CUSTOM_DOMAINPara autorizar varios dominios, proporciónalos como una lista separada por comas.
Usa la CA con la API de Secure Source Manager
Secure Source Manager tiene un plano de control y un plano de datos. Tu instancia de Secure Source Manager aloja directamente los extremos del plano de datos, por lo que debes conectarte al nombre de host de la API de tu instancia para acceder a ellos.
Para usar tu instancia privada de Secure Source Manager, usa la CA que creaste en la sección Crea una identidad de servicio y un grupo de autoridades certificadoras.
Para descargar tu CA, ejecuta el siguiente comando:
gcloud privateca pools get-ca-certs CA_POOL \ --location LOCATION \ --output-file=root-cert.pem \ --project PROJECTPara realizar llamadas a la API a tu instancia, pasa el certificado de CA a la API de Secure Source Manager del plano de datos.
Por ejemplo, el siguiente comando pasa el certificado de CA
root-cert.pema la API de Secure Source Manager para enumerar los repositorios en la instancia privadamy-instanceen la ubicaciónus-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
¿Qué sigue?
- Conecta Cloud Build a una instancia de Private Service Connect Secure Source Manager.
- Configura Secure Source Manager en un perímetro de Controles del servicio de VPC.