Menggunakan Secret untuk menyimpan data sensitif


Anda dapat menggunakan Rahasia untuk menyimpan informasi konfigurasi yang sensitif, seperti {i>password<i} dan kunci akses, di cluster GKE Anda. Halaman ini menjelaskan cara Config Connector menggunakan nilai Secret saat mengonfigurasi resource Google Cloud.

Ringkasan

Bagian ini menampilkan ringkasan tentang penggunaan Secret dengan Config Connector.

Menggunakan Secret saat membuat resource

Anda dapat menggunakan data di dalam Secret saat membuat resource. Di beberapa Meneruskan Secret ke resource, Anda harus membuat Secret yang berisi {i>password<i}, kemudian mereferensikan Secret tersebut untuk pengguna di database Cloud SQL.

Memperbarui Secret

Saat Anda menerapkan update ke Secret, Config Connector akan memperbarui resource saat berikutnya akan merekonsiliasi status yang Anda inginkan. Misalnya, jika Anda memperbarui Secret yang dirujuk sebagai sandi untuk SQLUser, Config Connector akan memperbarui {i>password<i} pengguna.

Menghapus Rahasia

Jika Anda menghapus Secret yang digunakan oleh resource, Config Connector akan tidak menghapus referensi resource ke Secret tersebut. Misalnya, jika Anda membuat SQLUser dengan {i>password<i} yang mereferensikan sebuah Secret dan kemudian menghapus Secret tersebut, kata sandi akan tetap berada di SQLUser.

Pemecahan masalah

Jika Anda membuat sumber daya yang mereferensikan sebuah Secret yang tidak ada, Config Connector akan membuat DependencyNotFound atau DependencyInvalid Peristiwa.

Secret dan namespace Kubernetes

Karena Kubernetes tidak mengizinkan akses ke secret di seluruh Namespace, jika Anda menggunakan nilai secret yang sama untuk resource dari berbagai Namespace, Anda dapat harus menerapkan secret di setiap Namespace.

Meneruskan Secret ke resource

Di bagian ini, Anda akan membuat server Cloud SQL dan menetapkan {i>password<i} pengguna dengan Secret.

Sebelum memulai

Untuk menyelesaikan langkah-langkah ini, Anda memerlukan hal berikut:

  • Config Connector yang diinstal di cluster Kubernetes
  • Cloud SQL Admin API yang diaktifkan di project Anda. Untuk mengonfirmasi bahwa API diaktifkan, jalankan perintah gcloud berikut:

    gcloud services list --filter=sqladmin.googleapis.com
    

    Jika perintah mencetak Listed 0 items., Anda harus mengaktifkan API. Anda dapat mengaktifkan API dengan Config Connector dan Resource Manager API, atau gcloud perintah.

Service Usage API

  1. Config Connector menggunakan Service Usage API untuk mengaktifkan API layanan. Untuk melakukan langkah-langkah ini, Anda harus mengaktifkan Penggunaan Layanan Compute Engine API. Anda dapat mengaktifkan API ini menggunakan Google Cloud CLI:
    gcloud services enable serviceusage.googleapis.com
  2. Salin YAML berikut ke file bernama enable-sql.yaml

    apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
    kind: Service
    metadata:
      name: sqladmin.googleapis.com
    
  3. Terapkan enable-sql.yaml ke cluster Anda dengan kubectl:

    kubectl apply -f enable-sql.yaml --namespace CC_NAMESPACE
    

    Mengganti CC_NAMESPACE dengan namespace Config Connector mengelola resource.

gcloud

Untuk mengaktifkan SQL Admin API dengan Google Cloud CLI, jalankan perintah berikut:

gcloud services enable sqladmin.googleapis.com

Membuat Cloud SQL Server

  1. Salin YAML di bawah ke file bernama sql-server-example.yaml. Ini membuat server Cloud SQL bernama sqlserver-1 dan pengguna bernama sqluser-sample. Sandi untuk sqluser-sample disetel oleh referensi resource ke secret bernama secret-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 extracted
    
  2. Salin YAML di bawah ke file bernama example-secret.yaml. Edit untuk password sebelum menyimpan. Tindakan ini mendeklarasikan secret-1, yang direferensikan di bagian sebelumnya.

    apiVersion: v1
    kind: Secret
    metadata:
      name:  secret-1
    stringData:
      password: PASSWORD
    
  3. Terapkan konfigurasi tersebut ke cluster Anda.

    kubectl apply -n CC_NAMESPACE -f example-secret.yaml
    kubectl apply -n CC_NAMESPACE -f sql-server-example.yaml
    

    Mengganti CC_NAMESPACE dengan namespace Config Connector mengelola resource.

    Config Connector membuat instance Cloud SQL dan pengguna dengan {i>password<i} yang Anda tentukan. Prosesnya mungkin perlu waktu beberapa menit.

  4. Tunggu beberapa menit, dan pastikan instance tersedia:

    gcloud sql instances list --filter="name=sqlserver-1"

    Output harus menyertakan server dengan STATUS dari RUNNABLE.

  5. Pastikan Anda dapat terhubung ke instance SQL:

    gcloud sql connect sqlserver-1 --user=sqluser-sample

    Anda diminta untuk memasukkan sandi.

Pembersihan

Jika Anda tidak ingin mempertahankan instance, hapus instance Cloud SQL, dan secret dengan kubectl.

    kubectl delete -n CC_NAMESPACE -f sql-server-example.yaml
    kubectl delete -n CC_NAMESPACE -f example-secret.yaml

Mengganti CC_NAMESPACE dengan namespace Config Connector mengelola resource.

Langkah selanjutnya