Membuat instance Private Service Connect

Halaman ini menjelaskan cara membuat instance Private Service Connect untuk Secure Source Manager.

Instance Private Service Connect tidak mengekspos endpoint apa pun ke internet publik. Saat Anda membuat instance Private Service Connect, endpoint akan dibuat untuk menyediakan akses SSH (Git) dan HTTPS (Git, antarmuka web, API) ke instance. Endpoint harus diberi alamat IP di jaringan pribadi Anda. Semua traffic ke dan dari instance Private Service Connect melewati endpoint Private Service Connect.

Untuk mengetahui informasi selengkapnya tentang penggunaan Private Service Connect untuk mengakses layanan terkelola secara pribadi dari dalam jaringan VPC, lihat Private Service Connect.

Secure Source Manager adalah layanan satu tenant. Satu instance Secure Source Manager hanya boleh menyertakan pengguna dari satu Google Cloud pelanggan, kecuali jika beberapa perusahaan yang memiliki hubungan kontrak perlu menggunakan satu instance untuk kolaborasi.

Jika Anda bekerja dengan beberapa perusahaan dan ingin berkolaborasi dengan mereka dalam kode sumber, sebaiknya buat instance terpisah untuk setiap perusahaan.

Sebelum memulai

  1. Login ke Akun Google Anda.

    Jika Anda belum memilikinya, Daftar untuk membuat akun baru.

  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. Instal Google Cloud CLI.

  5. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  6. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    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. Instal Google Cloud CLI.

  10. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  11. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk membuat instance Secure Source Manager Private Service Connect, minta administrator untuk memberi Anda peran IAM berikut:

Membuat identitas layanan dan kumpulan Certificate Authority

Bagian ini menjelaskan cara menggunakan sertifikat CA Anda sendiri. Anda harus menggunakan sertifikat CA Anda sendiri jika ingin menggunakan domain kustom dengan instance pribadi Anda. Untuk menggunakan sertifikat yang dikelola Google tanpa domain kustom, Anda tidak perlu melakukan apa pun selain menjalankan gcloud source-manager instances create perintah tanpa membuat identitas layanan dan kumpulan CA. GoogleUntuk mengetahui informasi selengkapnya, lihat Membuat instance Secure Source Manager Private Service Connect.

Jika Anda menggunakan sertifikat CA Anda sendiri, Anda harus menentukan nama kumpulan Certificate Authority (CA) saat membuat instance Secure Source Manager pribadi. Permintaan untuk menandatangani sertifikat SSL HTTPS instance dikirim ke kumpulan CA.

  1. Jalankan perintah berikut untuk membuat identitas layanan untuk Secure Source Manager API dalam project Anda:

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

    dengan PROJECT_ID sebagai project ID Anda.

    Outputnya mirip dengan hal berikut ini:

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

    dengan service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.com sebagai agen layanan Secure Source Manager dan PROJECT_NUM sebagai nomor project Anda.

  2. Buat kumpulan Certificate Authority (CA) dengan permintaan sertifikat berbasis CSR diaktifkan.

  3. Buat CA. Anda dapat membuat CA root atau CA subordinat, bergantung pada kebutuhan Anda.

    Untuk mengetahui informasi selengkapnya tentang perbedaan antara CA root dan CA subordinat, lihat Menentukan setelan certificate authority.

  4. Berikan izin identitas layanan Secure Source Manager API untuk meminta sertifikat baru di kumpulan 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
    

    Ganti kode berikut:

    • CA_POOL_NAME dengan nama yang Anda berikan ke kumpulan CA Anda.
    • CA_LOCATION dengan region atau zona kumpulan CA Anda.
    • PROJECT_NUMBER dengan nomor project tempat Secure Source Manager diaktifkan. Untuk menemukan nomor project, lihat Mengidentifikasi project.
    • CA_PROJECT_ID dengan project ID project tempat Anda membuat kumpulan CA.

Membuat instance Secure Source Manager Private Service Connect

Anda dapat menetapkan domain kustom ke instance pribadi Anda untuk endpoint HTML, API, Git HTTP, dan Git SSH. Domain kustom memerlukan sertifikat CA Anda sendiri. Oleh karena itu, Anda harus menyediakan kumpulan CA saat membuat instance dengan domain kustom. Anda hanya dapat mengonfigurasi domain kustom selama pembuatan instance menggunakan API. Anda tidak dapat mengubahnya setelah instance dibuat.

