Private Service Connect-Instanz erstellen

Auf dieser Seite wird beschrieben, wie Sie eine Private Service Connect-Instanz für Secure Source Manager erstellen.

Private Service Connect-Instanzen stellen keine Endpunkte für das öffentliche Internet bereit. Wenn Sie eine Private Service Connect-Instanz erstellen, werden Endpunkte erstellt, um SSH- (Git) und HTTPS-Zugriff (Git, Weboberfläche, API) auf die Instanz zu ermöglichen. Den Endpunkten müssen IP-Adressen in Ihrem privaten Netzwerk zugewiesen sein. 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 privaten Zugriff auf verwaltete Dienste aus einem VPC-Netzwerk finden Sie unter Private Service Connect.

Secure Source Manager ist ein Dienst mit einem einzelnen Mandanten. Eine einzelne Secure Source Manager-Instanz sollte nur Nutzer von einemGoogle Cloud Kunden enthalten, es sei denn, mehrere Unternehmen mit einem Vertragsverhältnis müssen eine einzelne Instanz für die Zusammenarbeit verwenden.

Wenn Sie mit mehreren Unternehmen zusammenarbeiten und mit ihnen Quellcode austauschen möchten, empfehlen wir, für jedes Unternehmen eine separate Instanz zu erstellen.

