Crea una instancia privada de Secure Source Manager con Private Service Connect

En esta página, se describe cómo crear una instancia de Private Service Connect.

Las instancias de Private Service Connect no exponen ningún extremo a la 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. A los extremos se les deben asignar 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 solo cliente deGoogle Cloud , a menos que varias empresas que tengan una relación contractual necesiten usar una sola instancia para colaborar.

Si trabajas con varias empresas y quieres colaborar con ellas en el código fuente, te recomendamos que crees una instancia separada para cada empresa.

Antes de comenzar

  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. Si usas un proveedor de identidad externo (IdP), primero debes acceder a gcloud CLI con tu identidad federada.

  6. Para inicializar gcloud CLI, ejecuta el siguiente 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. Si usas un proveedor de identidad externo (IdP), primero debes acceder a gcloud CLI con tu identidad federada.

  11. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  12. Instala el componente beta de Google Cloud CLI:
    gcloud components install beta
  13. Roles requeridos

    Para obtener los permisos que necesitas para crear una instancia de Secure Source Manager de Private Service Connect, pídele a tu administrador que te otorgue los siguientes roles de IAM:

    Crea una identidad de servicio y un grupo de autoridades certificadoras

    En esta sección, se describe qué hacer si usas tu propio certificado de CA. Para usar un certificado administrado por Google, no necesitas hacer nada más que ejecutar el comando gcloud beta source-manager instances create sin crear una identidad de servicio ni un grupo de CA.

    Si usas tu propio certificado de CA, en lugar de usar un certificado administrado porGoogle, debes especificar un nombre de grupo de autoridades certificadoras (CA) 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.

    1. 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_ID
      

      En el comando anterior, PROJECT_ID es el ID del proyecto.

      El resultado es similar a este:

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

      En el ejemplo anterior, service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.com es el agente de servicio de Secure Source Manager y PROJECT_NUM es tu número de proyecto.

    2. Crea un grupo de autoridades certificadoras (AC) con solicitudes de certificados basadas en CSR permitidas.

    3. Crea una CA. Puedes crear una AC raíz o subordinada según tus necesidades.

      Para obtener más información sobre las diferencias entre las AC raíz y las subordinadas, consulta Cómo determinar la configuración de la autoridad de certificación.

    4. Otorga permisos a la identidad del servicio de la API de Secure Source Manager para solicitar certificados nuevos en el grupo 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
      

      Reemplaza lo siguiente:

      • CA_POOL_NAME por el nombre que le asignaste a tu grupo de CA.
      • CA_LOCATION por la región o zona de tu grupo de CA.
      • PROJECT_NUMBER por el número del proyecto en el que está habilitado Secure Source Manager. Para encontrar el número de proyecto, sigue las instrucciones que se indican en Identifica proyectos.
      • CA_PROJECT_ID por el ID del proyecto en el que creaste el grupo de CA.

    Crea una instancia privada de Secure Source Manager con Private Service Connect

    gcloud

    Crea una instancia de Private Service Connect con el siguiente 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
    

    Reemplaza lo siguiente:

    • INSTANCE_ID por el nombre que deseas darle a la instancia
    • LOCATION por la región en la que deseas crear la instancia. Para conocer las ubicaciones compatibles, consulta Ubicaciones.
    • PROJECT_ID por el nombre del proyecto en el que deseas crear una instancia.
    • CA_PROJECT con el nombre del proyecto del grupo de CA, solo si usas tu propio certificado de CA
    • CA_LOCATION con la región en la que creaste el grupo de CA, solo si usas tu propio certificado de CA
    • CA_POOL_NAME con el nombre del grupo de CA, solo 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"}}'
    

    Reemplaza lo siguiente:

    • INSTANCE_ID por el nombre que deseas darle a la instancia
    • LOCATION por la región en la que deseas crear la instancia. Para conocer las ubicaciones compatibles, consulta Ubicaciones.
    • PROJECT_ID por el nombre del proyecto en el que deseas crear una instancia.
    • CA_PROJECT con el nombre del proyecto del grupo de CA, solo si usas tu propio certificado de CA
    • CA_LOCATION con la región en la que creaste el grupo de CA, solo si usas tu propio certificado de CA
    • CA_POOL_NAME con el nombre del grupo de CA, solo si usas tu propio certificado de CA

    Se inicia una operación de larga duración para crear una instancia. La creación de la instancia tarda hasta 60 minutos. 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
    

    Donde projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e es el OPERATION_NAME.

    Ten en cuenta el OPERATION_NAME, ya que lo necesitarás para verificar el estado de la operación.

    Para verificar el estado de la operación, ejecuta el siguiente comando:

    gcloud beta 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 enumeran en el resultado.

    Accede a la instancia privada

    Para acceder a tu instancia de Private Service Connect, puedes crear extremos de Private Service Connect basados en reglas de reenvío o 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 realizar integraciones con otros servicios de Google Cloud 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, pero no puedes conectarte a Cloud Build ni a otros servicios deGoogle Cloud .

    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

    1. Para crear extremos de Private Service Connect, sigue las instrucciones que se indican en Accede a los servicios publicados a través de extremos.

    2. Para obtener los URI de las vinculaciones de servicio HTTP y SSH de tu instancia de Secure Source Manager, ejecuta el siguiente comando:

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

      Reemplaza lo siguiente:

      • INSTANCE_ID por el nombre de tu instancia Para enumerar las instancias en una región determinada, puedes ejecutar gcloud beta 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 se ve de la manera 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'
      

      Aquí:

      • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/http-psc es el URI del adjunto de servicio HTTP de tu instancia.
      • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psc es el URI del adjunto de servicio SSH de tu instancia.
    3. Después de crear los extremos de Private Service Connect, debes configurar registros DNS privados. Para obtener instrucciones sobre cómo configurar registros DNS privados, consulta Configura DNS de forma manual.

      1. Asigna el valor de hostConfig.html, hostConfig.api y hostConfig.gitHttp a la dirección IP interna de la vinculación del servicio HTTP.
      2. Asigna el valor de hostConfig.ssh a la dirección IP interna de la vinculación del servicio SSH.

      Por ejemplo, en el resultado del ejemplo anterior, el valor de hostConfig.html es my-project-012345678901.us-central1.p.sourcemanager.dev.

    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, debes usar la CA que creaste en la sección Crea un grupo de identidades de servicio y autoridades certificadoras.

    1. Para descargar tu CA, ejecuta el siguiente comando:

      gcloud privateca pools get-ca-certs CA_POOL \
          --location LOCATION \
          --output-file=root-cert.pem \
          --project PROJECT
      
    2. Para realizar llamadas a la API de 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.pem a la API de Secure Source Manager para enumerar los repositorios en la instancia privada my-instance en la ubicación 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
      

    ¿Qué sigue?