docker swarm ca コマンドを使って Swarm CA を管理する方法

DockerDockerBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、docker swarm ca コマンドを使用して Docker Swarm 認証局 (Certificate Authority, CA) を管理する方法を学びます。現在の Swarm CA 証明書を表示してその詳細と有効期限を理解するなどの重要な操作を説明します。

さらに、Swarm CA のローテーション方法を探ります。これには、定期的な更新のために新しく生成された証明書で CA をローテーションすること、特定のセキュリティ要件に合わせてカスタム証明書とキーでローテーションすること、およびバックグラウンドで実行するためにデタッチドモードでローテーションを実行することが含まれます。これらの手順は、Docker Swarm クラスターのセキュリティと健全性を維持するために重要です。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/system("Manage Docker") subgraph Lab Skills docker/info -.-> lab-555239{{"docker swarm ca コマンドを使って Swarm CA を管理する方法"}} docker/system -.-> lab-555239{{"docker swarm ca コマンドを使って Swarm CA を管理する方法"}} end

現在の Swarm CA 証明書を表示する

このステップでは、現在の Swarm CA 証明書を表示する方法を学びます。Swarm CA (認証局,Certificate Authority) は、Docker Swarm クラスター内のノードに証明書を発行する役割を担っており、これらの証明書はノード間の安全な通信に使用されます。

現在の Swarm CA 証明書を表示するには、docker swarm ca コマンドを --cert-dir フラグとともに使用して、Swarm 証明書が保存されているディレクトリを指定します。デフォルトでは、このディレクトリは /var/lib/docker/swarm/certificates です。

まず、正しいディレクトリにいることを確認しましょう。デフォルトの作業ディレクトリは ~/project です。

pwd

以下のような出力が表示されるはずです。

/home/labex/project

では、現在の Swarm CA 証明書を表示しましょう。/var/lib/docker ディレクトリにアクセスするにはルート権限が必要なので、sudo を使用します。

sudo docker swarm ca --cert-dir /var/lib/docker/swarm/certificates

このコマンドは、Swarm CA 証明書に関する情報を出力します。有効期限や発行者などの情報が含まれます。出力は以下のようになります。

Certificate information:
------------------------
Common Name: swarm-ca
Organization:
Organizational Unit:
Country:
Province:
Locality:
Valid From: 2023-10-27 00:00:00 +0000 UTC
Valid Until: 2024-10-26 00:00:00 +0000 UTC
Issuer: CN=swarm-ca

この出力は、現在の Swarm CA 証明書の詳細を示しています。Valid FromValid Until フィールドは証明書の有効期限を示しています。Issuer フィールドは証明書の発行者を示しており、この場合は Swarm CA 自身です。

新しく生成された証明書で Swarm CA をローテーションする

このステップでは、新しく生成された証明書で Swarm CA をローテーションする方法を学びます。Swarm CA をローテーションすることは、Swarm クラスター内の通信に使用される証明書を定期的に更新するためのセキュリティ上のベストプラクティスです。

Swarm CA をローテーションすると、Docker は新しい CA 証明書とキーを生成し、その後 Swarm 内のすべてのノードに新しい証明書を発行します。このプロセスは通常、シームレスであり、サービスにダウンタイムを必要としません。

新しく生成された証明書で Swarm CA をローテーションするには、docker swarm ca --rotate コマンドを使用できます。このコマンドは自動的に新しい CA を生成し、新しい証明書をノードに配布します。

ホームディレクトリ ~/project にいることを確認してください。

pwd

/home/labex/project と表示されるはずです。

では、Swarm CA をローテーションしましょう。この操作にはルート権限が必要なので、sudo を使用します。

sudo docker swarm ca --rotate

CA がローテーションされていることを示す出力が表示されます。出力は以下のようになります。

Swarm CA rotated.

ローテーションが完了すると、Swarm は新しい CA 証明書の使用を開始します。Swarm 内のノードは自動的にその証明書を更新し、新しい CA によって署名されたものになります。

CA がローテーションされたことを確認するには、前のステップのコマンドを使用して Swarm CA 証明書を再度表示できます。

sudo docker swarm ca --cert-dir /var/lib/docker/swarm/certificates

Valid FromValid Until の日付を前の出力と比較してください。Valid From の日付が現在の日付に近くなっていることがわかるはずで、これは新しい証明書が生成されたことを示しています。

カスタム証明書とキーで Swarm CA をローテーションする

