CI/CD在信心:管道如何保守你的秘密

不能保守秘密的朋友是靠不住的。对于您的关键任务CI/CD工具也是如此,您必须为每个集成组件委托凭证。

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

JFrog管道从一开始就为保密而设计。与许多CI的解决方案提供需要特别安装和维护的插件或附加组件,机密管理是管道工作方式的一部分。

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

管道集成

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

中央秘密仓库

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

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

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

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

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

管理员控制

对于控制,只有一个JFrog平台管理员用户可以添加、编辑或删除集成。管道遵循最佳的安全实践,在UI中使用光盘符号文本隐藏密码或令牌等重要机密。

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

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

例如,Sanjay不在Jasmine的团队中,所以他不应该向她推送图片专用Docker注册表.下面是管理员Kim可能限制Jasmine团队使用该集成的方式:

  1. Kim添加了Jasmine的项目存储库,例如:茉莉花/管道作为管道源
  2. 在Docker Registry集成中Jasmine_Docker, Kim只指定了管道来源茉莉花/管道
  3. 管理|权限, Kim补充了管道来源茉莉花/管道到Jasmine团队的权限目标。

开发人员可用性

尽管管道集中保存集成的秘密,管道DSL仍然可以访问它的细节。在步骤中指定集成时集成Block可以在该步骤的shell脚本中使用。

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

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

类似地,如果shell脚本需要集成所包含的值,则可以通过环境变量来实现。例如,在SSHKeys集成中使用私钥发出一个Secure Shell (SSH)命令:

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

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

最高机密

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

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

自己尝试一下,看看管线如何帮助安全地加快发布速度。