我希望使用服务帐户来加强我的集群。现在,所有的吊舱都在使用默认的服务帐户。我认为我的方法是为集群中当前的pod创建一个单独的服务帐户。对我来说,现在的困惑是理解我为每个吊舱分配了哪些角色/集群角色(权限)?对于一些豆荚,我如何确定它是否需要访问集群API?
我的集群包含以下内容(为了隐私起见,我删除了IP):
kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx-ingress-ingress-nginx-controller 1/1 Running 0
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP <none> 443/TCP 123d
service/nginx-ingress-ingress-nginx-controller LoadBalancer 80:31180/TCP,443:31405/TCP 116d
service/nginx-ingress-ingress-nginx-controller-admission ClusterIP <none> 443/TCP 116d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx-ingress-ingress-nginx-controller 1/1 1 1 116d
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-ingress-ingress-nginx-controller 1 1 1 7d19h
root@osboxes:/home/osboxes# kubectl get all -n <>
NAME READY STATUS RESTARTS AGE
pod/mariadb-0 1/1 Running 0 5d19h
pod/web2 1/1 Running 0 7d17h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/mariadb ClusterIP <none> 3306/TCP 123d
service/web ClusterIP <none> 80/TCP 116d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/web2 1/1 1 1 7d17h
NAME DESIRED CURRENT READY AGE
replicaset.apps/web2-6f8d8bcc76 1 1 1 7d17h
NAME READY AGE
statefulset.apps/mariadb 1/1 123d
kubectl get all -n cert-manager
NAME READY STATUS RESTARTS AGE
pod/cert-manager-6b5c6b786d-cc448 1/1 Running 0 5d19h
pod/cert-manager-cainjector-6bc9d758b-sdb8l 1/1 Running 0 9d
pod/cert-manager-webhook-586d45d5ff-jsh54 1/1 Running 0 9d
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/cert-manager ClusterIP <none> 9402/TCP 12d
service/cert-manager-webhook ClusterIP <none> 443/TCP 12d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/cert-manager 1/1 1 1 12d
deployment.apps/cert-manager-cainjector 1/1 1 1 12d
deployment.apps/cert-manager-webhook 1/1 1 1 12d
NAME DESIRED CURRENT READY AGE
replicaset.apps/cert-manager-6b5c6b786d 1 1 1 7d20h
replicaset.apps/cert-manager-6bbf595697 0 0 0 12d
replicaset.apps/cert-manager-788ff5c97d 0 0 0 7d21h
replicaset.apps/cert-manager-cainjector-6bc9d758b 1 1 1 12d
replicaset.apps/cert-manager-webhook-586d45d5ff 1 1 1 12d发布于 2022-05-25 14:38:18
不仅仅是更改默认的服务帐户,您还需要遵循NSA/CISA Kubernetes硬化指南。
关于Pod安全执行:
在Kubernetes,可以通过两种机制来执行对Pods的安全要求:
保护Pod服务帐户令牌:
默认情况下,Kubernetes在创建Pod时自动提供服务帐户,并在运行时在Pod中挂载帐户的秘密令牌。许多容器化应用程序不需要直接访问服务帐户,因为Kubernetes编排是在后台透明地进行的。如果应用程序被破坏,网络参与者可以收集Pods中的帐户令牌,并用来进一步破坏集群。当应用程序不需要直接访问服务帐户时,Kubernetes管理员应该确保Pod规范禁用正在挂载的秘密令牌。这可以使用Pod的YAML规范中的“
automountServiceAccountToken: false”指令来实现。 在某些情况下,容器化应用程序使用提供的服务帐户令牌对外部服务(如云平台)进行身份验证。在这种情况下,禁用帐户令牌是不可行的。相反,群集管理员应该确保实现RBAC来限制集群中的Pod特权。
基于角色的访问控制(RBAC)是一种基于组织中单个用户的角色来管理对计算机或网络资源的访问的方法。 RBAC授权使用rbac.authorization.k8s.io API组来驱动授权决策,允许您通过Kubernetes API动态配置策略。
https://stackoverflow.com/questions/72367219
复制相似问题