如何在Azure上部署的Kubernetes系统中实现认证
低成本K8s+Azure环境下的认证方案建议
一、推荐的免费简便认证策略
- JWT + Ingress网关校验:分布式场景首选,无需额外部署认证服务,直接在Ingress层完成JWT验证,轻量且对后端服务侵入性低。
- OAuth2.0(基于开源Keycloak):Keycloak是完全免费的开源认证服务器,支持授权码、密码等多种OAuth2模式,自带用户管理界面,适合教育项目展示完整的认证流程。
- Basic Auth(临时/内部使用):最简单的快速实现方式,直接通过Ingress配置完成,适合内部测试或临时保护服务,但安全性较弱,不建议对外暴露。
二、Kubernetes集成实现细节
1. JWT集成(NGINX Ingress为例)
NGINX Ingress支持直接配置JWT校验,无需额外服务:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: backend-ingress annotations: # 内置JWT校验配置(需提前创建包含密钥的Secret) nginx.ingress.kubernetes.io/auth-jwt-secret: "jwt-secret" nginx.ingress.kubernetes.io/auth-jwt-token: "$http_authorization" nginx.ingress.kubernetes.io/auth-jwt-issuer: "your-token-issuer" spec: rules: - host: your-domain.com http: paths: - path: /api/users pathType: Prefix backend: service: name: user-service port: { number: 80 }
如果需要自定义校验逻辑,也可以用auth-url指定一个简单的校验服务,Ingress会把请求转发到该服务验证Token有效性。
2. Keycloak集成
- 先把Keycloak部署到K8s:用Deployment+Service+Ingress的组合,配置PersistentVolumeClaim保存用户数据。
- 在Keycloak中创建Realm、客户端和用户,配置客户端的重定向URI指向你的前端地址。
- 前端集成Keycloak SDK,实现登录跳转;后端服务通过Ingress的
auth-url调用Keycloak的Token校验接口,或直接在代码中验证JWT。
3. Basic Auth集成
生成加密的用户名密码文件:
htpasswd -c auth admin
创建K8s Secret存储认证信息:
kubectl create secret generic basic-auth --from-file=auth
在Ingress中引用该Secret开启Basic Auth:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: backend-ingress annotations: nginx.ingress.kubernetes.io/auth-type: basic nginx.ingress.kubernetes.io/auth-secret: basic-auth nginx.ingress.kubernetes.io/auth-realm: "请输入认证信息" spec: # 路由规则配置...
三、Azure专属免费认证方案
1. Azure Active Directory(AAD)免费层
方案1:Ingress集成AAD OAuth2
利用NGINX Ingress的认证注解,将流量导向AAD完成登录:
metadata: annotations: nginx.ingress.kubernetes.io/auth-url: "https://login.microsoftonline.com/你的租户ID/oauth2/v2.0/token" nginx.ingress.kubernetes.io/auth-signin: "https://login.microsoftonline.com/你的租户ID/oauth2/v2.0/authorize?client_id=你的客户端ID&response_type=code&redirect_uri=https://你的域名/callback"
步骤:
- 在AAD中注册应用,获取租户ID、客户端ID。
- 配置应用的重定向URI为你的前端回调地址。
- 确保Ingress能访问AAD的认证端点。
方案2:Azure AD Pod Identity(服务间认证)
适合后端服务之间或服务调用Azure资源时的认证,免费层可用:
- 创建AAD托管身份,授予其访问目标资源的权限。
- 在K8s中部署Azure AD Pod Identity控制器,将托管身份绑定到需要认证的Pod。
- 服务通过Azure SDK自动获取Token,无需硬编码密钥,实现无密认证。
2. Azure App Service内置认证
如果你的前端或后端服务部署在Azure App Service上,可直接启用App Service的内置认证功能,一键绑定AAD,无需编写额外认证代码,免费层支持基础的登录、Token验证功能。
内容的提问来源于stack exchange,提问作者ssvt
相关产品推荐
相关产品推荐

