Créer une instance Secure Source Manager Private Service Connect

Cette page explique comment créer une instance Private Service Connect.

Les instances Private Service Connect n'exposent aucun point de terminaison à l'Internet public. Lorsque vous créez une instance Private Service Connect, des points de terminaison sont créés pour fournir un accès SSH (Git) et HTTPS (Git, interface Web, API) à l'instance. Les points de terminaison doivent être associés à des adresses IP sur votre réseau privé. Tout le trafic vers et depuis l'instance Private Service Connect transite par les points de terminaison Private Service Connect.

Pour en savoir plus sur l'utilisation de Private Service Connect pour accéder à des services gérés de manière privée depuis un réseau VPC, consultez Private Service Connect.

Secure Source Manager est un service à locataire unique. Une seule instance Secure Source Manager ne doit inclure que les utilisateurs d'un seul clientGoogle Cloud , sauf si plusieurs entreprises ayant une relation contractuelle doivent utiliser une seule instance pour collaborer.

Si vous travaillez avec plusieurs entreprises et que vous souhaitez collaborer avec elles sur le code source, nous vous recommandons de créer une instance distincte pour chacune d'elles.

Avant de commencer

  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 vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  6. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    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 vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  11. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  12. Installez le composant beta de Google Cloud CLI :
    gcloud components install beta
  13. Rôles requis

    Pour obtenir les autorisations nécessaires pour créer une instance Secure Source Manager Private Service Connect, demandez à votre administrateur de vous accorder les rôles IAM suivants :

    Créer une identité de service et un pool d'autorités de certification

    Cette section explique ce que vous devez faire si vous utilisez votre propre certificat d'autorité de certification. Pour utiliser un certificat géré par Google, il vous suffit d'exécuter la commandegcloud beta source-manager instances create sans créer d'identité de service ni de pool d'autorités de certification.

    Si vous utilisez votre propre certificat d'autorité de certification au lieu d'un certificat géré parGoogle, vous devez spécifier le nom d'un pool d'autorités de certification lorsque vous créez une instance Secure Source Manager privée. Une demande de signature du certificat SSL HTTPS de l'instance est envoyée au pool d'autorités de certification.

    1. Exécutez la commande suivante pour créer une identité de service pour l'API Secure Source Manager dans votre projet :

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

      PROJECT_ID correspond à l'ID de votre projet.

      Le résultat ressemble à ce qui suit :

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

      service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.com est l'agent de service Secure Source Manager et PROJECT_NUM est le numéro de votre projet.

    2. Créez un pool d'autorités de certification avec les demandes de certificat basées sur les requêtes de signature de certificat autorisées.

    3. Créez une autorité de certification. Vous pouvez créer une autorité de certification racine ou subordonnée en fonction de vos besoins.

      Pour en savoir plus sur les différences entre les autorités de certification racine et subordonnées, consultez Déterminer les paramètres de l'autorité de certification.

    4. Accordez à l'identité de service de l'API Secure Source Manager les autorisations nécessaires pour demander de nouveaux certificats dans le pool d'autorités de certification :

      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
      

      Remplacez les éléments suivants :

      • CA_POOL_NAME par le nom que vous avez donné à votre pool d'autorités de certification.
      • CA_LOCATION par la région ou la zone de votre pool d'AC.
      • PROJECT_NUMBER par le numéro du projet sur lequel Secure Source Manager est activé. Pour trouver le numéro de projet, suivez les instructions de la section Identifier des projets.
      • CA_PROJECT_ID par l'ID du projet dans lequel vous avez créé le pool d'autorités de certification.

    Créer une instance Secure Source Manager Private Service Connect

    gcloud

    Créez une instance Private Service Connect avec la commande suivante :

    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
    

    Remplacez les éléments suivants :

    • INSTANCE_ID par le nom que vous souhaitez attribuer à l'instance.
    • LOCATION par la région dans laquelle vous souhaitez créer l'instance. Pour connaître les emplacements acceptés, consultez la page Emplacements.
    • PROJECT_ID par le nom du projet dans lequel vous souhaitez créer une instance.
    • CA_PROJECT avec le nom du projet de pool d'autorités de certification, uniquement si vous utilisez votre propre certificat d'autorité de certification.
    • CA_LOCATION avec la région dans laquelle vous avez créé le pool d'autorités de certification, uniquement si vous utilisez votre propre certificat d'autorité de certification.
    • CA_POOL_NAME avec le nom du pool d'autorités de certification, uniquement si vous utilisez votre propre certificat d'autorité de certification.

    API

    Créez une instance Private Service Connect avec la commande suivante :

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

    Remplacez les éléments suivants :

    • INSTANCE_ID par le nom que vous souhaitez attribuer à l'instance.
    • LOCATION par la région dans laquelle vous souhaitez créer l'instance. Pour connaître les emplacements acceptés, consultez la page Emplacements.
    • PROJECT_ID par le nom du projet dans lequel vous souhaitez créer une instance.
    • CA_PROJECT avec le nom du projet de pool d'autorités de certification, uniquement si vous utilisez votre propre certificat d'autorité de certification.
    • CA_LOCATION avec la région dans laquelle vous avez créé le pool d'autorités de certification, uniquement si vous utilisez votre propre certificat d'autorité de certification.
    • CA_POOL_NAME avec le nom du pool d'autorités de certification, uniquement si vous utilisez votre propre certificat d'autorité de certification.

    Une opération de longue durée de création d'instance démarre. La création de l'instance peut prendre jusqu'à 60 minutes. Le résultat ressemble à ce qui suit :

    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
    

    projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e est le OPERATION_NAME.

    Notez le OPERATION_NAME, car vous en aurez besoin pour vérifier l'état de l'opération.

    Pour vérifier l'état de l'opération, exécutez la commande suivante :

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

    Remplacez les éléments suivants :

    • OPERATION_NAME par le nom de l'opération à partir de la réponse de votre commande de création.
    • LOCATION par la région dans laquelle vous souhaitez créer l'instance. Pour en savoir plus sur les emplacements acceptés, consultez la page Emplacements.

    Une fois l'instance créée, les points de terminaison Private Service Connect httpServiceAttachment et sshServiceAttachment, ainsi que les noms d'hôte pour html, api, gitHttp et gitSsh, sont listés dans la sortie.

    Accéder à l'instance privée

    Pour accéder à votre instance Private Service Connect, vous pouvez créer des points de terminaison Private Service Connect basés sur des règles de transfert ou des backends Private Service Connect basés sur des équilibreurs de charge.

    Les backends Private Service Connect basés sur des équilibreurs de charge sont plus flexibles et vous permettent de vous intégrer à d'autres services Google Cloud tels que Cloud Build, mais ils sont plus complexes et entraînent des frais supplémentaires.

    Les points de terminaison Private Service Connect basés sur des règles de transfert sont plus simples et moins coûteux, mais vous ne pouvez pas vous connecter à Cloud Build ni à d'autres servicesGoogle Cloud .

    Pour configurer des backends Private Service Connect basés sur des équilibreurs de charge pour votre instance Private Service Connect et les connecter à Cloud Build, consultez Connecter Cloud Build à une instance Private Service Connect.

    Configurer des points de terminaison Private Service Connect basés sur des règles de transfert

    1. Pour créer des points de terminaison Private Service Connect, suivez les instructions de la section Accéder aux services publiés via des points de terminaison.

    2. Pour obtenir les URI des pièces jointes de service HTTP et SSH de votre instance Secure Source Manager, exécutez la commande suivante :

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

      Remplacez les éléments suivants :

      • INSTANCE_ID par le nom de votre instance. Pour lister les instances dans une région donnée, vous pouvez exécuter gcloud beta source-manager instances list --region=LOCATION.
      • LOCATION par l'emplacement de votre instance. Pour en savoir plus sur les emplacements acceptés, consultez la page Emplacements.

      Le résultat se présente comme suit :

      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'
      

      Où :

      • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/http-psc est l'URI du rattachement de service HTTP de votre instance.
      • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psc est l'URI de rattachement de service SSH de votre instance.
    3. Après avoir créé les points de terminaison Private Service Connect, vous devez configurer des enregistrements DNS privés. Pour savoir comment configurer des enregistrements DNS privés, consultez Configurer le DNS manuellement.

      1. Mappez la valeur de hostConfig.html, hostConfig.api et hostConfig.gitHttp à l'adresse IP interne de l'attachement de service HTTP.
      2. Mappez la valeur de hostConfig.ssh à l'adresse IP interne de l'attachement de service SSH.

      Par exemple, dans l'exemple de résultat précédent, la valeur de hostConfig.html est my-project-012345678901.us-central1.p.sourcemanager.dev.

    Utiliser l'autorité de certification avec l'API Secure Source Manager

    Secure Source Manager comporte un plan de contrôle et un plan de données. Les points de terminaison du plan de données sont hébergés directement par votre instance Secure Source Manager. Vous devez donc vous connecter au nom d'hôte de l'API de votre instance pour y accéder.

    Pour utiliser votre instance Secure Source Manager privée, vous devez utiliser l'autorité de certification que vous avez créée dans la section Créer une identité de service et un pool d'autorités de certification.

    1. Pour télécharger votre CA, exécutez la commande suivante :

      gcloud privateca pools get-ca-certs CA_POOL \
          --location LOCATION \
          --output-file=root-cert.pem \
          --project PROJECT
      
    2. Pour effectuer des appels d'API à votre instance, transmettez le certificat de l'autorité de certification à l'API Secure Source Manager du plan de données.

      Par exemple, la commande suivante transmet le certificat de l'autorité de certification root-cert.pem à l'API Secure Source Manager afin de lister les dépôts dans l'instance privée my-instance à l'emplacement 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
      

    Étapes suivantes