在CICD流水线中如何根据用户权限管理数据访问

116次阅读
没有评论

问题描述

在设置CICD流水线时遇到了一个问题:项目需要访问受限的数据库,而项目中的每个用户都具有不同级别的访问权限(通过LDAP管理)。用户想知道是否有方法让CICD流水线在触发构建的用户权限下执行,并且有哪些工具支持这种需求。

解决方案

请注意以下操作可能涉及版本差异及风险,请提前备份数据。

方案1

在一般情况下,CICD工具不太容易支持身份模拟(impersonation)或基于声明的认证(claims based authentication)。另外,你可能希望CICD工具具有比用户更多的访问权限,因为你希望他们仅使用CICD工具来进行更改。
过去,我处理过类似的情况,具体做法如下:
1. 流水线调用CI/CD API以查找运行流水线的用户。
2. 使用此用户来查找他所属的组(例如,通过LDAP)。
3. 如果用户属于适当的组,继续执行;否则中止构建。

在这里,重要的是中止而不是失败构建,这样可以区分无效用户运行构建和有效用户运行的构建但最终失败的情况。

另一种方法是将LDAP组与你的CI/CD平台同步,并通过这种方式设置权限,虽然可能无法满足你想要的细粒度控制。

方案2

大多数CI/CD工具都支持某种形式的权限控制。例如:
– AWS的所有CI/CD工具都支持通过IAM限制权限。IAM还可以与AD集成,从而实现SSO(单一登录)功能。几乎每个主要的云服务提供商都具有类似的基于权限的功能(例如Azure、Google Cloud)。
– Bamboo支持限制谁可以编辑、查看和运行构建和部署。它还支持定义全局或计划变量,并限制谁有权限查看这些变量。我相信Jenkins中也存在类似的功能(例如基于矩阵的安全性)。
– 大多数CI/CD工具可以设置为基于Pull Requests触发。这允许只有管理员可以访问构建细节,而开发人员可以自动触发构建。

由于你特别寻求一个策略,其中触发构建的人具有特定的权限,结合权限角色的Pull Request工作流可能是你需要的解决方案。

注意: 不同的工具可能具有不同的配置和功能,建议查阅相应工具的文档以了解详细的实现步骤和版本差异。

正文完