Menggunakan certificate authority (CA) yang dikelola pelanggan

Halaman ini menjelaskan cara menggunakan opsi otoritas sertifikasi (CA) yang dikelola pelanggan sebagai mode CA server untuk instance Cloud SQL Anda.

Ringkasan

Dengan opsi CA yang dikelola pelanggan, Anda menyiapkan kumpulan CA dan CA Anda sendiri di Certificate Authority Service (CA Service). Saat memilih opsi CA yang dikelola pelanggan, Anda menyiapkan hierarki CA dan mengelola rotasi sertifikat CA untuk instance Cloud SQL.

Sebelum dapat membuat instance Cloud SQL dengan opsi CA yang dikelola pelanggan, Anda harus membuat kumpulan CA di region yang sama dengan instance dan setidaknya satu CA dalam kumpulan tersebut menggunakan Layanan CA. CA dapat berupa root CA atau subordinate CA. Anda juga memiliki opsi untuk membuat CA subordinat di Layanan CA, lalu membuat rantai CA subordinat ke CA root eksternal. Saat membuat instance, Anda menentukan kumpulan CA. Permintaan Anda didelegasikan ke akun layanan khusus project, yang memiliki izin untuk menggunakan kumpulan CA. Akun layanan meminta CA dari kumpulan dan Cloud SQL menggunakan CA tersebut untuk menandatangani sertifikat server untuk instance.

Untuk mode CA server untuk instance Anda di Cloud SQL, Anda dapat memilih dari tiga opsi berikut:

  • CA internal per instance
  • CA bersama yang dikelola Google
  • CA yang dikelola pelanggan

Anda dapat memilih opsi CA yang dikelola pelanggan jika perlu mengelola CA Anda sendiri karena alasan kepatuhan. Untuk informasi selengkapnya tentang penggunaan opsi lainnya, lihat Memberikan otorisasi dengan sertifikat SSL/TLS.

Alur kerja

Untuk menggunakan opsi CA yang dikelola pelanggan, alur kerjanya adalah sebagai berikut:

  1. Buat akun layanan untuk project Cloud SQL Anda.
  2. Buat kumpulan CA di Layanan CA.
  3. Membuat CA di Layanan CA.
  4. Buat instance Cloud SQL yang menggunakan CA. Saat membuat instance, Anda mendelegasikan izin ke akun layanan untuk menandatangani sertifikat server dengan kumpulan CA yang Anda buat.

Sebelum memulai

Sebelum menggunakan opsi CA yang dikelola pelanggan, pastikan Anda memenuhi persyaratan berikut.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna membuat akun layanan khusus Cloud SQL, minta administrator untuk memberi Anda peran IAM Pembuat Akun Layanan (roles/iam.serviceAccountCreator) untuk setiap project. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Untuk mendapatkan izin yang diperlukan guna membuat kumpulan CA dan CA, minta administrator untuk memberi Anda peran IAM Pengelola Operasi Layanan CA(roles/privateca.caManager) di Layanan CA. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Membuat akun layanan khusus project

Di project tempat Anda berencana membuat instance Cloud SQL, buat akun layanan khusus yang akan menangani permintaan untuk membuat dan menandatangani sertifikat server untuk instance Cloud SQL Anda.

gcloud

Jalankan perintah berikut untuk membuat akun layanan untuk project Cloud SQL Anda:

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

Ganti PROJECT_ID dengan ID project tempat Anda berencana membuat instance Cloud SQL.

Perintah ini membuat akun layanan bernama service-PROJECT_ID@gcp-sa-cloud-sql.iam.gserviceaccount.com dalam project. Catat nama akun layanan CA Service Certificate Requester.

Membuat kumpulan CA

Buat kumpulan CA di Layanan CA.

Anda dapat membuat kumpulan CA di project yang sama dengan tempat Anda berencana membuat instance Cloud SQL, atau membuat kumpulan CA di project yang berbeda. Namun, jika Anda membuat kumpulan CA di project yang berbeda, Kontrol Layanan VPC mungkin memblokir Anda agar tidak membuat instance Cloud SQL, bergantung pada kebijakan organisasi. Untuk memperbaiki masalah ini, pastikan project yang menghosting kumpulan CA dan CA serta project yang menghosting Cloud SQL berada dalam perimeter layanan yang sama. Untuk mengetahui informasi selengkapnya, lihat Perimeter layanan dan Mengelola perimeter layanan.

