请求指导EC2上Grafana与AWS Cognito集成认证及架构选型
Hey Johnny90,刚好我对这两块内容都有实操经验,给你详细解答下:
1. 将EC2上的Grafana与AWS Cognito集成实现认证
我之前帮团队配置过这个场景,整理了一套适合新手的步骤,比零散的教程更贴合EC2部署的环境:
前置准备
- 确保你的EC2实例能访问AWS Cognito服务(如果是VPC内实例,需要配置VPC端点或者确保路由能到公网)
- 已经在AWS控制台创建好Cognito用户池,并且添加了测试用户
- 拥有Grafana配置文件(默认路径是
/etc/grafana/grafana.ini)的修改权限
具体操作步骤
步骤1:配置Cognito用户池客户端
登录AWS控制台进入Cognito,选择你的用户池:
- 切换到App integration标签页,点击App clients and analytics,创建新的App client
- 务必取消勾选Generate client secret(Grafana的OAuth2客户端不支持带secret的配置)
- 在Allowed callback URLs里填入
http://<你的Grafana公网IP或域名>:3000/login/generic_oauth(用HTTPS的话替换成https) - 保存后记下Client ID和用户池的自定义域名(比如
your-pool.auth.us-east-1.amazoncognito.com)
步骤2:修改Grafana OAuth2配置
打开Grafana的配置文件,找到 [auth.generic_oauth] 段落,替换成以下配置:
[auth.generic_oauth] enabled = true name = AWS Cognito client_id = <你的Cognito Client ID> scopes = openid email profile auth_url = https://<你的Cognito域名>/oauth2/authorize token_url = https://<你的Cognito域名>/oauth2/token api_url = https://<你的Cognito域名>/oauth2/userInfo allow_sign_up = true
- 把尖括号里的内容替换成你自己的信息
- 如果需要限制特定用户组访问,可以添加
allowed_groups = group1,group2字段(前提是Cognito里已经创建了对应用户组并分配了用户)
步骤3:重启Grafana服务
在EC2实例上执行命令重启服务:
sudo systemctl restart grafana-server
之后访问Grafana登录页,就能看到AWS Cognito的登录选项,点击后跳转到Cognito的登录界面,验证通过后即可进入Grafana。
2. Grafana+ElasticSearch的VPC内架构方案评估
关于你提到的「Grafana和ES部署在VPC内,通过API Gateway+Lambda与外部通信」的方案,我得结合你的实际场景分析是否最优:
这个方案的优势
- 安全性拉满:Grafana和ES都在VPC私有子网里,不需要暴露公网IP,攻击面大幅缩小;API Gateway可以配置IAM认证、WAF防护,进一步加固访问安全
- 细粒度权限控制:Lambda作为中间层,可以实现复杂的权限逻辑,比如不同用户只能查看特定ES索引的监控数据,或者结合企业内部权限系统做二次校验
- 弹性扩展:API Gateway和Lambda都是Serverless服务,能自动应对访问流量的波动,适合未来有大量外部用户访问监控的场景
潜在的局限性
- 运维复杂度提升:多了两层中间件,排查问题时需要同时查看Grafana日志、Lambda日志和API Gateway日志,对运维人员的排查能力要求更高
- 额外成本:虽然Lambda有免费额度,但如果监控请求量较大,会产生API Gateway和Lambda的费用;另外VPC内的Lambda需要配置弹性网卡,也会有少量额外成本
什么时候更适合采用这个方案?
如果你的场景符合以下任意一点,这个方案就是更优选择:
- 有严格的合规要求,不允许Grafana直接暴露到公网
- 需要对Grafana的访问做复杂的权限校验(比如和企业SSO系统联动)
- 未来有大规模外部用户访问监控平台的规划
轻量化替代方案
如果只是想把Grafana和ES放在VPC内,暂时不需要复杂权限逻辑,可以选择更简单的架构:
- 给Grafana配置VPC内的应用负载均衡(ALB),通过ALB的安全组限制访问来源(比如只允许企业办公IP访问)
- 配置ES的安全组,只允许Grafana所在的安全组访问,这样架构更简洁,运维成本更低
内容的提问来源于stack exchange,提问作者Johnny90
相关产品推荐
相关产品推荐

