1Password SSH Agentのセキュリティーについて
1Passwordマニュアル|1Password SSHエージェントのセキュリティー機能とOpenSSHエージェントとの違いを詳しく解説し、安全な利用方法を紹介します。
1Passwordマニュアル|1Password SSHエージェントのセキュリティー機能とOpenSSHエージェントとの違いを詳しく解説し、安全な利用方法を紹介します。
ほとんどのオペレーティングシステムにプリインストールされている標準のOpenSSHエージェント(ssh-agent)では、起動するたびにエージェント(ssh-add)に鍵を追加する必要があります。SSH鍵を追加した後は、OpenSSHエージェントが管理している鍵をどのプロセスでも使えるようになります。その後、それらの鍵が不要になった場合は、削除する必要があります。
1Password SSHエージェントは異なるアプローチを採用しており、SSHクライアントまたはターミナルセッションが鍵を使う前にユーザーの同意を求めます。このため、OpenSSHエージェントのように鍵を追加または削除するという概念はありません。
1Passwordの環境設定から、1PasswordにSaveされている全てのをSSHに使えるようになります。ただし、秘密鍵はユーザーの同意なしに使用されることはありません。
1Password SSHエージェントの認証モデルは、どのプロセスがどの秘密鍵を使えるかを制御できるという考えに基づいて構築されています。システム上のSSHクライアントまたはターミナルセッションがSSHエージェントを介して鍵の1つを使うようリクエストすると、1Passwordはリクエストを承認するかどうかを尋ねます。
認証プロンプトには、どのプロセスがどのSSH鍵を使う許可をリクエストしているかが示されます。リクエストを承認すると、鍵とSSHコマンドが実行されたプロセス(プロセスは、ターミナルウィンドウまたはタブ、IDE、またはGitやSFTPクライアントなどのGUIアプリケーションなどです)の間でセッションが確立されます。
1Passwordがロックされているとき、SSHエージェントはバックグラウンドで実行され続け、SSHクライアントが鍵の1つを使用しようとするとプロンプトが表示されます。1Passwordがロックされるのではなく、クライアントが一定時間(例えば4時間)鍵を使うように既に承認している場合は、承認がエージェントのメモリーに保持され、1Passwordのロック解除を求めるプロンプトのみが表示されます。1Passwordがロックされているとき、SSHエージェントはメモリーに秘密鍵を保持せず、承認のみを保持します。そのため、エージェントが秘密鍵にアクセスするには、アプリのロックを解除する必要があります。
SSHエージェントが鍵の1つを使うために承認を必要とする場合、1Passwordは、Touch ID、Windows Hello、1Passwordアカウントのパスワードなどのオプションを使ってリクエストを承認できる承認プロンプトを表示します。承認方法は、デバイス、オペレーティングシステムのバージョン、1Passwordの設定、その他の要因によって異なるため、プロンプトにはリクエストを承認する方法が表示されます。また、リクエストを拒否するオプションもあります。
1Password SSHエージェントの認証モデルは柔軟性があるため、いつでもニーズに合わせて設定できます。各秘密鍵の使用を承認するよう常に求められますが、SSHエージェントセッションの継続時間(エージェントが鍵の承認を記憶する時間)などのオプションを調整できます。これは、1Passwordがロックまたは終了するまで、または設定された時間が経過するまでに調整できます。
また、各鍵の承認する使用方法を選択することもできます。これにより、SSHエージェントがリクエストの承認を求めるタイミングが決まります。全てのオプションで、承認により、そのエージェントセッション内、またはアプリケーションまたはターミナルセッションが終了するまで、SSH鍵へのアクセスが許可されます。選択できる使用オプションは次の通りです。
鍵ごと、アプリケーションごと(デフォルト):SSH鍵リクエストを承認すると、特定のアプリケーション(その全サブプロセスを含む)が特定のSSH鍵を使うことを許可します。
鍵ごと、アプリケーションごと、ターミナルセッションごと:SSH鍵リクエストを承認すると、特定のアプリケーション(その全サブプロセスを含む)が特定のSSH鍵を使うことを許可しますが、追加の制限があります。アプリケーションがターミナルエミュレーターまたはターミナルが組み込まれたIDEである場合、許可は特定のタブにのみ適用されます。そのアプリケーションの新しいターミナルタブごとに、その鍵を使うための個別の承認が必要です。
鍵ごとに、ユーザーのシステムで実行されているプロセスごとに1回:承認プロンプトで[全てのアプリケーションを承認]チェックボックスをオンにすると、特定のSSH鍵に対してリクエストごとにこのオプションを表示できます。これにより、エージェントセッションの期間中、現在のOSユーザーで実行されている全プロセスがその鍵を使うことが一時的に承認されます。アクセスは、エージェントソケットまたは名前付きパイプのファイル権限によってのみ制限されます。このオプションは、他の設定には影響しません。
IDEやGit GUIクライアントが、現在開いているリポジトリーでバックグラウンドでgit fetchを定期的に実行することは非常に一般的です。この機能はデフォルトで有効になっていることが多く、特にアプリケーションの自動フェッチ動作を認識していない場合は、1Passwordから予期しない認証プロンプトが表示されることがあります。
1Passwordは、リクエストの発信元であるアプリまたはウィンドウがフォアグラウンドにないことを検出すると、プロンプトを抑制します。プロンプトが抑制されると、デバイスのメニューバー、タスクバー、またはシステムトレイの1Passwordアイコンにインジケータードットが表示されます。プロンプトにアクセスする必要がある場合は、1Passwordアイコンをクリックして[SSH request waiting]を選択します。認証プロンプトがフォアグラウンドに表示されます。
SSHエージェントの[Display key names when authorizing connections]をオンにすると、1Passwordアプリは、SSH鍵アイテムのタイトルの暗号化されていないコピーもディスクにSaveします。SSH鍵名の表示はオプションであり、この設定はデフォルトでオフになっています。この設定は、1Passwordアプリでオンまたはオフにできます。設定がオフになっている場合、SSH鍵名はSaveされません。代わりに、認証プロンプトに、識別用に切り詰められた公開鍵のフィンガープリントが表示されます。
そのプロセスで実行される後続のSSHコマンドは、1Passwordがロックまたは終了するまで、またはで設定された時間の間、追加の承認なしに鍵を使用できます。例えば、git pullターミナルからSSH鍵の1つに対してgit pushコマンドを承認した場合、セッションは既に承認されているため、1Passwordは後続の承認を求めません。
承認するSSH鍵がを使うアカウントに属している場合は、IDプロバイダーのサインインページにリダイレクトされることがあります。その後、プロバイダーアカウントの資格情報を使ってサインインし、リクエストを承認する必要があります。
SSHエージェントをオンにすると、1Passwordアプリは、全てのの公開鍵の暗号化されていないコピーをディスクにSaveします。公開鍵をSaveすると、1Passwordがロックされている場合でもSSH認証プロンプトが表示されます。