Mengonfigurasi akses layanan pribadi

Halaman ini menjelaskan cara mengonfigurasi akses layanan pribadi di jaringan VPC Anda.

Akses layanan pribadi diterapkan sebagai koneksi peering VPC antara jaringan VPC Anda dan jaringan VPC Google Cloud yang mendasari di tempat instance Cloud SQL berada. Koneksi pribadi memungkinkan instance VM di jaringan VPC Anda dan layanan yang diakses untuk berkomunikasi melalui alamat IP internal secara eksklusif. Instance VM tidak memerlukan akses internet atau alamat IP eksternal untuk menjangkau layanan yang tersedia melalui akses layanan pribadi.

Sebelum memulai

Cloud SQL memerlukan akses layanan pribadi untuk setiap jaringan VPC yang digunakan untuk koneksi IP pribadi. Untuk mengelola koneksi akses layanan pribadi, pengguna harus memiliki izin IAM berikut:

  • compute.networks.list
  • compute.addresses.create
  • compute.addresses.list
  • servicenetworking.services.addPeering

Jika tidak memiliki izin tersebut, maka Anda dapat mengalami error izin tidak memadai.

Jika Anda menggunakan Jaringan VPC bersama, maka Anda juga harus:

  • Menambahkan pengguna Anda ke project host.
  • Menetapkan empat izin yang sama untuk pengguna pada project host tersebut.
  • Memberikan izin IAM compute.globalAddresses.list kepada pengguna.

Mengonfigurasi akses layanan pribadi untuk Cloud SQL

Terdapat dua bagian dalam proses konfigurasi akses layanan pribadi:

  • Memilih yang ada atau mengalokasikan rentang alamat IP baru.

    Anda juga memiliki opsi untuk mengizinkan Google mengalokasikan rentang tersebut untuk Anda. Dalam kasus ini, Google akan otomatis mengalokasikan rentang IP dengan panjang awalan /20 dan menggunakan nama default-ip-range.

    Jika Anda akan membuat instance di beberapa region atau untuk jenis database yang berbeda, Anda harus memiliki rentang alamat IP minimum /24 yang tersedia untuk setiap region atau jenis database. Hal ini mencakup aplikasi lain seperti Filestore atau Memorystore. Untuk region atau jenis database baru, Cloud SQL harus memiliki rentang /24 yang tersedia.

  • Membuat koneksi pribadi dari jaringan VPC Anda ke jaringan produsen layanan yang mendasarinya.

Mengalokasikan rentang alamat IP

Konsol

  1. Di Konsol Google Cloud, buka halaman jaringan VPC.

    Buka jaringan VPC

  2. Pilih jaringan VPC yang ingin Anda gunakan.
  3. Pilih tab Koneksi layanan pribadi.
  4. Pilih tab Rentang IP yang dialokasikan untuk layanan.
  5. Klik Alokasikan rentang IP.
  6. Untuk Nama rentang yang dialokasikan, tentukan google-managed-services-VPC_NETWORK_NAME, di mana VPC_NETWORK_NAME adalah nama jaringan VPC yang Anda sambungkan (misalnya, google-managed-services-default). Deskripsi bersifat opsional.
  7. Pilih opsi Kustom, lalu masukkan rentang alamat IP yang akan dialokasikan, dalam notasi CIDR.
  8. Klik Alokasikan untuk membuat rentang yang dialokasikan.

gcloud

Lakukan salah satu tindakan berikut:

  • Untuk menentukan rentang alamat IP dan panjang awalan (subnet mask), gunakan flag addresses dan prefix-length. Misalnya, untuk mengalokasikan blok CIDR 192.168.0.0/16, tentukan 192.168.0.0 untuk alamat dan 16 untuk panjang awalan.
  •         gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \
            --global \
            --purpose=VPC_PEERING \
            --addresses=192.168.0.0 \
            --prefix-length=16 \
            --network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME
            
  • Untuk hanya menentukan panjang awalan (subnet mask), gunakan flag prefix-length. Saat Anda menghilangkan rentang alamat IP, Google Cloud akan otomatis memilih rentang alamat IP yang tidak digunakan di jaringan VPC Anda. Contoh berikut ini memilih rentang alamat IP yang tidak digunakan dengan panjang awalan bit 16.
  •         gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \
            --global \
            --purpose=VPC_PEERING \
            --prefix-length=16 \
            --network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME
            

Ganti VPC_NETWORK_NAME dengan nama jaringan VPC, seperti my-vpc-network.

Contoh berikut ini mengalokasikan rentang IP yang memungkinkan resource dalam jaringan VPC my-vpc-network untuk terhubung ke instance Cloud SQL menggunakan IP pribadi.

    gcloud compute addresses create google-managed-services-my-vpc-network \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --network=projects/myprojectid/global/networks/myvpcnetwork \
    --project=my-project
    

Terraform

Untuk mengalokasikan rentang alamat IP, gunakan resource Terraform.

resource "google_compute_global_address" "private_ip_address" {
  name          = "private-ip-address"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 16
  network       = google_compute_network.peering_network.id
}

Menerapkan perubahan

Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.

    Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.

    Salin kode contoh ke dalam main.tf yang baru dibuat.

    Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade

Menerapkan perubahan

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

Menghapus perubahan

Hapus resource yang sebelumnya diterapkan dengan konfigurasi Terraform Anda dengan menjalankan perintah berikut dan masukkan yes pada prompt:

terraform destroy

Membuat koneksi pribadi

