iOS 用 Microsoft Intune App Wrapping Tool を使用すると、アプリ自体のコードを変更せずに、社内の iOS アプリのIntuneアプリ保護ポリシーを有効にすることができます。
このツールは、アプリのラッパーを作成する macOS コマンドライン アプリケーションです。 アプリが処理されたら、 アプリ保護ポリシー を展開することで、アプリの機能を変更できます。
ツールをダウンロードするには、GitHub の iOS 版Microsoft Intune App Wrapping Toolを参照してください。
注:
アプリでIntune App Wrapping Toolを使用する際に問題が発生した場合は、GitHub でサポートの要求を送信してください。
App Wrapping Tool の一般的な前提条件
App Wrapping Tool を実行する前に、いくつかの一般的な前提条件を満たす必要があります。
GitHub から iOS 用のMicrosoft Intune App Wrapping Toolをダウンロードします。
Xcode ツールセットのバージョン 16.0 以降がインストールされている macOS コンピューター。
会社または独立系ソフトウェア ベンダー (ISV) は、入力 iOS アプリを開発して署名する必要があります。
ファイルの拡張子は .ipa または .app である必要があります。
iOS 16.0 以降用にコンパイルする必要があります。
暗号化することはできません。
拡張ファイル属性はありません。
Intune App Wrapping Tool を使用してアプリを処理する前に、エンタイトルメントを設定します。 資格により、 通常付与されるアクセス許可を超えるアクセス許可と機能がアプリに付与されます。 手順については、「 アプリのエンタイトルメントの設定 」を参照してください。
- 有効な署名証明書がシステム キーチェーンに存在することを確認します。 アプリのコード署名の問題がある場合は、次の手順に従って解決します。
- 関連するすべての証明書の信頼設定をリセットする
- システム キーチェーンとサインイン キーチェーンに中間証明書をインストールする
- 関連するすべての証明書をアンインストールして再インストールする
アプリを Microsoft Entra ID に登録する
- アプリを Microsoft Entra ID に登録します。 詳細については、「Microsoft ID プラットフォームへのアプリケーションの登録」を参照してください。
- カスタム リダイレクト URL をアプリの設定に追加します。 詳細については、「 MSAL の構成」を参照してください。
- アプリに Intune MAM サービスへのアクセス権を付与します。 詳細については、「アプリに Intune モバイル アプリ管理サービスへのアクセス権を付与する」を参照してください。
- 上記の変更が完了したら、最新バージョンの Intune アプリ ラッピング ツールを実行します。 Microsoft 認証ライブラリ (MSAL) 用にアプリを構成する: Intune App Wrapping Toolを使用して、Microsoft Entra アプリケーション クライアント ID をコマンド ライン パラメーターに追加します。 詳細については、「 コマンド ライン パラメーター」を参照してください。
注:
パラメーター -ac と -ar は必須パラメーターです。 各アプリには、これらのパラメーターの一意のセットが必要です。
-aa シングル テナント アプリケーションにのみ必要です。
- アプリを展開します。
App Wrapping Tool の Apple 開発者向け前提条件
ラップされたアプリを organization のユーザーにのみ配布するには、Apple Developer Enterprise Program のアカウントと、Apple Developer アカウントにリンクされているアプリ署名用のいくつかのエンティティが必要です。
iOS アプリを organization のユーザーに内部的に配布する方法の詳細については、Apple Developer Enterprise Program アプリの配布に関する公式ガイドをお読みください。
Intune でラップされたアプリを配布するには、以下が必要です。
Apple Developer Enterprise Program のデベロッパー アカウント。
有効なチーム識別子を使用した社内およびアドホック配布署名証明書。
- Intune App Wrapping Toolへのパラメーターとして、署名証明書の SHA1 ハッシュが必要です。
社内配布プロビジョニング プロファイル。
Apple デベロッパー エンタープライズ アカウントを作成する
ページの右上で、[ 登録] を選択します。
登録に必要なもののチェックリストを読んでください。 ページの下部にある [ 登録の開始 ] を選択します。
organization の Apple アカウントでサインインします。 お持ちでない場合は、「 Apple アカウントを作成」を選択します。
エンティティの種類を選択し、[続行] を選択します。
フォームに自分の organization の情報を記入します。 [続行] を選択します。 この時点で、Apple から連絡があり、organization を登録する権限があることを確認します。
確認後、[ ライセンスに同意する] を選択します。
ライセンスに同意したら、 プログラムを購入してアクティブ化して終了します。
チーム エージェント (organization の Apple Developer Enterprise Program に参加する人) の場合は、チーム メンバーを招待し、チームを構築するためのロールを割り当てます。 チームを管理する方法については、 デベロッパー アカウント チームの管理に関する Apple のドキュメントを参照してください。
Apple 署名証明書を作成する
Apple デベロッパー ポータルに移動します。
ページの右上にある [ アカウント] を選択します。
組織の Apple アカウントでサインインします。
[ 証明書]、[ID]、[プロファイル] & を選択します。
右上隅にある
を選択します。 このアクションにより、iOS 証明書が追加されます。[運用] で社内証明書とアドホック証明書を作成することを選択します。
注:
アプリを配布する予定がなく、内部でテストするだけの場合は、運用用の証明書の代わりに iOS アプリ開発証明書を使用できます。 開発証明書を使用する場合は、モバイル プロビジョニング プロファイルにアプリのインストール予定のデバイスが含まれていることを確認します。
ページの下部にある [ 次へ ] を選択します。
macOS コンピューターでキーチェーン アクセス アプリケーションを使用して 証明書署名要求 (CSR) を作成する手順をお読みください。
前の手順に従って、証明書署名要求を作成します。 macOS コンピューターで、 キーチェーン アクセス アプリケーションを起動します。
画面上部の macOS メニューで、[ キーチェーン アクセス] > [証明書アシスタント] に移動し > 証明機関に証明書を要求します。
Apple デベロッパー サイトの指示に従って、証明書署名要求 (CSR) ファイルを作成します。 CSR ファイルを macOS コンピューターに保存します。
Apple デベロッパー サイトに戻ります。 [続行] を選択します。 次に、CSR ファイルをアップロードします。
Apple が署名証明書を生成します。 ダウンロードして macOS コンピューターの覚えやすい場所に保存します。
ダウンロードした証明書ファイルをダブルクリックして、証明書をキーチェーンに追加します。
もう一度 「キーチェーンアクセス 」を開きます。 右上の検索バーで証明書の名前を検索し、証明書を見つけます。 項目を右クリックしてメニューを表示し、[ 情報の取得] を選択します。 サンプル画面では、運用証明書の代わりに開発証明書を使用しています。
情報ウィンドウが表示されます。 一番下までスクロールし、 指紋 ラベルの下を確認します。 SHA1 文字列 (ぼやけて表示) をコピーして、App Wrapping Tool の "-c" の引数として使用します。
In-House 配布プロビジョニング プロファイルを作成する
Apple デベロッパー アカウント ポータルに戻る後、組織の Apple アカウントでサインインします。
[ 証明書]、[ID]、[プロファイル] & を選択します。
右上隅にある
を選択します。 このアクションにより、iOS プロビジョニング プロファイルが追加されます。[配布] で社内プロビジョニング プロファイルを作成することを選択します。
[続行] を選択します。 以前に生成した署名証明書をプロビジョニング プロファイルにリンクしてください。
手順に従って、プロファイル (拡張機能
.mobileprovision付き) を macOS コンピューターにダウンロードします。覚えやすい場所にファイルを保存します。 このファイルは、App Wrapping Tool を使用する際の -p パラメーターに使用されます。
App Wrapping Tool をダウンロードする
App Wrapping Tool のファイルを GitHub から macOS コンピューターにダウンロードします。
[Microsoft Intune Application Restrictions Packager for iOS.dmg] をダブルクリックします。 エンドユーザー使用許諾契約書 (EULA) のウィンドウが表示されます。 ドキュメントをよく読んでください。
[ 同意する ] を選択して EULA に同意すると、パッケージがコンピューターにマウントされます。
App Wrapping Tool を実行する
重要
Intune は定期的にIntune App Wrapping Toolの更新プログラムをリリースしています。 iOS のIntune App Wrapping Toolで更新プログラムを定期的にチェックし、ソフトウェア開発のリリース サイクルに組み込んで、アプリが最新のアプリ保護ポリシー設定をサポートするようにしてください。
ターミナルを使用する
macOS ターミナルを開き、次のコマンドを実行します。
/Volumes/IntuneMAMAppPackager/IntuneMAMPackager/Contents/MacOS/IntuneMAMPackager -i /<path of input app>/<app filename> -o /<path to output folder>/<app filename> -p /<path to provisioning profile> -c <SHA1 hash of the certificate> -ac <client ID of input app> -ar <redirect URI of input app> [-aa <authority URI of input app>] [-b [<output app build string>]] [-v] [-e] [-x /<array of extension provisioning profile paths>] [-dt] [-dl] [-ds]
注:
次の表に示すように、一部のパラメーターは省略可能です。
例:次のコマンド例では、MyApp.ipa という名前のアプリで App Wrapping Tool を実行します。 プロビジョニング プロファイルと署名証明書の SHA-1 ハッシュが指定され、ラップされたアプリの署名に使用されます。 出力アプリ (MyApp_Wrapped.ipa) が作成され、デスクトップ フォルダーに保存されます。
./IntuneMAMPackager/Contents/MacOS/IntuneMAMPackager -i ~/Desktop/MyApp.ipa -o ~/Desktop/MyApp_Wrapped.ipa -p ~/Desktop/My_Provisioning_Profile_.mobileprovision -c "12 A3 BC 45 D6 7E F8 90 1A 2B 3C DE F4 AB C5 D6 E7 89 0F AB" -ac "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ar "msauth.myAppsBundleID://auth" -v
コマンド ライン パラメーター
App Wrapping Tool で次のコマンド ライン パラメータを使用できます。
例:次のコマンド例では、1 つのテナント内で使用するアプリケーションをラップするときに必要なコマンドを含む App Wrapping Tool を実行します。
./IntuneMAMPackager/Contents/MacOS/IntuneMAMPackager -i ~/Desktop/MyApp.ipa -o ~/Desktop/MyApp_Wrapped.ipa -p ~/Desktop/My_Provisioning_Profile_.mobileprovision -c "12 A3 BC 45 D6 7E F8 90 1A 2B 3C DE F4 AB C5 D6 E7 89 0F AB" -aa https://login.microsoftonline.com/<tenantID> -ac "Client ID of the input app if the app uses the Microsoft Authentication Library" -ar "Redirect/Reply URI of the input app if the app uses the Microsoft Authentication Library" -v
| プロパティ | 使用方法 |
|---|---|
-i |
<Path of the input native iOS application file>. ファイル名は .app または .ipa で終わる必要があります。 |
-o |
<Path of the wrapped output application> |
-p |
<Path of your provisioning profile for iOS apps> |
-c |
<SHA1 hash of the signing certificate> |
-h |
App Wrapping Tool で使用できるコマンド ライン プロパティに関する詳細な使用方法情報を表示します。 |
-ac |
<Client ID of the input app if the app uses the Microsoft Authentication Library> これは、アプリ登録時のアプリのリストにある [クライアント ID] フィールドの GUID です。 |
-ar |
<Redirect/Reply URI of the input app if the app uses the Microsoft Authentication Library> これは、アプリの登録で構成されたリダイレクト URI です。 通常、これは、Microsoft Authenticator アプリがブローカー認証の後に戻るアプリケーションの URL プロトコルです。 |
-aa |
(シングル テナント アプリに必要) <Authority URI of the input app> つまり、 https://login.microsoftonline.com/<tenantID>/ |
-v |
(オプション)詳細メッセージをコンソールに出力します。 エラーをデバッグするには、このフラグを使用します。 |
-e |
(オプション)このフラグを使用すると、App Wrapping Tool がアプリを処理する際に不足している資格を削除できます。 詳細については、「 アプリのエンタイトルメントの設定」を参照してください。 |
-xe |
(オプション)アプリの iOS 拡張機能と、それらを使用するために必要な資格に関する情報を出力します。 詳細については、「 アプリのエンタイトルメントの設定」を参照してください。 |
-x |
(省略可能) <An array of paths to extension provisioning profiles>。 アプリに拡張機能プロビジョニング プロファイルが必要な場合は、このプロパティを使用します。 |
-b |
(オプション)ラップされた出力アプリで入力アプリと同じバンドル バージョンにする場合は、引数を指定せずに -b を使用します (推奨されません)。 ラップされたアプリにカスタム CFBundleVersion を設定する場合は、 -b <custom bundle version> を使用します。 カスタムの CFBundleVersion を指定する場合は、ネイティブ アプリの CFBundleVersion を、1.0.0 から 1.0.1 などの最も重要性の低いコンポーネント> 増やすことをお勧めします。 |
-f |
(省略可能) <Path to a plist file specifying arguments.> plist テンプレートを使用して残りの IntuneMAMPackager プロパティ (-i、-o、-p など) を指定する場合は、 plist ファイルの前にこのフラグを使用します。 plist を使用して引数を入力するを参照してください。 |
-dt |
(オプション)Microsoft Intune クライアント データの収集を無効にします。 |
-dl |
(オプション)MSAL と統合され、独自の MSAL ログ コールバックを実装しているアプリケーションの Intune ログから MSAL ログを無効にします。 |
-ds |
(オプション)SFSafariViewController、SFAuthSession、および ASWebAuthenticationSession に対する Intune の保護を無効にします。 |
-mp |
(省略可能) <Path to a plist file containing MAM settings to merge into the wrapped app>。 このプロパティを使用して、ラップ プロセス中にアプリの IntuneMAMSettings ディクショナリにマージされるカスタム Intune MAM SDK 設定を指定します。 注: MultiIdentity、MAMPolicyRequired、AutoEnrollOnLaunch、およびContainingAppBundleIdの設定は、App Wrapping Toolによって自動的に構成されるため、-mp ではサポートされません。 認証設定 (ADALAuthority、 ADALClientId、 ADALRedirectUri) も -mp ではサポートされておらず、-aa、-ac、-ar の各コマンドライン パラメーターを使用して構成する必要があります。 |
plist を使用して引数を入力する
App Wrapping Tool を実行する簡単な方法は、すべてのコマンド引数を plist ファイルに配置することです。 Plist は、フォーム インターフェイスを使用してコマンド ライン引数を入力するために使用できる XML に似たファイル形式です。
IntuneMAMPackager/Contents/MacOS フォルダーで、テキスト エディターまたは Xcode を使用して Parameters.plist (空の plist テンプレート) を開きます。 次のキーの引数を入力します。
| Plist キー | 型 | 既定値 | 備考 |
|---|---|---|---|
| 入力アプリケーション パッケージのパス | 文字列 | 空 | -i と同じ |
| 出力アプリケーション パッケージのパス | 文字列 | 空 | -o と同じ |
| プロビジョニング プロファイル パス | 文字列 | 空 | -p と同じ |
| SHA-1 証明書ハッシュ | 文字列 | 空 | -c と同じ |
| MSAL 機関 | 文字列 | 空 | -aa と同じ |
| MSAL クライアント ID | 文字列 | 空 | -ac と同じ |
| MSAL 応答 URI | 文字列 | 空 | -ar と同じ |
| 詳細が有効 | ブール型 | false | -v と同じ |
| 不足している資格を削除する | ブール型 | false | -e と同じ |
| 既定のビルドの更新を防止する | ブール型 | false | 引数を指定せずに -b を使用するのと同じ |
| ビルド文字列のオーバーライド | 文字列 | 空 | ラップされた出力アプリのカスタム CFBundleVersion |
| 拡張機能のプロビジョニング プロファイル パス | 文字列 (String) の配列 | 空 | アプリの拡張機能プロビジョニング プロファイルの配列。 |
| テレメトリを無効にする | ブール型 | false | -dt と同じ |
| MSAL ログ オーバーライドを無効にする | ブール型 | false | -dl と同じ |
| MAM 設定プリリストのパス | 文字列 | 空 | -mp と同じ |
plist を唯一の引数として IntuneMAMPackager を実行します。
./IntuneMAMPackager –f Parameters.plist
ラッピング後
ラッピング プロセスが完了すると、"アプリケーションが正常にラップされました" というメッセージが表示されます。 エラーが発生した場合は、「 エラー メッセージ 」を参照してヘルプを参照してください。
ラップされたアプリは、前に指定した出力フォルダーに保存されます。 アプリを Intune 管理センターにアップロードし、モバイル アプリケーション管理ポリシーに関連付けることができます。
重要
ラップされたアプリをアップロードするときに、古い (ラップされた、またはネイティブの) バージョンが既に Intune に展開されている場合は、アプリの古いバージョンの更新を試みることができます。 エラーが発生した場合は、アプリを新しいアプリとしてアップロードし、古いバージョンを削除します。
これで、アプリをユーザー グループに展開し、アプリ保護ポリシーをアプリに対象とすることができます。 指定したアプリ保護ポリシーを使用してデバイスでアプリが実行されます。
どのくらいの頻度で iOS アプリケーションを Intune App Wrapping Tool で再ラップする必要がありますか?
アプリケーションを再ラップする必要がある主なシナリオは次のとおりです。
- アプリケーション自体が新しいバージョンをリリースしました。 前のバージョンのアプリがラップされ、Intune 管理センターにアップロードされました。
- iOS 用 Intune App Wrapping Tool は、主要なバグ修正、または新しい特定のIntune アプリケーション保護ポリシー機能を有効にする新しいバージョンをリリースしました。 新しいバージョンのリリースは、iOS 用 Microsoft Intune App Wrapping Tool の GitHub リポジトリを通じて 6 - 8 週間ごとに行われます。
iOS/iPadOS の場合、元々アプリの署名に使用されたものとは異なる証明書またはプロビジョニング プロファイルでアプリをラップできます。 ただし、新しいプロビジョニング プロファイルにアプリで指定された権利が含まれていない場合、ラップ プロセスは失敗します。 "-e" コマンド ライン オプションを使用して、不足している資格をアプリから削除し、このシナリオでラッピングが失敗しないように強制すると、アプリの機能が壊れる可能性があります。
折り返しのベスト プラクティスには次のようなものがあります。
- 別のプロビジョニング プロファイルに、以前のプロビジョニング プロファイルとして必要なすべての権利が含まれていることを確認します。
エラー メッセージとログ ファイル
次の情報を使用して、アプリ ラッピング ツールの問題のトラブルシューティングを行います。
エラー メッセージ
アプリ ラッピング ツールが正常に完了しない場合は、コンソールに次のいずれかのエラー メッセージが表示されます。
| エラー メッセージ | 詳細情報 |
|---|---|
| 有効な iOS プロビジョニング プロファイルを指定する必要があります。 | プロビジョニング プロファイルが有効でない可能性があります。 デバイスに対する適切なアクセス許可を持っていること、およびプロファイルが開発または配布を正しくターゲットにしていることを確認してください。 プロビジョニング プロファイルの有効期限が切れている可能性もあります。 |
| 有効な入力アプリケーション名を指定してください。 | 指定した入力アプリケーション名が正しいかどうかを確認します。 |
| 出力アプリケーションへの有効なパスを指定します。 | 指定した出力アプリケーションへのパスが存在し、正しいことを確認します。 |
| 有効な入力プロビジョニング プロファイルを指定します。 | 有効なプロビジョニング プロファイル名と拡張機能が指定されていることを確認します。 プロビジョニング プロファイルに資格がないか、 –p コマンド ライン オプションが含まれていない可能性があります。 |
| 指定した入力アプリケーションが見つかりませんでした。 有効な入力アプリケーション名とパスを指定してください。 | 入力アプリのパスが有効で、存在することを確認してください。 入力アプリがその場所に存在することを確認します。 |
| 指定した入力プロビジョニング プロファイル ファイルが見つかりませんでした。 有効な入力プロビジョニング プロファイル ファイルを指定します。 | 入力プロビジョニング ファイルへのパスが有効であり、指定したファイルが存在することを確認します。 |
| 指定した出力アプリケーション フォルダーが見つかりませんでした。 出力アプリケーションへの有効なパスを指定します。 | 出力パスが有効で、存在することを確認します。 |
| 出力アプリには .ipa 拡張子がありません。 | .app 拡張子と .ipa 拡張子を持つアプリのみがApp Wrapping Toolに受け入れられます。 出力ファイルの拡張子が有効なことを確認してください。 |
| 無効な署名証明書が指定されました。 有効な Apple 署名証明書を指定します。 | Apple デベロッパー ポータルから正しい署名証明書をダウンロードしたことを確認します。 証明書の有効期限が切れているか、公開キーまたは秘密キーが不足している可能性があります。 Apple 証明書とプロビジョニング プロファイルを使用して、Xcode 内でアプリに正しく署名できる場合は、App Wrapping Tool に対して有効です。 さらに、署名証明書がホスト macOS マシンのキーチェーン内で一意の名前を持つことを確認します。 同じ証明書の複数のバージョンがキーチェーンに存在する場合、本ツールはこのエラーを返します。 |
| 指定した入力アプリケーションが無効です。 有効なアプリケーションを指定します。 | 有効な iOS アプリケーションが .app ファイルまたは .ipa ファイルとしてコンパイルされていることを確認してください。 |
| 指定した入力アプリケーションは暗号化されています。 有効な暗号化されていないアプリケーションを指定します。 | App Wrapping Tool では、暗号化されたアプリはサポートされていません。 暗号化されていないアプリを指定します。 |
| 指定した入力アプリケーションが Position Independent Executable (PIE) 形式ではありません。 有効なアプリケーションを PIE 形式で指定してください。 | 位置独立実行可能ファイル (PIE) アプリの実行時にランダム メモリ アドレスに読み込むことができます。 この機能はセキュリティ上の利点をもたらす可能性があります。 セキュリティ上の利点の詳細については、Apple 開発者向けドキュメントを参照してください。 |
| 指定した入力アプリはラップされています。 有効なラップされていないアプリケーションを指定します。 | ツールによってアプリが既に処理されている場合は、アプリを処理できません。 アプリを再度処理する場合は、元のバージョンのアプリを使用してツールを実行します。 |
| 指定した入力アプリケーションは署名されていません。 有効な署名済みアプリケーションを指定します。 | アプリ ラッピング ツールを使用するには、アプリに署名する必要があります。 ラップされたアプリに署名する方法については、開発者向けドキュメントを参照してください。 |
| 指定する入力アプリケーションは、.ipa または .app 形式である必要があります。 | アプリ ラッピング ツールは、 .app 拡張機能と .ipa 拡張機能のみを受け入れます。 入力ファイルの拡張子が有効なことと、 .app ファイルまたは .ipa ファイルとしてコンパイルされていることを確認します。 |
| 指定した入力アプリはラップされており、最新のポリシー テンプレート バージョンが使用されています。 | App Wrapping Tool は、最新のポリシー テンプレート バージョンで既存のラップされたアプリを再ラップしません。 |
| 警告: SHA1 証明書ハッシュを指定していません。 デプロイする前に、ラップされたアプリケーションが署名されていることを確認してください。 |
–c コマンド ライン フラグに続いて有効な SHA1 ハッシュが指定されていることを確認します。 |
デバイスからラップされたアプリケーションのログを収集しています
次の手順を使用して、トラブルシューティング中にラップされたアプリケーションのログを取得します。
- デバイスの iOS 設定アプリに移動し、LOB アプリを選択します。
- [Microsoft Intune] を選択します。
- [ ディスプレイ診断コンソール ] 設定を [オン] に切り替えます。
- LOB アプリケーションを起動します。
- [開始する] リンクを選択します。
- これで、ログを Microsoft に直接送信したり、デバイス上の別のアプリケーションを介してログを共有したりできます。
注:
ログ機能は、Intune App Wrapping Tool バージョン 7.1.13 以降でラップされたアプリに対して有効になります。
システムからのクラッシュ ログの収集
アプリが iOS クライアント デバイス コンソールに有用な情報をログしている場合があります。 この情報は、アプリケーションに問題が発生し、問題が App Wrapping Tool に関連しているのか、アプリ自体に関連しているのかを判断する必要がある場合に役立ちます。 この情報を取得するには、次の手順を使用します。
アプリを実行して問題を再現します。
展開された iOS アプリのデバッグに関する Apple の手順に従って、コンソール出力を収集します。
ラップされたアプリでは、アプリがクラッシュした後に、メールを介してデバイスから直接ログを送信するオプションもユーザーに提供されます。 ユーザーはログを送信して調査し、必要に応じて Microsoft に転送できます。
証明書、プロビジョニング プロファイル、認証の要件
iOS 用の App Wrapping Tool には、完全な機能を保証するために満たさなければならない要件がいくつかあります。
| 要件 | 詳細 |
|---|---|
| iOS プロビジョニング プロファイル | プロビジョニング プロファイルを含める前に、プロビジョニング プロファイルが有効であることを確認してください。 App Wrapping Tool は、iOS アプリを処理するときにプロビジョニング プロファイルの有効期限が切れているかどうかはチェックしません。 期限切れのプロビジョニング プロファイルを指定すると、アプリ ラッピング ツールに含まれます。 iOS デバイスへのアプリのインストールに失敗するまで、問題は発生しません。 |
| iOS 署名証明書 | 署名証明書を指定する前に、有効であることを確認してください。 このツールは、iOS アプリの処理時に証明書の有効期限が切れているかどうかのチェックを行いません。 期限切れの証明書のハッシュが指定されている場合、ツールはアプリを処理して署名しますが、デバイスへのインストールは失敗します。 ラップされたアプリに署名するために指定された証明書のプロビジョニング プロファイルに一致するものがあることを確認します。 このツールは、プロビジョニング プロファイルがラップされたアプリケーションに署名するために指定された証明書と一致するかどうかを検証しません。 |
| 認証 | 暗号化が機能するには、デバイスに PIN が必要です。 ラップされたアプリを展開したデバイスで、デバイスのステータス バーをタッチするには、ユーザーが職場または学校のアカウントで再度サインインする必要があります。 ラップされたアプリの既定のポリシーは、 再起動時の認証です。 iOS は、アプリを終了して再起動することで、外部通知 (電話など) を処理します。 |
アプリのエンタイトルメントの設定
アプリをラップする前に、 資格 を付与して、アプリで通常実行できる以上の追加のアクセス許可と機能をアプリに付与できます。 エンタイトルメント ファイルは、コード署名中に使用され、アプリ内の特別なアクセス許可 (共有キーチェーンへのアクセスなど) を指定します。 機能と呼ばれる特定のアプリ サービスは、アプリ開発中に Xcode 内で有効になります。 有効にすると、機能はエンタイトルメント ファイルに反映されます。 エンタイトルメントと機能の詳細については、「iOS デベロッパー ライブラリでの 機能の追加 」を参照してください。 サポートされている機能の完全な一覧については、「 サポートされている機能」を参照してください。
iOS 用 App Wrapping Tool でサポートされている機能
| 機能 | 説明 | 推奨されるガイダンス |
|---|---|---|
| アプリ グループ | アプリ グループを使用すると、複数のアプリが共有コンテナーにアクセスできるようにし、アプリ間のプロセス間通信を増やすことができます。 アプリ グループを有効にするには、[機能] ウィンドウを開き、[アプリ グループ] で [オン] を選択します。 アプリ グループを追加することも、既存のものを選択することもできます。 |
アプリ グループを構成するときは、逆引きドメイン ネーム システム (DNS) 表記を使用します。 group.com.companyName.AppGroup |
| バックグラウンド モード | バックグラウンド モードを有効にすると、iOS アプリはバックグラウンドで引き続き実行されます。 | |
| データの保護 | データ保護は、iOS アプリによってディスクに保存されたファイルに、あるレベルのセキュリティを追加します。 データ保護は、特定のデバイスに存在する組み込みの暗号化ハードウェアを使用して、暗号化された形式でファイルをディスクに格納します。 データ保護を使用するには、アプリをプロビジョニングする必要があります。 | |
| アプリ内購入 | アプリ内購入では、ストアに直接ストアがアプリに埋め込まれ、ストアに接続してユーザーからの支払いを安全に処理できるようにします。 アプリ内購入を使用すると、機能の強化やアプリで使用可能なコンテンツの増加に対する支払いを回収できます。 | |
| キーチェーン共有 | キーチェーン共有を有効にすると、アプリはチームが開発した他のアプリとキーチェーン内のパスワードを共有できます。 | キーチェーン共有を使用する場合は、逆引き DNS 表記を使用します。 com.companyName.KeychainGroup |
| 個人用 VPN | 個人用 VPN を有効にして、アプリがネットワーク拡張機能フレームワークを使用してカスタム システム VPN 構成を作成および制御できるようにします。 | |
| プッシュ通知 | Apple Push Notification Service (APNs) により、フォアグラウンドで実行されていないアプリが、ユーザーの情報があることをユーザーに通知することができます。 | プッシュ通知を機能させるには、アプリ固有のプロビジョニング プロファイルを使用する必要があります。 Apple 開発者向けドキュメントの手順に従います。 |
| ワイヤレス アクセサリの構成 | ワイヤレス アクセサリの構成を有効にすると、外部アクセサリ フレームワークがプロジェクトに追加され、アプリで Made for iPhone (MFi) Wi-Fi アクセサリを設定できるようになります。 |
資格を有効にする手順
アプリの機能を有効にする:
a. Xcode で、アプリのターゲットに移動し、[ 機能] を選択します。
b. 適切な機能を有効にします。 各機能の詳細と正しい値の決定方法については、「iOS 開発者ライブラリでの 機能の追加 」を参照してください。
c. プロセス中に作成した ID をメモします。 これらの ID は、
AppIdentifierPrefix値と呼ばれる場合があります。d. ラップするアプリをビルドして署名します。
プロビジョニング プロファイルで権利を有効にします。
a. Apple デベロッパー メンバー センターにサインインします。
b. アプリのプロビジョニング プロファイルを作成します。 手順については、「iOS 用 Intune App Wrapping Tool の前提条件を入手する方法」を参照してください。
c. プロビジョニング プロファイルで、アプリと同じ権利を有効にします。 アプリの開発中に指定したものと同じ ID (
AppIdentifierPrefix値) を指定する必要があります。d. プロビジョニング プロファイル ウィザードを完了し、ファイルをダウンロードします。
すべての前提条件が満たされていることを確認し、アプリをラップします。
エンタイトルメントに関する一般的なエラーのトラブルシューティング
iOS 用 App Wrapping Tool でエンタイトルメント エラーが表示される場合は、次のトラブルシューティング手順を試してください。
| 問題 | 原因 | 解決方法 |
|---|---|---|
| 入力アプリケーションから生成されたエンタイトルメントを解析できませんでした。 | App Wrapping Tool は、アプリから抽出されたエンタイトルメント ファイルを読み取ることができません。 エンタイトルメント ファイル形式が正しくない可能性があります。 | アプリのエンタイトルメント ファイルを調べます。 次の手順では、その方法について説明します。 エンタイトルメント ファイルを調べるときは、形式に誤りがある構文がないかチェックします。 ファイルは XML 形式にする必要があります。 |
| プロビジョニング プロファイルにエンタイトルメントがありません (不足しているエンタイトルメントが一覧表示されます)。 これらの権利を持つプロビジョニング プロファイルでアプリを再パッケージ化します。 | プロビジョニング プロファイルで有効になっている権利と、アプリで有効になっている機能の間に不一致があります。 この不一致は、特定の機能 (アプリ グループやキーチェーンへのアクセスなど) に関連付けられている ID にも適用されます。 | 一般的に、アプリと同じ機能を有効にする新しいプロビジョニング プロファイルを作成できます。 プロファイルとアプリの ID が一致しない場合、可能な場合は App Wrapping Tool によって ID が置き換えられます。 新しいプロビジョニング プロファイルを作成した後もこのエラーが発生する場合は、 –e パラメーターを使用してアプリからエンタイトルメントを削除してみてください (「 –e パラメーターを使用してアプリからエンタイトルメントを削除する」セクションを参照してください)。 |
署名済みアプリの既存の資格を見つける
署名済みアプリとプロビジョニング プロファイルの既存の権利を確認するには:
.ipa ファイルを見つけて拡張子を .zip に変更します。
.zip ファイルを展開します。 このアクションにより、.app バンドルを含むペイロード フォルダーが作成されます。
codesign ツールを使用して、.app バンドルのエンタイトルメントをチェックします。ここで、
YourApp.appは.appバンドルの実際の名前です。codesign -d --entitlements :- "Payload/YourApp.app"セキュリティ ツールを使用して、アプリの埋め込みプロビジョニング プロファイルのエンタイトルメントをチェックします。ここで、
YourApp.appは.appバンドルの実際の名前です。security cms -D -i "Payload/YourApp.app/embedded.mobileprovision"
–e パラメーターを使用してアプリからエンタイトルメントを削除する
このコマンドは、資格ファイルにないアプリの有効になっている機能をすべて削除します。 アプリで使用されている機能を削除すると、アプリが壊れる可能性があります。 不足している機能を削除できる例は、既定ですべての機能を持つベンダー製アプリです。
./IntuneMAMPackager/Contents/MacOS/IntuneMAMPackager –i /<path of input app>/<app filename> -o /<path to output folder>/<app filename> `–p` /<path to provisioning profile> –c <SHA1 hash of the certificate> -ac <client ID of input app> -ar <redirect URI of input app> -e
App Wrapping Tool のセキュリティとプライバシー
App Wrapping Tool を使用するときは、次のセキュリティとプライバシーのベスト プラクティスを使用します。
指定する署名証明書、プロビジョニング プロファイル、基幹業務アプリは、アプリのラッピング ツールの実行に使用するのと同じ macOS コンピューター上にある必要があります。 ファイルが UNC パス上にある場合は、macOS コンピューターがファイルにアクセスできることを確認します。 パスは、IPsec または SMB 署名によってセキュリティで保護されている必要があります。
管理センターにインポートされたラップされたアプリケーションは、ツールを実行したのと同じコンピューター上にある必要があります。 ファイルが UNC パス上にある場合は、管理センターを実行しているコンピューターでアクセスできることを確認します。 パスは、IPsec または SMB 署名によってセキュリティで保護されている必要があります。
App Wrapping Tool が GitHub リポジトリからダウンロードされる環境は、IPsec または SMB 署名によってセキュリティで保護する必要があります。
攻撃から確実に保護するために、処理するアプリは信頼できるソースから提供されている必要があります。
特にリモート フォルダーの場合は、App Wrapping Tool で指定した出力フォルダーがセキュリティで保護されていることを確認します。
ファイル アップロード ダイアログ ボックスを含む iOS アプリでは、アプリに適用されている制限を回避、切り取り、コピー、貼り付けすることができます。 たとえば、ユーザーは [ファイルのアップロード] ダイアログ ボックスを使用して、アプリ データのスクリーンショットをアップロードできます。
ラップされたアプリ内からデバイス上のドキュメント フォルダーを監視すると、
.msftintuneapplauncherという名前のフォルダーが表示される場合があります。 このファイルを変更または削除すると、制限されたアプリの正常な機能に影響を与える可能性があります。カスタム URL スキームを登録すると、特定の URL をアプリにリダイレクトできます。 iOS と iPadOS では、複数のアプリで同じカスタム URL スキームを登録でき、呼び出されるアプリケーションは OS によって決定されます。 不正な形式の URL を処理するための推奨事項と、カスタム URL スキームの競合を回避するための推奨事項とセキュリティ ガイドラインについては、Apple のドキュメント「 アプリのカスタム URL スキームの定義 」を参照してください。