gcloud

Buat instance Private Service Connect dengan perintah berikut:

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

Ganti kode berikut:

  • INSTANCE_ID dengan nama yang ingin Anda berikan ke instance.
  • LOCATION dengan region tempat Anda ingin membuat instance. Untuk mengetahui lokasi yang didukung, lihat Lokasi.
  • PROJECT_ID dengan nama project tempat Anda ingin membuat instance.
  • CA_PROJECT dengan nama project kumpulan CA. Diperlukan jika Anda menggunakan sertifikat CA Anda sendiri.
  • CA_LOCATION dengan region tempat Anda membuat kumpulan CA. Diperlukan jika Anda menggunakan sertifikat CA Anda sendiri.
  • CA_POOL_NAME dengan nama kumpulan CA. Diperlukan jika Anda menggunakan sertifikat CA Anda sendiri.

API

Buat instance Private Service Connect dengan perintah berikut:

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

Ganti kode berikut:

  • INSTANCE_ID dengan nama yang ingin Anda berikan ke instance.
  • LOCATION dengan region tempat Anda ingin membuat instance. Untuk mengetahui lokasi yang didukung, lihat Lokasi.
  • PROJECT_ID dengan nama project tempat Anda ingin membuat instance.
  • CA_PROJECT dengan nama project kumpulan CA. Diperlukan jika Anda menggunakan sertifikat CA Anda sendiri atau domain kustom.
  • CA_LOCATION dengan region tempat Anda membuat kumpulan CA. Diperlukan jika Anda menggunakan sertifikat CA Anda sendiri atau domain kustom.
  • CA_POOL_NAME dengan nama kumpulan CA. Diperlukan jika Anda menggunakan sertifikat CA Anda sendiri atau domain kustom.
  • API_CUSTOM_DOMAIN dengan domain kustom Anda untuk akses API, misalnya api.source.example.com. Diperlukan hanya jika Anda menggunakan domain kustom.
  • HTML_CUSTOM_DOMAIN dengan domain kustom Anda untuk akses UI web, misalnya source.example.com. Diperlukan hanya jika Anda menggunakan domain kustom.
  • GIT_SSH_CUSTOM_DOMAIN dengan domain kustom Anda untuk akses Git SSH, misalnya ssh.source.example.com. Diperlukan hanya jika Anda menggunakan domain kustom.
  • GIT_HTTP_CUSTOM_DOMAIN dengan domain kustom Anda untuk akses Git HTTP, misalnya git.source.example.com. Diperlukan hanya jika Anda menggunakan domain kustom.

Terraform

Untuk membuat instance Private Service Connect dengan Terraform, gunakan google_secure_source_manager_instance resource dengan kolom private_config.is_private yang ditetapkan ke true.

Operasi pembuatan instance yang berjalan lama akan dimulai. Instance memerlukan waktu hingga 60 menit untuk dibuat. Outputnya mirip dengan hal berikut ini:

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

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

Anda memerlukan OPERATION_NAME untuk memeriksa status operasi.

Untuk memeriksa status operasi, jalankan perintah berikut:

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

Ganti kode berikut:

  • OPERATION_NAME dengan nama operasi dari respons perintah buat Anda.
  • LOCATION dengan region tempat Anda ingin membuat instance. Untuk mengetahui lokasi yang didukung, lihat Lokasi.

Setelah instance dibuat, endpoint Private Service Connect httpServiceAttachment dan sshServiceAttachment, beserta nama host untuk html, api, gitHttp, dan gitSsh, akan tercantum dalam output.

Mengakses instance pribadi

Anda dapat mengakses instance Private Service Connect dengan membuat endpoint Private Service Connect berdasarkan aturan penerusan atau dengan membuat backend Private Service Connect berdasarkan load balancer.

Backend Private Service Connect berdasarkan load balancer lebih fleksibel dan memungkinkan Anda berintegrasi dengan layanan lain seperti Cloud Build, tetapi lebih kompleks dan memiliki penagihan tambahan. Google Cloud

