|
| 1 | +--- |
| 2 | +title: Panduan Pengamanan - Mekanisme Autentikasi |
| 3 | +description: > |
| 4 | + Informasi tentang opsi otentikasi di Kubernetes dan *securit properties*-nya. |
| 5 | +content_type: concept |
| 6 | +weight: 90 |
| 7 | +--- |
| 8 | + |
| 9 | +<!-- overview --> |
| 10 | + |
| 11 | +Memilih mekanisme otentikasi yang tepat adalah aspek penting dalam mengamankan kluster Anda. |
| 12 | +Kubernetes menyediakan beberapa mekanisme bawaan, masing-masing dengan kelebihan dan kekurangannya |
| 13 | +yang harus dipertimbangkan dengan hati-hati saat memilih mekanisme otentikasi terbaik untuk kluster Anda. |
| 14 | + |
| 15 | +Secara umum, disarankan untuk mengaktifkan sesedikit mungkin mekanisme otentikasi untuk menyederhanakan |
| 16 | +manajemen pengguna dan mencegah kasus di mana pengguna tetap memiliki akses ke kluster yang tidak lagi diperlukan. |
| 17 | + |
| 18 | +Penting untuk dicatat bahwa Kubernetes tidak memiliki basis data pengguna bawaan di dalam kluster. |
| 19 | +Sebaliknya, Kubernetes mengambil informasi pengguna dari sistem otentikasi yang dikonfigurasi dan menggunakan |
| 20 | +informasi tersebut untuk membuat keputusan otorisasi. Oleh karena itu, untuk mengaudit akses pengguna, Anda perlu |
| 21 | +meninjau kredensial dari setiap sumber otentikasi yang dikonfigurasi. |
| 22 | + |
| 23 | +Untuk kluster produksi dengan banyak pengguna yang mengakses API Kubernetes secara langsung, disarankan untuk |
| 24 | +menggunakan sumber autentikasi eksternal seperti OIDC. Mekanisme autentikasi internal, seperti sertifikat klien |
| 25 | +dan token akun layanan yang dijelaskan di bawah ini, tidak cocok untuk kasus penggunaan ini. |
| 26 | + |
| 27 | +<!-- body --> |
| 28 | + |
| 29 | +## Autentikasi sertifikat klien X.509 {#x509-client-certificate-authentication} |
| 30 | + |
| 31 | +Kubernetes memanfaatkan [sertifikat klien X.509](/docs/reference/access-authn-authz/authentication/#x509-client-certificates) |
| 32 | +untuk komponen sistem, seperti saat kubelet mengautentikasi ke API Server. Meskipun mekanisme ini juga dapat digunakan |
| 33 | +untuk autentikasi pengguna, mekanisme ini mungkin tidak cocok untuk penggunaan produksi karena beberapa batasan: |
| 34 | + |
| 35 | +- Sertifikat klien tidak dapat dicabut secara individual. Setelah disusupi, sertifikat dapat digunakan oleh penyerang |
| 36 | + hingga kedaluwarsa. Untuk mengurangi risiko ini, disarankan untuk mengonfigurasi masa berlaku yang pendek untuk |
| 37 | + kredensial autentikasi pengguna yang dibuat menggunakan sertifikat klien. |
| 38 | +- Jika sertifikat perlu dibatalkan, otoritas sertifikat harus diubah kuncinya, yang dapat memperkenalkan risiko |
| 39 | + ketersediaan ke kluster. |
| 40 | +- Tidak ada catatan permanen tentang sertifikat klien yang dibuat di kluster. Oleh karena itu, semua sertifikat yang |
| 41 | + diterbitkan harus dicatat jika Anda perlu melacaknya. |
| 42 | +- Kunci privat yang digunakan untuk autentikasi sertifikat klien tidak dapat dilindungi dengan kata sandi. Siapa pun |
| 43 | + yang dapat membaca file yang berisi kunci tersebut akan dapat menggunakannya. |
| 44 | +- Menggunakan autentikasi sertifikat klien memerlukan koneksi langsung dari klien ke API server tanpa titik |
| 45 | + terminasi TLS yang mengintervensi, yang dapat mempersulit arsitektur jaringan. |
| 46 | +- Data grup tertanam dalam nilai `O` dari sertifikat klien, yang berarti keanggotaan grup pengguna tidak dapat diubah |
| 47 | + selama masa berlaku sertifikat. |
| 48 | + |
| 49 | +## File token statis {#static-token-file} |
| 50 | + |
| 51 | +Meskipun Kubernetes memungkinkan Anda memuat kredensial dari |
| 52 | +[berkas token statis](/docs/reference/access-authn-authz/authentication/#static-token-file) yang terletak |
| 53 | +di disk node control plane, pendekatan ini tidak disarankan untuk server produksi karena beberapa alasan: |
| 54 | + |
| 55 | +- Kredensial disimpan dalam teks biasa di disk node control plane, yang dapat menjadi risiko keamanan. |
| 56 | +- Mengubah kredensial apa pun memerlukan restart proses API server agar berlaku, yang dapat memengaruhi ketersediaan. |
| 57 | +- Tidak ada mekanisme yang tersedia untuk memungkinkan pengguna memutar kredensial mereka. Untuk memutar kredensial, |
| 58 | + administrator kluster harus memodifikasi token di disk dan mendistribusikannya ke pengguna. |
| 59 | +- Tidak ada mekanisme penguncian yang tersedia untuk mencegah serangan brute-force. |
| 60 | + |
| 61 | +## Token bootstrap {#bootstrap-tokens} |
| 62 | + |
| 63 | +[Token bootstrap](/docs/reference/access-authn-authz/bootstrap-tokens/) digunakan untuk menghubungkan |
| 64 | +node ke kluster dan tidak disarankan untuk autentikasi pengguna karena beberapa alasan: |
| 65 | + |
| 66 | +- Mereka memiliki keanggotaan grup yang dikodekan keras yang tidak cocok untuk penggunaan umum, sehingga tidak cocok |
| 67 | + untuk tujuan autentikasi. |
| 68 | +- Pembuatan token bootstrap secara manual dapat menghasilkan token yang lemah yang dapat ditebak oleh penyerang, |
| 69 | + yang dapat menjadi risiko keamanan. |
| 70 | +- Tidak ada mekanisme penguncian yang tersedia untuk mencegah serangan brute-force, sehingga memudahkan penyerang |
| 71 | + untuk menebak atau memecahkan token. |
| 72 | + |
| 73 | +## Token rahasia ServiceAccount {#serviceaccount-secret-tokens} |
| 74 | + |
| 75 | +[Rahasia akun layanan](/docs/reference/access-authn-authz/service-accounts-admin/#manual-secret-management-for-serviceaccounts) |
| 76 | +tersedia sebagai opsi untuk memungkinkan beban kerja yang berjalan di kluster mengautentikasi ke API server. |
| 77 | +Di Kubernetes < 1.23, ini adalah opsi default, namun, mereka sedang digantikan dengan token API TokenRequest. |
| 78 | +Meskipun rahasia ini dapat digunakan untuk autentikasi pengguna, mereka umumnya tidak cocok karena beberapa alasan: |
| 79 | + |
| 80 | +- Mereka tidak dapat diatur dengan masa berlaku dan akan tetap berlaku hingga akun layanan terkait dihapus. |
| 81 | +- Token autentikasi terlihat oleh pengguna kluster mana pun yang dapat membaca rahasia di namespace tempat mereka |
| 82 | + didefinisikan. |
| 83 | +- Akun layanan tidak dapat ditambahkan ke grup arbitrer, yang mempersulit manajemen RBAC di mana mereka digunakan. |
| 84 | + |
| 85 | +## Token API TokenRequest {#tokenrequest-api-tokens} |
| 86 | + |
| 87 | +API TokenRequest adalah alat yang berguna untuk menghasilkan kredensial jangka pendek untuk autentikasi layanan |
| 88 | +ke API server atau sistem pihak ketiga. Namun, ini umumnya tidak disarankan untuk autentikasi pengguna karena tidak |
| 89 | +ada metode pencabutan yang tersedia, dan mendistribusikan kredensial ke pengguna dengan cara yang aman dapat menjadi |
| 90 | +tantangan. |
| 91 | + |
| 92 | +Saat menggunakan token TokenRequest untuk autentikasi layanan, disarankan untuk menerapkan masa berlaku yang pendek |
| 93 | +untuk mengurangi dampak token yang disusupi. |
| 94 | + |
| 95 | +## Autentikasi token OpenID Connect {#openid-connect-token-authentication} |
| 96 | + |
| 97 | +Kubernetes mendukung integrasi layanan autentikasi eksternal dengan API Kubernetes menggunakan |
| 98 | +[OpenID Connect (OIDC)](/docs/reference/access-authn-authz/authentication/#openid-connect-tokens). |
| 99 | +Ada berbagai macam perangkat lunak yang dapat digunakan untuk mengintegrasikan Kubernetes dengan penyedia identitas. |
| 100 | +Namun, saat menggunakan autentikasi OIDC di Kubernetes, penting untuk mempertimbangkan langkah-langkah penguatan berikut: |
| 101 | + |
| 102 | +- Perangkat lunak yang diinstal di kluster untuk mendukung autentikasi OIDC harus diisolasi dari beban kerja umum |
| 103 | + karena akan berjalan dengan hak istimewa tinggi. |
| 104 | +- Beberapa layanan Kubernetes yang dikelola memiliki batasan pada penyedia OIDC yang dapat digunakan. |
| 105 | +- Seperti halnya token TokenRequest, token OIDC harus memiliki masa berlaku yang pendek untuk mengurangi dampak |
| 106 | + token yang disusupi. |
| 107 | + |
| 108 | +## Autentikasi token Webhook {#webhook-token-authentication} |
| 109 | + |
| 110 | +[Autentikasi token Webhook](/docs/reference/access-authn-authz/authentication/#webhook-token-authentication) |
| 111 | +adalah opsi lain untuk mengintegrasikan penyedia autentikasi eksternal ke Kubernetes. Mekanisme ini memungkinkan |
| 112 | +layanan autentikasi, baik yang berjalan di dalam kluster atau di luar, untuk dihubungi untuk keputusan autentikasi |
| 113 | +melalui webhook. Penting untuk dicatat bahwa kesesuaian mekanisme ini kemungkinan besar bergantung pada perangkat |
| 114 | +lunak yang digunakan untuk layanan autentikasi, dan ada beberapa pertimbangan khusus Kubernetes yang harus diperhatikan. |
| 115 | + |
| 116 | +Untuk mengonfigurasi autentikasi Webhook, akses ke sistem file server control plane diperlukan. Ini berarti bahwa |
| 117 | +hal ini tidak akan memungkinkan dengan Kubernetes yang dikelola kecuali penyedia secara khusus membuatnya tersedia. |
| 118 | +Selain itu, perangkat lunak apa pun yang diinstal di kluster untuk mendukung akses ini harus diisolasi dari beban |
| 119 | +kerja umum, karena akan berjalan dengan hak istimewa tinggi. |
| 120 | + |
| 121 | +## Proxy autentikasi {#authenticating-proxy} |
| 122 | + |
| 123 | +Opsi lain untuk mengintegrasikan sistem autentikasi eksternal ke Kubernetes adalah dengan menggunakan |
| 124 | +[proxy autentikasi](/docs/reference/access-authn-authz/authentication/#authenticating-proxy). |
| 125 | +Dengan mekanisme ini, Kubernetes mengharapkan menerima permintaan dari proxy dengan nilai header tertentu yang |
| 126 | +ditetapkan, menunjukkan nama pengguna dan keanggotaan grup untuk tujuan otorisasi. Penting untuk dicatat bahwa ada |
| 127 | +pertimbangan khusus yang harus diperhatikan saat menggunakan mekanisme ini. |
| 128 | + |
| 129 | +Pertama, TLS yang dikonfigurasi dengan aman harus digunakan antara proxy dan API server Kubernetes untuk mengurangi |
| 130 | +risiko serangan penyadapan atau pengintaian lalu lintas. Ini memastikan bahwa komunikasi antara proxy dan API server |
| 131 | +Kubernetes aman. |
| 132 | + |
| 133 | +Kedua, penting untuk menyadari bahwa penyerang yang dapat memodifikasi header permintaan mungkin dapat memperoleh |
| 134 | +akses tidak sah ke sumber daya Kubernetes. Oleh karena itu, penting untuk memastikan bahwa header diamankan dengan |
| 135 | +baik dan tidak dapat dirusak. |
| 136 | + |
| 137 | +## {{% heading "whatsnext" %}} |
| 138 | + |
| 139 | +- [Autentikasi Pengguna](/docs/reference/access-authn-authz/authentication/) |
| 140 | +- [Autentikasi dengan Token Bootstrap](/docs/reference/access-authn-authz/bootstrap-tokens/) |
| 141 | +- [Autentikasi Kubelet](/docs/reference/access-authn-authz/kubelet-authn-authz/#kubelet-authentication) |
| 142 | +- [Autentikasi dengan Token Akun Layanan](/docs/reference/access-authn-authz/service-accounts-admin/#bound-service-accounfor kens) |
0 commit comments