0Pricing
Docker & DevOps Fundamentals · Pelajaran

Manajemen Secret & RBAC

Pelajari strategi lanjutan untuk mengelola data sensitif dan menerapkan Kontrol Akses Berbasis Peran (RBAC) di lingkungan container.

Manajemen Secret & RBAC adalah pelajaran Docker & DevOps Fundamentals gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Docker & DevOps Fundamentals, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Docker & DevOps Fundamentals mencakup 4 pelajaran total.

Amankan Lingkungan Container Anda

Selamat datang! Dalam pelajaran ini, kita akan membahas praktik keamanan penting untuk aplikasi yang menggunakan container: Manajemen Secret dan Kontrol Akses Berbasis Peran (RBAC).

Konsep-konsep ini sangat penting untuk melindungi data sensitif dan memastikan hanya entitas yang berwenang yang dapat melakukan tindakan tertentu di lingkungan container Anda.

Manajemen Secret & RBAC — ilustrasi 1

Bahaya Menanamkan Secret Secara Langsung

Menanamkan informasi sensitif seperti kunci API, kata sandi basis data, atau sertifikat privat secara langsung ke dalam kode aplikasi atau Dockerfile merupakan risiko keamanan yang besar.

  • Paparan: Siapa pun yang memiliki akses ke repositori kode atau image yang dibuat dapat melihatnya dengan mudah.
  • Kurangnya Kendali: Mengubah secret mengharuskan Anda membuat ulang dan men-deploy ulang seluruh aplikasi.
  • Masalah Kepatuhan: Melanggar banyak praktik terbaik keamanan dan persyaratan regulasi.

Variabel Lingkungan (dengan Hati-Hati)

Cara umum, tetapi tidak selalu aman, untuk meneruskan secret adalah melalui variabel lingkungan. Docker memungkinkan Anda meneruskannya dengan flag -e, dan aplikasi dapat membacanya.

Namun, variabel lingkungan dapat diperiksa dengan mudah (misalnya, menggunakan docker inspect) dan mungkin tersimpan dalam riwayat shell atau log. Untuk data yang benar-benar sensitif, tersedia solusi yang lebih baik.

Docker Secrets dalam Praktik

Docker Secrets memungkinkan Anda menyimpan dan mengirimkan data sensitif ke container dengan aman. Saat sebuah secret dilampirkan ke container, secret tersebut dipasang sebagai berkas sementara di /run/secrets/.

Pertama, Anda membuat sebuah secret (misalnya, echo "my_secure_pass" | docker secret create app_secret -). Kemudian, aplikasi Anda dapat membacanya:

import os

def main():
    secret_path = "/run/secrets/app_secret"
    try:
        with open(secret_path, 'r') as f:
            secret_value = f.read().strip()
        print(f"Secret read: {secret_value}")
    except FileNotFoundError:
        print("Secret file not found. Make sure it's mounted.")
    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    main()

Ikhtisar Kubernetes Secrets

Serupa dengan Docker Secrets, Kubernetes memiliki objeknya sendiri yang disebut "Secrets" untuk menyimpan dan mengelola informasi sensitif. Secret ini dapat dipasang sebagai berkas ke dalam Pod atau ditampilkan sebagai variabel lingkungan.

Penting: Kubernetes Secrets dikodekan dalam base64, bukan dienkripsi secara default. Artinya, secret tersebut mudah didekode. Untuk enkripsi saat data disimpan, Anda memerlukan konfigurasi tambahan (misalnya, integrasi KMS).

Deployment dengan K8s Secrets

Mari lihat contoh cara mendefinisikan Kubernetes Secret lalu menggunakannya di dalam Pod. Anda dapat mendefinisikan secret dalam YAML atau membuatnya melalui perintah kubectl.

Setelah dibuat, Pod dapat merujuk secret tersebut untuk memasangnya sebagai volume atau memasukkan nilainya sebagai variabel lingkungan.

apiVersion: v1
kind: Pod
metadata:
  name: my-secret-pod
spec:
  containers:
  - name: my-app-container
    image: busybox
    command: ["sh", "-c", "echo Username: $(cat /etc/secrets/username) Password: $(cat /etc/secrets/password)"]
    volumeMounts:
    - name: secret-volume
      mountPath: "/etc/secrets"
      readOnly: true
  volumes:
  - name: secret-volume
    secret:
      secretName: my-k8s-secret

