Untuk mengakses kluster Container Service for Kubernetes (ACK), diperlukan otorisasi ganda yang melibatkan Resource Access Management (RAM) dan Kubernetes Role-Based Access Control (RBAC). Secara default, hanya akun Alibaba Cloud dan pembuat kluster yang memiliki semua izin administratif. Pengguna RAM lainnya atau peran RAM lain harus diberi izin RAM terlebih dahulu untuk mengakses kluster, kemudian diberi izin RBAC untuk mengoperasikan sumber daya Kubernetes di dalamnya.
Cara kerjanya
Model otorisasi ACK mengintegrasikan dua lapisan: Alibaba Cloud RAM dan Kubernetes RBAC. Integrasi ini menciptakan rantai otorisasi yang lengkap, mulai dari platform cloud hingga ke sumber daya kluster individu.
RAM: Mengontrol siapa yang dapat mengakses kluster. Beroperasi pada tingkat sumber daya cloud, mengelola izin untuk panggilan API ke ACK beserta layanan terkaitnya.
RBAC: Mengontrol tindakan yang dapat dilakukan pengguna di dalam kluster dengan menyediakan otorisasi terperinci di dalam Kubernetes. Izin RBAC mendefinisikan operasi spesifik (seperti membuat atau menghapus) yang boleh dijalankan pengguna pada jenis sumber daya tertentu (misalnya, Pod atau Deployment).
Mekanisme RBAC Kubernetes
Izin RBAC dikelola melalui dua pasang objek:
ClusterRoledanClusterRoleBinding:ClusterRolemendefinisikan sekumpulan izin yang berlaku di seluruh kluster, dan diikatkan ke pengguna atau peran menggunakanClusterRoleBinding.RoledanRoleBinding:Rolemendefinisikan izin yang dibatasi pada satu namespace, dan diikatkan ke pengguna atau peran dalam namespace tersebut menggunakanRoleBinding.
Kasus penggunaan 1: Memberikan izin RBAC menggunakan akun Alibaba Cloud
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Authorizations.
Berikan izin kepada:
Pengguna RAM: Pada tab RAM Users, cari pengguna yang akan diberi izin, lalu klik Modify Permissions di kolom Actions.
Peran RAM: Pada tab RAM Roles, pilih peran yang akan diberi izin, lalu klik Modify Permissions.
Di panel Permission Management, klik + Add Permissions, pilih cakupan (kluster atau namespace), lalu pilih peran yang telah ditentukan untuk memberikan tingkat akses yang diinginkan.
Kasus penggunaan 2: Memberikan izin RBAC menggunakan pengguna RAM atau peran RAM
Secara default, pengguna RAM atau peran RAM tidak dapat memberikan izin RBAC kepada identitas lain. Untuk mendelegasikan tanggung jawab ini, Anda dapat menetapkan pengguna RAM atau peran RAM sebagai administrator izin agar dapat memberikan izin RBAC kepada pengguna lain.
Langkah 1: Tetapkan pengguna RAM atau peran sebagai administrator izin
1. Berikan izin RAM yang diperlukan
Metode 1: Otorisasi kebijakan sistem
Kebijakan sistem AliyunRAMReadOnlyAccess dan AliyunCSFullAccess memberikan izin yang luas. Jika Anda memerlukan otorisasi yang lebih terperinci, gunakan Metode 2: Otorisasi terperinci dengan kebijakan kustom.
Masuk ke Konsol RAM menggunakan akun Alibaba Cloud.
Untuk pengguna RAM: Di panel navigasi kiri, pilih , cari pengguna yang akan diberi izin, lalu klik Add Permissions di kolom Actions.
Untuk peran RAM: Di panel navigasi kiri, pilih , cari peran yang akan diberi izin, lalu klik Grant Permissions di kolom Actions.
Atur Resource Scope ke Account. Di bagian Policy, pilih kebijakan sistem
AliyunRAMReadOnlyAccessdanAliyunCSFullAccess, lalu selesaikan otorisasi.
Metode 2: Otorisasi terperinci dengan kebijakan kustom
Administrator izin harus memiliki izin untuk melakukan operasi berikut:
Melihat informasi tentang identitas RAM lainnya.
Melihat daftar dan detail kluster.
Melihat konfigurasi RBAC yang ada untuk sebuah kluster.
Memberikan izin RBAC di kluster.
Masuk ke Konsol RAM dan lampirkan kebijakan kustom berikut ke pengguna RAM atau peran RAM target. Untuk informasi lebih lanjut, lihat Memberikan izin menggunakan kebijakan kustom.
{
"Statement": [{
"Action": [
"ram:Get*",
"ram:List*",
"cs:Get*",
"cs:Describe*",
"cs:List*",
"cs:GrantPermission"
],
"Resource": "*",
"Effect": "Allow"
}
],
"Version": "1"
}2. Berikan izin administrator RBAC
Masuk ke Konsol ACK menggunakan akun Alibaba Cloud Anda. Berikan peran Administrator yang telah ditentukan kepada pengguna RAM atau peran RAM yang ditunjuk pada cakupan kluster.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Authorizations.
Berikan izin kepada:
Pengguna RAM: Pada tab RAM Users, cari pengguna yang akan diberi izin, lalu klik Modify Permissions di kolom Actions.
Peran RAM: Pada tab RAM Roles, pilih peran yang akan diberi izin, lalu klik Modify Permissions.
Di panel Permission Management, klik + Add Permissions, pilih cakupan (kluster atau namespace), lalu pilih Administrator yang telah ditentukan.
Izin yang diberikan pada cakupan semua kluster akan otomatis berlaku untuk setiap kluster baru yang dibuat di masa mendatang.
Langkah 2: Berikan izin RBAC kepada pengguna RAM peran RAM lain
Setelah konfigurasi selesai, administrator izin dapat masuk ke konsol ACK dan memberikan izin RBAC kepada pengguna RAM atau peran RAM lain di halaman Authorization.
Terapkan di lingkungan produksi
Untuk meningkatkan keamanan dan kemudahan pengelolaan izin, kami merekomendasikan untuk mengikuti praktik terbaik berikut:
Prinsip hak istimewa minimal
Hanya berikan izin minimum yang diperlukan oleh pengguna RAM atau peran RAM untuk menjalankan tugasnya. Hindari pemberian peran dengan hak istimewa tinggi seperti administrator secara sembarangan.
Otorisasi terperinci
Otorisasi berlapis: Pisahkan tanggung jawab antara RAM untuk akses sumber daya cloud dan RBAC untuk akses sumber daya kluster.
Batasi cakupan: Jika memungkinkan, gunakan
RoleBindinguntuk memberikan izin dalam namespace tertentu daripada menggunakanClusterRoleBindingyang berlaku di seluruh kluster.Pemilihan peran yang tepat: Mulailah dengan peran ACK yang telah ditentukan. Jika Anda membuat peran kustom, tentukan aturan yang tepat dan hindari penggunaan wildcard (
*).
Tata kelola berkelanjutan
Audit izin secara berkala dan cabut hak akses yang berlebihan atau tidak lagi diperlukan. Pantau dan catat semua tindakan yang dilakukan oleh akun dengan hak istimewa tinggi, seperti izin administrator.
Apendiks: Peran RBAC yang telah ditentukan
Untuk menyederhanakan manajemen izin dan mendukung skenario pengguna umum, ACK menyediakan berbagai peran standar yang telah ditentukan berdasarkan mekanisme RBAC.
Peran yang telah ditentukan | Izin RBAC pada sumber daya kluster |
Administrator | Izin RBAC baca/tulis penuh untuk semua sumber daya Kubernetes di semua namespace, serta untuk sumber daya tingkat kluster termasuk node, PV, namespace, dan kuota sumber daya. |
Read-only Administrator | Izin RBAC baca-saja untuk semua sumber daya Kubernetes di semua namespace, serta untuk sumber daya tingkat kluster termasuk node, PV, namespace, dan kuota sumber daya. |
O&M Engineer | Memberikan izin RBAC berikut:
|
Developer | Akses RBAC baca/tulis ke sumber daya Kubernetes yang terlihat di konsol, dengan cakupan ke semua namespace atau pilihan namespace tertentu. |
Restricted User | Akses RBAC read-only ke sumber daya Kubernetes yang terlihat di konsol, dengan cakupan ke semua namespace atau pilihan namespace tertentu. |
Custom | Izin ditentukan oleh ClusterRole yang Anda pilih. Verifikasi izin yang terdefinisi dalam ClusterRole yang dipilih sebelum Anda memberikannya, untuk menghindari pemberian izin yang tidak diinginkan kepada pengguna RAM atau peran RAM. Untuk informasi lebih lanjut tentang izin kustom, lihat Gunakan RBAC kustom untuk membatasi operasi pada sumber daya kluster. Penting Setelah Anda menetapkan peran cluster-admin kepada pengguna RAM atau peran RAM, pengguna atau peran tersebut mendapatkan izin yang sama dengan akun Alibaba Cloud pemiliknya. Ini memberikan kontrol penuh atas semua sumber daya di dalam kluster. Berhati-hatilah saat Anda menetapkan peran cluster-admin ke pengguna atau peran RAM. |
FAQ
Apa yang harus saya lakukan jika saya mengalami kesalahan izin?
Jika operasi yang dilakukan melalui konsol atau OpenAPI gagal karena kurangnya izin RBAC, sistem akan mengembalikan kode kesalahan terkait penolakan izin. Tabel berikut mencantumkan beberapa kesalahan umum dan solusinya:
Kode/pesan kesalahan | Deskripsi | Solusi |
| Anda tidak diizinkan untuk melihat log control plane. | Berikan peran Administrator atau O&M Engineer kepada pengguna. |
| Anda tidak diizinkan untuk melakukan operasi Helm. | Berikan peran Administrator kepada pengguna. |
| Anda tidak diizinkan untuk merotasi sertifikat. | Berikan peran Administrator kepada pengguna. |
| Anda tidak diizinkan untuk menambahkan node. | Berikan peran Administrator atau O&M Engineer kepada pengguna. |
| Anda tidak diizinkan untuk mengubah status enkripsi at-rest KMS cluster. | Berikan peran Administrator atau O&M Engineer kepada pengguna. |
| Anda tidak diizinkan untuk mendapatkan informasi pemicu aplikasi. | Berikan peran Administrator, O&M Engineer, atau Developer kepada pengguna. |
| Anda tidak diizinkan untuk melakukan kueri terhadap namespace kluster. | Berikan peran Administrator, O&M Engineer, Developer, atau Restricted User kepada pengguna. |
Bagaimana cara membuat izin kustom jika peran RBAC yang telah ditentukan tidak memenuhi kebutuhan saya?
Anda dapat membuat Role atau ClusterRole kustom melalui manifest YAML. Misalnya, membuat ClusterRole hanya untuk melihat pod. Saat menetapkan izin, pilih tipe izin kustom dan ikatkan ke ClusterRole yang baru dibuat. Lihat Gunakan RBAC kustom untuk membatasi operasi pada sumber daya kluster.
Kebijakan RBAC Kubernetes bersifat aditif dan hanya mendukung aturan allow. Tidak ada aturan deny yang eksplisit.
Dokumentasi terkait
Jika peran yang telah ditentukan tidak memenuhi kebutuhan Anda, lihat Gunakan RBAC kustom untuk membatasi akses ke sumber daya kluster.
Untuk panduan otorisasi lengkap (termasuk RAM dan RBAC) untuk peran pengguna yang berbeda, lihat topik berikut:
Untuk daftar peran layanan yang digunakan oleh ACK, lihat Peran ACK.
Untuk pemecahan masalah terkait otorisasi lainnya, lihat FAQ Manajemen Otorisasi.