【问题标题】:After adding a service account, it obtains all permissions by default添加服务账号后,默认获取所有权限
【发布时间】:2017-12-24 07:46:52
【问题描述】:

创建服务帐户后,默认情况下它似乎可以访问所有资源(好像它获得了我所有权限的副本)。这是在 GKE 上。

服务帐户是否应该具有对资源的默认访问权限(在创建 SA 时),还是我遗漏了什么?

根据bitnami guide,默认情况下服务帐户将无法访问任何资源,直到通过相应的绑定为其分配角色/集群角色。

这是我正在运行的一个简单 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

【问题讨论】:

    标签: kubernetes rbac google-kubernetes-engine


    【解决方案1】:

    早期版本的 GKE 启用了静态授权,为所有服务帐号提供完整的 API 权限。从 1.8 开始,这不再是默认设置。

    1.8 之前的版本可以使用 gcloud 的 --no-enable-legacy-authorization 标志禁用此许可权限

    【讨论】:

    • 奇怪的是,这是专门针对 1.8 的。我们从 1.5 开始,如果我的记忆好的话,从那时起我们一直在稳步升级
    猜你喜欢
    • 2020-11-03
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    相关资源
    最近更新 更多