Crear una instancia de Secure Source Manager de 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 endpoint a Internet público. Cuando creas una instancia de Private Service Connect, se crean endpoints para proporcionar acceso SSH (Git) y HTTPS (Git, interfaz web y API) a la instancia. A los endpoints 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 endpoints de Private Service Connect.

Para obtener más información sobre cómo usar Private Service Connect para acceder a servicios gestionados de forma privada desde una red de VPC, consulta Private Service Connect.

Secure Source Manager es un servicio de un solo inquilino. Una sola instancia de Secure Source Manager solo debe incluir usuarios de un cliente, a menos que varias empresas que tengan una relación contractual necesiten usar una sola instancia para colaborar.Google Cloud

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

Antes de empezar

  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. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud 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.

    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. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

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

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

    Para obtener los permisos que necesitas para crear una instancia de Private Service Connect Secure Source Manager, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:

    Crear una identidad de servicio y un grupo de autoridades de certificación

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

    Si utilizas tu propio certificado de AC en lugar de un certificado gestionado porGoogle, debes especificar el nombre de un grupo de autoridades de certificación (AC) al crear una instancia privada de Secure Source Manager. Se envía una solicitud para firmar el certificado SSL HTTPS de la instancia al grupo de CAs.

    1. Ejecuta el siguiente comando para crear una identidad de servicio para la API Secure Source Manager en tu proyecto:

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

      Donde PROJECT_ID es el ID de tu proyecto.

      El resultado debería ser similar al siguiente:

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

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

    2. Crea un grupo de autoridades de certificación (CA) con solicitudes de certificados basadas en CSR permitidas.

    3. Crea una AC. Puedes crear una AC raíz o una AC subordinada en función de tus necesidades.

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

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

      Haz los cambios siguientes:

      • CA_POOL_NAME con el nombre que le has dado a tu grupo de ACs.
      • CA_LOCATION con la región o la zona de tu grupo de ACs.
      • PROJECT_NUMBER con el número de proyecto en el que está habilitado Secure Source Manager. Para encontrar el número de proyecto, sigue las instrucciones que se indican en el artículo Identificar proyectos.
      • CA_PROJECT_ID por el ID del proyecto en el que has creado el grupo de CAs.

    Crear una instancia de Secure Source Manager de 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
    

    Haz los cambios siguientes:

    • INSTANCE_ID con el nombre que quieras asignar a la instancia.
    • LOCATION con la región en la que quieras crear la instancia. Para ver las ubicaciones admitidas, consulta Ubicaciones.
    • PROJECT_ID con el nombre del proyecto en el que quieras crear una instancia.
    • CA_PROJECT con el nombre del proyecto del grupo de ACs, solo si usas tu propio certificado de AC.
    • CA_LOCATION con la región en la que has creado el grupo de AC, solo si usas tu propio certificado de AC.
    • CA_POOL_NAME con el nombre del grupo de AC, solo si usas tu propio certificado de AC.

    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"}}'
    

    Haz los cambios siguientes:

    • INSTANCE_ID con el nombre que quieras asignar a la instancia.
    • LOCATION con la región en la que quieras crear la instancia. Para ver las ubicaciones admitidas, consulta Ubicaciones.
    • PROJECT_ID con el nombre del proyecto en el que quieras crear una instancia.
    • CA_PROJECT con el nombre del proyecto del grupo de ACs, solo si usas tu propio certificado de AC.
    • CA_LOCATION con la región en la que has creado el grupo de AC, solo si usas tu propio certificado de AC.
    • CA_POOL_NAME con el nombre del grupo de AC, solo si usas tu propio certificado de AC.

    Se inicia una operación de creación de instancias de larga duración. Se tarda hasta 60 minutos en crear la instancia. El resultado debería ser similar al siguiente:

    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
    

    Dónde projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e está el OPERATION_NAME.

    Toma nota del OPERATION_NAME, ya que lo necesitarás para comprobar el estado de la operación.

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

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

    Haz los cambios siguientes:

    • OPERATION_NAME con el nombre de la operación de la respuesta del comando create.
    • LOCATION con la región en la que quieras crear la instancia. Para obtener información sobre las ubicaciones admitidas, consulta Ubicaciones.

    Una vez que se haya creado la instancia, los endpoints de Private Service Connect httpServiceAttachment y sshServiceAttachment, junto con los nombres de host de html, api, gitHttp y gitSsh, se mostrarán en el resultado.

    Acceder a la instancia privada

    Para acceder a tu instancia de Private Service Connect, puedes crear puntos finales de Private Service Connect basados en reglas de reenvío o backends de Private Service Connect basados en balanceadores de carga.

    Los backends de Private Service Connect basados en balanceadores de carga son más flexibles y te permiten integrar otros servicios, como Cloud Build, pero son más complejos y tienen facturación adicional. Google Cloud

    Los puntos finales de Private Service Connect basados en reglas de reenvío son más sencillos 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 carga para tu instancia de Private Service Connect y conectarla a Cloud Build, consulta Conectar Cloud Build a una instancia de Private Service Connect.

    Configurar endpoints de Private Service Connect basados en reglas de reenvío

    1. Para crear puntos finales de Private Service Connect, sigue las instrucciones que se indican en el artículo Acceder a servicios publicados a través de endpoints.

    2. Para obtener los URIs de los archivos adjuntos 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
      

      Haz los cambios siguientes:

      • INSTANCE_ID con el nombre de tu instancia. Para ver las instancias de una región determinada, puedes ejecutar gcloud beta source-manager instances list --region=LOCATION.
      • LOCATION con la ubicación de tu instancia. Para obtener información sobre las ubicaciones admitidas, consulta Ubicaciones.

      La salida es similar a la 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'
      

      Donde:

      • 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 de adjunto de servicio SSH de tu instancia.
    3. Una vez que hayas creado los endpoints de Private Service Connect, debes configurar los registros DNS privados. Para obtener instrucciones sobre cómo configurar registros DNS privados, consulta Configurar DNS manualmente.

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

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

      Google Cloud

    Usar la AC con la API Secure Source Manager

    Secure Source Manager tiene un plano de control y un plano de datos. Tu instancia de Gestor de Fuentes Seguras aloja directamente los endpoints 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 AC que has creado en la sección Crear una identidad de servicio y un grupo de autoridades de certificación.

    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 hacer llamadas a la API de tu instancia, envía el certificado de la CA a la API del plano de datos de Secure Source Manager.

      Por ejemplo, el siguiente comando transfiere el certificado de CA root-cert.pem a la API Secure Source Manager para mostrar los repositorios de 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
      

    Siguientes pasos