2026年 Mac SFTP 権限隔離と転送加速:CI/CD アーティファクト配信とチームコラボレーションの「ベストプラクティス」
要約
2026年、リモートMacノードはCI/CDにおいて、アーティファクト配信の拠点として重要な役割を担います。本文は、macOS Sequoia向けのSFTP権限隔離とrsync転送加速をまとめ、Chroot JailとACL権限マトリックスでチーム間の安全とデリバリー効率を確保します。
はじめに:リモートMacをアーティファクト拠点に
リモートMacはCI/CD配信やチーム資産共有の拠点になりやすく、SFTP公開時は権限過多と自動化停止の両極に陥りがちです。本記事ではmacOS Sequoia以降で権限隔離と転送最適化を両立する要点をまとめます。
目次
1. リモート転送における3つの主な課題
運用インシデントの整理では、配信プロセスで次の課題が繰り返し報告されます。
- 権限の過剰付与:Chroot隔離が不十分なため、SFTPユーザーがシステムルートや他チームのビルドディレクトリにアクセスできてしまう。
- 転送のサイレントタイムアウト:数GB規模の .ipa や .app パッケージを転送する際、TCPウィンドウ設定やSSHハンドシェイクのオーバーヘッドにより、速度低下や切断が発生する。
- TCCによるアクセス遮断:macOSの厳格なプライバシーポリシー(フルディスクアクセス)により、SFTPプロセスが `/Desktop` や `/Documents` にアクセスできず、`Operation not permitted` エラーが返される。
2. macOS権限モデル:POSIXとACLによる隔離の実践
細かな共有にはPOSIXだけでは足りず、ChrootとACLの併用が現実解です。
Chroot隔離:ユーザーの「視界」を制限する
`/etc/ssh/sshd_config` を編集することで、特定のグループに属するユーザーを自身のホームディレクトリ内に閉じ込め、システムファイルへのアクセスを防ぐことができます。
Match Group sftp_delivery
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
意思決定マトリックス:転送プロトコルの比較
| 次元 | SFTP (internal-sftp) | rsync over SSH | Modern SCP |
|---|---|---|---|
| 操作性 | GUIと相性◎ | 自動化向き | 単純コピー |
| 差分同期 | 不可 | 強み(差分のみ) | 不可 |
| 隔離 | 高(Chroot) | 中(シェル要) | 高 |
| 加速の鍵 | ControlPersist等 | --partial等 | 大容量は不向き |
3. 転送加速:rsyncアルゴリズムとControlPersistマトリックス
帯域は十分でもSFTP単流では頭打ちになりがちです。次を検討します。
- マルチプレクシング:`ControlMaster auto` と `ControlPersist 10m` を有効にし、CIスクリプトにおける頻繁なハンドシェイクの遅延を解消します。
- アルゴリズムの選択:Apple Silicon上では、ハードウェア加速が効く `[email protected]` を優先的に使用します。
- rsyncの差分戦略:`--partial --inplace` を使用して、大容量ファイルの同期時に不要なコピー作成を避け、ディスクI/O負荷を軽減します。
4. 5ステップ:隔離SFTPの構築
手順は次のとおりです。
- 専用グループの作成:`sudo dseditgroup -o create sftp_delivery` を実行します。
- ディレクトリ所有権の設定:Chrootディレクトリの所有者は `root`、権限は `755` である必要があります(これはsshdの厳格なセキュリティ要件です)。
- 権限の委譲:ユーザーディレクトリ内に `uploads` フォルダを作成し、`chmod +a` を使用して特定のグループに書き込み権限を付与します。
- フルディスクアクセスの許可:「システム設定 > プライバシーとセキュリティ > フルディスクアクセス」で、`/usr/libexec/sftp-server` をホワイトリストに追加します。
- クライアント側の最適化:`~/.ssh/config` に `ServerAliveInterval 60` を追加し、接続の安定性を維持します。
5. FAQ:TCCと権限エラー
Q: Chrootを設定した後、接続がすぐに切断されます。なぜですか?
A: ほとんどの場合、Chrootパス内のディレクトリの権限が `755` でないか、所有者が `root` でないことが原因です。Chrootパスは、root以外のユーザーから「書き込み不可」である必要があります。
Q: .ipaファイルのrsync転送が遅いです。
A: .ipaは既に圧縮されたファイルです。rsyncの `-z` (圧縮) オプションを外してください。既に圧縮されたデータをSSHで再圧縮すると、CPUを無駄に消費しスループットが低下します。
6. まとめ:セキュリティ、パフォーマンス、ホスティングのバランス
POSIX/ACLとマルチプレクシングで、リモートMacを安定したCI/CD ingressに近づけられます。
一方で自前運用では、macOSのアップデートに伴うTCC変更や公開面の攻撃対策に継続コストがかかります。長時間稼働と権限運用を外部に任せたいチームには、プリセット済み転送設定と権限運用が整理されたSFTPMACのリモートMacレンタルが現実的です。まずは社内要件と突き合わせ、スクリプト資産とHOME整合を崩さずに検証することをおすすめします。