如何限制团队成员访问Heroku指定Config Var且保留应用操作权限?
1. 该需求在Heroku中是否可实现?
很遗憾,目前Heroku无法实现仅屏蔽单个或多个Config Var的细粒度权限管控,不管是基础套餐还是Enterprise套餐都做不到。
Heroku的权限体系完全是基于角色设计的:比如你提到的operator或deployer角色,要么赋予成员查看、修改所有Config Var的权限,要么完全限制他们访问应用的配置面板。哪怕是Enterprise中的自定义角色功能,也没有提供针对单个Config Var的权限隔离能力——它只能基于角色整体开放或关闭某一类操作权限,没法做到“允许操作应用,但禁止查看指定Config Var”这种基于属性的权限配置。
2. 可满足此权限管控需求的云服务提供商
下面几个主流云服务商都能支持这种“基于单个密钥属性的权限管控”需求,核心思路是把敏感密钥从应用配置中剥离到专门的密钥管理服务,再通过细粒度权限控制实现权限解耦:
AWS:可以用Elastic Beanstalk部署应用,将敏感密钥存储在Secrets Manager中。通过IAM策略,你可以精确指定哪些用户/角色能访问该敏感Secret,同时给其他成员分配应用的部署、运维权限(比如允许他们更新应用代码、查看应用日志),但不让他们接触这个敏感密钥。应用本身可以通过附加的IAM角色自动获取Secret,无需手动配置到应用环境变量。
Google Cloud Platform (GCP):使用App Engine托管应用,敏感密钥存入Secret Manager。借助GCP的IAM细粒度权限,你可以为团队成员分别配置:一部分人拥有应用的部署、运维权限,另一部分人额外拥有访问该敏感Secret的权限,完全实现权限分离。
Azure:用App Service部署应用,敏感密钥存储在Key Vault中。通过Azure RBAC,你可以给普通运维成员分配App Service的管理权限,仅允许指定核心成员访问Key Vault中的特定密钥,既不影响应用操作,又能保护敏感密钥。
DigitalOcean:DigitalOcean App Platform配合其Secrets Manager,支持对单个Secret设置访问权限。你可以让大部分成员拥有应用的部署、运维权限,但仅开放敏感Secret的访问权限给指定人员,实现你需要的权限管控逻辑。
内容的提问来源于stack exchange,提问作者roboli