Untuk membuat kumpulan CA, ikuti petunjuk dalam Membuat kumpulan CA. Anda dapat menerima nilai default untuk kumpulan CA, dengan setelan konfigurasi yang diperlukan berikut:

  • Buat kumpulan CA di region yang sama tempat Anda berencana membuat instance Cloud SQL. Untuk mengetahui daftar region yang didukung oleh Cloud SQL, lihat Region.
  • Mengizinkan permintaan sertifikat berbasis konfigurasi.
  • Mengizinkan nama DNS dalam nama alternatif subjek (SAN). Saat mengonfigurasi batasan identitas kumpulan CA, jangan tetapkan batasan apa pun pada format untuk nama DNS yang mungkin bertentangan dengan yang mungkin ditambahkan Cloud SQL ke SAN.

Memberikan akses ke kumpulan CA ke akun layanan

Untuk memastikan akun layanan memiliki izin untuk meminta dan menandatangani sertifikat untuk instance Cloud SQL Anda, berikan peran berikut ke akun layanan untuk kumpulan CA yang Anda buat:

  • roles/privateca.certificateRequester

gcloud

Jalankan perintah gcloud privateca pools untuk memberikan akses akun layanan ke kumpulan CA:

gcloud privateca pools add-iam-policy-binding CA_POOL_ID \
  --project=PROJECT_ID \
  --location=REGION \
  --member serviceAccount:SERVICE_ACCOUNT_NAME \
  --role=roles/privateca.certificateRequester

Lakukan penggantian berikut:

  • CA_POOL_ID dengan ID kumpulan CA yang Anda buat.
  • PROJECT_ID dengan ID project tempat Anda berencana membuat instance Cloud SQL.
  • REGION dengan region tempat Anda membuat kumpulan CA.
  • SERVICE_ACCOUNT_NAME dengan nama akun layanan CA Service Certificate Requester yang Anda buat untuk project sebelumnya.

Membuat CA di kumpulan CA

Buat minimal satu CA di kumpulan CA yang Anda buat.

Anda dapat membuat CA root atau CA subordinasi.

Untuk membuat CA root, ikuti petunjuk dalam Membuat CA root. Anda dapat menyetujui nilai default untuk CA, tetapi pastikan Anda membuat CA dalam status Enabled.

Saat mengonfigurasi ukuran dan algoritma kunci CA, Anda dapat memilih ukuran dan algoritma kunci apa pun. Cloud SQL membuat sertifikat servernya menggunakan kunci kurva elips EC P-384 (SHA-384), tetapi kunci kriptografis CA Anda tidak harus cocok.

Jika membuat CA subordinat, Anda harus membuat dan mengonfigurasi root CA terlebih dahulu.

Membuat instance Cloud SQL

Untuk membuat instance Cloud SQL yang menggunakan opsi CA yang dikelola pelanggan, lakukan tindakan berikut.

Konsol

Anda tidak dapat menggunakan konsol Google Cloud untuk membuat instance yang menggunakan opsi CA yang dikelola pelanggan selama Pratinjau.

Sebagai gantinya, gunakan perintah gcloud beta sql instances create.

gcloud

gcloud beta sql instances create "INSTANCE_NAME" \
  --project=PROJECT_ID \
  --region=REGION \
  --server-ca-mode=CUSTOMER_MANAGED_CAS_CA \
  --server-ca-pool=projects/PROJECT_ID_CAS/locations/REGION/caPools/CA_POOL_ID

Lakukan penggantian berikut:

  • INSTANCE_NAME dengan nama instance Cloud SQL yang ingin Anda buat.
  • PROJECT_ID dengan ID project tempat Anda berencana membuat instance Cloud SQL.
  • PROJECT_ID_CAS dengan ID project tempat Anda membuat CA_POOL_ID. Project ini mungkin sama atau berbeda dengan tempat Anda ingin membuat instance Cloud SQL.
  • REGION dengan region tempat Anda membuat kumpulan CA. Anda harus membuat instance di region yang sama dengan kumpulan CA.
  • CA_POOL_ID dengan ID kumpulan CA yang Anda buat.

REST