Penyimpanan Secret Eksternal

Untuk data yang sangat sensitif, atau saat mengelola secret di berbagai cluster dan lingkungan, alat manajemen secret eksternal menawarkan fitur lanjutan seperti:

  • Penyimpanan Terpusat: Satu sumber kebenaran untuk semua secret.
  • Enkripsi Saat Disimpan dan Saat Transit: Jaminan keamanan yang lebih kuat.
  • Secret Dinamis: Kredensial berumur pendek yang dibuat secara otomatis.
  • Pengauditan dan Kontrol Akses: Izin terperinci dan logging menyeluruh.

Pilihan yang populer mencakup HashiCorp Vault, AWS Secrets Manager, dan Azure Key Vault.

Apa Itu RBAC?

Kontrol Akses Berbasis Peran (RBAC) adalah metode untuk membatasi akses sistem hanya kepada pengguna yang berwenang. Alih-alih menetapkan izin langsung kepada pengguna secara individual, izin dikelompokkan ke dalam "peran", lalu pengguna ditetapkan ke peran tersebut.

Dalam orkestrasi container, RBAC memastikan bahwa pengguna, aplikasi, atau layanan hanya memiliki izin yang diperlukan untuk berinteraksi dengan sumber daya (seperti Pod, Deployment, dan Secrets).

Komponen Dasar RBAC K8s

RBAC Kubernetes menggunakan beberapa jenis sumber daya utama:

  • Role: Mendefinisikan izin dalam namespace tertentu (misalnya, "dapat melihat pod" dalam namespace "dev").
  • ClusterRole: Mendefinisikan izin di seluruh cluster (misalnya, "dapat melihat semua pod" atau "dapat mengelola node").
  • RoleBinding: Memberikan izin yang ditetapkan dalam Role kepada pengguna, grup, atau akun layanan dalam suatu namespace.
  • ClusterRoleBinding: Memberikan izin yang ditetapkan dalam ClusterRole kepada pengguna, grup, atau akun layanan di seluruh cluster.

Contoh RBAC: Membatasi Akses

Mari lihat contoh pemberian izin kepada akun layanan tertentu agar hanya dapat mencantumkan dan mengambil pod dalam namespace tertentu. Ini menerapkan prinsip hak akses minimum.

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["pods"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods-binding
  namespace: default
subjects:
- kind: ServiceAccount
  name: pod-viewer-sa # Name of the ServiceAccount to bind to
  namespace: default
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

Uji Pemahaman Anda

Anda telah mempelajari cara mengamankan data sensitif dan mengendalikan akses. Saatnya melakukan pemeriksaan singkat!

Rangkuman: Amankan Aplikasi Anda

Kerja bagus! Dalam pelajaran ini, Anda telah mempelajari dua pilar penting keamanan container:

  • Manajemen Secret: Melindungi data sensitif menggunakan Docker Secrets dan Kubernetes Secrets, serta memahami kelebihan dan keterbatasannya.
  • Kontrol Akses Berbasis Peran (RBAC): Menerapkan izin terperinci di Kubernetes untuk memastikan prinsip hak akses minimum.

Dengan menguasai hal-hal ini, Anda sedang membangun aplikasi berbasis container yang lebih tangguh dan aman!

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Manajemen Secret & RBAC” gratis?

Ya — teks lengkap “Manajemen Secret & RBAC” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Docker & DevOps Fundamentals, upgrade ke CoddyKit PRO. Kursus Docker & DevOps Fundamentals mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Manajemen Secret & RBAC”?

Pelajari strategi lanjutan untuk mengelola data sensitif dan menerapkan Kontrol Akses Berbasis Peran (RBAC) di lingkungan container. Kamu berlatih Docker & DevOps Fundamentals dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Docker & DevOps Fundamentals?

Tidak diperlukan pengalaman sebelumnya. Docker & DevOps Fundamentals di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Manajemen Secret & RBAC” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Docker & DevOps Fundamentals ini?

Ya. Setiap pelajaran Docker & DevOps Fundamentals menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pemindaian Keamanan Image Container
  2. Keamanan Container Saat Berjalan
  3. Manajemen Secret & RBAC
  4. Kebijakan Jaringan dan Jaringan dengan Hak Minimum
← Kembali ke Docker & DevOps Fundamentals