Hinweis

  1. Melden Sie sich in Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.

  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 role (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. Installieren Sie die Google Cloud CLI.

  5. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  6. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    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 role (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. Installieren Sie die Google Cloud CLI.

  10. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  11. 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 Secure Source Manager-Instanz mit Private Service Connect benötigen:

Dienstidentität und Zertifizierungsstellen-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 Googleverwaltetes 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. Weitere 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 Namen für den CA-Pool angeben. Eine Anfrage zum Signieren des HTTPS-SSL-Zertifikats der Instanz wird an den CA-Pool gesendet.

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

    Dabei ist PROJECT_ID Ihre Projekt-ID.

    Die Ausgabe sieht etwa so aus:

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

    Dabei ist service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.com der Dienst-Agent von Secure Source Manager und PROJECT_NUM Ihre Projektnummer.

  2. Erstellen Sie einen CA-Pool, in dem CSR-basierte Zertifikatsanfragen aktiviert sind.

  3. Erstellen Sie eine CA. Je nach Bedarf können Sie eine Root- oder eine untergeordnete Zertifizierungsstelle erstellen.

    Weitere Informationen zu den Unterschieden zwischen Stamm- und untergeordneten CAs finden Sie unter Einstellungen der Zertifizierungsstelle festlegen.

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

    Ersetzen Sie Folgendes:

    • Ersetzen Sie CA_POOL_NAME durch den Namen, den Sie Ihrem CA-Pool gegeben haben.
    • Ersetzen Sie 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.
    • Ersetzen Sie 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 einen CA-Pool angeben, wenn Sie eine Instanz mit benutzerdefinierten Domains erstellen. Benutzerdefinierte Domains können nur bei der Instanzerstellung über die API konfiguriert werden. Sie können sie nach dem Erstellen der Instanz nicht mehr ändern.

gcloud

Erstellen Sie eine Private Service Connect-Instanz mit dem folgenden Befehl:

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:

  • Ersetzen Sie 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 mit dem Namen des Projekts, in dem Sie eine Instanz erstellen möchten.
  • Ersetzen Sie 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.
  • Ersetzen Sie CA_POOL_NAME durch den Namen des CA-Pools. Erforderlich, wenn Sie Ihr eigenes CA-Zertifikat verwenden.

API

Erstellen Sie eine Private Service Connect-Instanz mit dem folgenden Befehl:

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:

  • Ersetzen Sie 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 mit dem Namen des Projekts, in dem Sie eine Instanz erstellen möchten.
  • Ersetzen Sie 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.
  • Ersetzen Sie CA_POOL_NAME durch den Namen des CA-Pools. Erforderlich, wenn Sie Ihr eigenes CA-Zertifikat oder benutzerdefinierte Domains verwenden.
  • API_CUSTOM_DOMAIN mit Ihrer benutzerdefinierten Domain für den API-Zugriff, z. B. api.source.example.com. Nur erforderlich, wenn Sie benutzerdefinierte Domains verwenden.
  • Ersetzen Sie 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.
  • Ersetzen Sie 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.
  • Ersetzen Sie 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 zum Erstellen einer Private Service Connect-Instanz mit Terraform die Ressource google_secure_source_manager_instance, wobei das Feld private_config.is_private auf true festgelegt ist.

Ein Vorgang mit langer Ausführungszeit zum Erstellen einer Instanz wird gestartet. Das Erstellen der Instanz kann bis zu 60 Minuten dauern. 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 Vorgangsstatus 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 Create-Befehl.
  • 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 die Private Service Connect-Endpunkte httpServiceAttachment und sshServiceAttachment sowie die Hostnamen für html, api, gitHttp und gitSsh in der Ausgabe 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 Google Cloud Diensten wie Cloud Build. Sie sind jedoch komplexer und es fallen zusätzliche Abrechnungsposten an.

Private Service Connect-Endpunkte, die auf Weiterleitungsregeln basieren, sind einfacher und kostengünstiger. Sie können jedoch keine Verbindung zu Cloud Build oder anderenGoogle Cloud -Diensten herstellen.

Informationen zum Einrichten von Private Service Connect-Back-Ends, die auf Load Balancern für Ihre Private Service Connect-Instanz basieren, 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

  1. Folgen Sie der Anleitung unter Zugriff auf veröffentlichte Dienste über Endpunkte, um Private Service Connect-Endpunkte zu erstellen.

  2. 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=LOCATION
    

    Ersetzen Sie Folgendes:

    • Ersetzen Sie INSTANCE_ID durch den Namen Ihrer Instanz. Führen Sie zum Auflisten von Instanzen in einer bestimmten Region gcloud source-manager instances list --region=LOCATION aus.
    • 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-psc ist der HTTP-Dienstanhang-URI Ihrer Instanz.
    • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psc ist der URI des SSH-Dienstanhangs Ihrer Instanz.
  3. 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 hostConfig der Instanz:

    1. Ordnen Sie den Wert von hostConfig.html (oder Ihrer benutzerdefinierten HTML-Domain), hostConfig.api (oder Ihrer benutzerdefinierten API-Domain) und hostConfig.gitHttp (oder Ihrer benutzerdefinierten Git-HTTP-Domain) der internen IP-Adresse der HTTP-Dienstanhänge zu.
    2. Ordnen Sie den Wert von hostConfig.ssh (oder Ihrer benutzerdefinierten Git-SSH-Domain) der internen IP-Adresse der SSH-Dienstanhänge zu.

    In der vorherigen Beispielausgabe ist der Wert von hostConfig.html beispielsweise my-project-012345678901.us-central1.p.sourcemanager.dev.

Git-Authentifizierung mit benutzerdefinierten Domains

Wenn Sie benutzerdefinierte Domains für Ihre private Instanz verwenden, führen Sie die folgende clientseitige Konfiguration auf jedem Computer aus, um Git über HTTPS zu verwenden. Durch diese Konfiguration wird Git mit dem gcloud-Credential Helper verbunden, um die Authentifizierung für Ihre benutzerdefinierte Domain durchzuführen.

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

    Ersetzen Sie GIT_HTTP_CUSTOM_DOMAIN durch die benutzerdefinierte Domain, die Sie für den Git-HTTP-Zugriff konfiguriert haben.

  2. Autorisieren Sie Ihre benutzerdefinierte Domain in gcloud:

    gcloud config set core/credentialed_hosted_repo_domains GIT_HTTP_CUSTOM_DOMAIN
    

    Wenn 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. Datenebenen-Endpunkte werden direkt von Ihrer Secure Source Manager-Instanz gehostet. Sie müssen also eine Verbindung zum API-Hostname 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.

  1. 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 PROJECT
    
  2. Wenn 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.pem an die Secure Source Manager API übergeben, um Repositorys in der privaten Instanz my-instance am Standort us-central1 aufzulisten.

    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