创建服务帐户后,默认情况下似乎可以访问所有资源(就好像它获取了我所有权限的副本)。这是在GKE。
服务帐户是否应该具有对资源的默认访问权限(在创建SA时),或者我是否遗漏了某些内容?
根据bitnami guide,默认情况下,服务帐户在通过相应绑定分配Roles / ClusterRoles之前,无权访问任何资源。
这是一个简单的bash脚本,我正在运行以描述我所看到的问题。
original_context=ehealth-dev
kubectl create sa eugene-test --context $original_context
sa_secret=$(kubectl get sa eugene-test --context $original_context -o json | jq -r .secrets[].name)
kubectl get secret --context $original_context $sa_secret -o json | jq -r '.data["ca.crt"]' | base64 -D > /tmp/my_ca.crt
user_token=$(kubectl get secret --context $original_context $sa_secret -o json | jq -r '.data["token"]' | base64 -D)
original_cluster_name=my_long_cluster_name
endpoint=`kubectl config view -o jsonpath="{.clusters[?(@.name == \"$original_cluster_name\")].cluster.server}"`
kubectl config set-credentials my_user --token=$user_token
kubectl config set-cluster my_cluster \
--embed-certs=true \
--server=$endpoint \
--certificate-authority=/tmp/my_ca.crt
kubectl config set-context my_context \
--cluster=my_cluster \
--user=my_user \
--namespace=default
kubectl config use-context my_context
kubectl get pods -n my_namespace # ------ it works! :-(
kubectl delete sa eugene-test --context $original_context
kubectl config delete-cluster my_cluster
答案 0 :(得分:0)
早期版本的GKE启用了静态授权,为所有服务帐户提供了完整的API权限。这不再是1.8的默认值。
1.8之前的版本可以使用--no-enable-legacy-authorization
标志禁用此许可权限以使用gcloud