日常的にF5 NGINX Plusを使用している場合、新しい機能を試すためにコンテナを構築することも多いでしょう。また、NGINX Plusコンテナを構築する際には、NGINXリポジトリの証明書やキーなどの機密情報をローカルファイルシステムに保存することになりがちです。機密ファイルをリポジトリの .gitignoreファイルに追加するのは簡単ですが、この方法は理想的でも安全でもありません。実際、エンジニアが誤って機密情報をリポジトリにコミットしてしまった事例は数多くあります。
より適切な方法は、シークレット管理ソリューションを使用することです。私自身、長年にわたり1Passwordを愛用しており、最近同社のCLIツールを知りました。このツールを使用すると、開発者やプラットフォームエンジニアは、日常のワークフローでシークレットをより簡単に扱えるようになります。
このブログ記事では、1Password CLIを使用してNGINX Plusコンテナを安全にビルドする方法の概要を説明します。この例では、NGINX Plusサブスクリプション、CLIツールがインストールされた1Passwordサブスクリプション、シェル(BashまたはZsh)を使用できる環境、およびDockerがインストールされていることを前提としています。
シークレットを1Passwordに保存
最初のステップは、シークレットを1Passwordに保存することです。1Passwordは、API認証情報、ファイル、メモ、パスワードなど、複数のシークレットタイプに対応しています。このNGINX Plusのユースケースでは、1Passwordのセキュアファイル機能を活用します。
NGINXリポジトリの証明書とキーは、MyF5ポータルから取得できます。1Passwordのドキュメントに従って、NGINXリポジトリの証明書とキーそれぞれについてセキュアドキュメントを作成してください。2つのセキュアドキュメントを作成したら、手順に従って1Passwordのシークレット参照を取得してください。
注記:本稿執筆時点では、1Passwordは同じレコードへの複数ファイルの保存をサポートしていません。
NGINX Plusコンテナのビルド
次に、セキュアなファイルと、それらを参照するシークレットのUniform Resource Identifier(URI)を利用するNGINX Plusコンテナをビルドします。この手順では、DockerfileのサンプルをNGINX Plus Admin Guideから使用します。
Prepare the 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の置換
The 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が設定された2つの環境変数参照(NGINX_CRTとNGINX_KEY)を検出します。opコマンドは、URIをシークレットの実際の値に置き換えます。
今すぐ始める
簡単な手順に従い、1Password CLIを使用することで、証明書とキーをローカルファイルシステムに保存せずに、NGINX Plusリポジトリを使用してNGINX Plusコンテナをビルドでき、セキュリティの向上につながる環境を構築できます。
NGINX Plusを初めてご利用になる場合は、今すぐ30日間の無料トライアルを開始するか、ユースケースについてご相談ください。
関連するブログ記事
チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する
OpenTelemetryを使用してNGINXサーバーの状態と健全性をより明確に把握することで、問題のトラブルシューティングを行い、Webアプリケーションのパフォーマンスを向上できます。
AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正
Akita SoftwareのAPIオブザーバビリティ向け新しいNGINX Plus Certified Moduleを活用して、APIエンドポイントの問題をより迅速に特定し、修正できます。
JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法
Red HatのシニアプリンシパルデベロッパーアドボケイトであるDaniel Oh氏が、Javaプロジェクトをゼロから構築するためのひな形を作成し、Kubernetesネイティブアプリケーションとしてビルドする方法を解説します。
F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング
NGINXaaS for Azureは、NGINX PlusをAzureネイティブのSaaSとして利用できるサービスです。NGINXの設定を容易にリフト&シフトできるため、クラウド導入とモダンアプリの展開を加速できます。

SELinuxでNGINXおよびNGINX Plusを使用する
Red Hat Enterprise Linux(RHEL)および関連ディストリビューションでSecurity-Enhanced Linux(SELinux)を有効にすると、デフォルト設定によりNGINXとNGINX Plusの一部の操作が制限されます。この記事では、すべての機能を利用できるようにSELinuxの設定を変更する方法について説明します。
NGINX PlusによるAWS Auto Scalingグループの負荷分散
新しいnginx-asg-sync統合ソフトウェアにより、NGINX PlusはAWS Auto Scalingグループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります