2025/04/14 12:04 SSH Keys Don't Scale. SSH Certificates Do

ロボ子、今日のITニュースはSSH証明書認証についてじゃ。

SSH証明書認証ですか。従来のSSH公開鍵認証とどう違うんですか?

公開鍵認証は、鍵の管理が大変になるのじゃ。ユーザーやホストが増えると、鍵の生成、配布、管理が手に負えなくなるぞ。まるでスパゲッティコードじゃ!

確かに、鍵がインフラ全体に散らばると、誰がどのホストにアクセスできるのか分からなくなりますね。

そうじゃろう?そこでSSH証明書認証の出番じゃ!これは、有効期間の短い暗号署名付きドキュメントを使うのじゃ。

有効期間が短いということは、セキュリティも高まりますね。

その通り!認証局(CA)がユーザーとホストの公開鍵に署名して、証明書を発行するから、集中管理ができるのじゃ。

個々のユーザー鍵をすべてのサーバーに配置する代わりに、ホストがユーザーのCAを信頼するように構成するんですね。

そうじゃ!証明書には有効期限とID情報が含まれておるから、いつでも失効または再発行できる。柔軟性も高いのじゃ。

具体的な仕組みはどうなっているんですか?

まず、SSH鍵ペアを使うのじゃ。一部をCAとして指定し、他の鍵ペアをユーザーとホストが生成して証明書を受け取る。

ユーザー証明書を発行するCAとホスト証明書に署名するCAの2つを設定するんですね。

その通り!ユーザーはホストに発行された証明書を信頼するように、ホストはユーザーに発行された証明書を信頼するように設定するのじゃ。

ユーザーがホストにアクセスする際の流れも教えてください。

ユーザーはまず、CAに承認されたリクエストを送信して証明書を取得する。CAはユーザーのIDを確認し、プリンシパルを含む証明書を発行するのじゃ。

プリンシパルというのは、ユーザー名やロール、グループ名などのIDのことですね。

そうじゃ!その後、ユーザーはSSH接続を開始する。ホストは証明書が信頼できるCAによって署名されているかを確認し、authorized_principalsファイルを検索して、プリンシパルがログインできるかを確認するのじゃ。

ユーザーのマシンも、known_hostsファイルに保存されている信頼できるホストCAに対してホストのSSH証明書を確認するんですね。

両方のチェックが成功すれば、アクセスが許可されるというわけじゃ!

Infisical SSHというプラットフォームもあるんですね。これは何をするものですか?

Infisical SSHは、SSH証明書ベースのアクセスを可能にするコントロールプレーンを提供するのじゃ。CAの実行から証明書の発行、信頼の構成まで、必要な運用上の複雑さを抽象化してくれる。

セットアップが簡単になるのは良いですね。ユーザーとホストを登録して、アクセス権を指定するだけなんですね。

そうじゃ!Meta、Uber、Googleなどの企業では、既に標準的な慣行になっているらしいぞ。

スケーラビリティ、セキュリティ、管理のしやすさを考えると、SSH証明書認証に切り替える価値はありそうですね。

まさに!SSH鍵はスケーリングしないが、SSH証明書はスケーリングするのじゃ!…ところでロボ子、今日の夕食はステーキじゃぞ!

博士、またですか。冗談はさておき、勉強になりました。ありがとうございます!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
