使用1Password CLI安全构建NGINX Plus容器

NGINX | 2023年8月29日

如果您经常使用F5 NGINX Plus,可能会构建容器来试用新特性或功能。构建NGINX Plus容器时,通常会将NGINX软件仓库证书和密钥等敏感信息存储在本地文件系统中。虽然可以轻松地将敏感文件添加到软件仓库的 .gitignore文件中,但这种做法既不理想,也不安全。事实上,已有许多案例表明工程师会意外地将敏感信息提交到软件仓库。

更好的方法是使用密钥管理解决方案。我个人一直很喜欢1Password,最近还发现了它的CLI工具。借助此工具,开发人员和平台工程师可以在日常工作流程中更轻松地处理密钥。

本文将介绍如何使用1Password CLI安全地构建NGINX Plus容器。本示例假定您拥有NGINX Plus订阅、已安装CLI工具的1Password订阅、可访问带有shell(Bash或Zsh)的环境,并且已安装Docker。

在1Password中存储密钥

第一步是将机密信息存储在1Password中。1Password支持多种机密类型,例如API凭据、文件、备注和密码。在此NGINX Plus用例中,我们使用1Password的安全文件功能。

可从MyF5门户获取NGINX存储库证书和密钥。按照1Password文档中的说明,分别为NGINX存储库证书和密钥创建安全文档。创建这两个安全文档后,按照相关步骤收集1Password机密引用。

注意:截至本文撰写时,1Password不支持在同一条记录中添加多个文件。

构建NGINX Plus容器

现在,可以构建使用安全文件及其机密引用统一资源标识符(URI)的NGINX Plus容器。此步骤使用Dockerfile示例,该示例来自《NGINX Plus管理指南》。

准备docker build流程

将Dockerfile保存到新目录后,准备执行docker build流程。要将1Password机密传入docker build,请先将每个机密引用URI存储在环境变量中。然后,在保存Dockerfile的目录中打开一个新的Bash终端。

在Bash终端中输入以下命令:

export NGINX_CRT="op://Work/nginx-repo-crt/nginx-repo.crt"export NGINX_KEY="op://Work/nginx-repo-key/nginx-repo.key"

替换密钥引用 URI

使用op run命令,可让1Password CLI将环境变量中的机密引用URI替换为机密值。您可以在docker build命令中利用此功能,将NGINX存储库证书和密钥传入构建容器。

要完成容器构建,请在上一步使用的同一终端中运行以下命令:

op run -- docker build --no-cache --secret id=nginx-key,env=NGINX_KEY --secret id=nginx-crt,env=NGINX_CRT -t nginxplus --load .

在此命令中,op run会执行docker build命令,并检测两个包含1Password机密引用URI的环境变量引用(NGINX_CRT和NGINX_KEY)。op命令会将URI替换为机密的实际值。

立即开始

按照以下简单步骤并使用1Password CLI,无需将证书和密钥存储在本地文件系统中,即可基于NGINX Plus存储库构建NGINX Plus容器,从而打造更安全的环境。

如果您是首次使用NGINX Plus,可以立即开始30天免费试用,也可以联系我们,讨论您的使用场景。


分享
标签: Security, F5 NGINX, Tech

相关博客文章

NGINX Plus R26 正式发布
NGINX | 2022/02/15

NGINX Plus R26 正式发布

NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
NGINX | 2022/02/10

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击

gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
NGINX | 2021/09/13

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划

了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。

NGINX Plus R19 正式发布
NGINX | 2019/09/03

NGINX Plus R19 正式发布

NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。

NGINX现已正式加入F5
NGINX | 2019/05/09

NGINX现已正式加入F5

NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。

使用NGINX和NGINX Plus实现高性能缓存
NGINX | 2016/08/24

使用NGINX和NGINX Plus实现高性能缓存

我将介绍NGINX在内容缓存和性能方面的工作原理,并分享一些控制NGINX内容缓存方式的技巧。