如何在Heroku托管的PostgreSQL中为用户分配pg_monitor角色以完成Datadog集成配置
Heroku Postgres 接入Datadog的权限配置方案
固定前提
- Heroku Postgres 从产品规则上就不开放 SUPERUSER 权限访问,你之前的判断完全准确,申请超级权限的路径根本走不通——这不是权限配置失误,是平台多租户隔离的硬规则,哪怕提工单也不会开放。
- 你碰到的这个
ERROR: must have admin option on role "pg_monitor"报错,原因很简单:PostgreSQL 10以上版本自带的内置预定义角色pg_monitor,只有数据库超级用户才有资格把这个角色的成员身份授予其他账号,哪怕是Heroku给你的默认数据库登录账号,也没有这个角色的管理权限,自然没法给自建的monitor用户授权。
可落地的无需超级用户方案
Datadog集成需要的从来不是pg_monitor这个角色本身,而是这个角色附带的所有监控视图访问权限。我们完全可以手动把需要的权限逐个授予专用监控用户,不需要真的把用户加入pg_monitor组,最终的采集效果和官方文档要求的配置没有任何区别。
具体操作全部用Heroku提供的默认数据库连接账号执行即可,不需要任何超级权限:
- 创建专用监控用户
CREATE USER datadog_monitor WITH ENCRYPTED PASSWORD '设置你的强访问密码'; - 授予Datadog采集指标需要的全部核心权限,这些操作都在Heroku默认账号的权限范围内
-- 授予核心系统监控视图的读权限 GRANT SELECT ON pg_stat_database TO datadog_monitor; GRANT SELECT ON pg_stat_activity TO datadog_monitor; GRANT SELECT ON pg_stat_replication TO datadog_monitor; GRANT SELECT ON pg_stat_user_tables TO datadog_monitor; GRANT SELECT ON pg_stat_user_indexes TO datadog_monitor; GRANT SELECT ON pg_database TO datadog_monitor; GRANT SELECT ON pg_stat_bgwriter TO datadog_monitor; -- 授予监控相关内置函数的执行权限 GRANT EXECUTE ON FUNCTION pg_current_logflush_pos() TO datadog_monitor; GRANT EXECUTE ON FUNCTION pg_ls_waldir() TO datadog_monitor; - 补充Heroku环境的专属权限配置,避免后续因为权限不足导致指标采集中断
-- 开放业务schema的基础访问权限(默认一般是public schema,可根据实际业务名替换) GRANT USAGE ON SCHEMA public TO datadog_monitor; -- 授予当前所有表的基础读权限(仅用于元数据统计采集,不会读取实际业务敏感数据) GRANT SELECT ON ALL TABLES IN SCHEMA public TO datadog_monitor; -- 配置自动权限继承,后续新建的表会自动给监控用户开放读权限 ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO datadog_monitor; - 配置完成后可以简单验证效果:用
datadog_monitor账号连接数据库,执行SELECT * FROM pg_stat_database LIMIT 1;,如果能正常返回查询结果,就完全满足Datadog的接入要求。
容易踩的误区
- 别浪费时间提Heroku工单要超级权限,平台的权限隔离是硬限制,哪怕是最高档的付费企业版套餐,也不会开放SUPERUSER权限——这个权限一旦开放,会直接威胁多租户环境下其他用户的数据安全。
- 如果Datadog的安装向导弹出提示,说你当前的用户缺少
pg_monitor角色,可以直接跳过这个校验——这个校验逻辑是Datadog针对自建Postgres环境写的,托管平台只要权限覆盖完整,就不会影响实际的指标采集。 - 别图省事直接把Heroku的默认数据库账号给Datadog用,这个账号拥有库级别的最高操作权限,一旦凭据泄露风险极高,用专用最小权限的监控账号是标准的安全最佳实践。
内容的提问来源于stack exchange,提问作者Bruno Gerotto
相关产品推荐
相关产品推荐

