通过 RBAC 限制对 Kubernetes secret 的访问
Limit access to Kubernetes secret by RBAC
我已经设置了 Kubernetes 机密。
kubectl create secret generic mysecret --from-file=mysecret=/home/ubuntu/secret.txt
并且可以使用相同的 kubectl
命令将此机密转换为明文:
kubectl get secret mysecret -o yaml
# and base64 decode
如何限制对此机密的访问?我只想要某个 pods 并且只有我作为操作员才能访问这个秘密。
好的,所以你需要定义一个(集群)角色,然后将它绑定到你(== human user 是目标实体)and/or 到一个服务帐户(== app 是目标实体) 然后你 use in the pod 而不是 default
一个。
各自的 secretadmin
角色(或选择您喜欢的任何名称)看起来像这样(根据需要改变动词):
$ kubectl create clusterrole secretadmin \
--verb=get --verb=list --verb=create --verb=update \
--resource=secret \
--namespace=mysuperproject
定义角色后,您可以将其附加(或:绑定)到某个实体。让我们看一下服务帐户的情况(类似于人类用户,只是更简单)。因此,首先我们需要创建服务帐户,这里称为 thepowerfulapp
,然后您将在 deployment/pod/whatever:
中使用它
$ kubectl -n mysuperproject create sa thepowerfulapp
现在是时候使用以下名为 canadminsecret
的绑定将所有内容绑定在一起
$ kubectl create clusterrolebinding canadminsecret \
--role=secretadmin \
--serviceaccount=mysuperproject:thepowerfulapp \
--namespace=mysuperproject
我已经设置了 Kubernetes 机密。
kubectl create secret generic mysecret --from-file=mysecret=/home/ubuntu/secret.txt
并且可以使用相同的 kubectl
命令将此机密转换为明文:
kubectl get secret mysecret -o yaml
# and base64 decode
如何限制对此机密的访问?我只想要某个 pods 并且只有我作为操作员才能访问这个秘密。
好的,所以你需要定义一个(集群)角色,然后将它绑定到你(== human user 是目标实体)and/or 到一个服务帐户(== app 是目标实体) 然后你 use in the pod 而不是 default
一个。
各自的 secretadmin
角色(或选择您喜欢的任何名称)看起来像这样(根据需要改变动词):
$ kubectl create clusterrole secretadmin \
--verb=get --verb=list --verb=create --verb=update \
--resource=secret \
--namespace=mysuperproject
定义角色后,您可以将其附加(或:绑定)到某个实体。让我们看一下服务帐户的情况(类似于人类用户,只是更简单)。因此,首先我们需要创建服务帐户,这里称为 thepowerfulapp
,然后您将在 deployment/pod/whatever:
$ kubectl -n mysuperproject create sa thepowerfulapp
现在是时候使用以下名为 canadminsecret
$ kubectl create clusterrolebinding canadminsecret \
--role=secretadmin \
--serviceaccount=mysuperproject:thepowerfulapp \
--namespace=mysuperproject