Menggunakan akses darurat (GKE, cluster GKE)

Halaman ini memberikan petunjuk cara menggunakan akses darurat dengan Otorisasi Biner.

Sebelum memulai

Panduan ini mengasumsikan bahwa Anda telah menyiapkan Otorisasi Biner.

Ringkasan

Anda menggunakan breakglass untuk men-deploy image container yang diblokir Otorisasi Biner.

Breakglass menyediakan solusi darurat yang memungkinkan Anda mengganti penerapan kebijakan Otorisasi Biner untuk memungkinkan image di-deploy, bahkan image yang tidak diizinkan oleh kebijakan.

Fitur ini diimplementasikan sesuai dengan rekomendasi dalam spesifikasi pengontrol tiket masuk Kubernetes.

Saat Anda menggunakan akses darurat untuk men-deploy image, peristiwa akses darurat akan otomatis dicatat ke Cloud Audit Logs, terlepas dari apakah deployment tersebut memenuhi atau melanggar kebijakan. Di Cloud Audit Logs, Anda dapat mengaudit secara manual atau otomatis memicu pemberitahuan atau peristiwa downstream lainnya.

Untuk mengaktifkan akses darurat, Anda menambahkan kolom label ke spesifikasi Pod dengan flag kebijakan break-glass.

Mendemonstrasikan acara akses darurat

Bagian ini menunjukkan cara menggunakan akses darurat untuk men-deploy gambar, termasuk gambar yang melanggar kebijakan Otorisasi Biner.

Memperbarui kebijakan Otorisasi Biner untuk menolak semua permintaan deployment

Untuk memperbarui kebijakan guna melarang semua image di-deploy, lakukan langkah-langkah berikut:

Konsol Google Cloud

  1. Buka halaman Otorisasi Biner di konsol Google Cloud.

    Buka Otorisasi Biner

  2. Klik Edit kebijakan.

  3. Di halaman Edit policy, di Project default rule, catat mode evaluasi asli, lalu klik Disallow all images.

  4. Klik Save policy.

gcloud

  1. Untuk menyimpan kebijakan yang ada dalam project saat ini, jalankan perintah berikut:

    gcloud container binauthz policy export > SAVE_POLICY_YAML
    

    Ganti SAVE_POLICY_YAML dengan jalur file ekspor—misalnya, /tmp/save_policy.yaml.

  2. Membuat file kebijakan:

    cat > TEST_POLICY_YAML << EOM
    admissionWhitelistPatterns:
    defaultAdmissionRule:
      enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
      evaluationMode: ALWAYS_DENY
    globalPolicyEvaluationMode: DISABLE
    EOM
    

    Ganti TEST_POLICY_YAML dengan jalur file—misalnya, /tmp/policy.yaml.

  3. Impor kebijakan:

    gcloud container binauthz policy import TEST_POLICY_YAML
    

    Ganti TEST_POLICY_YAML dengan jalur file—misalnya, /tmp/policy.yaml.

Secara default, semua image kini diblokir agar tidak di-deploy.

Mencoba men-deploy image

Di bagian ini, Anda akan mencoba men-deploy image. Aturan default kebijakan dikonfigurasi untuk melarang semua image di-deploy, sehingga permintaan deployment akan gagal.

  1. Membuat file konfigurasi dalam format YAML. File ini berisi informasi dasar yang diperlukan untuk membuat pod:

    cat > /tmp/create_pod.yaml << EOM
    apiVersion: v1
    kind: Pod
    metadata:
      name: breakglass-pod
    spec:
      containers:
      - name: container-name
        image: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
    EOM
    
  2. Buat Pod menggunakan kubectl:

    kubectl create -f /tmp/create_pod.yaml
    

    Anda akan melihat error yang menunjukkan bahwa gambar diblokir oleh kebijakan Anda. Error ini terlihat seperti berikut:

    Error from server (Forbidden): error when creating "/tmp/create_pod.yaml": pods "breakglass-pod" is forbidden: image policy webhook backend denied one or more images: Image gcr.io/google-samples/hello-app denied by Binary Authorization default
    admission rule. Denied by always_deny admission rule`.

Aktifkan akses darurat dan deploy lagi

Di bagian ini, Anda akan mengaktifkan akses darurat. Meskipun akses darurat khusus untuk Otorisasi Biner, Anda harus memperbarui kolom label pada spesifikasi Pod untuk mengaktifkannya.

Untuk mengaktifkan akses darurat, jalankan perintah berikut:

  1. Membuat file konfigurasi dalam format YAML.

    Perintah berikut akan membuat file yang berisi label break-glass dan informasi lain yang diperlukan untuk membuat pod:

    cat > /tmp/create_pod.yaml << EOM
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-name
      labels:
        image-policy.k8s.io/break-glass: "true"
    spec:
      containers:
      - name: container-name
        image: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
    EOM
    

    Untuk semua versi master Kubernetes sebelumnya, Anda dapat mengaktifkan akses darurat dengan menambahkan alpha.image-policy.k8s.io/break-glass ke node annotations, sebagai berikut:

    cat > /tmp/create_pod.yaml << EOM
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-name
      annotations:
         alpha.image-policy.k8s.io/break-glass: "true"
    spec:
      containers:
      - name: container-name
        image: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
    EOM
    
  2. Buat pod menggunakan kubectl:

    kubectl create -f /tmp/create_pod.yaml
    

    Catat output: pod/pod-name created

Temukan entri log akses darurat di Cloud Audit Logs

Lihat peristiwa akses darurat di Log Audit Cloud.

Pembersihan

Untuk menghapus Pod dan menonaktifkan akses darurat, lakukan langkah berikut:

  1. Hapus Pod:

      kubectl delete -f /tmp/create_pod.yaml
      

    Verifikasi bahwa Anda menerima output seperti pod <var>pod-name</var> deleted.

  2. Hapus blok label atau annotations dari spesifikasi Pod Anda.

  3. Reset kebijakan:

    Konsol Google Cloud

    1. Buka halaman Otorisasi Biner di konsol Google Cloud.

      Buka Otorisasi Biner

    2. Klik Edit kebijakan.

    3. Di halaman Edit policy, di Project default rule, reset mode evaluasi ke setelan sebelumnya.

    4. Klik Save policy.

    gcloud

    1. Impor ulang kebijakan awal Anda.

        gcloud container binauthz policy import SAVE_POLICY_YAML
      

      Ganti SAVE_POLICY_YAML dengan jalur ke file yang telah Anda buat sebelumnya dalam panduan ini.

    Kebijakan Anda direset.

Langkah selanjutnya