Endpoint Private Service Connect berdasarkan aturan penerusan lebih sederhana dan lebih murah. Namun, Anda tidak dapat terhubung ke Cloud Build atau layanan lainnya Google Cloud .

Untuk menyiapkan backend Private Service Connect berdasarkan load balancer untuk instance Private Service Connect Anda dan menghubungkannya ke Cloud Build, lihat Menghubungkan Cloud Build ke instance Private Service Connect.

Menyiapkan endpoint Private Service Connect berdasarkan aturan penerusan

  1. Untuk membuat endpoint Private Service Connect, ikuti petunjuk di Mengakses layanan yang dipublikasikan melalui endpoint.

  2. Untuk mendapatkan URI untuk lampiran layanan HTTP dan SSH instance Secure Source Manager Anda, jalankan perintah berikut:

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

    Ganti kode berikut:

    • INSTANCE_ID dengan nama instance Anda. Untuk mencantumkan instance di region tertentu, jalankan gcloud source-manager instances list --region=LOCATION.
    • LOCATION dengan lokasi instance Anda. Untuk mengetahui lokasi yang didukung, lihat Lokasi.

    Outputnya mencakup:

    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 adalah URI lampiran layanan HTTP instance Anda.
    • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psc adalah URI lampiran layanan SSH instance Anda.
  3. Setelah membuat endpoint Private Service Connect, Anda harus menyiapkan data DNS pribadi. Untuk mengetahui petunjuk cara menyiapkan data DNS pribadi, lihat Mengonfigurasi DNS secara manual. Jika Anda mengonfigurasi domain kustom untuk instance Anda, buat data DNS yang memetakan domain kustom Anda ke alamat IP internal lampiran layanan. Jika tidak, gunakan nama host di kolom hostConfig instance:

    1. Petakan nilai hostConfig.html (atau domain kustom HTML Anda), hostConfig.api (atau domain kustom API Anda), dan hostConfig.gitHttp (atau domain kustom Git HTTP Anda) ke alamat IP internal lampiran layanan HTTP.
    2. Petakan nilai hostConfig.ssh (atau domain kustom Git SSH Anda) ke alamat IP internal lampiran layanan SSH.

    Misalnya, dalam output contoh sebelumnya, nilai hostConfig.html adalah my-project-012345678901.us-central1.p.sourcemanager.dev.

    Google Cloud

Autentikasi Git dengan domain kustom

Jika Anda menggunakan domain kustom untuk instance pribadi Anda, lakukan konfigurasi sisi klien berikut di setiap mesin untuk menggunakan Git melalui HTTPS. Konfigurasi ini menghubungkan Git ke helper kredensial gcloud untuk mengautentikasi domain kustom Anda.

  1. Konfigurasi Git untuk menggunakan helper gcloud untuk domain Git HTTP kustom Anda:

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

    Ganti GIT_HTTP_CUSTOM_DOMAIN dengan domain kustom yang Anda konfigurasi untuk akses Git HTTP.

  2. Otorisasi domain kustom Anda di gcloud:

    gcloud config set core/credentialed_hosted_repo_domains GIT_HTTP_CUSTOM_DOMAIN
    

    Untuk mengotorisasi beberapa domain, berikan domain tersebut sebagai daftar yang dipisahkan koma.

Menggunakan CA dengan Secure Source Manager API

Secure Source Manager memiliki bidang kontrol dan bidang data. Endpoint bidang data dihosting langsung oleh instance Secure Source Manager Anda, sehingga Anda harus terhubung ke nama host API instance Anda untuk mengaksesnya.

Untuk menggunakan instance Secure Source Manager pribadi Anda, gunakan CA yang Anda buat di bagian Membuat identitas layanan dan kumpulan Certificate Authority.

  1. Untuk mendownload CA Anda, jalankan perintah berikut:

    gcloud privateca pools get-ca-certs CA_POOL \
        --location LOCATION \
        --output-file=root-cert.pem \
        --project PROJECT
    
  2. Untuk melakukan panggilan API ke instance Anda, teruskan sertifikat CA ke Secure Source Manager API bidang data.

    Misalnya, perintah berikut meneruskan sertifikat CA root-cert.pem ke Secure Source Manager API untuk mencantumkan repositori di instance pribadi my-instance di lokasi 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
    

Langkah berikutnya