macOS 10.14 以降での新ユーザデータ保護

技術に関する記事

Solution
Application
Content Type
テクニカル資料
Utilities & Services
ft:locale
ja-JP

macOS 10.14 以降では、一部のユーザアプリケーションデータへのアクセス時にユーザ承認が必要になります。

ユーザは、システム環境設定の セキュリティとプライバシー (Security & Privacy) 領域 (macOS 12以前)、またはシステム設定のプライバシーとセキュリティ (Privacy & Security) 領域 (macOS 13以降) で新しい「フルディスクアクセス (Full Disk Access)」カテゴリへ App を追加することで、App を事前承認できます。App 追加によって、プロンプトがなくてもすべての機密個人データへのアクセスをユーザが事前承認することになります。システム環境設定でこのプロセスを完了する際は、管理者認証が必要です。

macOS 10.14 以降の新しい Privacy Preferences Policy Control ペイロードがあれば、MDM 経由で承認のリモート管理ができます。

ユーザへの影響

macOS 10.14 以降で、保護されたファイルや App データにアクセスしようとする Apps があると、「許可」または「拒否」を求める画面がエンドユーザに表示される場合があります。App 開発者がデータアクセス要求の理由を説明する文字列を Info.plist に追加した場合は、その文字列もプロンプトと一緒に表示されます。

旧バージョンの Xcode でコンパイルされた App は、プロンプトによる使用状況の説明を表示しない場合があります。

Jamf Pro 管理者への影響

Jamf Pro 管理者は、macOS 10.14 以降の次の動作に対する準備が必要です。

  • Terminal 経由で実行される一部のポリシーは、「Terminal」を許可/拒否するためのユーザプロンプトを表示することがあります。

  • バックグラウンドで、Jamf binaryによって実行される一部のポリシーは、エラーを起こすことがあります。このエラーは、成功として間違って報告される場合があります。

Privacy Preferences Policy Control ペイロード

オーガニゼーションは macOS 10.14 以降のモバイルデバイス管理を使用し、Apple の新 Privacy Preferences Policy Control ペイロードでこれらのセキュリティ環境設定をリモート管理できます。

Privacy Preferences Policy Control ペイロードは、以下の Privacy Service Dictionary Key を制御します。
  • AddressBook

  • Calendar

  • Reminders

  • Photos

  • Camera

  • Microphone

  • Accessibility

  • PostEvent

  • SystemPolicyAllFiles

  • SystemPolicySysAdminFiles

  • AppleEvents

App またはバイナリが上記の Privacy Service Dictionary Key のいずれかにアクセスすることを許可/拒否するため、以下を含むペイロードを作成します。
Dictionary Key説明

Identifier

App またはサービスを識別する一意の数値。App バンドル ID またはバイナリのインストレーションパスを使用します。

Identifier Type

App バンドルであるか、バイナリであるかに応じて、必ず App バンドル ID またはファイルパスのいずれかを使用します。

Code Requirement

App またはサービスへのサインインに使用されるデベロッパ証明に基づく一意の数値。この値はコマンド codesign – display -r - で入手します

Static Code

オプション:App が /usr/bin/log を使用して表示されたサービスと一緒に Allow=True に設定されているのに、まだプロンプトが表示される場合、 この値を true に設定する必要があります。true に設定すると、ディスク上の App やサービスのコード要件を静的に検証します。False に設定されている場合、実行中の App インメモリを確認します。これはプロセスがダイナミックコードの署名を無効にした場合にのみ使用されます。False がデフォルト設定です。

Allowed

Boolean:true に設定されている場合、アクセスが許可されます。false に設定されている場合、アクセスは拒否されます。false の値は、ユーザが システム環境設定 (macOS 12 以前) または システム設定 (macOS 13 以降) で以前に設定した値を上書きします。

コード署名要件とバンドル ID
カスタム構成プロファイルを作成する Jamf Pro 管理者は、保護されたユーザデータへのアクセスを許可するために、App 用のコード署名要件とバンドル ID を含める必要があります。以下の codesign コマンドを実行し、コード署名要件とバンドル ID 識別子 (必要な場合) を入手します。
codesign -dr - /Applications/Application.ap
codesign -dr - /path/to/binary
下表の例を参照してください。
インプットアウトプット
codesign -dr - /usr/local/bin/jamf

Executable=/usr/local/jamf/bin/jamf designated => identifier "com.jamfsoftware.jamf" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] / exists / and certificate leaf[field.1.2.840.113635.100.6.1.13] / exists / and certificate leaf[subject.OU] = "483DWKW443"

codesign -dr - /Library/Application\ Support/JAMF/Jamf.app

Executable=/Library/Application Support/JAMF/Jamf.app/Contents/MacOS/Jamf designated => identifier "com.jamf.management.Jamf" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] / exists / and certificate leaf[field.1.2.840.113635.100.6.1.13] / exists / and certificate leaf[subject.OU] = "483DWKW443"

以下をコード署名として使用します。

identifier "com.jamfsoftware.jamf" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] / exists / and certificate leaf[field.1.2.840.113635.100.6.1.13] / exists / and certificate leaf[subject.OU] = "483DWKW443"
Note:App デベロッパがコード署名証明書を変更した場合、既存プロファイルは無効となり、新しいコード署名の新プロファイルが必要になります。
データアクセスを試行するプロセスと App の識別

データアクセスを許可しようとしている App またはバイナリを識別するには、以下のコマンドを実行します。

/usr/bin/log stream --debug --predicate 'subsystem == "com.apple.TCC" AND eventMessage BEGINSWITH "AttributionChain"'
前回要求されたデータアクセスを表示するには、以下のコマンドを実行します。
/usr/bin/log show --predicate 'subsystem == "com.apple.TCC"' | grep Prompting