このステップでは、カスタム証明書とキーを使用して Swarm CA をローテーションする方法を学びます。独自の CA インフラストラクチャを使用したい場合や、既存の PKI (公開鍵インフラストラクチャ,Public Key Infrastructure) と Swarm を統合する場合に便利です。

カスタム証明書とキーで Swarm CA をローテーションするには、docker swarm ca --rotate コマンドに --cert--key フラグを使用して、カスタム CA 証明書とキーファイルのパスを指定する必要があります。

まず、デモンストレーションのためにダミーの証明書とキーファイルを作成しましょう。実際のシナリオでは、実際の CA 証明書とキーを使用します。

ホームディレクトリ ~/project にいることを確認してください。

pwd

/home/labex/project と表示されるはずです。

では、ダミーの証明書とキーファイルを作成しましょう。自己署名証明書と秘密鍵を生成するために openssl を使用します。

openssl req -x509 -nodes -newkey rsa:2048 -keyout ~/project/custom_ca.key -out ~/project/custom_ca.crt -days 365 -subj "/CN=custom-swarm-ca"

このコマンドは、共通名 (Common Name) が "custom-swarm-ca" で 365 日間有効な秘密鍵 (custom_ca.key) と自己署名証明書 (custom_ca.crt) を生成します。

カスタム証明書とキーが用意できたので、これらのファイルを使用して Swarm CA をローテーションできます。

sudo docker swarm ca --rotate --cert ~/project/custom_ca.crt --key ~/project/custom_ca.key

カスタム証明書とキーで CA がローテーションされていることを示す出力が表示されます。出力は以下のようになります。

Swarm CA rotated.

ローテーションが完了すると、Swarm はカスタム CA 証明書の使用を開始します。Swarm 内のノードは自動的にその証明書を更新し、カスタム CA によって署名されたものになります。

カスタム証明書で CA がローテーションされたことを確認するには、Swarm CA 証明書を再度表示できます。

sudo docker swarm ca --cert-dir /var/lib/docker/swarm/certificates

出力を確認してください。Issuer フィールドには、カスタム CA の共通名 "CN=custom-swarm-ca" が表示されるはずです。

デタッチモードで Swarm CA をローテーションする

このステップでは、デタッチモードで Swarm CA をローテーションする方法を学びます。デタッチモードを使用すると、新しい CA 証明書とキーを生成しつつ、それらをすぐに Swarm ノードに配布しないことができます。これは、新しい証明書の配布を手動で管理する必要があるシナリオで便利です。

デタッチモードで Swarm CA をローテーションするには、docker swarm ca --rotate --detach コマンドを使用します。このコマンドは新しい CA 証明書とキーを生成し、それらを Swarm の証明書ディレクトリ (/var/lib/docker/swarm/certificates) に保存しますが、ノードを自動的に更新することはありません。

ホームディレクトリ ~/project にいることを確認してください。

pwd

/home/labex/project と表示されるはずです。

では、デタッチモードで Swarm CA をローテーションしましょう。この操作にはルート権限が必要なので、sudo を使用します。

sudo docker swarm ca --rotate --detach

デタッチモードで CA がローテーションされたことを示す出力が表示されます。出力は以下のようになります。

Swarm CA rotated in detached mode.

デタッチモードでは、新しい CA 証明書とキーが生成されて保存されますが、Swarm ノードは自動的に更新されません。その後、新しい CA 証明書を Swarm クラスター内の他のノードに手動で配布し、それらのノードに設定を再読み込みするよう指示する必要があります。

デタッチモードで CA がローテーションされたことを確認するには、Swarm CA 証明書を再度表示できます。

sudo docker swarm ca --cert-dir /var/lib/docker/swarm/certificates

証明書の Valid From 日付が更新されていることがわかるはずで、これは新しい CA が生成されたことを示しています。ただし、Swarm 内のノードは手動で更新されるまで、依然として古い CA を使用しています。

まとめ

この実験では、docker swarm ca コマンドを使用して Swarm 証明書認証局 (Certificate Authority, CA) を管理する方法を学びました。まず、--cert-dir フラグを使用して現在の Swarm CA 証明書を表示し、有効期間や発行者などの詳細を理解しました。

その後、新しく生成された証明書で Swarm CA をローテーションする方法を調べました。これは、Swarm クラスター内の安全な通信に使用される証明書を更新するための重要なセキュリティ対策です。