J'essaie de comprendre comment Kubectus obtient des autorisations pour exécuter les commandes.
Je comprends que toutes les interactions avec les clusters KubeNettes traversent le kube-apiserver. Donc, lorsque nous exécutons une commande kubectl, disons L'apiserver fait l'authentification et l'autorisation et fournit les résultats.
Kubecl comme tout autre utilisateur ou ressource doit également être associé à un rôle et à un parcelle d'acquérir des autorisations pour accéder aux ressources sur le cluster. Comment puis-je vérifier à quel rôle et quel rôle est associé à Kubectl? P>
excuses s'il s'agit d'une question ridicule. p> kubectl obtenir des pods code> à partir du noeud maître, la demande ira via Kube-apiserver. p>
3 Réponses :
Vous pouvez utiliser kubectl config Voir code> pour voir quel contexte est actif maintenant. Vous verrez smth comme ceci:
$ kubectl auth can-i get pods --namespace=stage --as alice
yes
kubectl n'est pas associé à un rôle ou à un rôle-binding.Kubecl utilise un fichier appelé kubeconfig. Ce fichier a un certificat client ou un jeton au porteur JWT. P>
Si un certificat client est présenté et vérifié par le serveur API, le nom commun du sujet est utilisé comme nom d'utilisateur pour la demande. P>
Si un jeton porteur JWT est utilisé, toutes les données nécessaires pour identifier l'utilisateur se trouve dans le jeton lui-même. P>
C'est ainsi que l'authentification d'un utilisateur se produit dans Kubettes. P>
L'autorisation de l'utilisateur est définie par des règles de contrôle d'accès basé sur le rôle (RBAC) sous forme de rôle et de liaison de rôle. P>
Cette réponse est une extension des autres et vous aide à utiliser des scripts lorsque vous utilisez si Vous utilisez des certificats clients, votre fichier Ce script imprimera la ligne Code> Sujet CODE> DU CERTIFICAT CLIENT: P> Obtenez l'utilisateur et le groupe du contexte actuel: H2>
~ / .kube / config code> contient
Certificat client-Data code> pour l'utilisateur du contexte actuel. Ces données sont un certificat codé
base64 code> qui peut être affiché sous forme de texte avec
opensel code>. Les informations intéressantes de votre question se trouve dans la section
Sujet Code>. p>
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
creationTimestamp: "2020-03-31T14:12:12Z"
labels:
kubernetes.io/bootstrapping: rbac-defaults
name: cluster-admin
resourceVersion: "42"
selfLink: /apis/rbac.authorization.k8s.io/v1/clusterroles/cluster-admin
uid: 9201f311-4d07-46c3-af36-2bca9ede098f
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'
- nonResourceURLs:
- '*'
verbs:
- '*'
Merci @adebasi c'est maintenant très clair pour moi. Je cherchais dans le rôle et les détails des rôles et j'ai complètement oublié de clusterrole et de clusterrolleding!