Crea un'istanza Private Service Connect

Questa pagina descrive come creare un'istanza Private Service Connect per Secure Source Manager.

Le istanze di Private Service Connect non espongono endpoint a internet pubblico. Quando crei un'istanza Private Service Connect, vengono creati endpoint per fornire l'accesso SSH (Git) e HTTPS (Git, interfaccia web, API) all'istanza. Agli endpoint devono essere assegnati indirizzi IP sulla tua rete privata. Tutto il traffico da e verso l'istanza Private Service Connect passa attraverso gli endpoint Private Service Connect.

Per saperne di più sull'utilizzo di Private Service Connect per accedere ai servizi gestiti privatamente dall'interno di una rete VPC, consulta Private Service Connect.

Secure Source Manager è un servizio single-tenant. Una singola istanza Secure Source Manager deve includere solo utenti di un unico clienteGoogle Cloud , a meno che più aziende che hanno un rapporto contrattuale non debbano utilizzare una singola istanza per la collaborazione.

Se collabori con più aziende e vuoi collaborare con loro sul codice sorgente, ti consigliamo di creare un'istanza separata per ogni azienda.

Prima di iniziare

  1. Accedi al tuo Account Google.

    Se non ne hai già uno, registrati per creare un nuovo 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 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. Installa Google Cloud CLI.

  5. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  6. Per inizializzare gcloud CLI, esegui questo 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 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. Installa Google Cloud CLI.

  10. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  11. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare un'istanza Secure Source Manager di Private Service Connect, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Crea un'identità di servizio e un pool di autorità di certificazione

Questa sezione descrive come utilizzare il tuo certificato CA. Devi utilizzare il tuo certificato CA se intendi utilizzare domini personalizzati con la tua istanza privata. Per utilizzare un certificato gestito da Googlesenza domini personalizzati, non devi fare altro che eseguire il gcloud source-manager instances create comando senza creare un'identità di servizio e un pool di CA. Per saperne di più, consulta Creare un'istanza di Secure Source Manager Private Service Connect.

Se utilizzi il tuo certificato CA, devi specificare un nome del pool di autorità di certificazione (CA) quando crei un'istanza privata di Secure Source Manager. Al pool di CA viene inviata una richiesta di firma del certificato SSL HTTPS dell'istanza.

  1. Esegui questo comando per creare un'identità di servizio per l'API Secure Source Manager all'interno del tuo progetto:

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

    dove PROJECT_ID è l'ID progetto.

    L'output è simile al seguente:

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

    dove service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.com è l'agente di servizio Secure Source Manager e PROJECT_NUM è il numero di progetto.

  2. Crea un pool di autorità di certificazione (CA) con le richieste di certificati basate su CSR attive.

  3. Crea una CA. Puoi creare una CA radice o subordinata a seconda delle tue esigenze.

    Per ulteriori informazioni sulle differenze tra CA radice e CA subordinate, vedi Determinare le impostazioni dell'autorità di certificazione.

  4. Concedi le autorizzazioni dell'identità di servizio dell'API Secure Source Manager per richiedere nuovi certificati nel pool di CA:

    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
    

    Sostituisci quanto segue:

    • CA_POOL_NAME con il nome che hai dato al pool di CA.
    • CA_LOCATION con la regione o la zona del pool CA.
    • PROJECT_NUMBER con il numero di progetto in cui è abilitato Secure Source Manager. Per trovare il numero del progetto, consulta Identificazione dei progetti.
    • CA_PROJECT_ID con l'ID progetto del progetto in cui hai creato il pool di CA.

Crea un'istanza Secure Source Manager Private Service Connect

Puoi assegnare domini personalizzati alla tua istanza privata per gli endpoint HTML, API, Git HTTP e Git SSH. I domini personalizzati richiedono un certificato CA personale. Pertanto, devi fornire un pool di CA quando crei un'istanza con domini personalizzati. Puoi configurare domini personalizzati solo durante la creazione dell'istanza utilizzando l'API. Non puoi modificarli dopo la creazione dell'istanza.

gcloud

Crea un'istanza Private Service Connect con il seguente comando:

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

