Skip to content

Commit 0c57356

Browse files
authored
Merge pull request #50144 from za/ID-translate-concepts-security-hardening-guide
[id] Initial commit on translate hardening-guide to ID
2 parents 6c8b9bd + b28520a commit 0c57356

File tree

1 file changed

+142
-0
lines changed

1 file changed

+142
-0
lines changed
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
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

Comments
 (0)