Security前書きDockerはコンテナー化ソフトウェアの一般的なオプションであり、CoreOSはクラスター環境に特化しており、コンテナー化アプリケーションに最適です。すべてのコンテナを整理することは、特にDockerコマンドラインインターフェイスを介してのみ管理されている場合や、CoreOSの複数のインスタンスがある場合は複雑になる可能性があります。[Shipyard]という便利なDocker管理ツールがあります。便利なGUIを使用して、コンテナを再起動、破棄、および作成することができます。特定のコンテナへのリソース割り当てを管理し、複数のDockerホスト間でコンテナを管理できます。DockerサーバーとShipyardシステムが安全であることを確認することは重要です。運用で使用されている場合は重要です。2.0.10をセットアップし、DockerをTLS証明書で保護して、承認されたクライアントのみが接続できるようにします。Security_の略です。データがクライアントからサーバーに転送され、再び戻されるときにデータを暗号化するために使用されます。私たちの場合、これを使用して、Dockerホストへの接続、およびDockerのShipyardへの接続を暗号化します。前提条件このチュートリアルを実行するには、次のものが必要です。MB以上のRAMを搭載した1つのCoreOSドロップレット。GB以上を推奨します。アルファ版またはベータ版ではなく、CoreOSの最新の安定バージョンを選択してください。+すべてのCoreOSサーバーにはSSHキーが必要であるため、まだ持っていない場合は、https://www.digitalocean.com/community/tutorials/how-to-use-のステップ1〜3に従って追加できます。DropletsでSSHキーを使用する方法]。Dockerホストの完全修飾ドメイン名(FQDN)またはサブドメイン。+まだドメインを所有していない場合は、さまざまなドメインレジストラーのいずれかから購入できます。DNSでの設定方法に関する指示があります。DigitalOceanでホスト名を設定するには。認証に証明書を使用するようにDockerをセットアップすることはかなり高度なトピックなので、https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrsを読んでください。[このOpenSSLチュートリアル]では、SSL証明書の仕組みについて説明しています。最初に行う必要があるのは、サーバー証明書とクライアント証明書の署名に使用できる認証局を作成することです。CoreOSには、証明書の生成と署名に使用できるユーティリティであるOpenSSLが付属しています。RSA秘密キーを作成します。+`というディレクトリを作成して移動します。これにより、ファイルの場所を簡単に覚えることができます。~/dockertls次に、RSA秘密鍵を作成します。このコマンドにより、キーのパスフレーズを作成するように求められます。4096上記のコマンドを分解しましょう。`は、コマンドがプライベートRSAプライベートキーを生成することを意味します。`は生成するファイルの名前を指定します。最後のビット「+4096」は、ビット単位のキーの長さです。これを4096などの高い数値に維持することをお勧めします。次に、新しい証明書を生成し、作成した秘密キーで署名します。キーを作成するときに選択したパスフレーズを入力する必要があります。myca.pemOpenSSLは、サーバーのFQDNや組織の基になっている郡など、必要な情報も要求します。これらの質問にはできる限り正確に答えるようにしてください。これは、自己署名認証局(CA)を作成する最後の手順です。CAができたので、Dockerデーモンで使用するサーバー証明書を実際に作成できます。次の2つのコマンドは、署名要求を生成します。++をDockerに使用しているドメインまたはサブドメインに置き換えてください。docker.csr最後に、CAの秘密キーで署名します。キーパスフレーズをもう一度入力する必要があります。+」というファイルが作成されます。これは、Dockerホストで使用されるサーバー証明書です。ステップ2-クライアント証明書の作成サーバー証明書を取得したので、クライアント証明書を作成する必要があります。これは、Dockerホストに接続しようとするたびに使用されます。接続しているクライアントが実際に個人のCAによって検証および署名されていることを確認します。したがって、承認されたクライアントのみが接続してDockerにコマンドを送信できます。最初に、クライアントに対する別の署名要求を作成します。docker-client.csrこのクライアントリクエストに対して実行する必要がある小さな追加ステップがあります。結果の証明書を実際にクライアント認証に使用できることを指定する構成ファイルを作成する必要があります。+」というファイルを作成します。次に、CAキーでクライアントに署名します。client.cnfこれで、CA、サーバー証明書、およびクライアント証明書ができました。ステップ3-DockerとCoreOSの構成この手順では、証明書を使用するようにDockerデーモンを構成します。Dockerの起動オプションを変更する必要があります。`を使用してサービスを管理します。+`を読み、さらに詳しく知りたい場合は、https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-を読むことができます。[Systemctlを使用してSystemdサービスとユニットを管理する方法]。Dockerユニットファイルを編集することから始めましょう。+`コマンドには、元のファイルを直接変更するのではなく、実際のユニットファイルを複製するのに役立つオプションがあります。Docker構成のオーバーライドと考えることができます。+`を使用して、Dockerユニットファイルを編集用に開きます。+`を使用してファイルを編集用に開きます。これは、https://www.digitalocean.com/community/tutorials/installing-and-using-the-vim-text-editorを読むことで使用方法を学ぶことができます。`で始まる行を見つけます。+`の後に以下の強調表示されたオプションを追加します。$DOCKER_OPT_IPMASQ追加したばかりのオプションを見てみましょう。+`は、TLS検証をオンにして、許可されたクライアントのみが接続できるようにします。+`は、CAの証明書の場所を指定します。+`はサーバー証明書の場所を指定します。+`はサーバーキーの場所を指定します。+`は、Dockerがどこからでも接続をリッスンすることを意味しますが、許可されたクライアントキーまたは証明書を持たない接続は許可しません。ファイルを保存して閉じ、Dockerデーモンをリロードして新しい構成を使用します。dockerDockerのステータスを確認すると、すべてが機能していることを確認できます。dockerActive:*で始まる行を探します。active(running)*以外のメッセージが表示された場合は、ユニットファイルの編集を再確認し、必要なすべてのキーと証明書が生成されていることを確認してください。最後に、TLS検証をテストできます。infoすべてが順調であれば、Dockerホストに関する基本的なシステム情報が返されます。これは、TLSでDockerホストを保護したことを意味します。docker`を使用してログを確認してください。有効な証明書とクライアントキーを使用して接続している限り、どこからでもDockerホストにアクセスできます。クラスターで使用するクライアント証明書をいくつでも生成して署名できます。造船所のセットアップはかなり簡単なプロセスです。すべてのパーツは、独自のDockerコンテナー内に内蔵されているため、Dockerは必要なイメージを自動的にプルします。造船所のデータベースが保存されるデータボリュームを設定する必要があります。RethinkDB]。これは、造船所がDockerからのリアルタイムデータを追跡するために使用するデータベースエンジンです。+`でのみリッスンするようにします。これは、誰もサーバーの外部からアクセスできないことを意味するため、このデータベースを保護する良い方法です。Shipyardバージョン2.0.10を使用します。TLSを使用して設定するのが最も簡単だからです。次のコマンドは、Shipyardを実行する新しいコンテナーを開始し、RethinkDBコンテナーにリンクして、それらが通信できるようにします。+`にアクセスして、造船所のコントロールパネルにアクセスします。*でログインできます。造船所は、クラスターに新しいエンジンを追加するように求めます。+追加*ボタンをクリックすると、次のようなフォームが表示されます。Add]次のように情報を入力します。*名前*には、好きな名前を指定できます。これはエンジンの名前になります。*ラベル*には、好きなものを指定できます。コンテナを整理しておくことができるように短くしてください。*は、サーバーに搭載されているCPUの数です。*メモリ*は、サーバーに搭載されているRAMの量です。+`でなければなりません。基本オプションの下に3つの大きなテキスト領域があります。ここで、ShipyardがDockerホストに安全に接続できるように、証明書とキーを貼り付けます。SSL証明書*には、クライアント証明書が必要です。証明書の内容を印刷します。SSL証明書*]ボックスに貼り付けます。次に、クライアントキーの内容を印刷します。*テキスト領域に貼り付けます。最後に、CA証明書の内容を印刷します。CA証明書*ボックスに貼り付けます。ページの下部にある淡い青色の*追加*ボタンをクリックします。すべてが正しく構成されている場合、造船所は次の画面を表示するはずです。[造船所エンジンリスト]結論これで、CoreOSサーバーで実行されている安全なDockerホストができました!造船所は、コンテナとホストのクラスターを安全かつ安全に管理するのに役立ちます。クライアントキーと証明書をローカルマシンに追加して、どこからでもDockerクラスターをリモートで管理することもできます。追加のセキュリティ手順については、Nginxを使用してShipyardサーバーをリバースプロキシできます。これにより、ローカルマシンから造船所へのより安全な接続にHTTPSを使用できます。詳細については、記事https://www.digitalocean.com/community/tutorials/docker-explained-how-to-containerize-and-use-nginx-as-a-proxy[Dockerの説明:方法Nginxをコンテナ化してプロキシとして使用する]。[他のCoreOSサーバーをスピンアップ]してDockerクラスターを試すこともできます。Shipyardを使用して数百のエンジンを管理できます。