痛みの分解:スクリプトは緑でもテスト機で止まる理由
痛みその1:CI は終了コードゼロとサイズ一致でテストへ渡しますが、テストPCでは「開けない」「未確認の開発者」と出ます。コンソール上の成功と macOS のユーザー空間セキュリティの言語がずれます。
痛みその2:quarantine は出所マークであり悪性の証明ではありません。手順がないと全局無効化か右クリック助言の極端に寄ります。
痛みその3:codesign/notarizationは別稿です。本稿は取得後のローカル政策に焦点を当てます。
「転送の完全性」と「ローカル実行の許可」を別メトリクスに分ける
証拠は三枚に分けます。A:ETag/サイズ/SHA256。B:署名と公証チケットの場所。C:spctl --assess と xattr。担当・時刻・承認が揃って初めて政策ミスと言えます。
リモートMacからは rsync -avz や SFTP が典型です。SSHFSのドラッグはブラウザ取得と隔離の付き方が違うため、手順書へ対照を書きます。
セキュリティは追跡可能な記録を見ます。リリース窓のチェックリストへ落とします。
数値とパラメータ:xattr、Gatekeeper、チーム基線
spctl の扱い・隔離解除・stapler 必須をゲート化し、MDM には OS 版の範囲を書きます。Intel/Apple Silicon 各一台をサンプルに。手作業8〜15分、自動化3分以内を目安にログを残します。出所はチケット必須。監査と並列と並べて夜間の切り分けを速めます。
企業端末ではテスト機と CI 機で同じ .app でも表示が変わるため、基線を文書で分けます。
判断マトリクス:隔離を消すか、署名を直すか
| シグナル | 優先アクション | 得られる結果 | 典型の誤り |
|---|---|---|---|
| 隔離のみで署名チェーンは健全 | 出所記録のうえ手順どおりにフラグ処理 | テスト継続と監査痕跡 | ハッシュ未確認で再帰削除 |
| spctl 拒否かつ署名破損 | ビルドと転送経路へ戻る | クライアント側の強信頼を避ける | 隔離解除で直ると思う |
| 公証の staple が必要 | ビルドMacで staple | オフラインでも検証しやすい | オンライン時だけ確認 |
| MDM 管理端末 | 許可リストや開発者モード方針 | 再現性のある展開 | 個人の全局緩和 |
| CLI や単体バイナリ | quarantine と実行ビットを個別評価 | 「落ちたが動かない」を防ぐ | ドキュメント扱いで複製 |
原則はカード(完全性/署名/政策)を先に決め列を選ぶことです。SFTP→ローカル同期では rsync の ACL/xattr をレビューします。
手順:ハッシュから spctl までの最小再現
# 0) 先にパイプラインの SHA256 と突き合わせ(例)
# shasum -a 256 ./Artifacts/MyApp.dmg
# 1) 隔離フラグを確認(例)
# xattr -lr ./MyApp.app | head
# 2) 承認後にのみ隔離を外す(例・慎重に)
# xattr -dr com.apple.quarantine ./MyApp.app
# 3) Gatekeeper 評価(例)
# spctl -a -vv MyApp.app
# 4) staple 検証(該当時)
# stapler validate -v MyApp.dmg
上記は学習用です。本番は変更票と監査コピーを重ねます。rsync の -X 等で xattr をどう扱うかを政策に書き、リモートMacのビルド領域はマウント可と rsync 必須を分けます。
FAQ とホスト型リモートMacを選ぶ理由
quarantine はマルウェアと同義ですか
いいえ。出所マークです。悪性かどうかは署名・ハッシュ・挙動監視で判断します。
テスト担当に Gatekeeper を全無効化してよいですか
デフォルトにはおすすめしません。企業の許可リストか、承認済みの一時端末を使います。
SFTP クライアントが成功なら xattr は必ず残りますか
必ずしもそうではありません。クライアントとサーバの拡張属性対応を確認し、rsync の文書と照合します。
SSHFS のマウント編集と矛盾しますか
シナリオが異なります。マウントは操作感、本稿は取得後の実行許可です。SOP は分けます。
まとめ:三枚の証拠とマトリクスで、ユーザー空間の論点をチケット化できます。
限界:自前運用では sshd・分離・端末政策・ログまで抱え、弱いと Gatekeeper が標的になります。SFTPMACのホスト型リモートMacは入口と検証手順を束ね、板挟みを減らします。
強い CTA:入口を制御できる場所へ集約する
入口を観測可能なリモートMacプールへ寄せます。トップ→署名→整合性→監査。並列/keepaliveで接続予算を揃えます。
ホスト型リモートMacで配信プレイブックを統一し、隠れた政策負債を減らします。
