博客 | NGINX

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

NGINX-F5-horiz-black-type-RGB 的一部分
Cody Green 缩略图
科迪·格林
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 中,它支持多种秘密类型,如 API 凭证、文件、注释和密码。 在这个 NGINX Plus 用例中,我们利用了 1Password 的安全文件功能。

您可以从MyF5 门户获取您的 NGINX 存储库证书和密钥。 按照1Password 文档为 NGINX 存储库证书和密钥创建安全文档。 创建两个安全文档后,请按照步骤收集 1Password 秘密参考

笔记: 在撰写本文时,1Password 不支持同一记录上的多个文件。

构建 NGINX Plus 容器

现在是时候构建利用您的安全文件及其秘密参考统一资源标识符 (URI) 的 NGINX Plus 容器了。 此步骤使用NGINX Plus 管理指南中的示例Dockerfile

准备docker build流程

将Dockerfile保存到新目录后,准备docker构建过程。 要将您的 1Password 机密传递到docker build中,首先将每个机密引用 URI 存储在环境变量中。 然后,在保存 Dockerfile 的目录中打开一个新的 Bash 终端。

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

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

替换机密参考 URI

op run命令使您的 1Password CLI 能够用秘密的值替换环境变量中的秘密参考 URI 。 您可以在docker build命令中利用此功能将 NGINX 存储库证书和密钥传递到构建容器中。

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

op 运行 --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_CRTNGINX_KEY )。 op命令用秘密的实际值替换 URI。

立即开始

通过遵循简单的步骤并使用1Password CLI ,您可以针对 NGINX Plus 存储库构建 NGINX Plus 容器,而无需将证书和密钥存储在本地文件系统上,从而创建一个更安全的环境。

如果您是 NGINX Plus 新手,您可以立即开始30 天免费试用,或者联系我们讨论您的用例


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”