Menggunakan Secret untuk menyimpan data sensitif
Anda dapat menggunakan Secret untuk menyimpan informasi konfigurasi yang sensitif, seperti sandi dan kunci akses, di cluster GKE Anda. Halaman ini menjelaskan cara Config Connector menggunakan nilai Secret saat mengonfigurasi resource Google Cloud Anda.
Ringkasan
Bagian ini menyajikan ringkasan tentang penggunaan Secret dengan Config Connector.
Keamanan dan Enkripsi rahasia dalam penyimpanan
Karena Secret Kubernetes berisi kredensial dan string koneksi yang sensitif, aktifkan enkripsi secret lapisan aplikasi di cluster Anda. GKE mengenkripsi Secret dalam penyimpanan secara default. Enkripsi secret lapisan aplikasi menambahkan lapisan keamanan lain menggunakan enkripsi amplop Cloud Key Management Service.
Selain itu, gunakan role-based access control (RBAC) untuk membatasi akses baca ke
Secret hanya untuk administrator cluster yang diberi otorisasi. Terapkan batasan yang sama ke resource Config Connector yang menyimpan nilai sensitif di kolom status, seperti IAMServiceAccountKey.
Menggunakan Secret saat membuat resource
Anda dapat menggunakan data di dalam Secret saat membuat resource. Di bagian Meneruskan Secret ke resource, Anda akan membuat Secret yang berisi sandi, lalu mereferensikan Secret untuk pengguna di database Cloud SQL.
Memperbarui Secret
Saat Anda menerapkan update ke Secret, Config Connector akan mengupdate resource saat
merekonsiliasi status yang Anda inginkan berikutnya. Misalnya, jika Anda memperbarui Secret yang direferensikan sebagai sandi untuk SQLUser, Config Connector akan memperbarui sandi pengguna.
Menghapus Secret
Jika Anda menghapus Secret yang sedang digunakan oleh resource, Config Connector tidak akan menghapus referensi resource ke Secret tersebut. Misalnya, jika Anda membuat SQLUser dengan sandi yang merujuk ke Secret, lalu menghapus Secret, sandi akan tetap ada di SQLUser.
Pemecahan masalah
Jika Anda membuat resource yang mereferensikan Secret yang tidak ada, Config Connector akan membuat Peristiwa DependencyNotFound atau DependencyInvalid.
Secret dan namespace Kubernetes
Karena Kubernetes tidak mengizinkan akses ke secret di seluruh Namespace, jika Anda menggunakan nilai secret yang sama untuk resource dari Namespace yang berbeda, Anda harus menerapkan secret di setiap Namespace.
Meneruskan Secret ke resource
Di bagian ini, Anda akan membuat server Cloud SQL dan menetapkan sandi pengguna default dengan Secret.
Sebelum memulai
Untuk menyelesaikan langkah-langkah ini, Anda memerlukan hal berikut:
- Config Connector yang diinstal di cluster Kubernetes
Cloud SQL Admin API diaktifkan di project Anda. Untuk memastikan bahwa API sudah diaktifkan, jalankan perintah
gcloudberikut:gcloud services list --filter=sqladmin.googleapis.comJika perintah mencetak
Listed 0 items., Anda harus mengaktifkan API. Anda dapat mengaktifkan API dengan Config Connector dan Resource Manager API, atau perintahgcloud.
Service Usage API
- Config Connector menggunakan Service Usage API untuk mengaktifkan API layanan. Untuk melakukan langkah-langkah ini, Anda harus mengaktifkan API Service Usage. Anda dapat mengaktifkan API ini menggunakan Google Cloud CLI:
gcloud services enable serviceusage.googleapis.com
Salin YAML berikut ke dalam file bernama
enable-sql.yamlapiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 kind: Service metadata: name: sqladmin.googleapis.comTerapkan
enable-sql.yamlke cluster Anda dengankubectl:kubectl apply -f enable-sql.yaml --namespace CC_NAMESPACEGanti
CC_NAMESPACEdengan namespace tempat Config Connector mengelola resource.
gcloud
Untuk mengaktifkan SQL Admin API dengan Google Cloud CLI, jalankan perintah berikut:
gcloud services enable sqladmin.googleapis.com
Membuat Server Cloud SQL
Salin YAML di bawah ke dalam file bernama
sql-server-example.yaml. Tindakan ini akan membuat server Cloud SQL bernamasqlserver-1dan pengguna bernamasqluser-sample. Sandi untuksqluser-sampleditetapkan oleh referensi resource ke secret bernamasecret-1.apiVersion: sql.cnrm.cloud.google.com/v1beta1 kind: SQLInstance metadata: labels: label-one: "sql-server-example" name: sqlserver-1 spec: region: us-central1 databaseVersion: MYSQL_5_7 settings: tier: db-g1-small --- apiVersion: sql.cnrm.cloud.google.com/v1beta1 kind: SQLUser metadata: name: sqluser-sample spec: instanceRef: name: sqlserver-1 host: "%" password: valueFrom: secretKeyRef: name: secret-1 # Name of the Secret object to extract a value from key: password # Key that identifies the value to be extractedSalin YAML di bawah ke dalam file bernama
example-secret.yaml. Edit nilai untukpasswordsebelum menyimpan. Tindakan ini mendeklarasikansecret-1, yang direferensikan di bagian sebelumnya.apiVersion: v1 kind: Secret metadata: name: secret-1 stringData: password: PASSWORDTerapkan konfigurasi ke cluster Anda.
kubectl apply -n CC_NAMESPACE -f example-secret.yamlkubectl apply -n CC_NAMESPACE -f sql-server-example.yamlGanti
CC_NAMESPACEdengan namespace tempat Config Connector mengelola resource.Config Connector membuat instance Cloud SQL dan pengguna dengan sandi yang Anda tentukan. Proses ini dapat memerlukan waktu beberapa menit.
Tunggu beberapa menit, dan pastikan instance tersedia:
gcloud sql instances list --filter="name=sqlserver-1"
Output-nya harus menyertakan server dengan
STATUSdariRUNNABLE.Pastikan Anda dapat terhubung ke instance SQL:
gcloud sql connect sqlserver-1 --user=sqluser-sample
Anda akan diminta untuk memasukkan sandi.
Pembersihan
Jika Anda tidak ingin mempertahankan instance, hapus instance, pengguna, dan secret Cloud SQL dengan kubectl.
kubectl delete -n CC_NAMESPACE -f sql-server-example.yaml
kubectl delete -n CC_NAMESPACE -f example-secret.yaml
Ganti CC_NAMESPACE dengan namespace tempat Config Connector mengelola resource.
Langkah berikutnya
Pelajari cara menentukan Referensi resource di antara resource Config Connector.
Pelajari Secret Kubernetes secara mendalam.