简体   繁体   English

添加服务帐户后,默认情况下它将获取所有权限

[英]After adding a service account, it obtains all permissions by default

Upon creating a service account, it seems to be getting access to all resources by default (as if it gets a copy of all my permissions). 创建服务帐户后,默认情况下似乎可以访问所有资源(好像它获得了我所有权限的副本一样)。 This is on GKE. 这是在GKE上。

Are Service Accounts supposed to have default access to resources (upon SA creation), or am I missing something? 服务帐户应该具有对资源的默认访问权限(在创建SA时),还是我缺少某些内容?

As per bitnami guide , service account by default will not have access to any resource until it is assigned Roles/ClusterRoles via respective bindings. 根据bitnami指南 ,默认情况下,服务帐户将无法访问任何资源,除非通过相应的绑定为该帐户分配了Roles / ClusterRoles。

This is a simple bash script I'm running to depict the issue I'm seeing. 这是我正在运行的一个简单的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

Early versions of GKE enabled static authorization that gave all service accounts full API permissions. 早期版本的GKE启用了静态授权,该授权为所有服务帐户提供了完整的API权限。 That is no longer the default as of 1.8. 从1.8版开始,它不再是默认值。

Versions prior to 1.8 can disable this permissive permission with the --no-enable-legacy-authorization flag to gcloud 1.8之前的版本可以通过对gcloud的--no-enable-legacy-authorization标志禁用此许可权限

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM