Dokumen ini menjelaskan langkah-langkah untuk membuat root certificate authority (CA) di Google Distributed Cloud (GDC) dengan air gap.
CA root, yang berada di atas hierarki infrastruktur kunci publik (PKI), menetapkan trust anchor untuk PKI. Untuk menggunakan sertifikat dalam PKI, perangkat, software, dan komponen harus memercayai CA root. Konfigurasi ini memastikan kepercayaan pada semua sertifikat yang dikeluarkan oleh CA root, sehingga memungkinkan kepercayaan pada PKI itu sendiri.
Dokumen ini ditujukan untuk audiens dalam grup operator aplikasi, seperti developer aplikasi atau ilmuwan data, yang mengelola siklus proses sertifikat dalam project mereka. Untuk mengetahui informasi selengkapnya, lihat Audiens untuk dokumentasi GDC dengan air gap.
Sebelum memulai
Sebelum dapat membuat certificate authority root, Anda harus meminta izin yang diperlukan dan menyiapkan lingkungan Anda.
Meminta peran IAM
Untuk membuat, memperbarui, dan menghapus otoritas sertifikat root, hubungi Admin IAM Organisasi Anda untuk meminta peran Certificate Authority Service Admin (certificate-authority-service-admin).
Menyiapkan lingkungan Anda
Download dan instal gdcloud CLI, jika Anda belum melakukannya.
Buat file kubeconfig untuk mengonfigurasi akses
kubectl.
Membuat root certificate authority
Untuk membuat CA root, terapkan resource kustom ke instance air-gapped Distributed Cloud Anda.
Buat resource
CertificateAuthoritydan simpan sebagai file YAML bernamaroot-ca.yaml:apiVersion: pki.security.gdc.goog/v1 kind: CertificateAuthority metadata: name: ROOT_CA_NAME namespace: USER_PROJECT_NAMESPACE spec: caProfile: commonName: COMMON_NAME duration: DURATION renewBefore: RENEW_BEFORE organizations: - ORGANIZATION organizationalUnits: - ORGANIZATIONAL_UNITS countries: - COUNTRIES localities: - LOCALTIES provinces: - PROVINCES streetAddresses: - STREET_ADDRESSES postalCodes: - POSTAL_CODES caCertificate: selfSignedCA: {} certificateProfile: keyUsage: - digitalSignature - keyCertSign - crlSign extendedKeyUsage: - EXTENDED_KEY_USAGE secretConfig: secretName: SECRET_NAME privateKeyConfig: algorithm: KEY_ALGORITHM size: KEY_SIZE acme: enabled: ACME_ENABLEDGanti variabel berikut:
Variabel Deskripsi ROOT_CA_NAME Nama CA root. USER_PROJECT_NAMESPACE Nama namespace tempat project pengguna berada. COMMON_NAME Nama umum sertifikat CA. DURATION Masa berlaku yang diminta untuk sertifikat CA. Tentukan sebagai durasi dalam jam (misalnya, 1000h). Satuan seperti hari (d) atau tahun (y) tidak didukung.SECRET_NAME Nama Secret Kubernetes yang menyimpan kunci pribadi dan sertifikat CA yang ditandatangani. Variabel berikut adalah nilai opsional:
Variabel Deskripsi RENEW_BEFORE Waktu rotasi sebelum sertifikat CA berakhir. ORGANIZATION Organisasi yang akan digunakan pada sertifikat. ORGANIZATIONAL_UNITS Unit organisasi yang akan digunakan pada sertifikat. COUNTRIES Negara yang akan digunakan pada sertifikat. LOCALITIES Kota yang akan digunakan pada sertifikat. PROVINCES Negara Bagian atau Provinsi yang akan digunakan pada sertifikat. STREET_ADDRESSES Alamat jalan yang akan digunakan pada sertifikat. POSTAL_CODES Kode pos yang akan digunakan pada sertifikat. EXTENDED_KEY_USAGE Penggunaan kunci yang diperpanjang untuk sertifikat. Jika diberikan, nilai yang diizinkan adalah serverAuthdanclientAuth.KEY_ALGORITHYM Algoritma kunci pribadi yang digunakan untuk sertifikat ini. Nilai yang diizinkan adalah RSA,Ed25519, atauECDSA. Jika ukuran tidak diberikan, nilai defaultnya adalah 256 untukECDSAdan 2048 untukRSA. Ukuran tombol diabaikan untukEd25519.KEY_SIZE Ukuran, dalam bit, kunci pribadi untuk sertifikat ini bergantung pada algoritma. RSAmemungkinkan 2048, 3072, 4096, atau 8192 (default 2048).ECDSAmemungkinkan 256, 384, atau 521 (default 256).Ed25519mengabaikan ukuran.ACME_ENABLED Jika disetel ke true, CA akan berjalan dalam mode ACME dan menghasilkan URL server ACME. Kemudian, Anda dapat menggunakan klien dan protokol ACME untuk mengelola sertifikat.Terapkan resource kustom ke instance Distributed Cloud Anda:
kubectl apply -f root-ca.yaml –kubeconfig MANAGEMENT_API_SERVER_KUBECONFIGGanti
MANAGEMENT_API_SERVER_KUBECONFIGdengan jalur ke file kubeconfig server Management API.Verifikasi kesiapan CA root. Biasanya perlu waktu sekitar 40 menit agar CA siap:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthority.pki.security.gdc.goog/ROOT_CA_NAME -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))Outputnya akan terlihat mirip seperti berikut:
{ "lastTransitionTime": "2025-01-24T17:09:19Z", "message": "CA reconciled", "observedGeneration": 2, "reason": "Ready", "status": "True", "type": "Ready" }
Mencantumkan CA
Untuk mencantumkan semua resource Certificate Authority Service di instance Distributed Cloud yang terisolasi dari internet, lakukan hal berikut:
Gunakan parameter certificateauthorities untuk mencantumkan semua resource CertificateAuthority:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthorities
Outputnya akan terlihat mirip seperti berikut:
NAMESPACE NAME READY REASON AGE
foo root-ca True Ready 7h24m
foo sub-ca True Ready 7h24m