Untuk membuat instance Cloud SQL yang menggunakan opsi CA yang dikelola pelanggan, gunakan metode instances.insert dan tentukan properti berikut:

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID ID project tempat Anda berencana membuat instance Cloud SQL.
  • PROJECT_ID_CAS ID project tempat Anda membuat CA_POOL_ID. Project ini mungkin sama atau berbeda dengan tempat Anda ingin membuat instance Cloud SQL.
  • INSTANCE_ID nama instance Cloud SQL yang ingin Anda buat.
  • REGION region tempat Anda membuat kumpulan CA. Anda harus membuat instance di region yang sama dengan kumpulan CA.
  • CA_POOL_ID dengan ID kumpulan CA yang Anda buat.

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

Meminta isi JSON:

{
  "name":"INSTANCE_ID",
  "region":"REGION",
  "databaseVersion": "DATABASE_VERSION",
  "settings":{
     "ipConfiguration":
      {
         "serverCaPool": "projects/PROJECT_ID_CAS/locations/REGION/caPools/CA_POOL_ID",
         "serverCaMode": "CUSTOMER_MANAGED_CAS_CA"
      }
   }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2025-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID_CSQL/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Memecahkan masalah

Masalah Pemecahan masalah

Anda menerima pesan error berikut:

PERMISSION_DENIED: Permission privateca.certificates.create denied on CA_POOL_ID.
Pastikan Anda telah memberikan peran roles/privateca.certificateRequester ke akun layanan yang Anda buat untuk project Cloud SQL. Untuk informasi selengkapnya, lihat Memberikan akses ke kumpulan CA ke akun layanan.

Anda menerima pesan error berikut:

PERMISSION_DENIED: Request is prohibited by organization's policy vpcServiceControlsUniqueIdentifier VPC_SERVICE_CONTROLS_UNIQUE_IDENTIFIER.
Pastikan Anda mengonfigurasi Kontrol Layanan VPC sehingga project yang menghosting kumpulan CA dan CA Layanan CA dan project yang menghosting Cloud SQL berada dalam perimeter layanan yang sama. Untuk mengetahui informasi selengkapnya, lihat Perimeter layanan dan Mengelola perimeter layanan.

Anda menerima salah satu pesan error INVALID ARGUMENT berikut:

  • Public key algorithm is not permitted by the CaPool's issuance policy.
  • This CaPool's issuance policy does not permit passthrough subjects and/or subject alternative names, and thus can only be used with the REFLECTED_SPIFFE subject mode.
  • Config issuance mode is not permitted by the CaPool's issuance policy.

Periksa setelan konfigurasi kumpulan CA dan CA Anda. Pastikan Anda memenuhi semua persyaratan yang tercantum dalam Membuat kumpulan CA dan Membuat CA di kumpulan CA.

Anda menerima pesan error berikut:

RESOURCE_EXHAUSTED

Hal ini menunjukkan masalah kuota dengan Layanan CA. Verifikasi kuota untuk Layanan CA di project Anda. Periksa apakah Anda mungkin menggunakan permintaan di kumpulan CA di luar Cloud SQL. Untuk mengetahui informasi selengkapnya, lihat Kuota dan batas.

Anda menerima pesan error berikut:

NOT FOUND: parent resource CA_POOL_ID not found.
Periksa project ID, lokasi, dan nama kumpulan CA yang Anda tentukan saat membuat instance Cloud SQL. Pastikan Anda tidak melakukan kesalahan ketik.

Anda menerima pesan error berikut:

FAILED_PRECONDITION: There are no enabled CAs in the CaPool. Please ensure that there is at least one enabled Certificate Authority to issue a certificate.
Pastikan Anda telah membuat setidaknya satu CA di kumpulan CA yang Anda tentukan saat membuat instance Cloud SQL, dan CA tersebut dalam status diaktifkan.

Anda menerima pesan error berikut:

FAILED_PRECONDITION: Per-Product Per-Project Service Account (P4 SA) SERVICE_ACCOUNT_NAME not found for project PROJECT_ID.
Pastikan Anda telah membuat akun layanan untuk project Cloud SQL. Untuk mengetahui informasi selengkapnya, lihat Membuat akun layanan khusus project.

Anda menerima pesan error berikut:

INVALID ARGUMENT: Invalid format for server CA pool.

Pastikan Anda menentukan kumpulan CA dalam format yang benar:

projects/PROJECT_ID/locations/REGION/caPools/CA_POOL_ID

Anda menerima pesan error berikut:

INVALID ARGUMENT: The instance's server CA pool must be in the same region as the instance.

Pastikan kumpulan CA berada di region yang sama dengan instance Cloud SQL yang ingin Anda buat.