オーガニゼーションにおける macOS 10.14 のユーザデータ保護準備対策

本資料では、macOS Mojave 10.14 以降のユーザデータ保護について説明します。これは Apple の拡張セキュリティフレームワークである Transparency Consent and Control (TCC: 「透明性と同意に関するフレームワーク」) に管理されます。オーガニゼーションは macOS 10.14 以降のモバイルデバイス管理 (MDM) を使用し、Apple の新 Privacy Preferences Policy Control payload でこれらのセキュリティ環境設定をリモート管理します。

注:

Jamf Pro 10.9 以降、 プライバシー環境設定ポリシーコントロールのプロファイルをコンピュータ構成プロファイルの別の payload として構成できるようになります。この payload によって、ターゲットコンピュータの Security & Privacy (セキュリティとプライバシー) 環境設定領域内でアプリケーションやサービスへのアクセス設定 (許可/拒否) を構成できます。

本資料は以下についての情報を提供します。
  • macOS 10.14 以降での新ユーザデータ保護新ユーザデータ保護とエンドユーザと Jamf Pro 管理者への影響
  • Jamf 管理フレームワークの事前承認自動インストールされたプライバシー環境設定ポリシーコントロールのプロファイルと、カスタム構成プロファイルを作成するためのリソースの要件とコンテンツ
  • Apple Events の事前承認Apple Scripts を使用する Jamf Pro 管理者向け情報。Jamf 管理フレームワークと、Apple Events サービスを使用する内蔵アプリケーションやサービスとの通信承認が必要になる場合があります。

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

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

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

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

ユーザへの影響

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

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

Jamf Pro 管理者への影響

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

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

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

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

Privacy Preferences Policy Control Payload

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

Privacy Preferences Policy Control payload は、以下の Privacy Service Dictionary Key を制御します。
  • AddressBook

  • カレンダー

  • 確認通知

  • 写真

  • カメラ

  • マイクロフォン

  • アクセシビリティ

  • PostEvent

  • SystemPolicyAllFiles

  • SystemPolicySysAdminFiles

  • AppleEvents

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

識別子

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

識別子タイプ

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

コード要件

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

スタティックコード

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

許可されました

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

コード署名要件とバンドル 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" 
注: 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

Jamf 管理フレームワークの事前承認

Jamf Pro 管理者は、プライバシー環境設定ポリシーコントロールの構成プロファイルを使って、Jamf 管理フレームワークを事前に承認できます。このプロファイルは Jamf Pro 10.7.1 以降に自動インストールされます。

Jamf Pro 管理者は、コンピュータの構成プロファイルの Privacy Preferences Policy Control (プライバシー環境設定ポリシーコントロー) ル領域にある情報を活用して、独自の構成プロファイルを作成できます。

一般的な要件

コンピュータに Privacy Preferences Policy Control Profile をインストールするには、以下の要件を満たす必要があります。
  • User Approved MDM

  • macOS 10.14 以降を搭載したターゲットコンピュータ

  • プッシュ通知が有効です

ユーザ非承認 MDM システムでインストールが拒否された場合、プロファイルはキューに入ったままとなり、コンピュータがユーザー承認 MDM ステータスを獲得すると自動的に再インストールを試みます。ユーザ承認 MDM と Jamf Pro の詳細については、記事 https://docs.jamf.com/technical-articles/index.html?contextId=499 を参照してください。

注:

ユーザ認証 MDM のない Jamf バイナリだけを管理に使用しているオーガニゼーションでは、profiles コマンドを使用して、または手動でプロファイルをクリックして、この構成プロファイルをインストールしようとしてもうまくいきません。必ず、ユーザ認証 MDM サーバの MDM 経由でプッシュされなければなりません。

Privacy Preferences Policy Control Contents

macOS 10.14 以降の Jamf 管理フレームワークを認証するには、以下の 3 つの App とプロセスを Systems Policy All Files サービスで認証しなければなりません。
  • jamf agent

  • jamf バイナリ

  • jamf.app

以下の .mobileconfig ファイルはそれらの App とプロセスを認証し、macOS 10.14 以降および Jamf Pro 10.7.1 以降のコンピュータへ自動インストールする構成プロファイルと同じものです。
注:

このタイプの Payload が複数インストールされている場合、その中で最も制限の厳しい設定が使用されます。

