エンタイトルメント解説
codesignが出力した内容か、.entitlementsファイルを貼り付けてください。読み取りはこのページ上だけで行い、どこにも送信しません。
例を試す:
機能
エンタイトルメントとは、Macアプリが署名されるときに付く権限のことです。App Sandboxで動くかどうか、どのフォルダやデバイスに触れられるか、hardened runtimeのどの保護をオフにするか、どのAppleのサービスを使うかが含まれます。これらは.entitlementsファイルに書かれ、署名の中に入ります。このツールは貼り付けたテキストを読み、各エンタイトルメントとその値を見つけて、何を許可するかをやさしい言葉で説明します。公証を止めるものを最初に、次にApp Reviewや慎重なユーザーが尋ねるもの、最後にふつうのものを並べます。
実行するコマンド
codesign -d --entitlements - YourApp.app codesign -d --entitlements - --xml YourApp.app
出荷するビルドに対して実行してください。XcodeのDebugビルドには通常com.apple.security.get-task-allowが付いていますが、Releaseビルドにはありません。ヘルパーや拡張機能を確認するときは、代わりにそのバンドルを指定します。
各結果の意味
| 印 | 意味 |
|---|---|
| 修正 | 公証で拒否されるか、macOSがこれを持つサードパーティ製アプリを実行しません。 |
| 見た目 | hardened runtimeの例外、サンドボックスの例外、サンドボックスがオフ、またはテスト用の設定です。許可されていますが、アプリに必要な場合だけ残してください。 |
| OK | App Sandboxがオンです。 |
| 注 | ふつうの権限です。アプリが本当に使っているか確認してください。 |
出典: Apple Developer、Entitlements、App Sandbox、Hardened Runtime、Resolving common notarization issues。すべて2026年11月6日に確認しました。
仕組み
このページ上で動く、いくつかの単純なテキストのルールです。.entitlementsファイルやcodesign --xmlが持つXMLと、最近のmacOSでcodesignが出力する、角括弧つきの[Key]と[Value]の行を読みます。キー名だけを貼り付けた場合は、それらを説明します。よくあるエンタイトルメントを50個知っています。それ以外は、推測せずに「リストにない」と表示します。hardened runtimeがオンかどうかは分かりません。それはエンタイトルメントではなく署名のフラグだからです。codesign -dvの出力にあるflags=0x10000(runtime)を探してください。
質問
Macのエンタイトルメントとは何ですか?
アプリのコード署名に書き込まれた権限です。アプリがApp Sandboxで動くかどうか、どのファイル、デバイス、Appleのサービスを使えるか、hardened runtimeのどの保護をオフにするかが分かります。
アプリのエンタイトルメントはどうやって見ますか?
ターミナルで、codesign -d --entitlements - に続けてアプリのパスを指定して実行します。--xmlを付けると、同じ一覧がプロパティリストで得られます。
get-task-allowが理由で公証に拒否されたのはなぜですか?
このエンタイトルメントはデバッガのアタッチを許可するもので、XcodeがDebugビルドに追加します。Releaseビルドをアーカイブするか、署名に使うエンタイトルメントから削除して、もう一度提出してください。
MacアプリにはApp Sandboxが必要ですか?
必須なのはMac App Storeだけです。Developer IDで自分で販売するアプリは、なくても動かせますが、公証にはhardened runtimeが必要です。
貼り付けた内容はどこかに送信されますか?
いいえ。テキストはこのページ上で読み取られ、何も送信されません。