Sostituisci quanto segue:

  • INSTANCE_ID con il nome che vuoi assegnare all'istanza.
  • LOCATION con la regione in cui vuoi creare l'istanza. Per le località supportate, consulta la sezione Località.
  • PROJECT_ID con il nome del progetto in cui vuoi creare un'istanza.
  • CA_PROJECT con il nome del progetto del pool di CA. Obbligatorio se utilizzi il tuo certificato CA.
  • CA_LOCATION con la regione in cui hai creato il pool di CA. Obbligatorio se utilizzi il tuo certificato CA.
  • CA_POOL_NAME con il nome del pool di CA. Obbligatorio se utilizzi il tuo certificato CA.

API

Crea un'istanza Private Service Connect con il seguente 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","custom_host_config":{"api":"API_CUSTOM_DOMAIN", "html":"HTML_CUSTOM_DOMAIN", "git_ssh":"GIT_SSH_CUSTOM_DOMAIN", "git_http":"GIT_HTTP_CUSTOM_DOMAIN"}}}'

Sostituisci quanto segue:

  • INSTANCE_ID con il nome che vuoi assegnare all'istanza.
  • LOCATION con la regione in cui vuoi creare l'istanza. Per le località supportate, consulta la sezione Località.
  • PROJECT_ID con il nome del progetto in cui vuoi creare un'istanza.
  • CA_PROJECT con il nome del progetto del pool di CA. Obbligatorio se utilizzi il tuo certificato CA o domini personalizzati.
  • CA_LOCATION con la regione in cui hai creato il pool di CA. Obbligatorio se utilizzi il tuo certificato CA o domini personalizzati.
  • CA_POOL_NAME con il nome del pool di CA. Obbligatorio se utilizzi il tuo certificato CA o domini personalizzati.
  • API_CUSTOM_DOMAIN con il tuo dominio personalizzato per l'accesso all'API, ad esempio api.source.example.com. Obbligatorio solo se utilizzi domini personalizzati.
  • HTML_CUSTOM_DOMAIN con il tuo dominio personalizzato per l'accesso all'interfaccia utente web, ad esempio source.example.com. Obbligatorio solo se utilizzi domini personalizzati.
  • GIT_SSH_CUSTOM_DOMAIN con il tuo dominio personalizzato per l'accesso Git SSH, ad esempio ssh.source.example.com. Obbligatorio solo se utilizzi domini personalizzati.
  • GIT_HTTP_CUSTOM_DOMAIN con il tuo dominio personalizzato per l'accesso HTTP Git, ad esempio git.source.example.com. Obbligatorio solo se utilizzi domini personalizzati.

Terraform

Per creare un'istanza Private Service Connect con Terraform, utilizza la risorsa google_secure_source_manager_instance con il campo private_config.is_private impostato su true.

Viene avviata un'operazione di creazione dell'istanza a lunga esecuzione. La creazione dell'istanza richiede fino a 60 minuti. L'output è simile al seguente:

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

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

Per controllare lo stato dell'operazione, devi disporre di OPERATION_NAME.

Per controllare lo stato dell'operazione, esegui questo comando:

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

Sostituisci quanto segue:

  • OPERATION_NAME con il nome dell'operazione dalla risposta del comando create.
  • LOCATION con la regione in cui vuoi creare l'istanza. Per le località supportate, consulta la sezione Località.

Una volta creata l'istanza, gli endpoint Private Service Connect httpServiceAttachment e sshServiceAttachment, insieme ai nomi host per html, api, gitHttp e gitSsh, sono elencati nell'output.

Accedere all'istanza privata

Puoi accedere all'istanza Private Service Connect creando endpoint Private Service Connect basati su regole di forwarding o creando backend Private Service Connect basati su bilanciatori del carico.

I backend Private Service Connect basati sui bilanciatori del carico sono più flessibili e consentono l'integrazione con altri servizi Google Cloud come Cloud Build, ma sono più complessi e hanno una fatturazione aggiuntiva.