<key>Services</key>
                        <dict>
                                <key>SystemPolicyAllFiles</key>
                                <array>
                                        <dict>
                                                <key>Comment</key>
                                                <string>Allow jamfAgent to access all files</string>
                                                <key>Identifier</key>
                                                <string>/usr/local/jamf/bin/jamfAgent</string>
                                                <key>IdentifierType</key>
                                                <string>path</string>
                                                <key>Allowed</key>
                                                <true/>
                                                <key>CodeRequirement</key>
                                                <string>identifier "com.jamfsoftware.jamfAgent" 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"</string>
                                        </dict>
                                        <dict>
                                                <key>Comment</key>
                                                <string>Allow jamf binary to access all files</string>
                                                <key>Identifier</key>
                                                <string>/usr/local/jamf/bin/jamf</string>
                                                <key>IdentifierType</key>
                                                <string>path</string>
                                                <key>Allowed</key>
                                                <true/>
                                                <key>CodeRequirement</key>
                                                <string>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"</string>
                                        </dict>
                                        <dict>
                                                <key>Comment</key>
                                                <string>Allow Jamf.app access to all files</string>
                                                <key>Identifier</key>
                                                <string>com.jamf.management.Jamf</string>
                                                <key>IdentifierType</key>
                                                <string>bundleID</string>
                                                <key>Allowed</key>
                                                <true/>
                                                <key>CodeRequirement</key>
                                                <string>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"</string>
                                        </dict>
                                </array>
                        </dict>

Privacy Preferences Policy Control Profile の自動インストール

Jamf 管理フレームワークを事前承認する構成プロファイルは、Jamf Pro 10.7.1 以降に自動インストールします。Jamf Pro 10.7.1 以降にアップグレードする時、 Automatically install a Privacy Preferences Policy Control profile (プライバシー環境設定ポリシーコントロールのプロファイルを自動的にインストールする) (macOS 10.14 以降) オプションはセキュリティ設定ではデフォルトで有効になっています。 この機能にアクセスするには、Settings (設定) > Computer Management (コンピュータ管理) > Security (セキュリティ) の順に移動します。.

セキュリティ設定でこのオプションが有効な場合、Jamf Pro 10.7.1 以降ではログイン時に管理対象コンピュータの macOS バージョンを自動的に収集します。これによって Jamf Pro はコンピュータが macOS 10.14 以降へアップグレードしたことを即時に検出し、Privacy Preferences Policy Control profile のインストレーションを開始します。ログイン時の OS バージョンの自動削除は、セキュリティ設定のオプションを使ってプロファイルを自動的にインストールした時だけ適用されます。カスタム構成プロファイルを手動で展開する場合は適用されません。

カスタム構成プロファイルの作成

Jamf Pro 10.9 以降、 プライバシー環境設定ポリシーコントロールのプロファイルをコンピュータ構成プロファイルの別の payload として構成できるようになります。この payload によって、ターゲットコンピュータの Security & Privacy (セキュリティとプライバシー) 環境設定領域内でアプリケーションやサービスへのアクセス設定 (許可/拒否) を構成できます。これらの設定は Computers (コンピュータ) > Configuration Profiles (構成プロファイル) へナビゲートし、プライバシー環境設定ポリシーコントロール payload で管理してください。
注:

macOS 10.13 以前のコンピュータに構成プロファイルが手動で展開されている場合、コンピュータを macOS 10.14 へアップグレードしても、構成プロファイルは引き継がれません。macOS 10.14 以降へのアップグレード後は、構成プロファイルを再展開する必要があります。

Apple Events の事前承認

AppleScriptワークフローを使用している Jamf Pro 管理者は、Jamf 管理フレームワークが、プライバシー環境設定ポリシーコントロールのペイロード内の Apple イベントサービスを使用して、内蔵アプリケーションやサービスと通信することの承認が必要になる場合があります。制限された Apple Events サービスを利用するため、 Jamf Pro 管理者はアプリケーションの送受信に際し、識別子タイプとコード要件を入力する必要があります。

ユーザインタラクションに必要な制限 Apple Events を受信する一般的な内蔵サービスやアプリケーションには、以下が含まれます。
システムイベント:
  • 受信識別子: com.apple.systemevents
  • 受信識別子タイプ: バンドル ID
  • 受信コード要件: 識別子「com.apple.systemevents」と Anchor Apple
SystemUIServer:
  • 受信識別子: com.apple.systemuiserver
  • 受信識別子タイプ: バンドル ID
  • 受信コード要件: 識別子「com.apple.systemuiserver」と Anchor Apple
Finder:
  • 受信識別子: com.apple.finder
  • 受信識別子タイプ: バンドル ID
  • 受信コード要件: 識別子「com.apple.finder」と Anchor Apple

Jamf' GitHub リポジトリ https://github.com/jamf/JamfPrivacyPreferencePolicyControlProfiles から、Jamf 管理フレームワークと 3つの Apple サービス間のインタラクションを承認する組み込み構成プロファイルを、ダウンロードできます。Jamf Pro 10.7.1 以降へ構成プロファイルをアップロードしてください。

注:

この構成は未署名のまま Jamf Pro へアップロードでき、Payload UUID 値を自動生成します。

さらに、Apple コミュニティ向けに Jamf が作成したオープンソース App は、プライバシー環境設定ポリシーコントロールのフレームワーク内で App が機能するために必要な要件の特定に役立ちます。この App は、Jamf GitHub リポジトリでもお使いいただけます。https://github.com/jamf/PPPC-Utility.

注:

API を使用し、未署名のプライバシー環境設定ポリシーコントロール payload を Jamf Pro へアップロードできます。