セキュリティ 2026年4月13日

2026 クラウド Mac:委託先向け SSH 強制コマンドと authorized_keys の監査耐性パターン

MacLogin セキュリティチーム 2026年4月13日 約 13 分

Apple Silicon Mac mini をクラウドで共有し、委託先と社員が同じ UNIX アカウントに乗ると、~/.ssh/authorized_keys が「全員フルシェル」へ退化しがちです。2026 年の実務的結論は、鍵ごとに command=restrict、そして明示的な no-port-forwarding を積み、スクリプト化した負のテストで挙動を固定し、指紋受理ログに CMDB のリース ID を紐付けることです。 本稿ではラッパーと git-shell の比較表、5 列の能力マトリクス、MacLogin の香港・東京・ソウル・シンガポール・米国リージョンを想定した 7 ステップ展開、SOC2 類のエビデンスに転記しやすい FAQ をまとめます。

鍵投入前に 初回 SSH ホスト信頼チェックリスト で接続先を固定し、複数人がまだ対話シェルを必要とするなら 共有セッション統制 と併読してください。接続手順は ヘルプ、リージョン比較は 料金、TCC ダイアログが必要な瞬間だけ VNC を併用し、シェル権限を膨らませない運用が安全です。

クラウド Mac はオンプレの固定端末と異なり、OS アップデートや再イメージの頻度が高いため、authorized_keys の差分レビューを月次で回すチームと四半期でしか見ないチームでは事故確率が桁違いになります。MacLogin のようなレンタル環境では、リージョンごとに同じ plist と同じラッパーバージョンを配布しつつも、委託先ごとに鍵スタンザを分離しておくと、鍵失効時の影響半径が明確になります。

誰がレンタル環境で強制コマンドを必要とするか

CI 専用ボットだけが対象ではありません。四半期内に「1 委託先 1 ホスト」を用意できない調達制約のとき、強制コマンドは最も安価な補償コントロールになります。

  • 規制対象 SaaS:読み取り専用 Git が VPC スキャンに転化しないことを示す必要がある。
  • モバイルリリース:一時的なアップロード権限と sudo 可能シェルを切り離したい。
  • AI オートメーション:デプロイ鍵が単一オーケストレーション以外を起動しないようにしたい。
  • MSP:数十台の MacLogin リースを運用し、コメント行にチケット番号を埋め込みたい。

通常シェルが過剰であるサイン

ログに現れる前兆は小さく、監査では大きく見積もられます。次のいずれかが当てはまれば優先度を上げてください。

  1. 同一鍵が 3 つ以上のホストグループに出現し、ローテ期限が書かれていない。
  2. 読み取り専用のはずのアカウントから ssh -R が観測される。
  3. ペンテストでローカル転送から内部管理 API に到達したがパスワード認証は無効。
  4. コンプライアンス設問が「コマンド許可リスト」を要求しているのに答えが「鍵認証のみ」で止まっている。
警告: command="..." のクォート誤りはその鍵を即座に壊します。sudo -e で編集し Git で差分管理し、捨て鍵で本番前に検証してください。

パターン表:ラッパー対サブシステム

シナリオ推奨監査で有利な理由クラウド Mac の注意
ベンダー読み取り専用 Gitgit-shell 系の強制コマンドargv 形が文書化されているリポジトリパスをホーム外に置くポリシーなら分離を忘れずに
単一 CI アーティファクト取得argv をホワイトリストする小さなラッパーGit diff で改ざんが見えるインタプリタ更新で静かに壊れるのでピン留め
48 時間ブレイクグラス期限付きコメントの別鍵時間境界が明確期限後は鍵素材ごと廃棄し再発行
バスション越しテレメトリ極小シンク(例:cat)+ネットワーク側の横展開遮断攻撃面が最小sshd レベルの TCP 転送ポリシー とセット

能力スコアカード:オプションの積み方

バンドルポート転送PTYscp 風エージェント転送残余リスク
restrict のみバンドルで抑止多くは抑止明示許可が要る抑止低(OpenSSH 版確認は必須)
command=+手動no-port-forwarding 次第調整可ラッパー次第no-agent-forwarding を推奨中(編集ミス)
無制限許可されがち許可許可許可されがち
計測のヒント: 委託先端末で ssh -G の実効オプションを記録し、24 時間で鍵に当たる送信元 IP 数(個人なら多くても 5 未満)、対話セッション中央値(45 分超は調査)を追跡してください。

本番 authorized_keys への 7 ステップ

  1. 棚卸し: コメント付きで鍵をエクスポートし、所有者・期限・チケット欠落を拒否。
  2. 分類: 人間対話機械読み取りブレイクグラス の三類に限定。
  3. ドラフト: 機械鍵は restrict,command="/usr/local/bin/ci-git-bridge.sh" のように束ねる。
  4. 構文検証: 許可されたら sshd -T とテストユーザで起動確認。
  5. 負のテスト: RequestTTY、許可外 scp-R が必ず失敗すること。
  6. カナリア: まず東京など単一リージョンで 72 時間
  7. 証跡: diff・端末ログ抜粋・統合ログ相関を変更記録に添付。

git-shell とカスタムラッパーの早見

Git プロトコルだけなら git-shell が最速です。defaults や Xcode API、複数リポジトリ ACL が混ざる瞬間から署名付きラッパーへ移行し、argv・送信元 IP・リース名を JSON で残します。

ログ実装のコツ

ファイルは 0600、あるいは logger で unified logging へ。リージョンコード HK/JP/KR/SG/US を含めると SIEM ルールが単純化します。

監査で実際に求められるフィールド

アーティファクト最低保持オーナーメモ
authorized_keys diff365 日プラットフォームチケット SSH-FRC-2026 とリンク
負のテストログ180 日AppSec転送拒否を明示
公開鍵受理ログ90 日SOC名簿更新と突合

FAQ

Match User は per-key を置き換えるか? 粗い。同一アカウントに人間と CI が混在するなら per-key が拡張性に勝ちます。

FIDO2 鍵は? ハードウェア認証でも強制コマンドは別レイヤーとして必要です。

VS Code Remote SSH は? 転送と PTY を前提にする別鍵クラスとして設計しない限り危険です。

Mac mini M4 が実験に向く理由

デスクと同じ OpenSSH/launchd スタックをクラウドで再現できるため、東京で検証したラッパー挙動をシンガポールのエビデンス写真と一致させやすいです。M4 の統合メモリは git pack と軽量バリデータを同時にさばき、将来的に端末推論を挟む余地も残ります。MacLogin でリージョン横断コピーしつつ、シェル権限を広げず VNC で TCC だけ突破する運用が現実的です。

負荷が見えたら 料金ページ でステージングと本番を分離し、ラッパーの tarball だけを共有してください。

隔離リースで委託先鍵を試す

共有 authorized_keys に触れる前に本番相当リージョンで検証。