Gli endpoint Private Service Connect basati su regole di forwarding sono più semplici e costano meno. Tuttavia, non puoi connetterti a Cloud Build o ad altri serviziGoogle Cloud .

Per configurare i backend Private Service Connect in base ai bilanciatori del carico per l'istanza Private Service Connect e connetterla a Cloud Build, consulta Connetti Cloud Build a un'istanza Private Service Connect.

Configura gli endpoint Private Service Connect in base alle regole di forwarding

  1. Per creare endpoint Private Service Connect, segui le istruzioni riportate in Accedere ai servizi pubblicati tramite endpoint.

  2. Per ottenere gli URI degli allegati dei servizi HTTP e SSH dell'istanza Secure Source Manager, esegui questo comando:

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

    Sostituisci quanto segue:

    • INSTANCE_ID con il nome dell'istanza. Per elencare le istanze in una determinata regione, esegui gcloud source-manager instances list --region=LOCATION.
    • LOCATION con la località dell'istanza. Per le località supportate, consulta la sezione Località.

    L'output include:

    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 è l'URI del collegamento del servizio HTTP della tua istanza.
    • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psc è l'URI del collegamento al servizio SSH della tua istanza.
  3. Dopo aver creato gli endpoint Private Service Connect, devi configurare i record DNS privati. Per istruzioni sulla configurazione dei record DNS privati, consulta Configura il DNS manualmente. Se hai configurato domini personalizzati per la tua istanza, crea record DNS che mappano i tuoi domini personalizzati agli indirizzi IP interni degli allegati di servizio. Altrimenti, utilizza i nomi host nel campo hostConfig dell'istanza:

    1. Mappa il valore di hostConfig.html (o del tuo dominio personalizzato HTML), hostConfig.api (o del tuo dominio personalizzato API) e hostConfig.gitHttp (o del tuo dominio personalizzato HTTP Git) all'indirizzo IP interno del collegamento del servizio HTTP.
    2. Mappa il valore di hostConfig.ssh (o del tuo dominio personalizzato SSH Git) all'indirizzo IP interno dell'allegato del servizio SSH.

    Ad esempio, nell'output dell'esempio precedente, il valore di hostConfig.html è my-project-012345678901.us-central1.p.sourcemanager.dev.

Autenticazione Git con domini personalizzati

Se utilizzi domini personalizzati per la tua istanza privata, esegui la seguente configurazione lato client su ogni macchina per utilizzare Git su HTTPS. Questa configurazione connette Git all'helper delle credenziali gcloud per l'autenticazione rispetto al tuo dominio personalizzato.

  1. Configura Git per utilizzare l'helper gcloud per il tuo dominio HTTP Git personalizzato:

    git config --global credential.'https://GIT_HTTP_CUSTOM_DOMAIN'.helper gcloud.sh
    

    Sostituisci GIT_HTTP_CUSTOM_DOMAIN con il dominio personalizzato che hai configurato per l'accesso HTTP Git.

  2. Autorizza il tuo dominio personalizzato in gcloud:

    gcloud config set core/credentialed_hosted_repo_domains GIT_HTTP_CUSTOM_DOMAIN
    

    Per autorizzare più domini, fornisci un elenco separato da virgole.

Utilizzare la CA con l'API Secure Source Manager

Secure Source Manager ha un control plane e un data plane. Gli endpoint del data plane sono ospitati direttamente dall'istanza di Secure Source Manager, quindi devi connetterti al nome host API della tua istanza per accedervi.

Per utilizzare la tua istanza privata di Secure Source Manager, utilizza la CA che hai creato nella sezione Crea un'identità di servizio e un pool di autorità di certificazione.

  1. Per scaricare la CA, esegui questo comando:

    gcloud privateca pools get-ca-certs CA_POOL \
        --location LOCATION \
        --output-file=root-cert.pem \
        --project PROJECT
    
  2. Per effettuare chiamate API alla tua istanza, passa il certificato CA all'API Secure Source Manager del data plane.

    Ad esempio, il seguente comando trasmette il certificato CA root-cert.pem all'API Secure Source Manager per elencare i repository nell'istanza privata my-instance nella località 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
    

Passaggi successivi