大規模および混合環境での SSH キー管理 (Linux)

大規模および混合環境での SSH キー管理 (Linux)

私が働いていたどの会社でも、SSH キーの管理は大変でした。管理方法はそれぞれ異なっていました。しかし、ほとんどは Puppet/Chef/Ansible などの CM システムか、キーの手動コピー、または醜い bash スクリプトでした :D

また、LDAP または任意の DB を SSH キー ストアとして使用する人もいると聞きました。ただし、サーバーにキーを配置/削除するための CM ツールなど、追加の自動化が必要です。

そこで質問なのですが、私が知らない、何か素敵で現代的な方法があるのでしょうか? 大手 IT 企業 (Google や Facebook など) はキーをどのように扱っているのでしょうか?

答え1

(メタ: 私の意見では、この質問は意見に基づくものではありません。)

比較的新しい OpenSSH を搭載した比較的新しいバージョンの Linux/Unix を使用している場合は、OpenSSH 証明書を使用できます。MFA で一種の「チケット」感覚が必要な場合は、一時的な OpenSSH 証明書を発行できます。

OpenSSH証明書のポイントは、sshd側にインストールする必要があるのは、ディレクティブで参照されるSSH-CAの公開鍵だけであるということです。sshd_config の TrustedUserCAKeys

指令により承認されたプリンシパル*別のローカル ユーザー アカウントの OpenSSH 証明書でプリンシパル名 (基本的にはユーザー名) のセットを受け入れることもできます。

OpenSSH証明書はX.509証明書ではなく、ソースツリードキュメントで指定された異なる形式を持っています。プロトコル.certkeys

使い方についてはいくつかのウェブページがありますsshキー生成SSH-CAで公開鍵に署名する(例:SSH証明書の使用)。

私は、Web サービスとして実行している顧客向けに、多要素認証 (LDAP および OTP) に基づいて一時的なユーザー証明書を発行するこのような小さな SSH-CA を実装しました。

いつもの場所には、オープン ソースの実装がいくつか見つかります。ここでは意図的にリストを示しません。いくつかを確認した後、自分で実装したため、特定の実装を推奨するわけではありません。これは、それらの実装が機能しないという意味ではありません。単に、特定の顧客要件を満たさなかっただけです。

警告:

現時点では、オープンSSHまたはlibsshクライアント側で。パテまだサポートされていません。また、ネットワークデバイスやその他の特殊なアプライアンスでもサポートされていません。

PS: それでも、必要な機能をさらに提供してくれる、適切な LDAP ベースのユーザー管理を使用することをお勧めします。

関連情報