Konsol

  1. Di Konsol Google Cloud, buka halaman jaringan VPC.

    Buka jaringan VPC

  2. Pilih jaringan VPC yang ingin Anda gunakan.
  3. Pilih tab Koneksi layanan pribadi.
  4. Pilih tab Koneksi pribadi ke layanan.
  5. Klik Buat koneksi untuk membuat koneksi pribadi antara jaringan Anda dan produsen layanan.
  6. Untuk Alokasi yang ditetapkan, pilih salah satu atau beberapa rentang yang sudah dialokasikan dan tidak digunakan oleh produsen layanan lainnya.
  7. Klik Hubungkan untuk membuat koneksi.

gcloud

  1. Membuat koneksi pribadi

    gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=google-managed-services-VPC_NETWORK_NAME \
    --network=VPC_NETWORK_NAME \
    --project=PROJECT_ID

    Perintah ini memulai operasi instance Cloud SQL yang berjalan lama, dan mengembalikan ID operasi.

  2. Periksa apakah operasi tersebut berhasil.

    gcloud services vpc-peerings operations describe \
    --name=OPERATION_ID

Anda dapat menentukan lebih dari satu rentang IP yang dialokasikan saat membuat koneksi pribadi. Misalnya, jika rentang sudah habis, Anda dapat menetapkan rentang tambahan yang dialokasikan. Layanan tersebut menggunakan alamat IP dari semua rentang yang tersedia sesuai urutan yang Anda tetapkan.

Terraform

Gunakan resource Terraform untuk membuat koneksi pribadi.

resource "google_service_networking_connection" "default" {
  network                 = google_compute_network.peering_network.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.private_ip_address.name]
}

Akun layanan dalam format service-HOST_PROJECT_NUMBER@service-networking.iam.gserviceaccount.com diberikan peran servicenetworking.serviceAgent saat koneksi pribadi dibuat karena akun tersebut disediakan tepat waktu (JIT).

Jika Anda mengalami error terkait izin compute.globalAddresses.list atau izin compute.projects.get untuk project, jalankan perintah gcloud berikut:

gcloud projects add-iam-policy-binding HOST_PROJECT_NAME \
    --member=serviceAccount:service-HOST_PROJECT_NUMBER@service-networking.iam.gserviceaccount.com \
    --role=roles/servicenetworking.serviceAgent

Mengubah konfigurasi akses layanan pribadi

Anda dapat mengubah rentang alamat IP yang dialokasikan untuk koneksi layanan pribadi tanpa mengubah instance Cloud SQL yang sudah ada. Untuk mengubah alamat IP pribadi dari instance Cloud SQL yang sudah ada, ikuti langkah-langkah ini.

Untuk mengubah rentang alamat IP yang dialokasikan:

Konsol

  1. Di Konsol Google Cloud, buka halaman jaringan VPC.

    Buka jaringan VPC

  2. Pilih jaringan VPC yang ingin Anda gunakan.
  3. Pilih tab Koneksi layanan pribadi.
  4. Pilih tab Rentang IP yang dialokasikan untuk layanan.
  5. Pilih nama rentang yang ingin dihapus.

  6. Klik Lepaskan.

  7. Klik Alokasikan rentang IP.

  8. Buat rentang baru dengan nama dan rentang yang sama

    Nama tersebut penting karena koneksi pribadi telah ditetapkan menggunakan nama alamat tersebut.

gcloud services vpc-peerings update \
--network=VPC_NETWORK_NAME \
--ranges=ALLOCATED_RANGES \
--service=servicenetworking.googleapis.com \
--force

Mengubah alamat IP pribadi dari instance Cloud SQL yang sudah ada.

Untuk mengubah alamat IP pribadi instance Cloud SQL yang ada, pindahkan instance dari jaringan aslinya ke jaringan VPC sementara. Kemudian, ubah konfigurasi akses layanan pribadi dari jaringan asli instance tersebut dan pindahkan kembali instance Cloud SQL ke jaringan asli.

Untuk berpindah ke jaringan VPC yang berbeda, ikuti semua langkah kecuali langkah terakhir (memindahkan instance kembali) dalam prosedur berikut. Dalam hal ini, TEMPORARY_VPC_NETWORK_NAME adalah jaringan VPC baru. Selain itu, hapus koneksi pribadi yang lama. Diperlukan waktu beberapa hari agar koneksi pribadi yang sudah dihapus dapat hilang dari konsol Google Cloud.

Jika instance Cloud SQL dihosting pada jaringan VPC Bersama, variabel VPC_NETWORK_NAME yang digunakan dalam petunjuk berikut harus berupa nama jaringan VPC project host. Untuk menentukan sebuah jaringan dengan jaringan VPC Bersama, gunakan URL lengkap dari jaringan tersebut—misalnya projects/HOST_PROJECT/global/networks/NETWORK_NAME.

Konsol

  1. Di Konsol Google Cloud, buka halaman jaringan VPC.

    Buka jaringan VPC

  2. Buat jaringan VPC sementara.
  3. Buat alokasi IP di jaringan VPC sementara.
  4. Buat koneksi pribadi dalam jaringan VPC sementara.
  5. Pindahkan instance Cloud SQL ke jaringan VPC sementara.

    gcloud beta sql instances patch INSTANCE_ID \
      --project=PROJECT_ID \
      --network=projects/PROJECT_ID/global/networks/TEMPORARY_VPC_NETWORK_NAME \
      --no-assign-ip
  6. Ubah konfigurasi akses layanan pribadi di jaringan asli untuk menambahkan rentang baru yang dialokasikan atau menghapus rentang yang sudah ada.

  7. Pindahkan kembali instance Cloud SQL ke jaringan VPC asli.

    gcloud beta sql instances patch INSTANCE_ID \
      --project=PROJECT_ID \
      --network=projects/PROJECT_ID/global/networks/ORIGINAL_VPC_NETWORK_NAME \
      --no-assign-ip