GKE:查看有关某人的权限的详细信息

时间:2019-09-02 06:42:07

标签: kubernetes google-cloud-platform google-kubernetes-engine kubernetes-security

我正在与GKE群集进行交互,并试图了解我的权限

  public abstract class AlgorithmBase
    {
        private readonly AlgorithmBase Parent;


        public async Task<float[]> GetDataAsync(int requestedItemIndex, CancellationToken token = default)
        {
            var data = await Parent.GetDataAsync(requestedItemIndex);

            return await Task.Run<float[]>(async () => ProcessData());
        }            
    }

但是我看不到任何与我相关的角色。

我如何与➢ kubectl get roles --all-namespaces NAMESPACE NAME AGE istio-system istio-ingressgateway-sds 38d kube-public system:controller:bootstrap-signer 38d kube-system cloud-provider 38d kube-system extension-apiserver-authentication-reader 38d kube-system gce:cloud-provider 38d kube-system sealed-secrets-key-admin 38d kube-system system::leader-locking-kube-controller-manager 38d kube-system system::leader-locking-kube-scheduler 38d kube-system system:controller:bootstrap-signer 38d kube-system system:controller:cloud-provider 38d kube-system system:controller:token-cleaner 38d kube-system system:fluentd-gcp-scaler 38d kube-system system:pod-nanny 38d 集群进行交互?

如何查看whoami和我的权限是什么?

1 个答案:

答案 0 :(得分:1)

您共享的命令和输出是指Kubernetes RBAC授权(不限于GKE)。您可以找到每个角色HERE

的定义

如果您想特定于GKE,则可以使用Cloud Identity and Access Management和Kubernetes RBAC来控制对GKE集群的访问。

Cloud IAM并非特定于Kubernetes;它为多个Google Cloud Platform产品提供身份管理,并且主要在GCP项目级别上运行。

Kubernetes RBAC是Kubernetes的核心组件,它允许您为集群中的任何对象或对象类型创建并授予角色(权限集)。您可以找到有关RBAC如何与GKE HERE

集成的更多信息。

您没有看到与您相关的任何角色,因为正在查询所有命名空间的角色,并且很可能您没有定义一个。

您正在从云外壳与群集进行交互。在连接到群集之前,您必须运行以下命令。

gcloud container clusters get-credentials CLUSTER_NAME --zone ZONE --project PROJECT_ID

您使用与身份验证相同的用户身份登录集群,以登录GCP。有关kubectl HERE

身份验证的更多信息

如我的示例命令所示,您可以基于名称空间或资源获得角色绑定和集群角色。

kubectl get rolebinding POD_NAME -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"rbac.authorization.k8s.io/v1","kind":"RoleBinding","metadata":{"annotations":{},"name":"pod-reader-binding","namespace":"default"},"roleRef":{"apiGroup":"rbac.authorization.k8s.io","kind":"Role","name":"pod-reader"},"subjects":[{"kind":"User","name":"example@foo.com"},{"kind":"ServiceAccount","name":"johndoe"},{"kind":"User","name":"test-account@example.google.com.iam.gserviceaccount.com"},{"kind":"Group","name":"accounting-group@example.com"}]}
  creationTimestamp: xxxx-xx-xxxx:xx:xxZ
  name: pod-reader-binding
  namespace: default
  resourceVersion: "1502640"
  selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/pod-reader-binding
  uid: de1775dc-cd85-11e9-a07d-42010aa800c2
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: pod-reader
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: example@foo.com

在上面的示例中,我的用户[example@foo.com]是APIGroup [rbac.authorization.k8s.io]的成员,因此,他在pod上的操作将受到他向RBAC授予的权限的限制,例如您想授予该用户读取访问权限,您需要在YAML中指定以下行

verbs: ["get", "watch", "list"]

最后,有许多预定义的GKE角色向GCP用户或服务帐户授予不同的权限。您可以找到每个角色和权限HERE