您的位置:首页 > 教育 > 培训 > 建设部网站官网查询_学生个人网页设计素材图片_长沙网_徐州seo排名公司

建设部网站官网查询_学生个人网页设计素材图片_长沙网_徐州seo排名公司

2025/2/23 13:34:21 来源:https://blog.csdn.net/a1369760658/article/details/145799854  浏览:    关键词:建设部网站官网查询_学生个人网页设计素材图片_长沙网_徐州seo排名公司
建设部网站官网查询_学生个人网页设计素材图片_长沙网_徐州seo排名公司

云原生学习路线导航页(持续更新中)

  • kubernetes学习系列快捷链接
    • Kubernetes架构原则和对象设计(一)
    • Kubernetes架构原则和对象设计(二)
    • Kubernetes架构原则和对象设计(三)
    • Kubernetes控制平面组件:etcd(一)
    • Kubernetes控制平面组件:etcd(二)
    • Kubernetes控制平面组件:etcd常用配置参数
    • Kubernetes控制平面组件:etcd高可用集群搭建
    • Kubernetes控制平面组件:etcd高可用解决方案
    • Kubernetes控制平面组件:Kubernetes如何使用etcd
    • kubectl 和 kubeconfig 基本原理
    • kubeadm 升级 k8s集群 1.17到1.20
    • Kubernetes常见问题解答
    • 查看云机器的一些常用配置

本文主要对 kubernetes API Server 认证机制中的 基于匿名请求的认证进行介绍,包括 匿名请求 的设计理念、实现原理、认证流程,以及在 Kubernetes 中的具体应用

1.基本概念

1.1.匿名请求定义

  • 当客户端访问 Kubernetes API Server 时,若请求中 未携带任何认证信息(如证书、Token、Basic Auth 等),该请求会被标记为 匿名请求

1.2.默认行为

  • Kubernetes 1.6+:默认启用匿名请求认证(--anonymous-auth=true
  • 身份标识
    • 用户名:system:anonymous
    • 用户组:system:unauthenticated

2.认证流程

+------------+       +--------------+
|   Client   |       | API Server   |
+------------+       +--------------+| 1. 无认证请求       ||-------------------->||                     | 2. 认证链检查|                     |--+ |                     |  | 所有认证方法失败|                     |<-+| 3. 标记为匿名用户    ||<---------------------|

3.操作示例

3.1.允许匿名请求(默认配置)

3.1.1.直接访问 API

# 不携带任何认证信息
curl -k https://<API_SERVER_IP>:6443/api/v1/namespaces/default/pods

响应示例

{"kind": "Status","apiVersion": "v1","status": "Failure","message": "pods is forbidden: User \"system:anonymous\" cannot list resource \"pods\" in API group \"\" in the namespace \"default\"","reason": "Forbidden","details": { "kind": "pods" },"code": 403
}

说明:认证通过但授权(RBAC)拒绝

3.1.2.查看认证用户信息

kubectl create clusterrolebinding anonymous-access \--clusterrole=view \--user=system:anonymouscurl -k https://<API_SERVER_IP>:6443/api/v1/namespaces/default/pods

此时将返回 Pod 列表(需提前创建测试 Pod)

3.2.禁用匿名请求

3.2.1.修改 API Server 配置

# 编辑 /etc/kubernetes/manifests/kube-apiserver.yaml
spec:containers:- command:- kube-apiserver- --anonymous-auth=false  # 添加此参数

3.2.2.验证禁用效果

curl -k https://<API_SERVER_IP>:6443/api/v1/namespaces/default/pods

响应示例

{"kind": "Status","apiVersion": "v1","status": "Failure","message": "Unauthorized","code": 401
}

4.安全建议

4.1.生产环境推荐配置

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: deny-anonymous-access
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin  # 根据实际情况调整
subjects:
- kind: Username: system:anonymousapiGroup: rbac.authorization.k8s.io

通过 RBAC 显式拒绝匿名用户的所有权限

4.2.审计配置

# /etc/kubernetes/audit-policy.yaml
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadatausers: ["system:anonymous"]  # 记录匿名请求审计日志

5.关键排查命令

# 查看 API Server 匿名认证配置
ps aux | grep kube-apiserver | grep anonymous-auth# 检查匿名请求的 RBAC 权限
kubectl auth can-i list pods --as=system:anonymous

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com