如果您经常使用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天免费试用,也可以联系我们,讨论您的使用场景。
相关博客文章
NGINX Plus R26 正式发布
NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。
使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。
Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。
NGINX Plus R19 正式发布
NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。
NGINX现已正式加入F5
NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。
