Ce face kubectl auth can-i
kubectl auth can-i create deployments -n magazin întreabă API-ul dacă acțiunea este permisă și răspunde simplu, yes sau no. Codul de ieșire este 0 pentru da și 1 pentru nu, așa că se poate folosi direct în scripturi.
Cu --as (și --as-group) verifici drepturile altcuiva, de exemplu ale unui ServiceAccount (system:serviceaccount:<namespace>:<nume>), dacă ai dreptul de „impersonare”. Cu --list vezi toate acțiunile permise într-un namespace, iar kubectl auth whoami îți arată cu ce identitate și în ce grupuri te vede clusterul.
Parametri
| Parametru | Descriere |
|---|---|
VERB RESURSĂ |
De exemplu get pods, create deployments, delete secrets, '*' '*'. |
-n, --namespace |
Namespace-ul în care se face verificarea. |
-A, --all-namespaces |
Verifică acțiunea în toate namespace-urile. |
--as UTILIZATOR / --as-group GRUP |
Verifică drepturile altei identități. |
--list |
Listează toate acțiunile permise. |
--subresource |
Verifică o subresursă, de exemplu pods --subresource=log. |
-q, --quiet |
Nu afișează nimic; contează doar codul de ieșire. |
Exemple
Exemplul 1: Ce am voie să fac în namespace-ul magazin
Ana poate crea Deployment-uri, dar nu poate citi Secret-urile.
kubectl auth whoami
kubectl auth can-i create deployments -n magazin
kubectl auth can-i get secrets -n magazin
Ieșire în terminal
ATTRIBUTE VALUE
Username ana@firma.ro
Groups [dezvoltatori system:authenticated]
yes
no
Exemplul 2: Drepturile unui ServiceAccount, într-un script de verificare
Pipeline-ul se oprește dacă ServiceAccount-ul de deploy a primit, din greșeală, drept de ștergere a namespace-urilor.
SA=system:serviceaccount:ci:deploy
kubectl auth can-i patch deployments -n magazin --as=$SA
if kubectl auth can-i delete namespaces --as=$SA -q; then
echo "PREA MULTE DREPTURI pentru $SA"; exit 1
fi
echo "drepturi in regula"
Ieșire în terminal
yes
drepturi in regula
Exemplul 3: Lista completă a acțiunilor permise
Ieșire scurtată; fiecare rând arată resursa și verbele permise.
kubectl auth can-i --list -n magazin
Ieșire în terminal
Resources Non-Resource URLs Resource Names Verbs
selfsubjectreviews.authentication.k8s.io [] [] [create]
selfsubjectaccessreviews.authorization.k8s.io [] [] [create]
selfsubjectrulesreviews.authorization.k8s.io [] [] [create]
deployments.apps [] [] [get list watch create update patch]
pods [] [] [get list watch]
pods/log [] [] [get]
...
Greșeli frecvente
- Uitarea namespace-ului: fără
-n, verificarea se face în namespace-ul curent din context, care poate fi altul decât cel la care te gândești. - Folosirea lui
--asfără dreptulimpersonate: comanda eșuează cuForbidden, ceea ce nu spune nimic despre drepturile identității verificate.
Comenzi înrudite
kubectl certificate și CertificateSigningRequest: Aprobă sau respinge cererile de certificat (CSR) trimise clusterului, de exemplu pentru a da acces unui utilizator nou.kubectx și kubens: Unelte mici pentru schimbarea rapidă a contextului (clusterului) și a namespace-ului implicit din kubeconfig.