Atasi error kebijakan RAM dan izin RBAC di kluster ACK.
Kegagalan otorisasi
ForbiddenQueryClusterNamespace: Kueri namespace dilarang
Pengguna RAM atau Peran RAM tidak memiliki izin RBAC pada namespace kluster. Buka Authorizations di Konsol ACK dan tetapkan peran RBAC ke Pengguna RAM atau Peran RAM tersebut.
APISERVER_403
Pengguna RAM atau Peran RAM tidak memiliki izin RBAC yang diperlukan pada kluster. Buka Authorizations di Konsol ACK dan berikan peran RBAC yang diperlukan. Lihat Using RBAC Authorization.
Pengguna RAM saat ini tidak memiliki izin manajemen
Pengguna RAM atau Peran RAM tidak dapat memberikan izin RBAC kepada pihak lain. Secara default, hanya pemilik Akun Alibaba Cloud atau Pengguna RAM dengan delegasi eksplisit yang dapat melakukan hal ini.
Untuk mendelegasikan manajemen RBAC ke Pengguna RAM atau Peran RAM (selanjutnya disebut Pengguna A), berikan kedua hal berikut:
Izin administrator RBAC: Di Konsol ACK, pada bagian Authorizations, tetapkan peran administrator bawaan atau peran cluster-admin ke Pengguna A untuk kluster dan namespace target.
Izin RAM: Di Konsol RAM, sambungkan kebijakan kustom ke Pengguna A. Kebijakan tersebut harus mengizinkan Pengguna A untuk mengkueri pengguna dan peran RAM lain dalam akun yang sama, menyambungkan kebijakan tertentu, serta mengelola izin RBAC. Gunakan templat berikut:
{
"Statement": [{
"Action": [
"ram:Get*",
"ram:List*",
"cs:GetUserPermissions",
"cs:GetSubUsers",
"cs:GrantPermission"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ram:AttachPolicyToUser",
"ram:AttachPolicyToRole"
],
"Effect": "Allow",
"Resource": [
"acs:ram:*:*:policy/xxxxxx",
"acs:*:*:*:user/*"
]
}
],
"Version": "1"
}
Gantixxxxxxdengan nama kebijakan yang dapat disambungkan oleh Pengguna A. Untuk mengizinkan semua kebijakan, gantixxxxxxdengan*.
Lihat Buat kebijakan RAM kustom dan Berikan izin RBAC kepada Pengguna RAM atau Peran RAM.
Bagaimana cara membedakan apakah error disebabkan oleh RAM atau RBAC?
Periksa pesan error:
Error kebijakan RAM berisi RAM policy Forbidden atau STSToken policy Forbidden:
RAM policy Forbidden for action cs:DescribeEvents
STSToken policy Forbidden for action cs:DescribeClusterNodes
Kebijakan RAM yang disambungkan ke pengguna atau peran tidak mencakup aksi yang tercantum. Tambahkan aksi yang hilang. Lihat Buat kebijakan RAM kustom.
Error izin RBAC berisi APISERVER_403, User "xxx" cannot xx resource, atau ForbiddenQueryClusterNamespace:
events is forbidden: User "<uid>" cannot list resource "events" in API group "" at the cluster scope
ForbiddenQueryClusterNamespace, Forbidden query namespaces
Artinya, Pengguna RAM <uid> tidak memiliki izin RBAC Kubernetes yang diperlukan. Berikan izin RBAC yang diperlukan.
Saya telah menyambungkan AdministratorAccess atau AliyunCSFullAccess ke Pengguna RAM, tetapi tetap tidak dapat mengakses kluster
ACK memerlukan otorisasi RAM dan otorisasi RBAC. Menyambungkan AdministratorAccess atau AliyunCSFullAccess di Konsol RAM hanya mencakup lapisan RAM. Buka Authorizations di Konsol ACK dan tetapkan juga peran RBAC ke Pengguna RAM tersebut. Lihat Ikhtisar otorisasi dan Berikan izin RBAC kepada Pengguna RAM atau Peran RAM.
ForbiddenCheckControlPlaneLog
Pengguna RAM atau Peran RAM belum ditetapkan ke peran RBAC administrator atau insinyur O&M bawaan. Buka Authorizations di Konsol ACK dan tetapkan peran administrator atau insinyur O&M.
ForbiddenHelmUsage
Pengguna RAM atau Peran RAM belum ditetapkan ke peran RBAC administrator bawaan. Buka Authorizations di Konsol ACK dan tetapkan peran administrator.
ForbiddenRotateCert
Pengguna RAM atau Peran RAM belum ditetapkan ke peran RBAC administrator bawaan. Buka Authorizations di Konsol ACK dan tetapkan peran administrator.
ForbiddenAttachInstance
Pengguna RAM atau Peran RAM belum ditetapkan ke peran RBAC administrator atau insinyur O&M bawaan. Buka Authorizations di Konsol ACK dan tetapkan peran administrator atau insinyur O&M.
ForbiddenUpdateKMSState
Pengguna RAM atau Peran RAM belum ditetapkan ke peran RBAC administrator atau insinyur O&M bawaan. Buka Authorizations di Konsol ACK dan tetapkan peran administrator atau insinyur O&M.
Forbidden get trigger
Pengguna RAM atau Peran RAM belum ditetapkan ke peran RBAC administrator, insinyur O&M, atau developer bawaan. Buka Authorizations di Konsol ACK dan tetapkan salah satu peran tersebut.
Otorisasi RBAC
Apakah saya dapat memberikan izin pada aplikasi tertentu, bukan semua resource?
Ya. Buat ClusterRole kustom yang menggunakan bidang resourceNames untuk membatasi cakupan izin hanya pada aplikasi tertentu, lalu bind ke Pengguna RAM atau Peran RAM.
-
Login ke Konsol ACK.
-
Di panel navigasi kiri, klik Authorizations.
-
Pada tab RAM Users, temukan Pengguna RAM target dan klik Modify Permissions.
CatatanAkun yang Anda gunakan untuk perubahan ini harus memiliki setidaknya izin read-only pada kluster dan harus ditetapkan ke peran
cluster-adminatau administrator. Lihat Buat kebijakan RAM kustom. -
Klik Add Permissions, pilih kluster, namespace, dan jenis otorisasi, lalu klik Submit. Tabel berikut mencantumkan izin peran RBAC bawaan. Untuk langkah selanjutnya, lihat Berikan izin RBAC kepada Pengguna RAM atau Peran RAM.
Catatan-
Izin juga dapat diberikan lintas semua kluster untuk Pengguna RAM.
-
Pengguna RAM atau Peran RAM dapat memiliki satu peran RBAC bawaan dan satu atau beberapa peran RBAC kustom untuk kluster atau namespace tertentu.
Role
Izin RBAC pada resource kluster
Administrator
Akses baca/tulis ke semua resource namespace dan resource tingkat kluster seperti node, volume, namespace, dan kuota.
O&M engineer
Akses baca/tulis ke resource yang terlihat di konsol di semua namespace; akses read-only ke node, volume, namespace, dan kuota.
Developer
Akses baca/tulis ke resource yang terlihat di konsol di semua namespace atau namespace tertentu.
Restricted user
Akses read-only ke resource yang terlihat di konsol di semua namespace atau namespace tertentu.
Custom role
Ditentukan oleh ClusterRole yang dipilih. Tinjau aturannya sebelum penugasan untuk mencegah izin yang tidak diinginkan. Lihat Buat kebijakan RAM kustom.
-
Pengguna RAM yang ditetapkan ke peran cs:admin tidak dapat membuat objek CustomResourceDefinition (CRD)
Hal ini memengaruhi kluster yang dibuat sebelum Mei 2019. ClusterRole cs:admin bawaan pada kluster tersebut tidak memiliki izin untuk beberapa resource Kubernetes, termasuk pembuatan CRD. Dua opsi tersedia:
-
Tetapkan peran
cluster-adminke Pengguna RAM atau Peran RAM. -
Hapus ClusterRole
cs:adminyang ada dan buat ulang dengan definisi berikut:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cs:admin
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'
- nonResourceURLs:
- '*'
verbs:
- '*'
Bagaimana cara menggunakan Pengguna RAM atau Peran RAM untuk menetapkan peran RBAC kepada pengguna lain?
Lihat Pengguna RAM saat ini tidak memiliki izin manajemen untuk informasi tentang izin RAM dan penetapan peran RBAC yang diperlukan.
Bagaimana cara menemukan Pengguna RAM atau Peran RAM yang terkait dengan ClusterRoleBinding atau RoleBinding?
Periksa bidang subjects. Jika kind bernilai User dan name terdiri dari angka atau kombinasi angka dan tanda hubung, maka itu adalah ID Pengguna RAM atau Peran RAM.
Contoh berikut menunjukkan ClusterRoleBinding untuk Pengguna RAM 1*** dan RoleBinding untuk Pengguna RAM 2***:
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: 1***-cluster-admin-clusterrolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: 1***-1673419473
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: 2***-default-rolebinding
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: 'cs:ns:dev'
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: '2***'
Mengapa saya tidak dapat memodifikasi atau mencabut izin RBAC pembuat kluster?
ACK memblokir permintaan untuk memodifikasi atau mencabut izin RBAC pembuat kluster, sehingga pembuat selalu mempertahankan akses ke kluster.
Untuk mencabut izin pembuat kluster, hapus langsung ClusterRoleBinding-nya:
-
Temukan ClusterRoleBinding untuk pembuat. Ganti
<uid>dengan UID Akun Alibaba Cloud.kubectl get clusterrolebinding | grep <uid> -
Buat cadangan dan hapus ClusterRoleBinding tersebut. Ganti
<name>dengan nama yang dikembalikan pada langkah sebelumnya.kubectl get clusterrolebinding <name> -o yaml > <name>.yaml kubectl delete clusterrolebinding <name>
Izin apa saja yang diperlukan untuk menggunakan fitur terminal?
Tetapkan peran RBAC administrator, insinyur O&M, atau developer bawaan ke Pengguna RAM atau Peran RAM. Berikan juga izin RAM untuk memanggil cs:DescribeClusterUserKubeconfig. Lihat Berikan izin RBAC kepada Pengguna RAM atau Peran RAM dan Buat kebijakan RAM kustom.
Bagaimana cara memberikan izin RBAC kepada pengguna yang login melalui CloudSSO?
Pengguna CloudSSO login sebagai Peran RAM, bukan sebagai Pengguna RAM individual. Untuk memberikan izin RBAC, berikan izin tersebut ke Peran RAM, bukan ke akun pengguna individual.
Sebagai contoh, jika pengguna login sebagai AliyunReservedSSO-Policy-foo-bar-admin/foo.bar, berikan izin RBAC ke Peran RAM AliyunReservedSSO-Policy-foo-bar-admin.
Otorisasi RAM
Pengguna RAM dengan izin read-only pada semua kluster tidak lagi dapat melihat beberapa kluster
Penyebab paling umum adalah akun yang salah atau filter kelompok sumber daya non-default—bukan perubahan izin. Periksa hal berikut:
-
Login ke Konsol ACK menggunakan Pengguna RAM atau Peran RAM yang benar.
-
Di bilah navigasi atas, atur cakupan sumber daya ke .
-
Arahkan kursor ke avatar di pojok kanan atas untuk memverifikasi identitas login.
Jika filter kelompok sumber daya aktif, kluster di luar kelompok tersebut akan disembunyikan meskipun izin sudah benar.
Bagaimana cara memberikan izin kepada Pengguna RAM atau Peran RAM untuk membuat kluster?
Dua langkah diperlukan:
-
Tetapkan peran sistem ke ACK menggunakan Akun Alibaba Cloud Anda. Peran sistem hanya perlu ditetapkan sekali. Jika ragu, login dengan Akun Alibaba Cloud Anda, klik Cloud Resource Access Authorization, dan selesaikan otorisasi. Lihat Peran bawaan ACK.
-
Sambungkan kebijakan RAM kustom ke Pengguna RAM atau Peran RAM yang mencakup izin
cs:CreateCluster:Catatan-
Pembuatan kluster mengaitkan sumber daya cloud seperti VPC dengan kluster. Pastikan Pengguna RAM atau Peran RAM dapat mengakses sumber daya tersebut.
-
Sambungkan kebijakan
AliyunVPCReadOnlyAccessuntuk mengizinkan pencantuman VPC. -
Untuk jenis sumber daya lainnya, lihat Otorisasi RAM.
{ "Statement": [{ "Action": [ "cs:CreateCluster" ], "Effect": "Allow", "Resource": [ "*" ] }], "Version": "1" }Lihat Buat kebijakan RAM kustom.
-
Kode kesalahan apa yang menandakan bahwa Akun Alibaba Cloud kehilangan peran layanan ACK yang diperlukan?
Kode kesalahan berikut menunjukkan peran layanan ACK yang hilang. Login dengan Akun Alibaba Cloud atau Pengguna RAM dengan AdministratorAccess, lalu klik tautan dalam pesan kesalahan untuk menyelesaikan penetapan.
|
Kode kesalahan |
Contoh pesan kesalahan |
|
ErrManagedKuberneteRoleNotAttach |
please complete the cluster addon's service ramrole authorization at https://\*\*\* |
|
ErrKubernetesAuditRoleNotAttach |
please complete the cluster addon's service ramrole authorization at https://\*\*\* |
|
ErrManagedAddonRoleNotAttach |
please complete the cluster addon's service ramrole authorization at https://\*\*\* |
|
ErrManagedSecurityRoleNotAttach |
please complete the security ramrole authorization at https://\*\*\* |
|
ErrEdgeAddonRoleNotAttach |
please complete the edge cluster addon's service ramrole authorization at https://\*\*\* |
|
ErrAutoScalerRoleNotAttach |
please complete the cluster addon's service ramrole authorization at https://\*\*\* |
|
ErrAcrHelperRoleNotAttach |
please complete the cluster addon's service ramrole authorization at https://\*\*\* |
|
ErrCostExporterRoleNotAttach |
please complete the cluster addon's service ramrole authorization at https://\*\*\* |
|
MissingAuth.AliyuncsManagedSecurityRole |
please complete the security ramrole authorization at https://\*\*\* |
Bagaimana cara mengakses halaman penetapan peran sistem untuk ACK?
Jika peran sistem ACK telah dicabut, tetapkan ulang dengan mengikuti langkah-langkah di Buat kluster ACK yang dikelola secara cepat.
Hanya Akun Alibaba Cloud (bukan Pengguna RAM) yang dapat menetapkan ulang peran sistem.
Peran RAM telah dicabut dari Instance ECS — apa yang harus saya lakukan?
Ketika aplikasi pada Instance ECS memanggil metadata api 100 dan peran RAM telah dihapus, permintaan akan mengembalikan error 404 atau pesan seperti Message:Node condition RAMRoleError is now: True, reason: NodeHasNoRAMRole.
Tetapkan ulang peran RAM ke Instance ECS:
-
Node master (hanya untuk kluster khusus ACK): Di halaman Cluster Information, buka tab Basic Information dan tetapkan Master RAM Role.
-
Node worker: Di halaman Cluster Information, buka tab Basic Information dan tetapkan Worker RAM Role.
Lihat Ganti peran RAM instans.
Jika Anda memodifikasi kebijakan yang disambungkan ke peran RAM, verifikasi bahwa kebijakan tersebut masih berisi izin yang diperlukan. Jika modifikasi dilakukan sebelum error muncul, coba kembalikan ke versi sebelumnya.
Bagaimana cara menetapkan peran RAM kustom ke kluster ACK?
Gunakan peran Worker RAM kustom.
Apakah beban kerja online akan terpengaruh setelah saya menghapus Pengguna RAM untuk karyawan yang resign?
Menghapus Pengguna RAM tidak memengaruhi manajemen kluster oleh Pengguna RAM lain. Namun, Anda harus menggunakan Akun Alibaba Cloud untuk mencabut file kubeconfig yang dikeluarkan untuk Pengguna RAM yang dihapus tersebut.
Sebelum mencabut file kubeconfig yang dikeluarkan untuk Pengguna RAM yang dihapus, gantilah dengan file kubeconfig baru di semua aplikasi yang menggunakannya. Jika tidak, aplikasi tersebut akan kehilangan akses ke kluster.