0

ich die Berechtigungen für den folgenden Dienstkonto beschränken möchten, erstellt es wie folgt:RBAC - Beschränken Sie den Zugriff für ein Dienstkonto

kubectl create serviceaccount alice --namespace default 

secret=$(kubectl get sa alice -o json | jq -r .secrets[].name) 

kubectl get secret $secret -o json | jq -r '.data["ca.crt"]' | base64 -d > ca.crt 

user_token=$(kubectl get secret $secret -o json | jq -r '.data["token"]' | base64 -d) 

c=`kubectl config current-context` 

name=`kubectl config get-contexts $c | awk '{print $3}' | tail -n 1` 

endpoint=`kubectl config view -o jsonpath="{.clusters[?(@.name == \"$name\")].cluster.server}"` 

kubectl config set-cluster cluster-staging \ 
    --embed-certs=true \ 
    --server=$endpoint \ 
    --certificate-authority=./ca.crt 

kubectl config set-credentials alice-staging --token=$user_token 

kubectl config set-context alice-staging \ 
    --cluster=cluster-staging \ 
    --user=alice-staging \ 
    --namespace=default 

kubectl config get-contexts

#kubectl config use-context alice-staging

Dies hat die Erlaubnis zu sehen alles mit: kubectl --context=alice-staging get pods --all-namespaces

I t ry es mit dem folgenden zu begrenzen, aber immer noch alle Berechtigungen hat:

kind: ClusterRole 
apiVersion: rbac.authorization.k8s.io/v1beta1 
metadata: 
    name: no-access 
rules: 
- apiGroups: [""] 
    resources: [""] 
    verbs: [""] 
--- 
kind: RoleBinding 
apiVersion: rbac.authorization.k8s.io/v1beta1 
metadata: 
    name: no-access-role 
subjects: 
- kind: ServiceAccount 
    name: alice 
    namespace: default 
roleRef: 
    kind: ClusterRole 
    name: no-access 
    apiGroup: rbac.authorization.k8s.io 

Die Idee ist, den Zugang zu einem Namensraum zu begrenzen Token für die Nutzer zu verteilen, aber ich verstehe es nicht ... Ich denke, es kann für geerbte Berechtigungen sein, aber ich kann nicht für einen einzelnen Serviceaccount deaktiviert werden.

Verwendung: GKE, Container-vm

THX!

Antwort

2

Beachten Sie, dass Dienstkonten nicht für Benutzer gedacht sind, sondern für Prozesse, die in Pods ausgeführt werden (https://kubernetes.io/docs/admin/service-accounts-admin/).

In Create user in Kubernetes for kubectl finden Sie, wie Sie ein Benutzerkonto für Ihren K8s-Cluster erstellen.

Außerdem rate ich Ihnen zu überprüfen, ob RBAC tatsächlich in Ihrem Cluster aktiviert ist, was erklären könnte, dass ein Benutzer mehr Operationen wie erwartet ausführen kann.

+0

Es verwendet Webhook: ps -aux | grep -o "berechtigungsmodus = [a-zA-Z] *" >>> berechtigungsmodus = Webhook --- Ich muss herausfinden, wie ich diese Änderung für GKE vornehmen kann. – jbelenus

+1

Zum Schluss: 'gcloud container clusters update NAME -CLUSTER --no-enable-legacy-authorization --zone = DEINE ZONE Quelle: https://cloud.google.com/container-engine/docs/role-based-access-control – jbelenus

Verwandte Themen