信任CI/CD:管道如何保护你的秘密

不能保守秘密的朋友是不值得信赖的。对于您的任务关键型CI/CD工具也是如此,您必须将每个集成组件的凭据委托给它。

保守你的秘密是一个挑战用于CI/CD工具,因为它们需要连接到各种各样的其他服务。每个人都需要自己的密码或令牌,这些密码或令牌必须被隐藏起来,以免被窥探。将这些敏感数据暴露在定义工作流的明文文件中是一个巨大的安全风险。

JFrog Pipelines从一开始就被设计为保密的。与许多CI的解决方案提供需要专门安装和维护的插件或附加组件,秘密管理被内置到管道的工作方式中。

这是如何管道集成将中央秘密管理与JFrog平台的细粒度访问权限相结合,提供便利性、安全性和管理员控制。

管道集成

管道提供了各种各样的开箱即用集成对于你最可能使用的工具,连接到服务是小菜一碟。添加集成通常只是给它一个友好的名称,提供API端点,并输入用户凭据。准备连接的集成包括GitHub、Bitbucket、Docker、Kubernetes和Slack,以及AWS、GCP和Azure等云服务。

中央秘密存储器

管线将您提供给所有集成的秘密存储在中央存储库中,并进行加密,以防止任何数字入侵者的入侵。

例如,如果Jasmine的开发团队使用私有Docker注册表对于容器映像,aDocker注册表集成提供了用户名和密码。

当Jasmine的管线DSL引用Docker注册表集成时,它只显示该集成的友好名称(Jasmine_Docker)在明文文件中。管道集成完成了连接的工作,并且秘密安全地隐藏在视图之外。

- name: Jasmine_Docker #我们的私有docker注册表

通过这种方式,开发人员只需知道集成的友好名称即可访问服务。他们不必直接使用授权连接到服务的秘密。当单独的管理员配置集成时,团队中的开发人员不需要管理甚至不需要知道他们被允许使用的集成的秘密,因此可以安全地共享这些服务,而无需共享秘密。

管理员控制

对于控制,只有a卡塔尔世界杯赛程时间表 管理员用户可以添加、编辑或删除集成。管道遵循最佳安全实践,在UI中使用磁盘符号文本模糊密码或令牌等重要机密。

在大型多团队组织中,您可能不希望每个用户都能够访问每个服务。当管理员添加或编辑集成时,他们可以限制仅对某些管道源的访问。通过这种方式,操作可以将服务限制为仅由某些管道使用,并扩展到具有使用这些管道权限的用户和组。

因此,虽然开发人员很容易使用和共享集成,但每个人只能连接到他们被允许看到的服务。

例如,Sanjay不在Jasmine的团队中,所以他不应该能够向她推送图像私有Docker注册表。以下是管理员Kim如何将集成的使用限制在Jasmine的团队中:

  1. Kim添加了Jasmine的项目存储库,例如:茉莉花/管道作为管道来源
  2. 在Docker注册表集成Jasmine_Docker,金正日只分配管道来源茉莉花/管道
  3. 管理|权限, Kim补充道茉莉花/管道到Jasmine团队的权限目标。

开发人员可用性

尽管pipeline集中保存集成的秘密,但pipeline DSL仍然可以访问其细节。当在步骤中指定一个积分时集成块,可以在该步骤的shell脚本中使用。

例如,如果管道需要在构建完成时发送通知电子邮件,它可以使用内置的实用程序函数并引用管理员添加并命名为“TeamJasmine”的SMTP集成:

集成:- name: TeamJasmine # SMTP集成执行:onSuccess: - send_notification TeamJasmine——body " build docker image docker-local/demo:$pipeline_name.$run_number"

类似地,如果shell脚本需要集成保存的值,它可以通过环境变量来实现。例如,在SSHKeys集成中使用私钥发出SSH命令:

集成:- name: mySSHKeys # SSH key集成执行:onExecute: - echo "$ int_mysshkeyys_privatekey " > key.txt - chmod 400 key.txt - SSH -i key.txt user@host '做一些工作'

这些示例都没有在明文管道DSL文件中公开密钥或密码,因此将其存储在在线源代码存储库中是安全的。这些关键信息都不会离开管道环境的安全范围。

最高机密

管道集成使您能够共享安全的资源,同时保持授权使用这些资源的秘密更加安全。2022世界杯阿根廷预选赛赛程使用JFrog平台的统一权限模型,您可以授予需要访问权限的人访问权限,并阻止其他人访问权限。

这只是pipeline为云原生、企业级CI/CD设计的一个非常重要的细节。它反映了我们构建一站式DevOps系统的综合方法。

您可以自己尝试一下,看看pipeline如何帮助您安全地加快发布速度。