Les instances Private Service Connect n'exposent aucun point de terminaison sur 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 de manière privée à des services gérés 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 Google Cloud client, 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 chaque entreprise.
Avant de commencer
-
Connectez-vous à votre compte Google.
Si vous n'en possédez pas déjà un, vous devez en créer un.
-
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.-
Installez la Google Cloud CLI.
-
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.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
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.-
Installez la Google Cloud CLI.
-
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.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init
Rôles requis
Pour obtenir les autorisations nécessaires pour créer une instance Private Service Connect Secure Source Manager, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Rôle Administrateur Access Context Manager (
roles/accesscontextmanager.policyAdmin) sur l'organisation -
Rôle Propriétaire de l'instance (
roles/securesourcemanager.instanceOwner) sur l'instance -
Pour créer une identité de service et un pool d'autorités de certification :
Rôle Gestionnaire des opérations CA Service (
roles/privateca.caManager) sur l'organisation
Créer une identité de service et un pool d'autorités de certification
Cette section explique comment utiliser votre propre certificat CA. Vous devez utiliser votre propre certificat CA si vous prévoyez d'utiliser des domaines personnalisés avec votre instance privée. Pour utiliser un certificat géré sans domaines personnalisés,
il vous suffit d'exécuter la
gcloud source-manager instances create
commande sans créer d'identité de service ni de pool d'autorités de certification. GooglePour en savoir plus, consultez Créer une instance Private Service Connect Secure Source Manager.
Si vous utilisez votre propre certificat CA, vous devez spécifier un nom de pool d'autorités de certification lorsque vous créez une instance Secure Source Manager privée. Une requête de signature du certificat SSL HTTPS de l'instance est envoyée au pool d'autorités de certification.
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_IDoù 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.comoù
service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.comcorrespond à l'agent de service Secure Source Manager et PROJECT_NUM est le numéro de votre projet.Créez un pool d'autorités de certification avec les demandes de certificat basées sur la requête de signature de certificat activées.
Créez une autorité de certification. Vous pouvez créer une autorité de certification racine ou subordonnée en fonction de vos besoins.
- Pour créer une autorité de certification racine, suivez les instructions de la section Créer une autorité de certification racine.
- Pour créer une autorité de certification subordonnée à partir d'une autorité de certification parente dans Google Cloud, suivez les instructions de la section Créer une autorité de certification subordonnée
- Pour créer une autorité de certification subordonnée à partir d'une autorité de certification externe, suivez les instructions de la section Créer une autorité de certification subordonnée à partir d'une autorité de certification externe.
Pour en savoir plus sur les différences entre les autorités de certification racines et subordonnées, consultez Déterminer les paramètres de l'autorité de certification.
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_IDRemplacez 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'autorités de certification.
- PROJECT_NUMBER par le numéro du projet dans lequel Secure Source Manager est activé. Pour trouver le numéro de projet, consultez 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 Private Service Connect Secure Source Manager
Vous pouvez attribuer des domaines personnalisés à votre instance privée pour les points de terminaison HTML, API, Git HTTP et Git SSH. Les domaines personnalisés nécessitent votre propre certificat CA. Par conséquent, vous devez fournir un pool d'autorités de certification lorsque vous créez une instance avec des domaines personnalisés. Vous ne pouvez configurer des domaines personnalisés que lors de la création de l'instance à l'aide de l'API. Vous ne pouvez pas les modifier une fois l'instance créée.
gcloud
Créez une instance Private Service Connect avec la commande suivante :
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
Remplacez les éléments suivants :
- INSTANCE_ID par le nom que vous souhaitez donner à l'instance.
- LOCATION par la région dans laquelle vous souhaitez créer l'instance. Pour connaître les emplacements compatibles, consultez Emplacements.
- PROJECT_ID par le nom du projet dans lequel vous souhaitez créer une instance.
- CA_PROJECT par le nom du projet de pool d'autorités de certification. Obligatoire si vous utilisez votre propre certificat CA.
- CA_LOCATION par la région dans laquelle vous avez créé le pool d'autorités de certification. Obligatoire si vous utilisez votre propre certificat CA.
- CA_POOL_NAME par le nom du pool d'autorités de certification. Obligatoire si vous utilisez votre propre certificat CA.
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","custom_host_config":{"api":"API_CUSTOM_DOMAIN", "html":"HTML_CUSTOM_DOMAIN", "git_ssh":"GIT_SSH_CUSTOM_DOMAIN", "git_http":"GIT_HTTP_CUSTOM_DOMAIN"}}}'
Remplacez les éléments suivants :
- INSTANCE_ID par le nom que vous souhaitez donner à l'instance.
- LOCATION par la région dans laquelle vous souhaitez créer l'instance. Pour connaître les emplacements compatibles, consultez Emplacements.
- PROJECT_ID par le nom du projet dans lequel vous souhaitez créer une instance.
- CA_PROJECT par le nom du projet de pool d'autorités de certification. Obligatoire si vous utilisez votre propre certificat CA ou des domaines personnalisés.
- CA_LOCATION par la région dans laquelle vous avez créé le pool d'autorités de certification. Obligatoire si vous utilisez votre propre certificat CA ou des domaines personnalisés.
- CA_POOL_NAME par le nom du pool d'autorités de certification. Obligatoire si vous utilisez votre propre certificat CA ou des domaines personnalisés.
- API_CUSTOM_DOMAIN par votre domaine personnalisé pour l'accès à l'API, par exemple
api.source.example.com. Obligatoire uniquement si vous utilisez des domaines personnalisés. - HTML_CUSTOM_DOMAIN par votre domaine personnalisé pour l'accès à l'interface utilisateur Web, par exemple
source.example.com. Obligatoire uniquement si vous utilisez des domaines personnalisés. - GIT_SSH_CUSTOM_DOMAIN par votre domaine personnalisé pour l'accès Git SSH, par exemple
ssh.source.example.com. Obligatoire uniquement si vous utilisez des domaines personnalisés. - GIT_HTTP_CUSTOM_DOMAIN par votre domaine personnalisé pour l'accès Git HTTP, par exemple
git.source.example.com. Obligatoire uniquement si vous utilisez des domaines personnalisés.
Terraform
Pour créer une instance Private Service Connect avec Terraform, utilisez la
google_secure_source_manager_instance
ressource avec le private_config.is_private champ défini sur true.
Une opération de création d'instance de longue durée démarre. La création de l'instance prend 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
où projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e correspond à OPERATION_NAME.
Vous avez besoin de OPERATION_NAME pour vérifier l'état de l'opération.
Pour vérifier l'état de l'opération, exécutez la commande suivante :
gcloud source-manager operations describe OPERATION_NAME \
--region=LOCATION
Remplacez les éléments suivants :
- OPERATION_NAME par le nom de l'opération dans la réponse de votre commande de création.
- LOCATION par la région dans laquelle vous souhaitez créer l'instance. Pour connaître les emplacements compatibles, consultez 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 le résultat.
Accéder à l'instance privée
Vous pouvez accéder à votre instance Private Service Connect en créant des points de terminaison Private Service Connect basés sur des règles de transfert ou en créant 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 Google Cloud services tels que Cloud Build, mais ils sont plus complexes et entraînent une facturation supplémentaire.
Les points de terminaison Private Service Connect basés sur des règles de transfert sont plus simples et moins coûteux. Toutefois, vous ne pouvez pas vous connecter à Cloud Build ni à d'autres Google Cloud services.
Pour configurer des backends Private Service Connect basés sur des équilibreurs de charge pour votre instance Private Service Connect et la 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
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.
Pour obtenir les URI des rattachements de service HTTP et SSH de votre instance Secure Source Manager, exécutez la commande suivante :
gcloud source-manager instances describe INSTANCE_ID \ --region=LOCATIONRemplacez les éléments suivants :
- INSTANCE_ID par le nom de votre instance. Pour lister
les instances dans une région donnée, exécutez
gcloud source-manager instances list --region=LOCATION. - LOCATION par l'emplacement de votre instance. Pour connaître les emplacements compatibles, consultez Emplacements.
Le résultat inclut les éléments suivants :
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-psccorrespond à l'URI du rattachement de service HTTP de votre instance.projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psccorrespond à l'URI du rattachement de service SSH de votre instance.
- INSTANCE_ID par le nom de votre instance. Pour lister
les instances dans une région donnée, exécutez
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 manuellement le DNS. Si vous avez configuré des domaines personnalisés pour votre instance, créez des enregistrements DNS qui mappent vos domaines personnalisés aux adresses IP internes des rattachements de service. Sinon, utilisez les noms d'hôte dans le champ
hostConfigde l'instance :- Mappez la valeur de
hostConfig.html(ou votre domaine personnalisé HTML),hostConfig.api(ou votre domaine personnalisé API) ethostConfig.gitHttp(ou votre domaine personnalisé Git HTTP) à l'adresse IP interne du rattachement de service HTTP. - Mappez la valeur de
hostConfig.ssh(ou votre domaine personnalisé Git SSH) à l'adresse IP interne du rattachement de service SSH.
Par exemple, dans l'exemple de résultat précédent, la valeur de
Google CloudhostConfig.htmlestmy-project-012345678901.us-central1.p.sourcemanager.dev.- Mappez la valeur de
Authentification Git avec des domaines personnalisés
Si vous utilisez des domaines personnalisés pour votre instance privée, effectuez la configuration côté client suivante sur chaque machine pour utiliser Git via HTTPS.
Cette configuration connecte Git à l'assistant d'identifiants gcloud pour s'authentifier auprès de votre domaine personnalisé.
Configurez Git pour qu'il utilise l'assistant
gcloudpour votre domaine Git HTTP personnalisé :git config --global credential.'https://GIT_HTTP_CUSTOM_DOMAIN'.helper gcloud.shRemplacez GIT_HTTP_CUSTOM_DOMAIN par le domaine personnalisé que vous avez configuré pour l'accès Git HTTP.
Autorisez votre domaine personnalisé dans
gcloud:gcloud config set core/credentialed_hosted_repo_domains GIT_HTTP_CUSTOM_DOMAINPour autoriser plusieurs domaines, fournissez-les sous la forme d'une liste d'éléments séparés par une virgule.
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, utilisez 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.
Pour télécharger votre autorité de certification, exécutez la commande suivante :
gcloud privateca pools get-ca-certs CA_POOL \ --location LOCATION \ --output-file=root-cert.pem \ --project PROJECTPour effectuer des appels d'API à votre instance, transmettez le certificat CA à l'API Secure Source Manager du plan de données.
Par exemple, la commande suivante transmet le certificat CA
root-cert.pemà l'API Secure Source Manager pour lister les dépôts dans l'instance privéemy-instanceà l'emplacementus-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
Étape suivante
- Connecter Cloud Build à une instance Private Service Connect Secure Source Manager.
- Configurer Secure Source Manager dans un périmètre VPC Service Controls.