Private Service Connect-Instanzen machen keine Endpunkte im öffentlichen Internet verfügbar. Wenn Sie eine Private Service Connect-Instanz erstellen, werden Endpunkte erstellt, um SSH- (Git) und HTTPS-Zugriff (Git, Web-UI, API) auf die Instanz zu ermöglichen. Den Endpunkten müssen IP-Adressen in Ihrem privaten Netzwerk zugewiesen werden. Der gesamte Traffic zur und von der Private Service Connect-Instanz wird über die Private Service Connect-Endpunkte geleitet.
Weitere Informationen zur Verwendung von Private Service Connect für den Zugriff auf verwaltete Dienste aus einem VPC-Netzwerk finden Sie unter Private Service Connect.
Secure Source Manager ist ein Dienst für einzelne Mandanten. Eine einzelne Secure Source Manager-Instanz sollte nur Nutzer eines Google Cloud Kunden umfassen, es sei denn, mehrere Unternehmen mit einer vertraglichen Beziehung müssen eine einzelne Instanz für die Zusammenarbeit verwenden.
Wenn Sie mit mehreren Unternehmen zusammenarbeiten und mit ihnen gemeinsam an Quellcode arbeiten möchten, empfehlen wir, für jedes Unternehmen eine separate Instanz zu erstellen.
Hinweis
-
Melden Sie sich bei Ihrem Google-Konto an.
Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.
-
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.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
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.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen einer Private Service Connect Secure Source Manager-Instanz benötigen:
- Rolle „Access Context Manager-Administrator“ (
roles/accesscontextmanager.policyAdmin) für die Organisation - Rolle „Instanzinhaber“ (
roles/securesourcemanager.instanceOwner) für die Instanz -
Rolle „CA Service Operation Manager“ (
roles/privateca.caManager) für die Organisation, um eine Dienstidentität und einen CA-Pool zu erstellen
Dienstidentität und CA-Pool erstellen
In diesem Abschnitt wird beschrieben, wie Sie Ihr eigenes CA-Zertifikat verwenden. Sie müssen Ihr eigenes CA-Zertifikat verwenden, wenn Sie benutzerdefinierte Domains mit Ihrer privaten Instanz verwenden möchten. Wenn Sie ein von Google verwaltetes Zertifikat ohne benutzerdefinierte Domains verwenden möchten,
müssen Sie nichts weiter tun, als den
gcloud source-manager instances create
Befehl auszuführen, ohne eine Dienstidentität und einen CA-Pool zu erstellen. GoogleWeitere Informationen finden Sie unter Private Service Connect Secure Source Manager-Instanz erstellen.
Wenn Sie Ihr eigenes CA-Zertifikat verwenden, müssen Sie beim Erstellen einer privaten Secure Source Manager-Instanz einen CA-Pool-Namen angeben. Eine Anfrage zum Signieren des HTTPS-SSL-Zertifikats der Instanz wird an den CA-Pool gesendet.
Führen Sie den folgenden Befehl aus, um eine Dienstidentität für die Secure Source Manager API in Ihrem Projekt zu erstellen:
gcloud beta services identity create \ --service=securesourcemanager.googleapis.com \ --project=PROJECT_IDDabei ist PROJECT_ID Ihre Projekt-ID.
Die Ausgabe sieht etwa so aus:
Service identity created: service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.comDabei ist
service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.comder Secure Source Manager-Dienst-Agent und PROJECT_NUM Ihre Projektnummer.Erstellen Sie einen CA-Pool (Certificate Authority, Zertifizierungsstelle) bei dem CSR-basierte Zertifikatsanfragen aktiviert sind.
Erstellen Sie eine CA. Je nach Bedarf können Sie eine Stamm-CA oder eine untergeordnete CA erstellen.
- Folgen Sie der Anleitung unter Stamm-Zertifizierungsstelle erstellen, um eine Stamm-Zertifizierungsstelle zu erstellen.
- Folgen Sie der Anleitung unter Untergeordnete CA erstellen, um eine untergeordnete CA aus einer übergeordneten CA in Google Cloudzu erstellen.
- Folgen Sie der Anleitung unter Untergeordnete CA aus einer externen CA erstellen, um eine untergeordnete CA aus einer externen CA zu erstellen.
Weitere Informationen zu den Unterschieden zwischen Stamm-CAs und untergeordneten CAs, siehe Einstellungen für Zertifizierungsstellen festlegen.
Gewähren Sie der Dienstidentität der Secure Source Manager API Berechtigungen, um neue Zertifikate im CA-Pool anzufordern:
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_IDErsetzen Sie Folgendes:
- CA_POOL_NAME durch den Namen, den Sie Ihrem CA-Pool gegeben haben.
- CA_LOCATION durch die Region oder Zone Ihres CA-Pools.
- PROJECT_NUMBER durch die Projektnummer des Projekts, in dem Secure Source Manager aktiviert ist. Informationen zum Ermitteln der Projektnummer finden Sie unter Projekte identifizieren.
- CA_PROJECT_ID durch die Projekt-ID des Projekts, in dem Sie den CA-Pool erstellt haben.
Private Service Connect Secure Source Manager-Instanz erstellen
Sie können Ihrer privaten Instanz benutzerdefinierte Domains für die HTML-, API-, Git HTTP- und Git SSH-Endpunkte zuweisen. Für benutzerdefinierte Domains ist ein eigenes CA-Zertifikat erforderlich. Daher müssen Sie beim Erstellen einer Instanz mit benutzerdefinierten Domains einen CA-Pool angeben. Sie können benutzerdefinierte Domains nur während der Instanzerstellung über die API konfigurieren. Nachdem die Instanz erstellt wurde, können Sie sie nicht mehr ändern.
gcloud
Erstellen Sie mit dem folgenden Befehl eine Private Service Connect-Instanz:
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
Ersetzen Sie Folgendes:
- INSTANCE_ID durch den Namen, den Sie der Instanz geben möchten.
- LOCATION durch die Region, in der Sie die Instanz erstellen möchten. Informationen zu unterstützten Standorten finden Sie unter Standorte.
- PROJECT_ID durch den Namen des Projekts, in dem Sie eine Instanz erstellen möchten.
- CA_PROJECT durch den Namen des CA-Pool-Projekts. Erforderlich, wenn Sie Ihr eigenes CA-Zertifikat verwenden.
- CA_LOCATION durch die Region, in der Sie den CA-Pool erstellt haben. Erforderlich, wenn Sie Ihr eigenes CA-Zertifikat verwenden.
- CA_POOL_NAME durch den Namen des CA-Pools. Erforderlich, wenn Sie Ihr eigenes CA-Zertifikat verwenden.
API
Erstellen Sie mit dem folgenden Befehl eine Private Service Connect-Instanz:
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"}}}'
Ersetzen Sie Folgendes:
- INSTANCE_ID durch den Namen, den Sie der Instanz geben möchten.
- LOCATION durch die Region, in der Sie die Instanz erstellen möchten. Informationen zu unterstützten Standorten finden Sie unter Standorte.
- PROJECT_ID durch den Namen des Projekts, in dem Sie eine Instanz erstellen möchten.
- CA_PROJECT durch den Namen des CA-Pool-Projekts. Erforderlich, wenn Sie Ihr eigenes CA-Zertifikat oder benutzerdefinierte Domains verwenden.
- CA_LOCATION durch die Region, in der Sie den CA-Pool erstellt haben. Erforderlich, wenn Sie Ihr eigenes CA-Zertifikat oder benutzerdefinierte Domains verwenden.
- CA_POOL_NAME durch den Namen des CA-Pools. Erforderlich, wenn Sie Ihr eigenes CA-Zertifikat oder benutzerdefinierte Domains verwenden.
- API_CUSTOM_DOMAIN durch Ihre benutzerdefinierte Domain für den API-Zugriff, z. B.
api.source.example.com. Nur erforderlich, wenn Sie benutzerdefinierte Domains verwenden. - HTML_CUSTOM_DOMAIN durch Ihre benutzerdefinierte Domain für den Zugriff auf die Web-UI, z. B.
source.example.com. Nur erforderlich, wenn Sie benutzerdefinierte Domains verwenden. - GIT_SSH_CUSTOM_DOMAIN durch Ihre benutzerdefinierte Domain für den Git SSH-Zugriff, z. B.
ssh.source.example.com. Nur erforderlich, wenn Sie benutzerdefinierte Domains verwenden. - GIT_HTTP_CUSTOM_DOMAIN durch Ihre benutzerdefinierte Domain für den Git HTTP-Zugriff, z. B.
git.source.example.com. Nur erforderlich, wenn Sie benutzerdefinierte Domains verwenden.
Terraform
Verwenden Sie die
google_secure_source_manager_instance
Ressource mit dem private_config.is_private Feld auf true, um eine Private Service Connect-Instanz mit Terraform zu erstellen.
Ein Vorgang mit langer Ausführungszeit zum Erstellen der Instanz wird gestartet. Das Erstellen der Instanz dauert bis zu 60 Minuten. Die Ausgabe sieht etwa so aus:
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
Dabei ist projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e der OPERATION_NAME.
Sie benötigen den OPERATION_NAME, um den Status des Vorgangs zu prüfen.
Führen Sie den folgenden Befehl aus, um den Status des Vorgangs zu prüfen:
gcloud source-manager operations describe OPERATION_NAME \
--region=LOCATION
Ersetzen Sie Folgendes:
- OPERATION_NAME durch den Vorgangsnamen aus der Antwort auf Ihren Erstellungsbefehl.
- LOCATION durch die Region, in der Sie die Instanz erstellen möchten. Informationen zu unterstützten Standorten finden Sie unter Standorte.
Nachdem die Instanz erstellt wurde, werden in der Ausgabe die Private Service Connect-Endpunkte httpServiceAttachment und sshServiceAttachment sowie die Hostnamen für html, api, gitHttp und gitSsh aufgeführt.
Auf die private Instanz zugreifen
Sie können auf Ihre Private Service Connect-Instanz zugreifen, indem Sie Private Service Connect-Endpunkte basierend auf Weiterleitungsregeln oder Private Service Connect-Back-Ends basierend auf Load Balancern erstellen.
Private Service Connect-Back-Ends, die auf Load Balancern basieren, sind flexibler und ermöglichen die Integration mit anderen Diensten wie Cloud Build, sind aber komplexer und verursachen zusätzliche Kosten. Google Cloud
Private Service Connect-Endpunkte, die auf Weiterleitungsregeln basieren, sind einfacher und kostengünstiger. Sie können jedoch keine Verbindung zu Cloud Build oder anderen Google Cloud Diensten herstellen.
Informationen zum Einrichten von Private Service Connect-Back-Ends, die auf Load Balancern basieren für Ihre Private Service Connect-Instanz und zum Herstellen einer Verbindung zu Cloud Build finden Sie unter Cloud Build mit einer Private Service Connect-Instanz verbinden.
Private Service Connect-Endpunkte basierend auf Weiterleitungsregeln einrichten
Folgen Sie der Anleitung unter Zugriff auf veröffentlichte Dienste über Endpunkte, um Private Service Connect-Endpunkte zu erstellen.
Führen Sie den folgenden Befehl aus, um die URIs für die HTTP- und SSH-Dienstanhänge Ihrer Secure Source Manager-Instanz abzurufen:
gcloud source-manager instances describe INSTANCE_ID \ --region=LOCATIONErsetzen Sie Folgendes:
- INSTANCE_ID durch den Namen Ihrer Instanz. Führen Sie
gcloud source-manager instances list --region=LOCATIONaus, um Instanzen in einer bestimmten Region aufzulisten. - LOCATION durch den Standort Ihrer Instanz. Informationen zu unterstützten Standorten finden Sie unter Standorte.
Die Ausgabe enthält:
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-pscist der URI des HTTP-Dienstanhangs Ihrer Instanz.projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-pscist der URI des SSH-Dienstanhangs Ihrer Instanz.
- INSTANCE_ID durch den Namen Ihrer Instanz. Führen Sie
Nachdem Sie die Private Service Connect-Endpunkte erstellt haben, müssen Sie private DNS-Einträge einrichten. Eine Anleitung zum Einrichten privater DNS-Einträge finden Sie unter DNS manuell konfigurieren. Wenn Sie benutzerdefinierte Domains für Ihre Instanz konfiguriert haben, erstellen Sie DNS-Einträge, die Ihre benutzerdefinierten Domains den internen IP-Adressen der Dienstanhänge zuordnen. Verwenden Sie andernfalls die Hostnamen im Feld
hostConfigder Instanz:- Ordnen Sie den Wert von
hostConfig.html(oder Ihrer benutzerdefinierten HTML-Domain),hostConfig.api(oder Ihrer benutzerdefinierten API-Domain) undhostConfig.gitHttp(oder Ihrer benutzerdefinierten Git HTTP-Domain) der internen IP-Adresse des HTTP-Dienstanhangs zu. - Ordnen Sie den Wert von
hostConfig.ssh(oder Ihrer benutzerdefinierten Git SSH-Domain) der internen IP-Adresse des SSH-Dienstanhangs zu.
In der vorherigen Beispielausgabe ist der Wert von
hostConfig.htmlbeispielsweisemy-project-012345678901.us-central1.p.sourcemanager.dev.- Ordnen Sie den Wert von
Git-Authentifizierung mit benutzerdefinierten Domains
Wenn Sie benutzerdefinierte Domains für Ihre private Instanz verwenden, führen Sie auf jedem Computer die folgende clientseitige Konfiguration aus, um Git über HTTPS zu verwenden.
Diese Konfiguration verbindet Git mit dem gcloud-Anmeldeinformationshelfer, um sich bei Ihrer benutzerdefinierten Domain zu authentifizieren.
Konfigurieren Sie Git so, dass der
gcloud-Helfer für Ihre benutzerdefinierte Git HTTP-Domain verwendet wird:git config --global credential.'https://GIT_HTTP_CUSTOM_DOMAIN'.helper gcloud.shErsetzen Sie GIT_HTTP_CUSTOM_DOMAIN durch die benutzerdefinierte Domain, die Sie für den Git HTTP-Zugriff konfiguriert haben.
Autorisieren Sie Ihre benutzerdefinierte Domain in
gcloud:gcloud config set core/credentialed_hosted_repo_domains GIT_HTTP_CUSTOM_DOMAINWenn Sie mehrere Domains autorisieren möchten, geben Sie sie als durch Kommas getrennte Liste an.
CA mit der Secure Source Manager API verwenden
Secure Source Manager hat eine Steuerungsebene und eine Datenebene. Endpunkte der Datenebene werden direkt von Ihrer Secure Source Manager-Instanz gehostet. Sie müssen also eine Verbindung zum API-Hostnamen Ihrer Instanz herstellen, um darauf zuzugreifen.
Wenn Sie Ihre private Secure Source Manager-Instanz verwenden möchten, verwenden Sie die CA, die Sie im Abschnitt Dienstidentität und CA-Pool erstellen erstellt haben.
Führen Sie den folgenden Befehl aus, um Ihre CA herunterzuladen:
gcloud privateca pools get-ca-certs CA_POOL \ --location LOCATION \ --output-file=root-cert.pem \ --project PROJECTWenn Sie API-Aufrufe an Ihre Instanz senden möchten, übergeben Sie das CA-Zertifikat an die Secure Source Manager API der Datenebene.
Mit dem folgenden Befehl wird beispielsweise das CA-Zertifikat
root-cert.peman die Secure Source Manager API übergeben, um Repositories in der privaten Instanzmy-instanceam Standortus-central1aufzulisten.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
Nächste Schritte
- Cloud Build mit einer Private Service Connect Secure Source Manager-Instanz verbinden.
- Secure Source Manager in einem VPC Service Controls-Perimeter konfigurieren.