%20.png)
私が働いていたどの会社でも、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 ベースのユーザー管理を使用することをお勧めします。