You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

公网暴露的EKS集群ALB入口添加基础认证的最简方案咨询

最简适配方案:ALB + 轻量Lambda Basic Auth 实现

无需修改现有应用部署配置、无需额外维护反向代理服务,仅需新增1个Lambda函数+修改Ingress注解即可完成,全程5分钟即可配置完成。

实现步骤

  1. 创建Basic Auth Lambda函数
    选择Python 3.x运行时,使用如下代码,替换自定义的用户名密码即可:
def lambda_handler(event, context):
    # 替换为你自定义的账号密码
    username = "your_custom_user"
    password = "your_custom_pass"
    
    # 校验Authorization请求头
    auth_header = event.get('headers', {}).get('authorization', '')
    if auth_header.startswith('Basic '):
        import base64
        try:
            auth_decoded = base64.b64decode(auth_header.split(' ')[1]).decode('utf-8')
            req_user, req_pass = auth_decoded.split(':', 1)
            if req_user == username and req_pass == password:
                # 认证通过放行请求
                return {
                    "isAuthenticated": True,
                    "context": {}
                }
        except:
            pass
    
    # 认证失败返回Basic Auth校验弹窗
    return {
        "isAuthenticated": False,
        "statusCode": 401,
        "headers": {
            "WWW-Authenticate": "Basic realm=\"Restricted Access\""
        },
        "body": "Unauthorized"
    }

部署完成后记录该Lambda函数的ARN。

  1. 为ALB Ingress Controller服务角色添加Lambda调用权限
    在IAM控制台找到你的AWS Load Balancer Controller对应的IAM角色,添加如下内联权限,替换为上一步创建的Lambda ARN即可:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:<你的AWS区域>:<你的AWS账号ID>:function:<你的Lambda函数名>"
        }
    ]
}
  1. 修改现有Ingress的annotations配置,保留原有配置,新增4条认证相关配置即可:
annotations:
  # 原有配置保持不变
  kubernetes.io/ingress.class: alb
  alb.ingress.kubernetes.io/scheme: internet-facing
  alb.ingress.kubernetes.io/target-type: ip
  alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]'
  alb.ingress.kubernetes.io/certificate-arn: ...
  # 新增以下4行认证配置
  alb.ingress.kubernetes.io/auth-type: lambda
  alb.ingress.kubernetes.io/auth-idp-lambda-arn: <你创建的Lambda函数ARN>
  alb.ingress.kubernetes.io/auth-on-unauthenticated-request: authenticate
  alb.ingress.kubernetes.io/auth-scope: '*'

重新apply Ingress配置后等待1~2分钟ALB规则更新,访问应用就会弹出Basic Auth校验窗口,输入你设置的账号密码即可正常访问。

方案优势

  • 完全无需修改现有应用的Deployment、Service等业务资源,无额外长期运维成本
  • 临时场景用完可直接删除新增的4条annotations和Lambda函数,快速回退无残留
  • 满足低安全要求的基础访问校验需求,可完全避免无关人员直接访问应用

内容的提问来源于stack exchange,提问作者Garion S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:57:03