164
MDX Toolkit Citrix Product Documentation | docs.citrix.com March 5, 2020

MDXToolkit - Home - Citrix Product Documentationアプリストアでの配信の有効化」を参照してください。独 系ソフトウェアベンダー(IndependentSoftwareVendor:ISV)は、

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

MDX Toolkit

Citrix Product Documentation | docs.citrix.com March 5, 2020

MDX Toolkit

Contents

MDX Toolkitについて 3

MDX Toolkitの新機能 4

解決された問題 11

既知の問題 16

システム要件 18

MDX Toolkitのインストール 26

暗号化管理 28

iOSモバイルアプリのラッピング 29

Androidモバイルアプリのラッピング 45

サードパーティアプリのMDXポリシーの概要 56

サードパーティ AndroidアプリのMDXポリシー 70

Android EnterpriseでサポートされているデバイスポリシーとMDXポリシー 83

サードパーティ iOSアプリのMDXポリシー 86

MDX開発者ガイド 102

システム要件 109

Androidアプリの開発 111

Androidアプリのベストプラクティス 115

Android⽤の API 122

iOSアプリの開発 128

iOSアプリのベストプラクティス 135

iOS⽤の API 150

ポリシーのデフォルトとカスタムポリシー 157

トラブルシューティング 161

© 1999-2020 Citrix Systems, Inc. All rights reserved. 2

MDX Toolkit

MDX Toolkitについて

March 5, 2020

Mobile Device Experience(MDX)Toolkitは、モバイルデバイスの使い⼼地や操作性を強化し、Citrix EndpointManagementと共にアプリを安全に展開することができる、アプリコンテナテクノロジです。このために、次の情報をアプリに追加します。

• モバイルアプリの管理(プロビジョニング、カスタム認証、アプリ単位での無効化、データ包含ポリシー、データの暗号化、アプリ単位での仮想プライベートネットワークなど)をサポートするためのコード。

• 署名済みのセキュリティ証明書• ポリシー情報およびそのほかの Endpoint Management設定

MDX Toolkitは、組織内で作成されたアプリまたはサードパーティにより作成されたモバイルアプリを安全に対処させることができます。

Endpoint Managementコンソールを使⽤して、アプリを Endpoint Managementに追加します。アプリを追加する場合、ポリシー構成を変更し、アプリカテゴリを追加して、ワークフローを適⽤し、デリバリーグループにアプリを展開できます。

Endpoint Managementコンポーネントをダウンロードするには、シトリックスWebサイトのダウンロードページにアクセスしてください。

MDX Toolkitバージョン 19.11.6は、Citrix.comから⼊⼿できるリリースです。詳しくは、「MDX Toolkitの新機能」および「解決された問題」を参照してください。

また、クラウドツールMDX Serviceを使⽤してアプリをラップできます。詳しくは、「MDX Service」を参照してください。

アプリケーションのラップについて

アプリベンダーから取得する iOSアプリをラップ(変換処理)できます。パブリックアプリストアでの配信では、シトリックスが開発したアプリをMDX Toolkitで署名およびラッピングしません。これによって、アプリの展開を⼤幅に合理化できます。Endpoint Managementサーバーでは既にパブリックアプリストアからのアプリの展開をサポートしているため、サーバーの更新は不要です。ただし、MDX Toolkitを使って、サードパーティのアプリやエンタープライズアプリをラップすることはできます。パブリックアプリストアでの配信について詳しくは、「パブリックアプリストアでの配信の有効化」を参照してください。

独⽴系ソフトウェアベンダー(Independent Software Vendor:ISV)は、⾃社開発のアプリをラップしてアプリストアや Citrix業務⽤モバイルアプリギャラリーで公開できます。詳しくは、「MDX開発者ガイド」を参照してください。

MDX Toolkitはアプリファイル(.ipa、.app、または.apk)を Citrixコンポーネントおよびご使⽤のキーストアまたは署名証明書と結合して、ラップしたMDXアプリを⽣成します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 3

MDX Toolkit

MDX Toolkitでは、MDX Toolkitとの使⽤がテストされ、サポートされている以下のサードパーティのフレームワークがサポートされています:

• Xamarinプラットフォームで開発された Androidアプリと iOSアプリ

注:

Xamarin.formsフレームワークを使⽤して開発されたアプリはサポートされていません。

• PhoneGap(Apache Cordova)フレームワークを使⽤して開発されたアプリ

Swiftなど他のサードパーティのフレームワークは、明確に記載されていない限り、動作は保証されていません。

MDX Toolkitおよび XenMobile App SDK(iOSおよび Android対応)には、以下のツールが含まれています。

• macOS GUIツール。iOSおよび Androidアプリをラップします。• macOSコマンドラインツール。iOSアプリをラップします。• Javaコマンドラインツール。Androidアプリをラップします。• XenMobile App SDK:サードパーティのアプリ開発者がアプリをラップした後で、XenMobile App SDKを使⽤して Endpoint Managementポリシーに基づいた操作を適⽤できます。たとえば、業務⽤モバイルアプリ内でのコピーや切り取りを禁⽌する Endpoint Managementポリシーが構成されている場合は、開発したアプリ内でのテキストの選択を禁⽌することができます。詳しくは「MDX開発者ガイド」を参照してください。

MDX Toolkitおよび XenMobile App SDK(iOSおよび Android対応)

MDX Toolkitを使⽤して、ネイティブでコンパイル済みの⾮パブリックカスタムアプリを Androidおよび iOS⽤にラップできます。これらのアプリは、iOSでは Objective-Cを、Androidでは Javaを使⽤して作成する必要があります。

エンタープライズアプリラッピングの場合、iOSアプリ(.ipa)または Androidアプリ(.apk)を使って開始します。サードパーティのアプリはアプリベンダーから直接購⼊してください。AppleストアからダウンロードされるiOSアプリは暗号化されており、ラップできません。

注:

MDX Toolkitは、Windows Phoneではサポートされていません。

MDX Toolkitの新機能

January 10, 2020

既知の問題と解決された問題の詳細については、以下を参照してください:

• MDX Toolkitの既知の問題• MDX Toolkitの解決された問題

© 1999-2020 Citrix Systems, Inc. All rights reserved. 4

MDX Toolkit

現在のリリースでの新機能

MDX Toolkit 19.11.6

MDX Toolkitバージョン 19.11.6には修正プログラムが含まれています。詳しくは、「解決された問題」を参照してください。

以前のリリースの新機能

MDX Toolkit 19.11.5

MDX Toolkitバージョン 19.11.5には修正プログラムが含まれています。詳しくは、「解決された問題」を参照してください。

MDX Toolkit 19.9.5

MDX Toolkitバージョン 19.9.5には修正プログラムが含まれています。詳しくは、「解決された問題」を参照してください。

MDX Toolkit 19.9.0

このリリースでは、iOS 13がサポートされています。次のポリシーの変更に注意してください:許可されたWi-FiネットワークMDXポリシーは、iOS 13以降を実⾏しているデバイスではサポートされていません。

MDX Toolkit 19.8.0

このリリースでは、Android Qがサポートされています。

MDX Toolkit 19.6.5

暗号化管理。暗号化管理を使⽤すると、最新のデバイスプラットフォームセキュリティを使⽤しながら、デバイスをプラットフォームセキュリティを効果的に使⽤するのに⼗分な状態に保つことができます。デバイスが暗号化管理に準拠していると⾒なされるために準拠しなければならない、⼀連のセキュリティ基準が識別されます。その後、⾮準拠デバイスを識別して、この基準によって⾮準拠のデバイス上のアプリへのアクセスを制限できます。

暗号化管理を使⽤すると、ファイルシステムの暗号化が Androidおよび iOSプラットフォームによって提供されるため、ローカルデータの暗号化の冗⻑性がなくなります。また、暗号化管理によって、パフォーマンスが改善(⼆重暗号化の回避)し、MDXとのアプリケーション互換性が向上します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 5

MDX Toolkit

注:

使⽤にあたって、Citrix Endpoint Managementで新しいレポートを実⾏して、⾮準拠デバイスが組織内にあることをリスト化できます。このレポートは、コンプライアンスの実施による影響を判断するのに役⽴ちます。レポートにアクセスするには、Endpoint Managementコンソールを開き、[分析]>[レポート]>[⾮準拠デバイス]に移動してレポートを⽣成します。⾮準拠デバイスレポートは、Citrix Endpoint Managementバージョン 19.6.0.2以降を実⾏している環境で利⽤できます。

暗号化の種類

暗号化管理機能を使⽤するには、Endpoint Managementコンソールで、暗号化の種類のMDXポリシーを[コンプライアンス強制によるプラットフォーム暗号化]に設定します。これにより、暗号化管理とユーザーのデバイス上の既存のすべての暗号化アプリケーションデータを、MDXではなくデバイスによって暗号化された状態にシームレスに移⾏できます。この移⾏中、アプリはワンタイムデータ移⾏のために⼀時停⽌します。移⾏が成功すると、ローカルに保存されたデータの暗号化に対する責任が、MDXからデバイスプラットフォームに移ります。MDXは引き続き、アプリが起動されるたびにデバイスのコンプライアンスをチェックします。この機能は、MDM + MAM環境とMAMのみの環境の両⽅で機能します。

暗号化の種類ポリシーを[コンプライアンス強制によるプラットフォーム暗号化]に設定すると、新しいポリシーが既存のMDX暗号化よりも優先されます。

暗号化管理MDXポリシーの詳細については、以下のページの「暗号化」セクションを参照してください:

• iOSアプリのMDXポリシー• AndroidアプリのMDXポリシー

⾮準拠デバイスの動作

デバイスが最⼩コンプライアンス要件を下回ると、⾮準拠デバイスの動作MDXポリシーによって、実⾏する操作を次の中から選択することができます:

• アプリを許可 -アプリが正常に動作することを許可します。• 警告後にアプリを許可する -アプリが最⼩コンプライアンス要件を満たしていないことをユーザーに警告してから、アプリの実⾏を許可します。これがデフォルト値です。

• アプリを許可しない –アプリの実⾏を許可しません。

デバイスが最⼩コンプライアンス要件を満たしているかどうかは、次の基準で決まります。

iOSを実⾏しているデバイスの場合:

• iOS 10:指定されたバージョン以上のバージョンのオペレーティングシステムをアプリで実⾏している。• デバッガーアクセス:アプリでデバッグが有効になっていない。• ジェイルブレイクされたデバイス:アプリがジェイルブレイクされたデバイスで実⾏されていない。• デバイスのパスコード:デバイスのパスコードがオンになっている。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 6

MDX Toolkit

• データ共有:アプリに対してデータ共有が有効になっていない。

Androidを実⾏しているデバイスの場合:

• Android SDK 24(Android 7 Nougat):指定されたバージョン以上のバージョンのオペレーティングシステムをアプリで実⾏している。

• デバッガーアクセス:アプリでデバッグが有効になっていない。• Root化済みデバイス:Root化済みデバイスでアプリが実⾏されていない。• デバイスのロック:デバイスのパスコードがオンになっている。• 暗号化された端末:暗号化された端末でアプリが実⾏されている。

git pWkWebViewのサポート。このリリースでは、WkWebViewがサポートされています。WKWebViewは、Webコンテンツを表⽰する Appleフレームワークで、以前に使⽤されていたUIWebViewフレームワークよりもパフォーマンスとセキュリティが向上しています。WKWebViewフレームワークを使⽤してビルドした iOSアプリでは、[トンネル-Web SSO]ポリシーを使⽤すると、トラフィックがマイクロ VPN(SSL VPNとも呼ばれます)を通過できます。この機能を使⽤するには、セットアップ構成は必要ありません。

注:

既に完全 VPNトンネルを使⽤している場合は、UIWebViewフレームワークを引き続き使⽤するか、セキュアブラウズモードの使⽤に切り替えることができます(推奨)。

制限事項

WkWebViewは、次のシナリオではサポートされていません。

• iOS 10以前を実⾏しているデバイス。• Endpoint Managementと EMS/Intuneとの統合を実⾏しているセットアップ。• WKWebViewコンポーネントの 2つのインスタンスを同時に使⽤するアプリ。• 完全 VPNモード⽤に構成されたセットアップ。

Google Playの 64ビットサポート。2019年 8⽉ 1⽇以降、Google Playでは、アプリによる 64ビットアーキテクチャのサポートが必要になります。このバージョンのMDX Toolkitでは、アプリの 64ビットバージョンのラップがサポートされます。64ビットデバイスにアプリが対応可能かどうかを評価するには、また、64ビットライブラリでアプリを構築する⽅法については、Google Playの Google Developersのドキュメントを参照してください。

更新された暗号ライブラリ。MDX Toolkit 19.6.5には、更新された暗号ライブラリが含まれています。このライブラリは定期的に更新され、最新のセキュリティトレンドに対応し、セキュリティの脆弱性を修正します。また、古い暗号は廃⽌されました。この更新によって、最新かつ最も安全な暗号を使⽤することが環境に強制されるため、セキュリティが向上します。ただし、暗号を更新しないと、MDX Toolkit 19.6.5でラップしたアプリに更新したときにエラーが発⽣する可能性があります。

Citrix Gatewayを使⽤していて、iOSと Androidのサードパーティのアプリを介して SSL VPNを許可する予定の場合は、次の⼿順を実⾏したことを確認してください。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 7

MDX Toolkit

• Citrix Gateway で、[SSL 暗号]オプションに次の暗号の組み合わせ値を追加します:- ECDHE-RSA-AES256-GCM-SHA384。安全な暗号を追加する⼿順については、「安全な暗号エイリアス」を参照してください。

• 楕円曲線暗号(ECC)を有効にします。詳しくは、「ECDSA暗号の組み合わせのサポート」を参照してください。

Androidを実⾏しているデバイス⽤の Chrome 74のサポート。このリリースには、Chromeバージョン 74にアップグレードした Androidを実⾏しているデバイスでのMicro VPNサポートが含まれています。

Apktoolバージョン 2.4のサポート。このリリースには Apktoolバージョン 2.4を使⽤するアプリのサポートが含まれています。

MDX Toolkit 19.3.5

MDX Toolkitバージョン 19.3.5には修正プログラムが含まれています。詳しくは、「解決された問題」を参照してください。

MDX Toolkit 18.12.0

ネットワークポリシーの動作。機能を統合し直感性を⾼めるため、従来のネットワークポリシーが新しいポリシーに置き換えられました。変更点について詳しくは、以下の表を参照してください。

従来のポリシー Intuneポリシー 新しいポリシー 注

ネットワークアクセス、優先 VPNモード、VPNモードの切り替えを許可

http/httpsリダイレクト(SSO使⽤)を有効化、mVPN完全トンネル(TCPレベル)リダイレクトを無効化

ネットワークアクセス

分割トンネルの除外対象⼀覧

mVPNトンネル除外対象⼀覧

除外の⼀覧

オンラインセッションを必須とする

mVPNセッションを必須とする

Micro VPNセッションを必須とする

EndpointManagement MAMの場合は、対応する猶予期間ポリシーで、VPNセッションの再確⽴が必要になる期間を制御します。Intune MAMでは猶予期間をサポートしていません。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 8

MDX Toolkit

新しい[ネットワークアクセス]ポリシーおよび[Micro VPNセッションを必須とする]ポリシーを使⽤する場合は、新しい値を選択することをお勧めします。デフォルトでは[以前の設定を使⽤]が選択されており、過去のポリシーで設定済みの値が使⽤されます。値の変更後は、[以前の設定を使⽤]に戻さないでください。新しいアプリを公開する場合は、[以前の設定を使⽤]を選択しないでください。また、新しいポリシーに対する変更は、ユーザーがアプリを 18.12.0にアップグレードするまで反映されません。

新しくアップロードされたアプリでは、以下がデフォルトで設定されます:

• ネットワークアクセス: Secure Mailを除くすべてのアプリで[禁⽌]。Intuneには禁⽌状態が存在しないため、Secure Mailのデフォルト設定は[制限なし]になります。

• 除外の⼀覧:空

• Micro VPNセッションを必須とする:いいえ

18.12.0にアップグレードする場合の注意:

ネットワークアクセスポリシーはデフォルトで以前の VPN設定となっており、操作は不要です。アクセスの種類を変更した場合、アプリを 18.12.0にアップグレードするまで変更は有効になりません。

詳しくは、以下のページの「アプリのネットワークアクセス」セクションを参照してください:

• iOSアプリのMDXポリシー• AndroidアプリのMDXポリシー

MDX Toolkit 10.8.60

MDXは Android Pをサポートしています。これで Android Pをラップできます。

MDXはポーランド語で利⽤可能になりました。

MDX Toolkit 10.8.35

除外ポリシーの変更。Androidデバイスでは、MDX以外のアプリが、MDXアプリ内で暗号化されたファイルのコピーを受け取ることができるようになりました。[ドキュメント交換(このアプリケーションで開く)]ポリシーを[制限]に設定すると、[このアプリケーションで開く]制限の例外⼀覧のアプリがMDXアプリで暗号化されたファイルを受け取ることがあります。ファイルを受け取ると、ファイルの内容はローカルストレージで暗号化解除され、ファイルを閉じるとローカルストレージから削除されます。たとえば、{package = com.microsoft.office.word}を[ドキュメント交換(このアプリケーションで開く)]ポリシーに追加すると、WordアプリケーションはMDXアプリケーションから暗号化解除されたファイルを受け取ることができます。

MDX Toolkit 10.7.20

ネットプロモータースコア(NPS)調査の管理:Citrix Filesアプリの新しいポリシーである[AllowNPSShareFile]を使⽤すると、ネットプロモータースコア調査を表⽰してユーザーのフィードバックを収集できます。デフォルト値

© 1999-2020 Citrix Systems, Inc. All rights reserved. 9

MDX Toolkit

は[オフ]です。

エンドポイントポリシーをトンネリングしない:Citrix Endpoint Management SDKおよびアプリが各種機能で使⽤する⼀部のサービスエンドポイントは、Micro VPNトンネルから除外する必要があります。MDXではデフォルトで除外が実⾏されますが、Citrix Endpoint Managementサーバーのクライアントプロパティの設定で⼀覧を上書きすることができます。Citrix Endpoint Managementコンソールでのクライアントプロパティの構成について詳しくは、「クライアントプロパティ」を参照してください。サービスエンドポイント⼀覧の上書きについて詳しくは、「TUNNEL_EXCLUDE_DOMAINS」を参照してください。以下は、デフォルトでトンネリングから除外されるドメイン⼀覧です。

• ssl.google-analytics.com• app.launchdarkly.com• mobile.launchdarkly.com• events.launchdarkly.com• stream.launchdarkly.com• clientstream.launchdarkly.com• firehose.launchdarkly.com• hockeyapp.net• rttf.citrix.com• rttf-test.citrix.com• rttf-staging.citrix.com• cis.citrix.com• cis-test.citrix.com• cis-staging.citrix.com• pushreg.xm.citrix.com• crashlytics.com• fabric.io

ネイティブブラウザーの Secure Mailで開かれたURLを制御する新しいポリシー。SecureWebDomainsポリシーは、どのドメインをネイティブブラウザーではなく Secure Webブラウザーに送信するかを制御します。URLホストドメインのコンマ区切りの⼀覧は、アプリが通常外部ハンドラーに送信する URLのホスト名部分と照合されます。管理者は通常、Secure Webが処理する内部ドメインの⼀覧としてこのポリシーを構成します。

この機能は iOSと Androidで利⽤できます。Androidデバイスのポリシーに関する以前の既知の問題は、バージョン 10.6.25で修正されました。

ExcludeUrlFilterForDomainsポリシーは、URLフィルター処理から除外されたWebサイトドメインのコンマ区切りの⼀覧です。⼀覧内のドメインを含む URL は、Secure Web の代わりにユーザーのネイティブブラウザーに送信されます。ポリシーが空の場合、すべての URL が URL フィルターで処理されます。このポリシーは、SecureWebDomainsポリシーよりも優先されます。デフォルトのポリシー値は空です。

MDXは Citrix Insight Service(CIS)へのクラッシュレポートの送信をサポート。[Citrixレポート]ポリシーが[オン]の時にクラッシュが発⽣した場合、MDXはログとクラッシュレポートで構成されたレポートパッケージ

© 1999-2020 Citrix Systems, Inc. All rights reserved. 10

MDX Toolkit

を作成し、CISにアップロードします。その後、サポートバンドルを削除し、関連する業務⽤モバイルアプリにクラッシュを通知するため、業務⽤モバイルアプリでサポートバンドルが作成されます。

MDX Toolkit 10.7.10

MDX Toolkit 10.7.10は、業務⽤モバイルアプリのラッピングをサポートする最終リリースです。業務⽤モバイルアプリバージョン 10.7.5以降には、パブリックアプリストアからアクセスします。MDX Toolkit 10.7.10でラップすることができる業務⽤モバイルアプリエンタープライズバージョンの⼀覧については、「業務⽤モバイルアプリの管理と配信」を参照してください。

MDX Toolkitバージョン 10.7.10には修正プログラムが含まれています。詳しくは、「解決された問題」を参照してください。

MDX Toolkit 10.7.5

MDX Toolkitバージョン 10.7.5には修正プログラムが含まれています。詳しくは、「解決された問題」を参照してください。

解決された問題

March 5, 2020

MDX Toolkit 19.11.6で解決された問題

Android 10を実⾏している Samsung Galaxy S10デバイスで、切り取り、コピー、貼り付け機能の制限などのクリップボードポリシーは、MDX Toolkitにラップされているサードパーティアプリでは機能しません。[CXM-74863]

MDX Toolkit 19.11.5で解決された問題

• Androidを実⾏しているデバイスで、WebViewsが、Web SSOトンネルが確⽴される前に作成された場合、トラフィックがルーティングされません。[CXM-68445]

• Androidを実⾏しているデバイスで、別のMDXアプリからファイルを開くと Citrix QuickEditがクラッシュし、「セキュリティで保護されたネットワーク接続を開始しています」というエラーメッセージが表⽰される場合があります。[CXM-70454]

• MDX for Android で、ARMEABI ネイティブライブラリのみを含むラップされたアプリを開こうとすると、「このデバイスはアプリケーションが必要とする暗号化機能をサポートしていません」というエラーが表⽰されます。[CXM-72227]

© 1999-2020 Citrix Systems, Inc. All rights reserved. 11

MDX Toolkit

• Androidを実⾏しているデバイスで、[トンネル - Web SSO]ポリシーが有効な場合、Samsungデバイス上の⼀部のアプリがクラッシュします。この問題は、廃⽌された Apacheライブラリが⽋落しているために発⽣します。[CXM-72586]

• iOSを実⾏しているデバイスで、社内アプリ起動時に空⽩の画⾯が表⽰されます。[CXM-73168]• Androidを実⾏しているデバイスで、ラップされた Vocera Collaboration Suiteアプリを開こうとすると、アプリに空⽩の画⾯が表⽰されます。[CXM-73715]

• iOSを実⾏しているデバイスで、⼀部のエンタープライズアプリがMDX Toolkitバージョン 19.9.0にラップされている場合、アプリがクラッシュする場合があります。[CXM-73924]

• Androidを実⾏しているデバイスで、UTVアプリがロードに失敗します。[CXM-74190]

以前のバージョンで解決された問題

MDX Toolkit 19.9.5で解決された問題

• 受信ドキュメント交換MDXポリシーが[制限]に設定されている場合、Citrix Endpoint Managementで次の問題が発⽣します:iOS 13を実⾏している iPhoneで、Secure Webからファイルをダウンロードした後、Secure Mailでファイルを開くことができません。代わりに、次のエラーが表⽰されます:管理ポリシーによる制限:このアプリの受信ドキュメント交換はブロックされています。[CXM-72365]

MDX Toolkit 19.9.0で解決された問題

MDX Toolkit 19.9.0では、次の問題が修正されています:

• iOSを実⾏しているデバイスでは、MDXでラップされた社内アプリが内部ネットワークに接続できません。[CXM-70156]

• Androidを実⾏しているデバイスでは、別のMDXアプリからファイルを開くと Citrix QuickEditがクラッシュし、「セキュリティで保護されたネットワーク接続を開始しています…」というエラーが表⽰されます。[CXM-70454]

• Androidを実⾏しているデバイスでは、特定のラップされたアプリはネットワーク呼び出しをサポートできません。[CXM-71069]

• Androidデバイスでは、セキュアブラウズモードで、openConnection()呼び出しで Proxy.DIRECTオブジェクトを通過させた URLConnectionがサポートされません。[CXM-71333]

MDX Toolkit 19.8.0で解決された問題

MDX Toolkit 19.8.0では、次の問題が修正されています:

• Androidを実⾏しているデバイスでは、特定のラップされたアプリはネットワーク呼び出しをサポートできません。[CXM-68439]

© 1999-2020 Citrix Systems, Inc. All rights reserved. 12

MDX Toolkit

• 社内でラップされたアプリが Android 9上で実⾏されている場合、内部サーバーと通信できないことがあります。[CXM-68607]

• デバイスが Citrix Endpoint Managementで管理されている Androidユーザーは、証明機関サーバーから複数のユーザー証明書を受け取ります。[CXM-69132]

• Androidデバイスで、完全 VPNトンネルが確⽴されたときにアプリをアンインストールすると、VPN接続が切断されます。[CXM-70392]

• 暗号化エラーのため、64ビット対応の⼀部の Sonyおよび HuaweiデバイスでMDXアプリケーションにアクセスできません。[CXM-70738]

MDX Toolkit 19.6.5で解決された問題

MDX Toolkit 19.6.5では、次の問題が修正されています:

• iOSを実⾏しているデバイスで、ラップされているとサードパーティ製アプリが起動しません。[CXM-62402]• iOSを実⾏しているデバイスで、[Secure Mailにコピー]オプションで Secure Mailにファイルを添付できません。WeChat、NETDiSK、またはその他のメールボックスアプリケーションからファイルを添付しようとすると、「ファイルを添付できません。」というエラーが表⽰されます。[CXM-63441]

• WebSSOモードで設定されているMicrosoft Intune/EMSとの Citrix Endpoint Management統合を実⾏しているセットアップで、Secure Mail for Androidを使⽤して企業ネットワークにアクセスできません。[CXM-63568]

• Androidデバイスで、Secure Mailを介してWebリンクを共有しようとすると、Webリンクがメールの本⽂に取り込まれません。[CXM-63650]

• iOSデバイスで、iPhone XS Maxおよび iPad Pro 12.9インチのデバイスを使⽤して、Webサイトに画像ファイルをアップロードできません。[CXM-65343]

• Androidを実⾏しているデバイスで、[暗号化を有効化]ポリシーがオフになっていると、シングルサインオンに失敗します。[CXM-66659]

• iOSを実⾏しているデバイスで、[許可されたWi-Fiネットワーク]MDXポリシーで定義された以外のWi-Fiネットワークに接続できます。この問題により、MDXポリシーに登録されていないネットワークを介して、Secure Mail for iOSおよび Secure Web for iOSを開くことができます。[CXM-66730]

• Androidデバイスで、ShareFileにログオンしたときに、トンネルネットワークアクセス経由で接続をルーティングできません。ログオンしようとすると、Chrome 74の設定が機能しません。[CXM-66758]

• iOSデバイスで、社内アプリの Atlasを展開している場合、アプリを開いて資格情報を⼊⼒するとアプリがクラッシュします。[CXM-66805]

• Secure Webを実⾏している Androidデバイスで、フル VPN接続が確⽴された後、インターネットまたはイントラネットサイトにアクセスできません。[CXM-66940]

• セキュアブラウズモードで動作している Androidデバイスで、エンドポイントが現在の接続を予期せず終了したため、MDXによって新しい Citrix Gateway証明書が要求されます。[CXM-67086]

• Android 9 以降を実⾏しているデバイスで、MDX でラップされたアプリの場合、次のエラーが表⽰されます:Detected problems with API compatibility (visit g.co/dev/appcompat for more info)。[CXM-67204]

© 1999-2020 Citrix Systems, Inc. All rights reserved. 13

MDX Toolkit

MDX Toolkit 19.3.5

• MDX Toolkit for iOSでは、Xcode 10.xより前のバージョンの Xcodeを実⾏している場合、ラッピング中にビルドの失敗が発⽣します。[CXM-59394]

• ラッピングされた Androidアプリでは、ユーザーエージェント⽂字列が複数回追加され、ヘッダーのサイズが⼤きくなります。これによってエラーが発⽣し、ページの読み込みに失敗します。[CXM-59869]

• MDX Toolkit 18.12.0でラップする場合、iOS⽤ Apache Cordovaアプリをバックグラウンドで起動できません。[CXM-61255]

MDX Toolkit 18.12.0

• MDX Toolkitでラップしたサードパーティ製ストレージアプリでは、ときどきファイルをダウンロードできなくなります。[CXM-58814]

• Xamarinプラットフォームで社内開発した AndroidアプリをMDX Toolkitでラップすると、実⾏速度が低下します。[CXM-58779]

MDX Toolkit 10.8.60

• Secure Mail for iOSでビデオファイルを ShareFileに保存できません。[CXM-42238]• dnsResolveが定義された PACファイルで完全トンネルモードに設定されている場合に、Secure Webの動作が著しく遅くなります。[CXM-49567]

• MDX Toolkitでラップすると、ログイン時に Cisco Jabberアプリがクラッシュします。[CXM-51052]• 優先 VPNモードが SecureBrowseに設定されていると、エンタープライズアプリで内部リソースへの接続の問題が発⽣することがあります。[CXM-52309]

• MDX Toolkit でラップされた⼀部のサードパーティ製アプリがスタートアップ時にクラッシュします。[CXM-52311]

• ア プ リ ケ ー シ ョ ン ク ラ ス に android.support.multidex.MultiDexApplication ま た は an-droid.app.Application を指定したアプリは、セキュアブラウズモードで内部ネットワークに接続できません。[CXM-53126]

• Androidデバイスでは、複数の証明書が⽣成されており、有効期限前に証明書が失効しています。[CXM-53428]

• Android で Secure Hub からサインアウトしようとすると、Secure Mail がクラッシュします。[CXM-53930]

• iOSデバイスでは、Secure Webと Secure Mail 10.8.45が起動時にクラッシュします。[CXM-54089]• Intuneポータルサイトで Secure Mail for Androidを実⾏しているデバイスを登録すると、Secure Mailは機能しなくなります。[CXM-54178]

• Android上の QuickEditで PDFを開くと、「PDFレンダラーの初期化中にエラーが発⽣しました。」というエラーが表⽰されます。[CXM-54950]

© 1999-2020 Citrix Systems, Inc. All rights reserved. 14

MDX Toolkit

• MDX Toolkitで ShareFile 7.1 for Androidをラップした場合、ユーザーが ShareFileコネクタでコンテンツにアクセスしようとするとシングルサインオン(SSO)に失敗します。[CXM-55030]

MDX Toolkit 10.8.35

Android

• Secure Web for Androidを含むWebView APIを使⽤するデバイスでは、MDXポリシーの[ギャラリーを禁⽌]が[オフ]に設定されていてもギャラリーから画像を添付できません。[CXM-41475]

• Androidでは、Secure Webがすべての内部/外部サイトを開くことができません。[CXM-47379]• Android では、MDX Toolkit 10.7.20 以降でラップされた社内アプリは、起動時にクラッシュします。[CXM-47566]

• 起動中に⼀部のエンタープライズアプリがクラッシュし、「アプリが停⽌しました。」というエラーメッセージが表⽰されます。[CXM-49901]

iOS

• iOS では、MDX Toolkit 10.7.20 が⼀部の iPad 専⽤のサードパーティ製アプリをラップできません。[CXM-44122]

• iOSでは、ユーザーは ShareFileのリンクを Secure Mail以外の他のMDXアプリに貼り付けることができません。[CXM-44274]

• iOSでアプリの SAP Fioriをラップすると、ログインページが表⽰されません。[CXM-45542]• iOS 10デバイスの Secure MailでMDXポリシー[連絡先のエクスポート]を構成すると、連絡先を共有したり、ローカルの連絡先と同期することができません。代わりに、連絡先のエクスポートに失敗しましたというメッセージが表⽰されます。[CXM-44613]

• iOSでは、制限のないモードで CFSocketConnectToAddressを呼び出すと、サードパーティ製アプリがクラッシュします。[CXM-46592]

• ネットワークがトンネリングされている場合、セキュアブラウズモードで特定のWebサイトを閲覧しているときに、Secure Web for iOSがクラッシュします。[CXM-47989]

• MDX Toolkitバージョン 10.7.20でラップしたサードパーティ製の iOS⽤ Cordovaアプリでは、画⾯の内容を不鮮明にするポリシーを有効にすると、iOSデバイスに PIN画⾯ではなく黒い画⾯が表⽰されます。[CXM-48471]

• iOS 11.3にアップグレードすると、「貼り付け」および「切り取りおよびコピー」ポリシーに制限がある場合でも、⾮管理対象アプリで貼り付け操作を実⾏できます。[CXM-50427]

MDX Toolkit 10.8.5

Android

© 1999-2020 Citrix Systems, Inc. All rights reserved. 15

MDX Toolkit

• Androidで、BLOCK_DNS_FROM_UNMANAGED_APPS_IN_FULL_VPNポリシーが設定され、VPNの実⾏中にMDXアプリケーションが完全トンネル VPNを要求すると、ネットワーク障害が発⽣します。この問題を解決するには、ユーザーが⼀度ログオフしてからログオンし直す必要があります。[CXM-42853]

• AndroidデバイスでのMicro VPN接続が確⽴された後、ユーザーがデバイスを再起動すると、Micro VPNの起動に失敗します。[CXM-43919]

• Androidデバイスでは、接続が内部ネットワークにトンネリングされている場合、⼀部のアプリが動作しません。[CXM-44735]

• .apkファイルをMDX Serviceでラップしようとするとエラーが発⽣し、ラップできません。[CXM-47060]

iOS

• 暗号化を無効にすると、iOS デバイスの XenMobile Apps でコピーおよび貼り付けを使⽤できません。[CXM-43920]

• iOSでは、XenMobile Appsを 10.7.30にアップグレードした後、ログレベルが 11以上に設定されていると、Secure Mailの動作が⾮常に遅くなり、開いたままにするとクラッシュします。[CXM-46721]

既知の問題

January 10, 2020

MDX Toolkit 19.11.6での既知の問題

このリリースには既知の問題はありません。

以前のバージョンの既知の問題

MDX Toolkit 19.11.5での既知の問題

このリリースには既知の問題はありません。

MDX Toolkit 19.9.5での既知の問題

このリリースには既知の問題はありません。

MDX Toolkit 19.9.0での既知の問題

このリリースには既知の問題はありません。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 16

MDX Toolkit

MDX Toolkit 19.8.0での既知の問題

Androidデバイス⽤のMDX Toolkit 19.8.0リリースには既知の問題はありません。解決された問題については、「解決された問題」を参照してください。

MDX Toolkit 19.6.5での既知の問題

Androidデバイス⽤のMDX Toolkit 19.6.5リリースには既知の問題はありません。解決された問題については、「解決された問題」を参照してください。

MDX Toolkitバージョン 18.12.0

Android デバイス⽤の MDX Toolkit 18.12.0 リリースには既知の問題はありません。解決された問題については、「解決された問題」を参照してください。

MDX Toolkitバージョン 10.8.60

Android デバイス⽤の MDX Toolkit 10.8.60 リリースには既知の問題はありません。解決された問題については、「解決された問題」を参照してください。

MDX Toolkitバージョン 10.8.35

• ドキュメント交換ポリシーが制限ありに設定されている場合、Secure Webはファイルのダウンロードを施⾏後、機能しなくなります。[CXM-48447]

MDX Toolkitバージョン 10.8.5

Androidデバイス⽤のMDX Toolkit 10.8.5リリースには既知の問題はありません。解決された問題については、「解決された問題」を参照してください。

MDX Toolkitバージョン 10.7.20

• VPNモードがセキュアブラウズに設定されている場合、バックエンドサーバーでサポートされている暗号の組み合わせが展開の NetScalerでサポートされていないと、Citrix Office365の OAuthを構成できないことがあります。[CXM-41738]

• Androidでは、Secure WebドメインポリシーがデフォルトのWebブラウザーで URLを開くことができません。[CXM-43021]

© 1999-2020 Citrix Systems, Inc. All rights reserved. 17

MDX Toolkit

MDX Toolkitバージョン 10.7

• iOS 11で、ドラッグアンドドロップ機能を使ってデータをMDX管理対象アプリから⾮管理対象アプリに移動できます。[CXM-38106]

• iOS 11で、[ドキュメント交換]ポリシーが[制限]に設定されている場合でも、⾮管理対象アプリが[このアプリケーションで開く]⼀覧に表⽰されます。[CXM-38705]

• iOS 11で、MDXでラップされたアプリケーションを使⽤して開かれた ShareFileのファイルが破損して表⽰されます。[CXM-38900]

• iOS で、管理対象アプリが[このアプリケーションで開く]⼀覧を最初に開いた時に表⽰されません。[CXM-38897]

• iOS 10および 11で、MDX管理対象アプリから開くことを選択すると、エラーメッセージが表⽰されます。[CXM-38912]

システム要件

April 17, 2019

ここでは、MDX Toolkitを使⽤してモバイルアプリをラップするためのシステム要件について説明します。この記事には、アプリのプラットフォームに特有の要件も含まれます。

重要:

XenMobile App SDK 10.2 には、次のコンポーネントが必要です。JavaScriptCore.framework およびLocalAuthentication.framework

• Java Development Kit(JDK)1.7 または 1.8: JDK 1.8 は、オラクル社の Web サイトのJava SEDevelopment Kit Downloadsからダウンロードできます。インストール⼿順については、Oracle 社のWebサイトのJDK 8 and JRE 8 Installation Guideを参照してください。JDKをすべてインストールし、JDK 1.8をデフォルトに設定してください。

• macOS:最新のバージョンを使⽤してください。MDX Toolkitおよび XenMobile Apps SDKのインストーラーをmacOSで実⾏する必要があります。インストーラーには iOSおよび Androidアプリの両⽅をラップするmacOSツールと、Androidアプリをラップする Javaコマンドラインツールが含まれます。

• XenMobile Apps SDK:XenMobile iOS SDKと Xcodeの最新バージョンを使⽤します。ビットコードの⽣成は無効になっています。

iOSモバイルアプリをラップするためのその他の要件

iOSのアプリケーションラッピングの前提条件にアクセスするには、Apple配布アカウントに登録する必要があります。iOS開発者アカウントには、Enterprise、Individual、Universityの 3種類があります。iOS DeveloperEnterpriseアカウントを使⽤してください。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 18

MDX Toolkit

• iOS Developer Enterpriseアカウント:デバイスの制限なく、無制限のアプリをアプリラッピングにかかわらずプロビジョニング、展開、テストできる唯⼀の種類の Apple Developerアカウントです。開発者がアプリに署名できるように、開発者に Developer Certificateを配布してください。

• iOS デベロッパー個⼈アカウント: 年間登録機器数は 100 台に制限されており、Citrix EndpointManagementでアプリのラッピングやエンタープライズ配信を受けることはできません。

• iOS Developer University アカウント: 年間登録機器数は 200 台に制限されており、EndpointManagementでのアプリラッピングおよびエンタープライズ配信の対象にはなりません。

重要:

アカウントのプロビジョニングプロファイルの有効期限が近く、期限切れ前に更新する必要がある場合は、追跡するようにしてください。アプリのラップに使⽤したプロファイルが期限切れになった場合、プロファイルを更新し、再度アプリをラップし、ユーザーデバイスにアプリを再インストールする必要があります。プロビジョニングプロファイルを更新するには、Apple Developerアカウントにログオンし、Certificates, Identifiers& Profilesで Provisioning Profilesを選択します。

Xcode Apple Developer Webサイトから Xcodeコマンドラインツールをダウンロードします。macOS 10.10はこのツールを⾃動でインストールしません。ツールをインストールするには、次の⼿順を実⾏します。

1.[Applications]>[Utilities]で[Terminal]をクリックし、Macコマンドラインインターフェイス(CLI)を使⽤します。

2. 次のコマンドを⼊⼒します。

1 xcode-select --install

「install」の前にハイフンを 2つ⼊⼒するようにしてください。

3. Xcodeコマンドラインツールのインストール後、Xcodeを実⾏して必要な前提条件をインストールします。

Androidモバイルアプリをラップするためのその他の要件

Androidアプリをラップするには、互換性のある Androidソフトウェア開発キット(SDK)と有効なキーストアも必要です。SDKおよびキーストアをダウンロード、作成し、適切に構成するには、次の⼿順に従います。

Androidソフトウェア開発キット(SDK)

MDX Toolkitは、Android SDKの APIレベル 26と互換性があります。

1. GoogleデベロッパーWebサイトの SDKダウンロードページから、Android SDKをダウンロードします。Android Studioのフルパッケージをインストールする必要はありません。ページの後半で、コマンドラインツールのみをダウンロードできます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 19

MDX Toolkit

2. 最新の tools、platform-tools、buid-toolsをインストールします。インストールするには、[AndroidSDK]>[tools]で Androidツールを使⽤して SDK Managerを開始する必要があります。

• ダウンロードした SDKファイルを展開します。• toolsフォルダーに移動して、Androidをクリックして SDK Managerを実⾏します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 20

MDX Toolkit

3. SDK Managerで次の最新バージョンを選択します。

• Android SDK Tools• Android SDK Platform• Android SDK Platform-tools• Android SDK Build-tools

4.[Install Packages]をクリックします。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 21

MDX Toolkit

5.[Choose Packages to Install]画⾯の、インストールするすべてのパッケージで[Accept License]を選択して、[Install]をクリックします。

6. 適切な SDK Toolsと APIがダウンロードされたことを検証するには、aaptファイルが[Android SDK]>[build-tools]>[23.0.3]にあることを確認します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 22

MDX Toolkit

7. SDKを更新するには、platform-toolsフォルダーからすべての aaptファイルを削除する必要があります。aaptファイルが build-toolsにのみ存在することを確認します。

8. build-toolsに zipalignファイルがない場合は、platform-toolsフォルダーから build-toolsフォルダーにファイルをコピーして platform-toolsからファイルを削除します。

9. MDX Toolkitインストールフォルダーで新たにインストールされた android_settings.txtファイルの場所を追加します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 23

MDX Toolkit

10.[Applications]>[Citrix]>[MDX Toolkit]で、android_settings.txtファイルを開き、以下のフォルダーのフルパスを追加します:

• Android SDK• Android SDK > tools• Android SDK > platform-tools• Android SDK > build-tools > [version]

注:

android_settingsファイルから[Android SDK]>apktoolsパスを削除します。このパスは必要ありません。

SDKフォルダーのフルパスを⾒つけるには、ファイル上で右クリックし、[Get Info]を選択して、情報パネルでWhere情報を確認します。

11. android_settingsファイルを編集する前に、ファイルのコピーを作成します。

a)[Applications]>[Citrix]>[MDXToolkit]>[Android_settings]に移動します。

b) 新しいパスを追加します。

c)[Applications]>[Citrix]>[MDX Toolkit]フォルダー外にファイルを保存します

d)[Applications]>[Citrix]>[MDX Toolkit]フォルダーで元の android_settingsファイル名を変更します(例:android_settings.old)。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 24

MDX Toolkit

e)[Applications]>[Citrix]>[MDX Toolkit] フォルダーへの追加されたパスとともに新しいandroid_settingsファイルをコピーします。

以下はパスが追加されたファイルの例です。

有効なキーストア

有効なキーストアには、Androidアプリの署名に使⽤するデジタル署名済みの証明書が含まれます。⼀度キーストアを作成したら、現在および将来のラッピングでこのファイルを使⽤できます。以前に展開したアプリの新しいバージョンをラップするときに同じキーストアを使⽤しない場合、このアプリのアップグレードは機能しなくなります。代わりにユーザーは、新しいバージョンをインストールする前に⼿動で古いバージョンを削除する必要があります。

キーストアには、複数の秘密キーを含めることができますが、通常、キーストアに含まれるキーは 1つのみです。

証明書について詳しくは、「アプリの署名」を参照してください。

次のガイドラインを満たすキーでアプリに署名する必要があります。

• 2048ビットキーサイズ• DSAまたは RSAキーアルゴリズム(keyalg)• MD5は使⽤しないでください。

MDX Toolkitは、SHA1を使⽤してアプリに署名するので、古いバージョンの Androidをサポートします。このアルゴリズムは間もなく廃⽌され、SHA256が使⽤される予定です。別のアルゴリズムで署名する場合は、別のツールを使⽤します。

デバッグ⽤キーストアを使⽤しない場合は、キーストアを作成します。キーストアを作成するには、Terminalを起動して次のコマンドを⼊⼒します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 25

MDX Toolkit

keytool -genkey -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048-validity 10000

キーストアのパスワードや組織のドメイン名(例:example.com)など、要求された情報を⼊⼒します。キーは 25年間有効です。

アプリに署名するには、このコマンドを使⽤します。

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystoremy_application.apk alias_name

これで Androidアプリをラップできます。詳しくは、「Androidアプリのラップ」を参照してください。

MDX Toolkitのインストール

August 23, 2019

以下は、MDX Toolkitおよび XenMobile App SDK(iOSおよび Android)をインストールする⼿順です。

macOSを実⾏しているコンピューターから以下の⼿順を実⾏します。インストーラーには、次のツールが含まれています。

• macOSツール。iOSおよび Androidアプリをラップします。• Javaコマンドラインツール。Androidアプリをラップします。このツールは、Windowsコンピューターでも実⾏できます。

注:

MDX Toolkit の新しいバージョンをインストールする前に以前のバージョンを削除してください。An-droid_settings.txtのバックアップを作成してからツールキットをアンインストールしてください。

1. XenMobileのダウンロードページにログオンします。

2. XenMobile AppsおよびMDX Toolkitを展開します。

3. インストールするMDX Toolkitのバージョンを⾒つけてリンクをクリックし、ダウンロードを開始します。

4. macOSと Xcodeの最新バージョンのmacOS FinderツールでMDXToolkit.mpkgを開きます。バージョンの要件について詳しくは「システム要件」を参照してください。

デフォルトのインストールパスは、Applications/Citrix/MDXToolkitです。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 26

MDX Toolkit

5. Windows コンピューターで Java コマンドラインツールを実⾏する場合は、ManagedApp.jar およびManagedAppUtility.jarを Androidのラッピング前提条件を満たしているWindowsコンピューターに直接コピーします。詳しくは、「システム要件」を参照してください。

6. GUIツールを使⽤して Androidアプリをラップするには、Applications/Citrix/MDXToolkitにインストールされた android_settings.txtファイルのパス情報を更新する必要があります。この⼿順を完了しないと、GUIツールが前提条件を特定できません。

重要:

Androidアプリをラップする時に、MDX Toolkitを実⾏しているコンピューターのロケールを英語にしていないとMDX Toolkitが失敗することがあります。

a) android_settings.txtを書き込み可能なフォルダーにコピーします。

b) テキストエディターで android_settings.txtファイルを編集します。Vimを使⽤するには、次のコマンドラインを使⽤できます。パスワードの⼊⼒を求めるメッセージが表⽰されたら⼊⼒します。Terminalウィンドウでファイルが開きます。

sudo vim /Applications/Citrix/MDXToolkit/android_settings.txt

c) 環境の JDKバイナリおよび Android SDKバイナリへのパスでファイルを更新します。

settings.txt ファイルの「PATH =」⾏の最後に次を追加します。(Mac/Unix では「:」で区切り、Windowsでは「;」で区切る)

PATH = /bin:/usr/bin:/usr/sbin/sbin:/<Install Location> /adt-bundle-mac-x86_64-20130729/sdk:/<Install Location>/adt-bundle-mac-x86_64-20130729/sdk/tools:<Install Location>/adt-bundle-mac-x86_64-20130729/sdk/platform-tools:Documents/Android SDK/apktools

d) 更新されたファイルを同じ名前(android_settings.txt)で保存して、ファイルを Applications/C-itrix/MDXToolkitにコピーします。

このフォルダーにコピーするために、パスワードが要求されることがあります。

このインストールパッケージには、MDX Toolkitをアンインストールするためのユーティリティが付属しています。このユーティリティは、コンピューター上の/Applications/Citrix/CGAppPrepTool/Uninstaller.app/Contentsにインストールされます。ツールをアンインストールするには、このユーティリティをダブルクリックして、表⽰さ

© 1999-2020 Citrix Systems, Inc. All rights reserved. 27

MDX Toolkit

れるメッセージに従って操作します。ツールのアンインストール時に、ユーザー名とパスワードを⼊⼒するための画⾯が開きます。

暗号化管理

January 10, 2020

暗号化管理を使⽤すると、最新のデバイスプラットフォームセキュリティを使⽤しながら、デバイスをプラットフォームセキュリティを効果的に使⽤するのに⼗分な状態に保つことができます。デバイスが暗号化管理に準拠していると⾒なされるために準拠しなければならない、⼀連のセキュリティ基準が識別されます。その後、⾮準拠デバイスを識別して、この基準によって⾮準拠のデバイス上のアプリへのアクセスを制限できます。

暗号化管理を使⽤すると、ファイルシステムの暗号化が Androidおよび iOSプラットフォームによって提供されるため、ローカルデータの暗号化の冗⻑性がなくなります。また、暗号化管理によって、パフォーマンスが改善(⼆重暗号化の回避)し、MDXとのアプリケーション互換性が向上します。

注:

使⽤にあたって、Citrix Endpoint Managementで新しいレポートを実⾏して、⾮準拠デバイスが組織内にあることをリスト化できます。このレポートは、コンプライアンスの実施による影響を判断するのに役⽴ちます。レポートにアクセスするには、Endpoint Managementコンソールを開き、[分析]>[レポート]>[⾮準拠デバイス]に移動してレポートを⽣成します。⾮準拠デバイスレポートは、Citrix Endpoint Managementバージョン 19.6.0.2以降を実⾏している環境で利⽤できます。

暗号化の種類

暗号化管理機能を使⽤するには、Endpoint Managementコンソールで、暗号化の種類のMDXポリシーを[コンプライアンス強制によるプラットフォーム暗号化]に設定します。これにより、暗号化管理とユーザーのデバイス上の既存のすべての暗号化アプリケーションデータを、MDXではなくデバイスによって暗号化された状態にシームレスに移⾏できます。この移⾏中、アプリはワンタイムデータ移⾏のために⼀時停⽌します。移⾏が成功すると、ローカルに保存されたデータの暗号化に対する責任が、MDXからデバイスプラットフォームに移ります。MDXは引き続き、アプリが起動されるたびにデバイスのコンプライアンスをチェックします。この機能は、MDM + MAM環境とMAMのみの環境の両⽅で機能します。

暗号化の種類ポリシーを[コンプライアンス強制によるプラットフォーム暗号化]に設定すると、新しいポリシーが既存のMDX暗号化よりも優先されます。

暗号化管理MDXポリシーの詳細については、以下のページの「暗号化」セクションを参照してください:

• サードパーティ iOSアプリのMDXポリシー• サードパーティ AndroidアプリのMDXポリシー

© 1999-2020 Citrix Systems, Inc. All rights reserved. 28

MDX Toolkit

⾮準拠デバイスの動作

デバイスが最⼩コンプライアンス要件を下回ると、⾮準拠デバイスの動作MDXポリシーによって、実⾏する操作を次の中から選択することができます:

• アプリを許可 -アプリが正常に動作することを許可します。• 警告後にアプリを許可する -アプリが最⼩コンプライアンス要件を満たしていないことをユーザーに警告してから、アプリの実⾏を許可します。これがデフォルト値です。

• アプリを許可しない –アプリの実⾏を許可しません。

デバイスが最⼩コンプライアンス要件を満たしているかどうかは、次の基準で決まります。

iOSを実⾏しているデバイスの場合:

• iOS 10:指定されたバージョン以上のバージョンのオペレーティングシステムをアプリで実⾏している。• デバッガーアクセス:アプリでデバッグが有効になっていない。• ジェイルブレイクされたデバイス:アプリがジェイルブレイクされたデバイスで実⾏されていない。• デバイスのパスコード:デバイスのパスコードがオンになっている。• データ共有:アプリに対してデータ共有が有効になっていない。

Androidを実⾏しているデバイスの場合:

• Android SDK 24(Android 7 Nougat):指定されたバージョン以上のバージョンのオペレーティングシステムをアプリで実⾏している。

• デバッガーアクセス:アプリでデバッグが有効になっていない。• Root化済みデバイス:Root化済みデバイスでアプリが実⾏されていない。• デバイスのロック:デバイスのパスコードがオンになっている。• 暗号化された端末:暗号化された端末でアプリが実⾏されている。

iOSモバイルアプリのラッピング

March 5, 2020

ここでは、Citrix Endpoint Managementの管理者がサードパーティ製のエンタープライズアプリをラップする⽅法と、開発者が ISVアプリをラップする⽅法について説明します。iOSモバイルアプリをラップするには、次の⼿順に従います:

• MDX Serviceを使⽤する。詳しくは、「MDX Service」を参照してください。• MDX Toolkitを使⽤する。MDX Toolkitには、macOSグラフィカルユーザーインターフェイスツールとmacOSコマンドラインツールが含まれます。macOSコマンドラインツールにはカスタマイズのオプションがあり、アプリのラッピングプロセスを⾃動化するスクリプトから参照でき、MDXポリシーを事前設定できます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 29

MDX Toolkit

ラップされたアプリのファイルタイプは.mdxです。.mdxファイルを Endpoint Managementコンソールにアップロードし、このコンソールで Endpoint Management Storeが適⽤する特定のアプリの詳細およびポリシー設定を構成します。ユーザーがサインオンすると、ストアにアプリが表⽰されます。ユーザーはアプリをサブスクライブし、ダウンロードして、デバイス上にインストールできます。

以下の図は、MDX Toolkitのインストールから業務⽤モバイルアプリのテストまで、アプリをラップする⼿順の概要です。図の下の⼀覧は、関連するトピックです。

番号 1について詳しくは、以下を参照してください。

• システム要件• iOSモバイルアプリをラップするためのその他の要件• Endpoint Managementの互換性• MDX Toolkitのインストール

番号 2について詳しくは、以下を参照してください。

• プロビジョニングプロファイルの作成

© 1999-2020 Citrix Systems, Inc. All rights reserved. 30

MDX Toolkit

• アプリのアップグレード• ポリシーと業務⽤モバイルアプリ• GUIを使ったエンタープライズアプリラッピング• コマンドラインを使った iOSエンタープライズアプリラッピング• コマンドオプション• iOSアプリのMDXポリシーの事前設定• iOSアプリのラッピングエラーの識別• iOSデバイスでのシステムログの収集• MDXアプリを Citrix Endpoint Managementに追加するには

重要:

アプリのラップに使⽤されるMDX Toolkitのバージョンと互換性がある Secure Hubのバージョンでユーザーデバイスを更新してください。更新しない場合、互換性がないことを⽰すエラーメッセージが表⽰されます。詳しくは、「Endpoint Managementの互換性」を参照してください。

Apple DEPを介した iOSデバイスの展開

Apple Device Enrollment Program(DEP)を利⽤するには、Apple Deployment Program に登録します。Apple DEPを使⽤して Citrix Endpoint Managementで iOSデバイスおよびmacOSデバイスを展開し、管理できます。Apple Deployment Programに登録する⽅法など詳しくは、「Apple DEPを介した iOSとmacOSデバイスの展開」を参照してください。

プロビジョニングプロファイルの作成

物理的 iOSデバイス上で実⾏する任意のアプリ(Apple App Storeのアプリ以外)にプロビジョニングプロファイルおよび対応する配布⽤証明書で署名する必要があります。配布⽤の開発者プログラムには次の 2種類があります:

• iOS Developer Program(Ad-Hoc)• iOS Developer Enterprise Program。アプリをラップするには、Enterpriseプロファイルの使⽤をお勧めします。AppleのWebサイトからプログラムに登録できます。

Enterpriseプロファイルでは、アプリを実⾏できるデバイスの数に制限はありません。Ad Hocプロファイルでは、最⼤でおよそ 100台のデバイス上でアプリを実⾏できます。

Apple社は、新しい Enterpriseアカウントに対するワイルドカード App IDのサポートを廃⽌しました。使⽤するEnterpriseアカウントがワイルドカード App IDをサポートしない場合、次のように複数の特定 App IDおよびプロビジョニングプロファイルを作成する必要があります。

1. 有効な iOS配布⽤証明書があるかを検証します。

2. Apple Enterprise Developer ポータルから、MDX Toolkit でラップする各アプリで新しいプロビジョニングプロファイルと⼀意で明⽰的な App ID を作成します。有効な App ID の例:com.CompanyName.ProductName。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 31

MDX Toolkit

3. Apple Enterprise Developerポータルから、[Provisioning Profiles]>[Distribution]に移動して、社内プロビジョニングプロファイルを作成します。前述の⼿順で作成された App IDごとに、この⼿順を繰り返します。

4. すべてのプロビジョニングプロファイルをダウンロードします。

使⽤中の Apple Enterpriseアカウントがワイルドカード App IDをサポートしている場合、引き続きワイルドカード型のプロビジョニングプロファイルを使⽤してアプリをラップできます。ただし、Secure Mailがバックグラウンドで動作している場合に通知に Appleプッシュ通信サービス(APNs)を使⽤するには、特定型のプロビジョニングプロファイルと App IDを使⽤する必要があります。

MDXアプリをインストールするいずれのデバイス上にも、プロビジョニングされたプロファイルが必要です。プロファイルは、メールに添付することでユーザーデバイスに配布できます。ユーザーは添付されたプロファイルをクリックして、iOSデバイス上にプロファイルを追加できます。

プロビジョニングプロファイルと配布証明書について詳しくは、Appleデベロッパアカウントヘルプを参照してください。

iOSデバイスへプロビジョニングプロファイルを展開する⽅法および期限切れのプロファイルの処理について詳しくは、Endpoint Managementドキュメントの「プロビジョニングプロファイルデバイスポリシー」を参照してください。

アプリのアップグレード

重要:

App IDの変更またはワイルドカード App IDのプロビジョニングプロファイルの⼀部使⽤がアプリのアップグレードに影響を与えることがあるため、アップグレード前に確認してください。

• App IDが変更されない限り、以前にラップされたアプリはインプレースでアップグレードされます。たとえば、バンドル IDを com.citrix.mailから com.example.mailに変更する場合のアップグレードパスはありません。ユーザーはこのアプリを再インストールする必要があります。デバイスは、このアプリを新しいアプリと認識します。新しいアプリと以前のバージョンのアプリはデバイスに共存できます。

• com.citrixが含まれるバンドル IDでアプリをラッピングするために com.xxxxのように部分的なプロビジョニングプロファイルを使⽤する場合、インストール済みの MDXでラッピングされたアプリを削除して、最新の MDX Toolkitでラッピングされたアプリをインストールしてください。その結果、バンドル IDはcom.citrix.mailから comに変更され、ユーザーはアプリを再インストールする必要があります。

• インプレースアップグレードは、次の場合に成功します:アプリが完全なワイルドカード App IDでラッピングされ、新しいバージョンのアプリの App IDとインストールされたアプリの App IDが⼀致する。

ポリシーと業務⽤モバイルアプリ

© 1999-2020 Citrix Systems, Inc. All rights reserved. 32

MDX Toolkit

注:

MDX 10.7.5 リリースが、業務⽤モバイルアプリのラッピングをサポートする最後のリリースです。MDX10.7.10以降のリリース、またはMDX Serviceを使⽤して、業務⽤モバイルアプリ 10.7.5をラッピングすることはできません。業務⽤モバイルアプリには、パブリックアプリストアからアクセスする必要があります。

すべての業務⽤モバイルアプリに適⽤できるデフォルトの⼀般的なポリシーセットと、⼀部の業務⽤モバイルアプリのための特定のポリシーセットが使⽤できます。ポリシーのファイル名はバンドル IDに基づきます。デフォルトでは、Citrix Endpoint Managementアプリのポリシーのファイル名は com.citrix.app_policy_metadata.xmlという形式です(appは「mail」などの名前です)。

ワイルドカード App ID をサポートしていない Apple Enterprise アカウントがある場合、次を実⾏します:Endpoint Managementアプリをラップするときにバンドル IDで会社の識別⼦を変更します。たとえば、SecureMailのバンドル IDは、com.citrix.mailです。この場合、識別⼦の「citrix」を会社の識別⼦に置き換えます。会社の識別⼦が「example」であれば、バンドル IDは com.example.mailです。このアプリをラップする場合、ポリシーのファイル名は com.example.mail_policy_metadata.xmlになります。

どのポリシーファイルをアプリに適⽤するかを決定するために、MDX Toolkitは以下の順番でファイルを探し、最初に⾒つかったファイルを使⽤します。

1. 前述の例のようにバンドル IDに⼀致するファイル名(例:com.example.mail_policy_metadata.xml)。2. 元のバンドル IDに⼀致するファイル名(例:com.citrix.mail_policy_metadata.xml)。3. デフォルトの⼀般的なポリシーファイルに⼀致するファイル名(例:policy_metadata.xml)。

使⽤中のバンドル IDや元のバンドル IDに⼀致するファイルを変更して、特定の Citrix Endpoint Managementアプリでデフォルトの独⾃のポリシーセットを作成します。

GUIを使ったエンタープライズアプリラッピング

以下の⼿順は、Endpoint Managementから展開するエンタープライズアプリのラッピングに関する⼀般的なプロセスです。ISVアプリラッピングの⼀般的なプロセスについては、「GUIを使った ISVアプリラッピング」を参照してください。

重要:

グラフィカルユーザーインターフェイスを使⽤して iOSアプリをラップする前に、Macのキーチェーンアクセスに秘密鍵と証明書の両⽅をインストールする必要があります。関連付けられた配布⽤証明書にキーチェーンアクセスにインストールされた秘密鍵がない場合、グラフィカルユーザーインターフェイスの[iOS Distribution Certificate]⼀覧には事前に設定されません。詳しくは、後述の「Toolkitが配布⽤証明書を⾒つけられない場合にキーチェーンを修復する」を参照してください。

1. ツールキットを使⽤してアプリをラップする前に、必要な場合に元に戻すことができるよう、アプリの元のバージョンのバックアップを作成します。

2. iOSアプリケーションフォルダーからMDX Toolkitを開始して、[For IT administrators]を選択して、[Next]をクリックします。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 33

MDX Toolkit

3.[Browse]をクリックしてファイルを選択し、[Next]をクリックします。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 34

MDX Toolkit

4.[Verify App Details]画⾯がアプリから取得された情報を表⽰します。必要に応じて、事前に⼊⼒された情報を変更します。オプションで、OSの最⼩および最⼤バージョンを指定し、アプリによる実⾏を許可しないデバイスの種類を⼀覧表⽰します。アプリを Citrix Endpoint Managementにアップロード後、アプリの詳細は変更できます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 35

MDX Toolkit

5.[Citrixモバイルアプリの作成]画⾯で、[Browse]をクリックし、プロビジョニングプロファイルを選択して、配布⽤証明書を選択します。iOS証明書⼀覧が空の場合、MDX Toolkitを実⾏しているマシンでキーチェーンを修復する必要があります。詳しくは、後述の「Toolkitが配布⽤証明書を⾒つけられない場合にキーチェーンを修復する」を参照してください。

6. 明⽰的な App IDを持つプロビジョニングプロファイルを選択した場合、ツールはアプリ IDの確認を求めます。例えば、Citrix Endpoint Managementアプリのバンドル IDは com.citrix.ProductNameです。使⽤するプロビジョニングプロファイルでは、「citrix」ではなく会社の識別⼦に置き換える必要があります。

[Yes]、[Create]の順にクリックします。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 36

MDX Toolkit

7. ワイルドカード App IDを持つプロビジョニングプロファイルを選択すると、ツールに使⽤可能な App ID⼀覧が表⽰されます。使⽤する App IDが⼀覧にない場合、別のプロビジョニングプロファイルを選択します。App IDの選択後、[Create]をクリックします。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 37

MDX Toolkit

8. MDXパッケージが作成されると、ツールキットが通知します。別のアプリをラップするには、[Start Over]をクリックします。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 38

MDX Toolkit

ツールキットはラップされた iOSアプリのファイル名の最後に _iOSを追加します。

コマンドラインを使った iOSエンタープライズアプリラッピング

注:

サードパーティ製アプリはアプリベンダーから直接購⼊してください。AppleストアからダウンロードされるiOSアプリは暗号化されており、ラップできません。

ツールキットを使⽤してアプリをラップする前に、必要な場合に元に戻すことができるよう、アプリの元のバージョンのバックアップを作成します。

次の例は、デフォルトの設定を使った基本的なアプリラッピングコマンドを⽰しています。特定のシステムについて、太字の情報を変更します。末尾のバックスラッシュは、コマンドが次の⾏に続いていることを意味しています。コマンドを実⾏する前に、これらの記号を削除してください。

これらのコマンドを実⾏するには、コマンドラインで/Applications/Citrix/MDXToolkit/ディレクトリに移動します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 39

MDX Toolkit

基本的な iOSラッピングコマンドラインは次のとおりです。

1 ./CGAppCLPrepTool \2 Wrap \3 ‒ Cert CERTIFICATE \4 ‒ Profile PROFILE \5 -bundleID ID \6 ‒ in INPUT_FILE \7 ‒ out OUTPUT_FILE

以下は、このコマンドラインオプションの例です。

1 ./CGAppCLPrepTool \2 Wrap \3 ‒ Cert “ iPhone Developer: Joe Admin (12MMA4ASQB)” \4 ‒ Profile “ team_profile.mobileprovision” \5 -bundleID “ com.CompanyABC.Sample” \6 ‒ in “ ~/Desktop/SampleApps/Sample.ipa” \7 ‒ out “ ~/Desktop/SampleApps/Sample.mdx”

以下は、前述のコマンドに追加できるオプションの例です。

-appName “Wrapped Sample app”

-appDesc “This is my newly wrapped iOS application.”

このオプションは両⽅とも、アプリから読み取られた値をデフォルトで使⽤します(可能な場合)

このオプションについて詳しくは、「コマンドオプション」を参照してください。インラインドキュメントを表⽰するには、–helpオプションを使⽤します。

コマンドオプション

Wrapコマンド

• Help:このコマンドのヘルプを表⽰します。• In:必須。ラッピングするアプリのパスおよびファイル名です。• Out:任意。出⼒される.mdxファイルのパスおよびファイル名です。このオプションを省略すると、⼊⼒ファイルと同じパスおよびファイル名と、mdx拡張⼦が使⽤されます。

• outBundle: Intuneにアップロードする.ipaファイルを⽣成する場合に必要です。出⼒される.ipaファイルのパスおよびファイル名です。

• Cert:必須。アプリに署名するために使⽤する証明書の名前です。• Profile:必須。アプリに署名するために使⽤するプロビジョニングファイルの名前です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 40

MDX Toolkit

• bundleID:ワイルドカード App IDをサポートしない Enterpriseアカウントに必要です。この値は、使⽤する Appleバンドル IDです。MDX Toolkitは、バンドル IDおよびプロビジョニングファイルに互換性があるかを検証します。

• Upgrade:これはレガシーアプリのためのオプションで、廃⽌予定です。ワイルドカードプロビジョニングプロファイルの⼀部を使⽤した場合のインプレースアップグレードに使⽤されます。このオプションは新しいバイナリが以前と同じバージョンのライセンスで署名されているかを確認します。ライセンスが⼀致しない場合、Secure Hubからアップグレードをインストールしようとしても失敗します。

• AppName:任意。アプリから取得したアプリ名(可能な場合)。• AppDesc:任意。アプリから取得したアプリの説明(可能な場合)。• MinPlatform:任意。サポートされるプラットフォームの最⼩バージョン。デフォルトは空⽩です。• MaxPlatform:任意。サポートされるプラットフォームの最⼤バージョン。デフォルトは空⽩です。• ExcludedDevices:任意。アプリの実⾏が許可されていないデバイスの種類⼀覧です。デフォルトは空⽩です。

• PolicyXML:任意。置換⽤の XMLポリシー定義ファイルとパスです。デフォルトは組み込みポリシー定義です。例:-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml. 詳しくは、次の「iOSアプリのMDXポリシーの事前設定」を参照してください。• useNetworkOnlylib:このオプションではMDX動的ライブラリのネットワーク専⽤軽量バージョンでアプリケーションをラップします。このオプションを使⽤してラップされたアプリケーションは、Intuneでのみ管理されるか、⾮管理対象として実⾏されます。MDXで管理することはできません。

• LogFile:任意。ログファイルの名前です。• LogWriteLevel:任意。ログレベルは 1〜 4です。• LogDisplayLevel:任意。通常出⼒のログレベルは 0〜 4です。

signコマンド

• Help:このコマンドのヘルプを表⽰します。• In:必須。ラッピングするアプリのパスおよびファイル名です。• Out:任意。出⼒される.mdxファイルのパスおよびファイル名です。このオプションを省略すると、⼊⼒ファイルと同じパスおよびファイル名と、mdx拡張⼦が使⽤されます。

• Cert:必須。アプリに署名するために使⽤する証明書の名前です。• Profile:必須。アプリに署名するために使⽤するプロビジョニングファイルの名前です。

setinfoコマンド

• Help:このコマンドのヘルプを表⽰します。• In:必須。変更するアプリのパスおよびファイル名です。• Out: setinfoの出⼒パスまたはファイル名は⼊⼒時と異なるものを使⽤する必要があります。• AppDesc:任意。アプリの説明です。指定されていない限り変更しません。• MinPlatform:任意。サポートされる最⼩ SDKレベルです。指定されていない限り変更しません。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 41

MDX Toolkit

• MaxPlatform:任意。サポートされる最⼤ SDKレベルです。指定されていない限り変更しません。• ExcludedDevices:任意。アプリの実⾏が許可されていないデバイスの種類⼀覧です。指定されていない限り変更しません。

• StoreURL:任意。アプリストアのアプリの URLです。指定されていない限り変更しません。• PolicyXML:任意。置換⽤の XMLポリシー定義ファイルとパスです。デフォルトは組み込みポリシー定義です。例:-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml. 詳しくは、次の「iOSアプリのMDXポリシーの事前設定」を参照してください。

iOSアプリのMDXポリシーの事前設定

MDX Toolkitコマンドラインツールでラップするアプリには、MDXポリシーを事前設定できます。アプリを追加する場合は、Citrix Endpoint Managementコンソールでポリシーを構成することもできます。

1. ポリシー XMLファイルでポリシー値を更新します。

MDX Toolkit インストーラーがポリシーファイルを作成します。Applications/Citrix/MDXToolkit/-data/policy_metadata.xml

注:

ポリシーファイルは、iOSおよび Androidで異なりますので注意してください。両⽅のプラットフォームのポリシーを事前設定するには、それぞれのポリシー XMLファイルを更新する必要があります。

2. コマンドラインでアプリをラップする時は、次を含めます。

-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml

iOSアプリのラッピングエラーの識別

iOSアプリをラップしようとしてエラーが発⽣する場合は、MDX Toolkitのログを使ってエラーを識別できます。MDX Toolkitのログを確認するには、管理者権限が必要です。

MDX Toolkitを実⾏すると、ツールにより次の場所にログファイルが保存されます。[Applications]>[Citrix]>[MDXToolkit]>[Logs]>[Citrix.log]。デフォルトでは、ツールによって警告およびエラーがログに保存されます。

iOSアプリでエラーが発⽣する場合、引数があるコマンドラインがログの最後に表⽰されます。コマンドラインをコピーして、[Terminal]でそれを実⾏できます。[Applications]>[Utilities]で[Terminal]をクリックし、Macコマンドラインインターフェイスを使ってコマンドを検証します。エラーを検証するため、アプリケーション要件の参照が必要なことがあります。

コマンドラインツールを使ってラッピング処理を実⾏する場合、コマンドラインで次の情報を指定できます:ログファイル場所、ログ表⽰レベル、ログ書き込みレベル。またコマンドラインで、詳細ログレベルおよび別のログファイルを指定することもできます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 42

MDX Toolkit

適切なプロビジョニングプロファイルの選択

モバイル iOSアプリをラップする場合、アプリのラップに成功したことを⽰す警告が発せられることがありますが、これにはエラーが含まれていることがあります。アプリケーションが従来使⽤しているプロビジョニングプロファイルと選択したプロビジョニングプロファイルが異なる場合に、エラーが発⽣することがあります。

MDX Toolkitは、特定のプロビジョニングプロファイルの問題に関してアラートを発することができます。たとえば、次の 1つまたは複数の機能がアプリで必要なことがあります。

• iOSアプリに対して iCloudデータ記憶域の使⽤を可能にする iCloudアプリ• Apple Push Notificationサービス(APNS)を使って iOSデバイスにメッセージを配信するプッシュ通知• 別のアプリに対するキーチェーンアイテムにアクセスする特殊キーチェーンアクセスグループの権利

ログにはアプリに不⾜しているキーと値のペアが表⽰されます。キーと値のペアごとに、エラーを修正する必要があるかを判断できます。エラーを修正しない場合、アプリが正常に機能しないことがあります。またキーと値のペアによっては、プロビジョニングプロファイルの修正が可能かどうかをチェックする必要があります。場合により、プロビジョニングプロファイルの修正ができない場合ことがあり、その場合は⽋陥があるアプリがリリースされます。

プロビジョニングファイルについて詳しくは、Apple Developerサイトを参照してください。

Toolkitが配布⽤証明書を⾒つけられない場合にキーチェーンを修復する

MDX Toolkitが iOS配布⽤証明書を認識しない場合、iCloudキーチェーンとMDX Toolkitを実⾏しているコンピューターのキーチェーンの間で問題が発⽣している可能性があります。ローカルのキーチェーンを修復するには、以下の⼿順に従います。

1. Macの場合、[システム環境設定]で[iCloud]をタップします。

2.[キーチェーン]チェックボックスをオフにします。

この⼿順によって、ローカルで同期したキーチェーンが iCloudから削除されます。

3. アプリケーションフォルダーのユーティリティフォルダーにあるキーチェーンアクセスを開きます。

4. ラップされたアプリの署名に使⽤される iOS Developer証明書を削除します。通常この証明書は、「iPhoneDistribution: 会社名」証明書と関連する秘密鍵です。

5. キーチェーンアクセスメニューで、[Keychain First Aid]を選択します。

6.[Keychain First Aid]ダイアログボックスで、[修復]、[開始]の順にタップします。

7. 修復の完了後、[検証]、[開始]をタップします。

8. 修復が成功した場合は、再度 iOS配布⽤証明書をキーチェーンアクセスアプリにインポートします。

9. MDX Toolkitを開始します。iOS配布⽤プロビジョニングプロファイルおよび iOS配布⽤証明書フィールドにはユーザーの情報を含める必要があります。

10. 必要な場合、キーチェーンを iCloudに再同期します。[システム環境設定]で[iCloud]をタップし、[キーチェーン]チェックボックスを選択します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 43

MDX Toolkit

Worx SDKが含まれるアプリの再署名

XcodeでアプリにWorx SDKが組み込まれている場合は、エンタープライズ証明書かプロビジョニングファイルで再度署名する必要があります。以下は「Sign Command」のサンプルです。

1 $ /Applications/Citrix/MDXToolkit/CGAppCLPrepTool Sign -help23 Command Line Interface for MDX Toolkit, version 10.4.1.290 (Env:

Test)45 2016-09-29 15:21:45.284 CGAppCLPrepTool[88453:5477658]67 ---------------------------------------------------------89 Sign Command1011 ---------------------------------------------------------1213 CGAppCLPrepTool Sign -in INPUTFILE -out OUTPUTFILE -Cert

CERTIFICATE -Profile PROFILE1415 -Cert CERTIFICATE ==> (Required)Name of the certificate to

sign the app with1617 -Profile PROFILE ==> (Required)Name of the provisioning

profile to sign the app with1819 -in INPUTFILE ==> (Required)Name of the input app file,

ipa/mdx file2021 -out OUTPUTFILE ==> (Optional)Name of the output app, ipa(

if ipa is input)/mdx file2223 -upgrade ==> (Optional)Preserve in-place upgrade

capabilty (not recommended for new apps)2425 ---------------EXAMPLE--------------------2627 Sign -Cert ”iPhone Distribution: Company Name” -Profile ”

distributionprovisioanl.mobileprovision” -in ”/Users/user1/Archives/citrix.ipa”

© 1999-2020 Citrix Systems, Inc. All rights reserved. 44

MDX Toolkit

iOSデバイスでのシステムログの収集

iOSデバイスで、iPhone構成ユーティリティツールまたは Xcodeを使⽤してシステムログを収集できます。その後、ファイルをメールで Citrixサポートに送信して、アプリの問題をトラブルシューティングできます。

構成ユーティリティツールを使⽤して iOSデバイスでシステムログを収集するには

1. Apple Configurator(以前の iPhone構成ユーティリティツール)をAppleからダウンロードしてインストールします。このツールは iPhoneでも iPadでも使⽤できます。

2. 使⽤するデバイスがシステム要件とサポートされている⾔語に対応していることを確認してください。3. インストーラーを実⾏し、プロンプトに従ってウィザードを完了します。4. 構成ツールを開きます。5.[デバイス]で、デバイスをクリックします。6.[ターミナル]、[消去]の順にクリックして既存のログをクリアします。7. 問題を再現し、[Save Console As]をクリックしてから、ログを添付したメールをサポートに送信します。

Xcodeを使⽤して iOSデバイスでログを収集するには

1. Macで[Finder]、[移動]、[ユーティリティ]に移動します。

2.[ユーティリティ]フォルダーで[コンソール]をダブルクリックします。

3.[コンソール]の[デバイス]で、コンソールログを取得する iOSデバイスを選択します。

4. 問題を再現します。

5.[コンソール]で、次のいずれかの操作を⾏います:

• メインウィンドウで、最近のエラーメッセージを選択します。•[コンソール]のメニューバーで、[編集]、[すべてを選択]の順に選択します。

6.[編集]、[コピー]の順にクリックします。

7. TextEditを開いて、新しいファイルにコピーするログをペーストします。

8. メールにファイルを添付してサポートに送信します。

Androidモバイルアプリのラッピング

March 5, 2020

ここでは、Citrix Endpoint Managementの管理者がサードパーティ製のエンタープライズアプリをラップする⽅法と、開発者が ISVアプリをラップする⽅法について説明します。Androidモバイルアプリをラップするには、

© 1999-2020 Citrix Systems, Inc. All rights reserved. 45

MDX Toolkit

MDX Toolkitを使⽤します。MDX Toolkitには、macOSグラフィカルユーザーインターフェイスツールと Javaコマンドラインツールが含まれます。コマンドラインツールにはカスタマイズのオプションがあり、アプリのラッピングプロセスを⾃動化するスクリプトから参照でき、MDXポリシーを事前設定できます。

ラップされたアプリのファイルタイプは.mdxです。.mdxファイルを Endpoint Managementコンソールにアップロードし、このコンソールで Endpoint Management Storeが適⽤する特定のアプリの詳細およびポリシー設定を構成します。ユーザーがサインオンすると、アプリストアにアプリが表⽰されます。ユーザーはアプリをサブスクライブし、ダウンロードして、デバイス上にインストールできます。

以下の図は、MDX Toolkitのインストールから業務⽤モバイルアプリのテストまで、アプリをラップする⼿順の概要です。図の下の⼀覧は、関連するトピックです。

番号 1について詳しくは、以下を参照してください。

• システム要件• Androidモバイルアプリをラップするためのその他の要件• Endpoint Managementの互換性• MDX Toolkitのインストール

番号 2について詳しくは、以下を参照してください。

• コマンドラインを使った Android ISVアプリラッピング• コマンドラインを使った Androidのエンタープライズアプリラッピング

© 1999-2020 Citrix Systems, Inc. All rights reserved. 46

MDX Toolkit

• コマンドオプション• AndroidアプリのMDXポリシーの事前設定• Androidアプリのラッピングエラーの識別• コマンドラインからログを収集する• MDXアプリの追加

重要:

アプリのラップに使⽤されるMDX Toolkitのバージョンと互換性がある Secure Hubのバージョンでユーザーデバイスを更新してください。更新しない場合、互換性がないことを⽰すエラーメッセージが表⽰されます。詳しくは、「Endpoint Managementの互換性」を参照してください。

GUIを使った ISVアプリラッピング

以下の⼿順は、Google Play Storeから展開する ISVアプリのラッピングに関する⼀般的なプロセスです。

1. ツールキットを使⽤してアプリをラップする前に、必要な場合に元に戻すことができるよう、アプリの元のバージョンのバックアップを作成します。

2. iOS アプリケーションフォルダーから MDX Toolkit を開始して、[Independent Software Vendors(ISVs)]を選択し、[Next]をクリックします。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 47

MDX Toolkit

3. アプリストア画⾯の[Deploy]でアプリを選択して[Next]をクリックします。

4. アプリストア URLがある場合、[User Settings]画⾯に⼊⼒します。URLがない場合は、https://play.google.com/store/apps/details?id=com.citrixのようなプレースホルダーを⼊⼒します。URLは後から更新できます。

Premiumアプリの場合は、[MDX apps]を選択します。Generalアプリの場合は[App Store apps]を選択します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 48

MDX Toolkit

5.[Verify App Details]画⾯で必要な詳細を更新します。

6. キーストアを参照して[Create]をクリックします。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 49

MDX Toolkit

7. アプリを保存します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 50

MDX Toolkit

GUIツールによるアプリのラップが終了すると、アプリケーションファイル名は「_andr」が付加されています。

コマンドラインを使った Androidのエンタープライズアプリラッピング

エンタープライズアプリラッピングを使ってカスタム(インハウス)アプリおよび⼀部のサードパーティ製アプリをラップできます。サードパーティ製のアプリはアプリケーションのベンダーから直接購⼊する必要があります。エンタープライズアプリラッピングの場合、Androidアプリケーション(.apk)から始めます。ツールキットを使⽤してアプリをラップする前に、必要な場合に元に戻すことができるよう、アプリの元のバージョンのバックアップを作成します。

次の例は、デフォルトの設定を使った基本的なアプリラッピングコマンドを⽰しています。アプリは指定のキーストアで署名されます。キーストアは、Androidアプリの署名に使⽤される証明書を含むファイルです。キーストアに複数の秘密鍵が含まれる場合、キーエイリアスを指定できます。キーストアを 1回作成します。次に、作成したキーストアを使⽤してラップするアプリに署名します。以前に展開したアプリの新しいバージョンをラップする時に違うキ

© 1999-2020 Citrix Systems, Inc. All rights reserved. 51

MDX Toolkit

ーストアを使⽤すると、このアプリのアップグレードは機能しなくなります。ユーザーは新しいバージョンをインストールする前に、古いバージョンを⼿動で削除する必要があります。

特定のシステムについて、太字の情報を変更します。末尾のバックスラッシュは、コマンドが次の⾏に続いていることを意味しています。コマンドを実⾏する前に、これらの記号を削除してください。

注:

/Applications/ディレクトリは制限されているため、スーパーユーザーモードで次のコマンドを実⾏する必要があることがあります。これを実⾏するには、コマンドの前に sudoを追加します。この制限されたディレクトリから実⾏する場合は、コンピューターのパスワードが求められます。

1 java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \2 wrap \3 -in ~/Desktop/SampleApps/Sample.apk \4 -out ~/Desktop/SampleApps/Sample.mdx \5 -keystore ~/Desktop/MyCompany.keystore \6 -storepass MyKeystorePassword \7 -keyalias MyCompanyKeyAlias \8 -keypass MyKeyAliasPassword

以下は、太字の情報を変更した後で、前述のコマンドに追加できるオプションの例です。

• -appName “ラップされたサンプルアプリ”• -appDesc “これは新しくラップされた Androidアプリです。”

また、展開中リリースキーストアが使⽤できない場合、次のコマンドを使⽤して使⽤中のキーで署名されたモバイルアプリのリテールビルドを作成します。

1 java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \2 wrap \3 -in ~/Desktop/SampleApps/Sample.apk \4 -out ~/Desktop/SampleApps/Sample.mdx \5 -keystore ~/Desktop/MyCompany.keystore \6 -storepass MyKeystorePassword \7 -keyalias MyCompanyKeyAlias \8 -keypass MyKeyAliasPassword \9 -createCert

このオプションについて詳しくは、「コマンドオプション」を参照してください。インラインドキュメントを表⽰するには、–helpオプションを使⽤します。

コマンドラインを使った Android ISVアプリラッピング

ツールキットを使⽤してアプリをラップする前に、必要な場合に元に戻すことができるよう、アプリの元のバージョンのバックアップを作成します。Android⽤のラップされた ISVアプリケーションを⽣成するには、次の基本的ラッ

© 1999-2020 Citrix Systems, Inc. All rights reserved. 52

MDX Toolkit

ピングコマンドから始めます。

1 java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \2 wrap \3 -in ~/Desktop/SampleApps/Sample.apk \4 -out ~/Desktop/SampleApps/Sample.mdx \5 -keystore ~/Desktop/MyCompany.keystore \6 -storepass MyKeystorePassword \7 -keyalias MyCompanyKeyAlias \8 -keypass MyKeyAliasPassword \9 -createCert

アプリを ISVアプリケーションとしてラップするには、-apptypeパラメーターを次のように設定する必要があります:

• Premium:管理対象外のユーザーにも Citrixポリシーを適⽤する Premiumアプリとしてアプリをラップするには、次のオプションを追加します。-apptype Premium

• General:Citrixポリシーの適⽤がない Generalアプリとしてアプリをラップするには、次のオプションを追加します。-apptype General

ラップされた.apkファイルを Google PlayストアまたはWebサーバーにアップロードする必要があり、ラップ時に URLがわかる場合、-storeURLオプションを追加します。apptypeパラメーターを確実に設定してください。

-storeURL ”https://play.google.com/store/apps/details?id=com.zenprise”

ラップ時に URLがわからない場合は、次のコマンドを使って後から.mdxファイルを変更できます。

1 java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \2 setinfo \3 -in ~/Desktop/SampleApps/Sample.mdx \4 -out ~/Desktop/SampleApps/wrapped/Sample.mdx \5 -storeURL \6 “ https://play.google.com/store/apps/details?id=com.zenprise”

ポリシーファイルをカスタマイズする場合、変更されたファイルを参照することを確認します。

-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xmlこのオプションについて詳しくは、「コマンドオプション」を参照してください。インラインドキュメントを表⽰するには、–helpオプションを使⽤します。

コマンドオプション

wrapコマンド

• Help:このコマンドのヘルプを表⽰します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 53

MDX Toolkit

• In:必須。ラッピングするアプリのパスおよびファイル名です。

• Out:任意。出⼒される.mdxファイルのパスおよびファイル名です。このオプションを省略すると、⼊⼒ファイルと同じパスおよびファイル名と、mdx拡張⼦が使⽤されます。

• AppType:任意。デフォルトはMDXOnlyです。ISVアプリを⽣成するには、Generalまたは Premiumを使⽤します。

• KeyStore:キーストアファイルへのパス。.apkファイルに署名する場合に必要です。

• StorePass:キーストアのパスワードです。.apkファイルに署名する場合に必要です。

• KeyAlias:キーストア内の特定のキーの名前です。.apkファイルに署名する場合に必要です。

• KeyPass:特定のキーのパスワードです。.apkファイルに署名する場合に必要です。

• SigAlg:任意。署名時に使⽤するアルゴリズムです。

• AppName:任意。アプリから取得したアプリ名(可能な場合)。

• AppDesc:任意。アプリから取得したアプリの説明(可能な場合)。

• MinPlatform:任意。サポートされる最⼩ SDKレベルです。デフォルトは空⽩です。

• MaxPlatform:任意。サポートされる最⼤ SDKレベルです。デフォルトは空⽩です。

• ExcludedDevices:任意。アプリの実⾏が許可されていないデバイスの種類⼀覧です。デフォルトは空⽩です。

• PolicyXML:任意。置換⽤の XMLポリシー定義ファイルとパスです。デフォルトは組み込みポリシー定義です。例:

-policyxml/Applications/Citrix/MDXToolkit/data/policy_metadata.xml

詳しくは、次の「AndroidアプリのMDXポリシーの事前設定」を参照してください。

• StoreURL: ISVアプリの場合、Google App Storeのアプリの URLデフォルトは空⽩です。

signコマンド

• Help:このコマンドのヘルプを表⽰します。• In:必須。ラッピングするアプリのパスおよびファイル名です。• Out:任意。出⼒される.mdxファイルのパスおよびファイル名です。このオプションを省略すると、⼊⼒ファイルと同じパスおよびファイル名と、mdx拡張⼦が使⽤されます。

• KeyStore:必須。キーストアファイルへのパス。• StorePass:必須。キーストアのパスワードです。• KeyAlias:必須。キーストア内の特定のキーの名前です。• KeyPass:必須。特定のキーのパスワードです。• SigAlg:任意。署名時に使⽤するアルゴリズムです。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 54

MDX Toolkit

setinfoコマンド

• Help:このコマンドのヘルプを表⽰します。

• In:必須。変更するアプリのパスおよびファイル名です。

• Out: setinfoの出⼒パスまたはファイル名は⼊⼒時と異なるものを使⽤する必要があります。

• AppType:任意。デフォルトはMDXOnlyです。ISVアプリを⽣成するには、Generalまたは Premiumを使⽤します。

• KeyStore:キーストアファイルへのパス。.apkファイルに署名する場合に必要です。

• StorePass:キーストアのパスワードです。.apkファイルに署名する場合に必要です。

• KeyAlias:キーストア内の特定のキーの名前です。.apkファイルに署名する場合に必要です。

• KeyPass:特定のキーのパスワードです。.apkファイルに署名する場合に必要です。

• SigAlg:任意。署名時に使⽤するアルゴリズムです。

• AppName:任意。アプリから取得したアプリ名(可能な場合)。

• AppDes:任意。アプリから取得したアプリの説明(可能な場合)。

• MinPlatform:任意。サポートされる最⼩ SDKレベルです。デフォルトは空⽩です。

• MaxPlatform:任意。サポートされる最⼤ SDKレベルです。デフォルトは空⽩です。

• ExcludedDevices:任意。アプリの実⾏が許可されていないデバイスの種類⼀覧です。デフォルトは空⽩です。

• StoreURL: ISVアプリの場合、Google App Storeのアプリの URLデフォルトは空⽩です。

• PolicyXML:任意。置換⽤の XMLポリシー定義ファイルとパスです。デフォルトは組み込みポリシー定義です。例:

-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml

詳しくは、次の「AndroidアプリのMDXポリシーの事前設定」を参照してください。

AndroidアプリのMDXポリシーの事前設定

MDX Toolkitコマンドラインツールでラップするアプリには、MDXポリシーを事前設定できます。アプリを追加する場合は、Citrix Endpoint Managementコンソールでポリシーを構成することもできます。

1. ポリシー XMLファイルでポリシー値を更新します。

MDX Toolkit インストーラーがポリシーファイルを作成します。Applications/Citrix/MDXToolkit/-data/policy_metadata.xml

© 1999-2020 Citrix Systems, Inc. All rights reserved. 55

MDX Toolkit

注:

ポリシーファイルは、iOSおよび Androidで異なりますので注意してください。両⽅のプラットフォームのポリシーを事前設定するには、それぞれのポリシー XMLファイルを更新する必要があります。

2. コマンドラインでアプリをラップする時は、次を含めます。

-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml

Androidアプリのラッピングエラーの識別

Androidアプリをラップしようとしてエラーが発⽣する場合は、MDX Toolkitのログを使ってエラーを識別できます。MDX Toolkitのログを確認するには、管理者権限が必要です。

MDX Toolkit を実⾏すると、ツールにより次の場所にログファイルが⾃動的に保存されます。Application-s/CitrixMDXToolkit/Logs/Citrix.log。デフォルトでは、ツールによって警告およびエラーがログに保存されます。

コマンドラインからログを収集する

1. AndroidDeveloperWebサイトからAndroidDebugBridgeをインストールします。詳しくは、「AndroidDebug Bridge」を参照してください。

2. 次のコマンドを⼊⼒して、既存のログをクリアします。“adb logcat -c”3. 問題を再現します。4. 次のコマンドを⼊⼒して、ログをファイルにキャプチャします。adb logcat -d > Name_of_Log_File.txt

サードパーティアプリのMDXポリシーの概要

March 5, 2020

この⽂書では、サードパーティの iOSアプリおよび Androidアプリに関する MDXポリシーについて説明します。MDX ToolkitはWindowsをサポートしていません。「注」には、制限事項やシトリックスの推奨事項が⽰されています。Android for Workコンテナがサポートするポリシーを確認するには、「Android for Work」の関連セクションを参照してください。

Citrix業務⽤モバイルアプリのポリシーについては、「業務⽤モバイルアプリのMDXポリシーの概要」を参照してください。

注:

© 1999-2020 Citrix Systems, Inc. All rights reserved. 56

MDX Toolkit

Secure Hubでは、特定の操作中にポリシーが更新されます。詳しくは、「Secure Hubの管理」を参照してください。

認証

デバイスのパスコード

• iOS:使⽤

• Android:なし

• デフォルト設定:オフ

注:

このポリシーは、サポートが中⽌された iOS 9デバイスにのみ適⽤されます。

アプリのパスコード

• iOS:使⽤• Android:使⽤• デフォルト設定:オン

オンラインセッションを必須とする

• iOS:使⽤• Android:なし• デフォルト設定:オフ

最⼤オフライン期間

• iOS:使⽤• Android:使⽤• デフォルト設定:168時間(7⽇)

代替 NetScaler Gateway

• iOS:使⽤• Android:使⽤• デフォルト設定:空

© 1999-2020 Citrix Systems, Inc. All rights reserved. 57

MDX Toolkit

デバイスのセキュリティ

ジェイルブレイクまたは Root化を禁⽌

• iOS:使⽤• Android:使⽤• デフォルト設定:オン

デバイスのロックを必須とする

• iOS:なし• Android:使⽤• デフォルト設定:オフ

ネットワークの要件

Wi-Fiを必須とする

• iOS:使⽤• Android:使⽤• デフォルト設定:オフ

許可されたWi-Fiネットワーク

• iOS:使⽤• Android:使⽤• デフォルト設定:空

その他のアクセス

アプリ更新猶予期間(時間)

• iOS:使⽤

• Android:使⽤

• デフォルト設定:168時間(7⽇)

注:

0以外の値を使⽤することをお勧めします。値が 0の場合、更新をダウンロードしてインストールするまで、警告なしですぐに実⾏中のアプリの使⽤が禁⽌されます。場合によっては、アプリケーションが

© 1999-2020 Citrix Systems, Inc. All rights reserved. 58

MDX Toolkit

強制終了され、作業内容が失われる可能性があります。

ロック時にアプリデータを消去

• iOS:使⽤• Android:使⽤• デフォルト設定:オフ

アクティブなポーリング周期(分)

• iOS:使⽤

• Android:使⽤

• デフォルト設定:60分(1時間)

注:

リスクの⾼いアプリにのみこの値をデフォルトよりも低く設定します。そうでないと、パフォーマンスが低下する可能性があります。

暗号化

暗号化の種類

• iOS:使⽤

• Android:使⽤

• デフォルト設定:MDX暗号化

注意:

注意:新たに追加したアプリの場合、[コンプライアンス強制によるプラットフォーム暗号化]から[MDX暗号化]に変更すると、アプリの削除と再インストールをする必要があります。新たに追加したアプリの場合、デフォルトの設定は[コンプライアンス強制によるプラットフォーム暗号化]です。

⾮準拠デバイスの動作

• iOS:使⽤• Android:使⽤• デフォルト設定:警告後にアプリを許可する

© 1999-2020 Citrix Systems, Inc. All rights reserved. 59

MDX Toolkit

MDX暗号化の有効化

• iOS:使⽤

• Android:なし

• デフォルト設定:オン

注意:

アプリの展開後にこのポリシーを変更すると、ユーザーはアプリを再インストールする必要があります。

暗号キー

• iOS:なし• Android:使⽤• デフォルト設定:[オフラインアクセスを許可]のみを実⾏できます。

MDXプライベートファイルの暗号化

• iOS:なし• Android:使⽤• デフォルト設定:セキュリティグループ

プライベートファイルの暗号化から除外する対象

• iOS:なし• Android:使⽤• デフォルト設定:空

パブリックファイルへのアクセス制限

• iOS:なし• Android:使⽤• デフォルト設定:空

データベースの暗号化から除外する対象

• iOS:使⽤• Android:なし• デフォルト設定:空

© 1999-2020 Citrix Systems, Inc. All rights reserved. 60

MDX Toolkit

MDXパブリックファイルの暗号化

• iOS:なし• Android:使⽤• デフォルト設定:セキュリティグループ

パブリックファイルの暗号化から除外する対象

• iOS:なし• Android:使⽤• デフォルト設定:空

パブリックファイルの移⾏

• iOS:なし• Android:使⽤• デフォルト設定:書き込み(WO/RW)

ファイルの暗号化から除外する対象

• iOS:使⽤• Android:なし• デフォルト設定:空

セキュリティグループ

• iOS:使⽤

• Android:使⽤

• デフォルト設定:空

注意:

既存のアプリに対してこのポリシーを適⽤する前に、アプリの削除と再インストールが必要です。

アプリ相互作⽤

切り取りおよびコピー

• iOS:使⽤

© 1999-2020 Citrix Systems, Inc. All rights reserved. 61

MDX Toolkit

• Android:使⽤• デフォルト設定:制限

貼り付け

• iOS:使⽤• Android:使⽤• デフォルト設定:制限なし

ドキュメント交換(このアプリケーションで開く)

• iOS:使⽤• Android:使⽤• デフォルト設定:制限

Restricted Open-In exception list

• iOS:使⽤

• Android:使⽤

• デフォルト設定:空(Androidの場合)。Office 365アプリ(iOSの場合)

注意:

このポリシーのセキュリティについて予想される事柄について検討します。除外⼀覧を使うと、管理されていないアプリとセキュアなMDX環境間でコンテンツをやり取りできます。

受信ドキュメント交換 (このアプリケーションで開く)

• iOS:使⽤• Android:使⽤• デフォルト設定:制限なし(Androidと iOSの場合)。すべて(Android for Workの場合)

アプリの URLスキーム

• iOS:使⽤• Android:なし• デフォルト設定:すべての登録済みアプリの URLスキームはブロックされます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 62

MDX Toolkit

フィルタリングから除外された URLドメイン

• iOS:使⽤• Android:使⽤• デフォルト設定:空

許可する URL

• iOS:使⽤• Android:なし• デフォルト設定:+maps.apple.com+itunes.apple.comˆhttp:=ctxmobilebrowser:ˆhttps:=ctxmobilebrowsers:ˆmailto:=ctxmail:+ˆcitrixreceiver:+ˆtelprompt:+ˆtel:+ˆcol-g2m-2:+ˆcol-g2w-2:+ˆmaps:ios_addr+ˆmapitem:

許可する Secure Webドメイン

• iOS:使⽤• Android:使⽤• デフォルト設定:空

アプリ制限

カメラを禁⽌

• iOS:使⽤• Android:使⽤• デフォルト設定:オン

© 1999-2020 Citrix Systems, Inc. All rights reserved. 63

MDX Toolkit

ギャラリーを禁⽌

• iOS:なし• Android:使⽤• デフォルト設定:オフ

フォトライブラリを禁⽌

• iOS:使⽤• Android:なし• デフォルト設定:オン

マイク録⾳を禁⽌

• iOS:使⽤• Android:使⽤• デフォルト設定:オン

ディクテーションを禁⽌

• iOS:使⽤• Android:なし• デフォルト設定:オン

位置情報サービスを禁⽌

• iOS:使⽤• Android:使⽤• デフォルト設定:オン

SMS作成を禁⽌

• iOS:使⽤• Android:使⽤• デフォルト設定:オン

© 1999-2020 Citrix Systems, Inc. All rights reserved. 64

MDX Toolkit

スクリーンショットを禁⽌

• iOS:なし• Android:使⽤• デフォルト設定:オン

デバイスのセンサーを禁⽌

• iOS:なし• Android:使⽤• デフォルト設定:オン

NFCを禁⽌

• iOS:なし• Android:使⽤• デフォルト設定:オン

iCloudを禁⽌

• iOS:使⽤• Android:なし• デフォルト設定:オン

検索を禁⽌

• iOS:使⽤• Android:なし• デフォルト設定:オン

ファイルのバックアップを禁⽌

• iOS:使⽤• Android:なし• デフォルト設定:オン

© 1999-2020 Citrix Systems, Inc. All rights reserved. 65

MDX Toolkit

AirPrintを禁⽌

• iOS:使⽤• Android:なし• デフォルト設定:オン

印刷を禁⽌

• iOS:なし• Android:使⽤• デフォルト設定:オン

AirDropを禁⽌

• iOS:使⽤• Android:なし• デフォルト設定:オン

Facebookと Twitterの APIを禁⽌

• iOS:使⽤• Android:なし• デフォルト設定:オン

画⾯の内容を不鮮明にする

• iOS:使⽤• Android:なし• デフォルト設定:オン

サードパーティ製キーボードを禁⽌

• iOS:使⽤• Android:なし• デフォルト設定:オン

© 1999-2020 Citrix Systems, Inc. All rights reserved. 66

MDX Toolkit

アプリログを禁⽌

• iOS:使⽤• Android:使⽤• デフォルト設定:オフ

アプリのネットワークアクセス

ネットワークアクセス

• iOS:使⽤• Android:使⽤• デフォルト設定:Secure Mailを除き、新しくアップロードしたアプリのデフォルト設定は[禁⽌]になります。Intuneには禁⽌状態が存在しないため、Secure Mailのデフォルト設定は[制限なし]になります。

Micro VPNセッションを必須とする

• iOS:使⽤• Android:使⽤• デフォルト設定:なし

Micro VPNセッションを必須とするまでの猶予期間(分)

• iOS:使⽤• Android:使⽤• デフォルト設定:0(猶予期間なし)

証明書ラベル

• iOS:使⽤• Android:使⽤• デフォルト設定:空

除外の⼀覧

• iOS:使⽤• Android:使⽤• デフォルト設定:空

© 1999-2020 Citrix Systems, Inc. All rights reserved. 67

MDX Toolkit

localhost接続をブロック

• iOS:なし• Android:使⽤• デフォルト設定:オフ

アプリログ

デフォルトのログ出⼒

• iOS:使⽤• Android:使⽤• デフォルト設定:ファイル

デフォルトのログレベル

• iOS:使⽤• Android:使⽤• デフォルト設定:4(情報メッセージ)

最⼤ログファイル数

• iOS:使⽤• Android:使⽤• デフォルト設定:2

最⼤ログファイルサイズ

• iOS:使⽤• Android:使⽤• デフォルト設定:2MB

システムログのリダイレクト

• iOS:使⽤• Android:なし• デフォルト設定:オン

© 1999-2020 Citrix Systems, Inc. All rights reserved. 68

MDX Toolkit

アプリのジオフェンス

中⼼点の経度

• iOS:使⽤• Android:使⽤• デフォルト設定:0

中⼼点の緯度

• iOS:使⽤• Android:使⽤• デフォルト設定:0

半径

• iOS:使⽤

• Android:使⽤

• デフォルト設定:0(無効)

注:

半径をメートル単位で指定します。0に設定した場合、ジオフェンスは無効になります。

Analytics

Google Analyticsの詳細レベル

• iOS:使⽤• Android:使⽤• デフォルト設定:完了

レポート

Citrixレポート

• iOS:使⽤

• Android:なし

• デフォルト設定:オフ

© 1999-2020 Citrix Systems, Inc. All rights reserved. 69

MDX Toolkit

注:

この機能は機能フラグで制御されることもあります。この機能を動作させるには、フィーチャーフラグとこのポリシーの両⽅が有効である必要があります。

アップロードトークン

• iOS:使⽤• Android:なし• デフォルト設定:空

Wi-Fiのみでレポートを送信

• iOS:使⽤• Android:なし• デフォルト設定:オン

レポートファイルキャッシュの最⼤値

• iOS:使⽤• Android:なし• デフォルト設定:2MB

サードパーティ AndroidアプリのMDXポリシー

March 5, 2020

この⽂書では、サードパーティの Androidアプリに関するMDXポリシーについて説明します。ポリシーの設定は、Citrix Endpoint Managementコンソールで変更できます。

認証

アプリのパスコード

[オン]の場合、アプリを起動する、または⼀定期間無効になった後で再開するときにアプリのロックを解除するためPINまたはパスコードが必要です。デフォルト値は[オン]です。

すべてのアプリに対して無操作タイマーを構成するには、[設定]タブの[クライアントプロパティ]で、INACTIVITY_TIMER値を分単位で設定します。無通信タイマーのデフォルト値は 60分間です。無通信タイマーを

© 1999-2020 Citrix Systems, Inc. All rights reserved. 70

MDX Toolkit

無効にして、PINまたはパスコードを要求するプロンプトがアプリの起動時のみに表⽰されるようにするには、この値をゼロに設定します。

注:

[暗号キー]ポリシーで[セキュリティで保護されたオフラインアクセス]を選択した場合、このポリシーは⾃動的に有効になります。

最⼤オフライン期間 (時間)

ネットワークへログオンして権利の再確認とポリシー更新を⾏なうことなく、アプリをオフラインで実⾏できる最⼤期間を定義します。デフォルト値は 168時間(7⽇)です。最短の期間は 1時間です。

期間終了の 30分前、15分前、5分前に、ユーザーにログオンするように通知します。期間が終了すると、ユーザーがネットワークに正常にログオンするまでアプリはロック状態になります。

代替 Citrix Gateway

注:

Endpoint Managementコンソールでは、このポリシー名は「代替 NetScaler Gateway」です。

認証と、このアプリとのMicro VPNセッションに使⽤する特定の代替 Citrix Gateway(旧称NetScaler Gateway)のアドレスです。これはオプションのポリシーで、[オンラインセッションを必須とする]ポリシーと組み合わせて使⽤すると、アプリに特定のゲートウェイへの再認証を強制します。通常、このようなゲートウェイには、別の(確実性の⾼い)認証要件およびトラフィック管理ポリシーが割り当てられています。空のままにしておいた場合は、常にサーバーのデフォルト設定が使⽤されます。デフォルト値は空です。

デバイスのセキュリティ

ジェイルブレイクまたは Root化を禁⽌

[オン]の場合、デバイスがジェイルブレイクされたまたは Root化された時、アプリがロックされます。[オフ]の場合、デバイスがジェイルブレイクされたまたは Root化された時でも、アプリを実⾏できます。デフォルト値は[オン]です。

デバイスのロックを必須とする

[デバイスの PINまたはパスコード]の場合、デバイスに PINまたはパスコードが設定されていないと、アプリがロックされます。[デバイスのパターン画⾯ロック]の場合、デバイスにパターン画⾯ロックが設定されていないと、アプリがロックされます。[オフ]の場合、デバイスに PIN、パスコード、またはパターン画⾯ロックが設定されていなくてもアプリの実⾏が許可されます。デフォルトの値は[オフ]です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 71

MDX Toolkit

[デバイスの PINまたはパスコード]を使⽤するには、Android 4.1(Jellybean)以降が必要です。ポリシーを[デバイスの PINまたはパスコード]に設定すると、アプリが古いバージョンで実⾏されるのを防ぐことができます。

Android Mデバイスでは、デバイスの PINまたはパスコードおよびデバイスのパターン画⾯ロックのオプションは同じ効果があります。つまり、これらのオプションのいずれかを有効にすると、デバイスに PIN、パスコード、またはパターン画⾯ロックが未設定の場合アプリがロックされます。

ネットワークの要件

Wi-Fiを必須とする

[オン]の場合、デバイスがWi-Fiネットワークに接続されていない時にアプリがロックされます。[オフ]の場合、デバイスに 4G/3G、LAN接続、またはWi-Fi接続などのアクティブな接続がある場合でもアプリを実⾏できます。デフォルトの値は[オフ]です。

許可されたWi-Fiネットワーク

許可するWi-Fiネットワークのコンマ区切りの⼀覧。ネットワーク名に英数字以外の⽂字(コンマなど)を含める場合は、ネットワーク名を⼆重引⽤符で囲む必要があります。アプリは、⼀覧にあるネットワークに接続された場合のみ実⾏されます。⼀覧を空⽩のままにした場合、すべてのネットワークが許可されます。この設定は、モバイルネットワークへの接続に影響しません。デフォルトでは何も設定されていません。

その他のアクセス

アプリ更新猶予期間(時間)

利⽤可能なアプリの更新が検出された時から、アプリの継続使⽤が許可される猶予期間を定義します。デフォルト値は 168時間(7⽇)です。

注:

値に 0を使⽤することは推奨されません。(更新がダウンロードされインストールされるまで)実⾏中のアプリケーションが即座に使⽤できなくなるためです(ユーザーへの警告はなし)。この場合、必要な更新に準拠するために、アプリケーションを実⾏中のユーザーが、強制的にアプリケーションを終了させられることがあります(作業が破棄されてしまう可能性があります)。

ロック時にアプリデータを消去

アプリがロックされた時に、データを消去し、アプリをリセットします。[オフ]の場合、アプリがロックされてもアプリデータは消去されません。デフォルトの値は[オフ]です。

アプリは次のいずれかの理由によりロックされます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 72

MDX Toolkit

• アプリのユーザー権の喪失• アプリのサブスクリプションの削除• アカウントが削除されました• Secure Hubがアンインストールされました• 指定回数を超えたアプリ認証失敗• ジェイルブレイクされたデバイスの検出(ポリシー設定ごと)• ほかの管理措置によりロック状態にされたデバイスの検出

アクティブなポーリング周期(分)

アプリを起動すると、MDXフレームワークは Citrix Endpoint Managementをポーリングして、現在のアプリとデバイス状態を判別します。Endpoint Managementを実⾏中のサーバーへの到達が可能だと推測されると、フレームワークは、デバイスのロックと消去の状態、およびアプリの有効または無効状態に関する情報を返します。サーバーへの到達の可否にかかわらず、アクティブなポーリング期間の間隔を元にして、それ以降のポーリングがスケジュールされます。期間が終了した後、新しいポーリングが再度試⾏されます。デフォルト値は 60分(1時間)です。

重要:

リスクの⾼いアプリにのみこの値を低く設定します。そうしないと、パフォーマンスが低下する可能性があります。

暗号化

暗号化の種類

データの暗号化をMDXとデバイスプラットフォームのどちらで処理するかを選択できます。[MDX暗号化]を選択すると、データはMDXによって暗号化されます。[コンプライアンス強制によるプラットフォーム暗号化]を選択すると、データはデバイスプラットフォームによって暗号化されます。デフォルト値は[MDX暗号化]です。

⾮準拠デバイスの動作

デバイスが暗号化の最低コンプライアンス要件を順守していない場合のアクションを選択できます。[アプリを許可]を選択すると、アプリが通常どおり動作します。[警告後にアプリを許可する]を選択すると、警告が表⽰された後にアプリが実⾏されます。[ブロック]を選択すると、アプリの実⾏をブロックします。デフォルト値は[警告後にアプリを許可する]です。

暗号キー

暗号キーの⽣成に使⽤されるシークレットを有効にして、デバイスで永続させます。[オフラインアクセスを許可]のみを実⾏できます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 73

MDX Toolkit

暗号化されたコンテンツへのアクセスを保護するため[認証]ポリシーを設定してネットワークログオンまたはオフラインパスワードチャレンジを有効にすることをお勧めします。

MDXプライベートファイルの暗号化

次の場所の個⼈データファイルの暗号化を制御します:/data/data/<appname>および/mnt/sdcard/Android/data/<appname>。

[無効]オプションを指定した場合、プライベートファイルは暗号化されません。[セキュリティグループ]オプションを選択すると、同じセキュリティグループのすべてのMDXアプリケーションで共有されているキーを使って、プライベートファイルが暗号化されます。[アプリケーション]オプションを選択した場合、このアプリケーションに対して⼀意のキーを使ってプライベートファイルが暗号化されます。デフォルト値は[セキュリティグループ]です。

プライベートファイルの暗号化から除外する対象

コンマで区切ったパスの⼀覧があります。各パスは、暗号化する 1つまたは複数のファイルを表す正規表現です。ファイルパスは内部および外部サンドボックスと相対します。デフォルト値は空です。

以下のフォルダーのみが除外の対象になります。

• 内部ストレージ:

/data/data/< your_package_name >

• SDカード:

/storage/emulated/<SD Card Slot>/Android/data/< your_package_name >

/storage/emulated/legacy/Android/data/< your_package_name >

除外するファイル プライベートファイルの暗号化から除外する値

/data/data/com.citrix.mail/files/a.txt ˆfiles/a.txt

/storage/emulated/0/Android/data/com.citrix.mail/files内のすべてのテキストファイル

ˆfiles/(.)+.txt$

/data/data/com.citrix.mail/filesのすべてのファイル

ˆfiles/

© 1999-2020 Citrix Systems, Inc. All rights reserved. 74

MDX Toolkit

MDXパブリックファイルの暗号化

パブリックファイルの暗号化を制御します。[無効]の場合、パブリックファイルは暗号化されません。[セキュリティグループ]の場合、同じセキュリティグループのすべてのMDXアプリにより共有されたキーを使ってパブリックファイルが暗号化されます。[アプリケーション]の場合、このアプリに対して⼀意のキーを使ってパブリックファイルが暗号化されます。

デフォルト値は[セキュリティグループ]です。

パブリックファイルの暗号化から除外する対象

コンマで区切ったパスの⼀覧があります。各パスは、暗号化されない 1つまたは複数のファイルを表す正規表現です。ファイルパスはデフォルトの外部ストレージおよびいずれのデバイス特定の外部ストレージとも相対しています。

[パブリックファイルの暗号化から除外する対象]には外部フォルダーの場所のみが含まれます。

除外するファイル パブリックファイルの暗号化から除外する値

SDカード上のダウンロードフォルダー Download

⾳楽フォルダー内のすべてのMP3ファイル ˆMusic/(.)+.mp3$

パブリックファイルの移⾏

このポリシーは、[パブリックファイルの暗号化]ポリシーを有効([無効]から[セキュリティグループ]または[アプリケーション]に変更)にした場合にのみ適⽤されます。このポリシーは、既存の暗号化されていないパブリックファイルにのみ適⽤でき、これらのファイルをいつ暗号化するのかを指定します。デフォルト値は[書き込み(RO/RW)]です。

[無効]オプションを指定した場合、既存のファイルは暗号化されません。[書き込み(WO/RW)]オプションでは、既存のファイルが書き込み専⽤または読み取り/書き込みアクセスで開かれたときにのみ暗号化します。[特定しない]オプションでは、どのモードであっても、既存のファイルが開かれるたびに暗号化します。以下のオプションがあります:

• 無効。既存のファイルを暗号化しません。• 書き込み(RO/RW)。書き込み専⽤または読み取り書き込みアクセスで既存のファイルが開かれた時に暗号化します。

• 特定しない。既存のファイルが開かれるたびに暗号化します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 75

MDX Toolkit

注:

• 新しいファイルまたは上書きされる既存の暗号化されていないファイルは、毎回置換ファイルを暗号化します。

• 既存のパブリックファイルを暗号化すると、同じ暗号化キーがないほかのアプリではそのファイルを使⽤できなくなります。

セキュリティグループ

Citrix Endpoint Managementで管理するすべてのモバイルアプリで情報を交換させるには、このフィールドを空⽩のままにします。アプリの特定のセット(たとえば、ファイナンスまたは⼈事など)に対するセキュリティ設定を管理するには、セキュリティグループ名を定義します。

注意:

既存のアプリケーションに対してこのポリシーを変更する場合、ポリシーの変更を適⽤するには、アプリケーションの削除と再インストールを⾏う必要があります。

許可する Secure Webドメイン

このポリシーは、URLフィルタリングポリシーで除外対象とされていないドメインにのみ適⽤されます。ドキュメント交換の設定が[制限]である場合に Secure Webアプリへリダイレクトする完全修飾ドメイン名(FQDN)またはDNSサフィックスを、コンマ区切りの⼀覧形式で指定します。

このポリシーでエントリを指定しており、ドキュメント交換の設定が[制限]である場合、⼀覧の 1つ以上の項⽬に(DNSサフィックスの照合で)⼀致するホストフィールドを持つ URLは、Secure Webアプリにリダイレクトされます。

ほかの URLはすべて、(ドキュメント交換制限ポリシーを無視して)デフォルトの Androidブラウザーに送信されます。デフォルト値は空です。

アプリ相互作⽤

切り取りおよびコピー

このアプリでのクリップボードへの切り取りおよびコピー操作を禁⽌、許可、または制限します。[制限]の場合、コピーしたクリップボードデータは、MDXアプリのみで使⽤できるプライベートクリップボードに貼り付けられます。デフォルト値は、[制限]です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 76

MDX Toolkit

貼り付け

このアプリでのクリップボードへの貼り付け操作を禁⽌、許可、または制限します。[制限]の場合、クリップボードデータは、MDXアプリのみが使⽤できるプライベートクリップボードから貼り付けられます。デフォルト値は[制限なし]です。

ドキュメント交換(このアプリケーションで開く)

このアプリのドキュメント交換操作を禁⽌、許可、制限します。[制限]の場合、ドキュメントはMDXアプリおよび[このアプリケーションで開く]制限の例外⼀覧で指定されたアプリの例外とのみ交換できます。[制限なし]に設定する場合は、ラップされていないアプリでユーザーがドキュメントを開けるように、[プライベートファイルの暗号化]および[パブリックファイルの暗号化]ポリシーを[無効]に設定します。デフォルト値は、[制限]です。

[このアプリケーションで開く]制限の例外⼀覧

[ドキュメント交換(このアプリケーションで開く)]ポリシーが[制限]の場合、この Androidインテントの⼀覧は管理されていないアプリに渡すことができます。⼀覧にフィルターを追加するには、Androidインテントに精通する必要があります。フィルターは、操作、パッケージ、スキーム、またはこれらの任意の組み合わせをサポートします。

1 {2 action=android.intent.action.MAIN }34 {5 package=com.sharefile.mobile }67 {8 action=android.intent.action.DIAL scheme=tel }

注意:

このポリシーのセキュリティについて予想される事柄について検討する必要があります。除外⼀覧を使うと、管理されていないアプリとMDX環境間でコンテンツをやり取りできます。

受信ドキュメント交換 (このアプリケーションで開く)

このアプリのドキュメント交換操作を禁⽌、許可、制限します。[制限]の場合、ドキュメントはMDXアプリとのみ交換できます。デフォルト値は[制限なし]です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 77

MDX Toolkit

[禁⽌]または[制限]の場合、受信ドキュメント交換のホワイトリストポリシーを使⽤してこのアプリにドキュメントを送信できるアプリを指定します。その他のポリシーの情報については、[ギャラリーを禁⽌]ポリシーを参照してください。

オプション:[制限なし]、[禁⽌]、または[制限]

アプリ制限

重要:

アプリによる電話機能のアクセスまたは使⽤をブロックするポリシーのセキュリティ⾯の影響について考慮する必要があります。これらのポリシーが[オフ]に設定されている場合、管理されていないアプリと Secure環境間でコンテンツをやり取りできます。

カメラを禁⽌

[オン]の場合、アプリによるカメラハードウェアの直接使⽤が禁⽌されます。デフォルト値は[オン]です。

ギャラリーを禁⽌

[オン]の場合、アプリがデバイス上のギャラリーにアクセスするのを防ぎます。デフォルトの値は[オフ]です。このポリシーは、[受信ドキュメント交換(このアプリケーションで開く)]とともに機能します。

•[受信ドキュメント交換(このアプリケーションで開く)]が[制限]に設定されている場合、管理対象アプリで作業をしているユーザーは、[ギャラリーを禁⽌]設定に関係なく、ギャラリーから画像を添付できません。

•[受信ドキュメント交換(このアプリケーションで開く)]が[制限なし]に設定されている場合、管理対象アプリで作業をしているユーザーの操作は以下のようになります。

–[ギャラリーを禁⽌]を[オフ]に設定すると、ユーザーはイメージを添付できます。–[ギャラリーを禁⽌]を[オン]に設定すると、ユーザーはイメージを添付できなくなります。

マイク録⾳を禁⽌

[オン]の場合、アプリでマイクハードウェアを直接使⽤できなくなります。デフォルト値は[オン]です。

位置情報サービスを禁⽌

[オン]の場合、アプリによるロケーションサービスコンポーネント(GPSまたはネットワーク)の使⽤が禁⽌されます。Secure Mailのデフォルト値は[オフ]です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 78

MDX Toolkit

SMS作成を禁⽌

[オン]の場合、アプリでは、SMS/テキストメッセージの送信に使⽤する SMS作成機能を使⽤できません。デフォルト値は[オン]です。

スクリーンショットを禁⽌

[オン]の場合、アプリの実⾏中スクリーンキャプチャができないようにします。また、ユーザーがアプリを切り替えると、アプリ画⾯が不明瞭になります。デフォルト値は[オン]です。

Android Near Field Communication(NFC)機能を使うと、コンテンツのデータ送受信を⾏う前に⼀部のアプリはスクリーンショットを撮ります。ラップされたアプリでこの機能を有効にするには、[スクリーンキャプチャを禁⽌]ポリシーを[オフ]に変更します。

デバイスのセンサーを禁⽌

[オン]の場合、アプリによる加速度計、モーションセンサー、ジャイロスコープなどのデバイスセンサーの使⽤を禁⽌します。デフォルト値は[オン]です。

NFCを禁⽌

[オン]の場合、アプリによるNear Field Communications(NFC)の使⽤を禁⽌します。デフォルト値は[オン]です。

アプリログを禁⽌

[オン]の場合、アプリによる業務⽤モバイルアプリ診断ログファシリティの使⽤が禁じられます。[オフ]の場合、アプリログが記録され、Secure Hubのメールサポート機能を使って収集されることがあります。デフォルトの値は[オフ]です。

印刷を禁⽌

[オン]の場合、アプリによるデータの印刷が禁⽌されます。アプリに Shareコマンドがある場合は、[ドキュメント交換(このアプリケーションで開く)]を[制限]または[禁⽌]に設定して、印刷を完全にブロックする必要があります。デフォルトの値は[オン]です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 79

MDX Toolkit

アプリのネットワークアクセス

ネットワークアクセス

注:

[トンネルWeb SSO]は、この設定において[セキュアブラウズ]に相当する名前です。動作は同じです。

以下は、設定オプションです:

• 以前の設定を使⽤:デフォルトでは、過去のポリシーで設定済みの値が使⽤されます。値の変更後は、[以前の設定を使⽤]に戻さないでください。また、新しいポリシーに対する変更は、ユーザーがアプリをバージョン18.12.0以降にアップグレードするまで反映されません。

• 禁⽌:アプリが使⽤するネットワーク APIは機能しません。前述のガイドラインに基づいて、このような失敗を正常に処理する必要があります。

• 制限なし:ネットワーク呼び出しはすべて直接転送され、トンネリングされません。• トンネル-完全 VPN:管理対象アプリケーションからのトラフィックはすべて Citrix Gatewayを介してトンネリングされます。

• トンネル-Web SSO:HTTP/HTTPS URLが書き込まれます。このオプションでは、HTTPトラフィックおよび HTTPSトラフィックのトンネリングのみが許可されます。トンネル-Web SSOの⼤きなメリットは、HTTPトラフィックと HTTPSトラフィックのシングルサインオン(SSO)、および PKINIT認証です。Androidでは、このオプションはセットアップの⼿間が少ないため、Web閲覧操作に関する推奨オプションとなっています。

• トンネル-完全 VPNおよびWeb SSO:必要に応じて VPNモードの⾃動切り替えを許可できます。いずれかの VPNモードで認証要求が処理できないためにネットワーク要求が失敗した場合、代替モードで再試⾏されます。

いずれかのトンネルモードを選択すると、企業ネットワークに戻る Per-app VPNトンネルがこの初期モードで作成され、Citrix Gatewayの分割トンネルの設定が使⽤されます。企業ネットワークのリソースにクライアント証明書またはエンドツーエンドの SSLを使⽤する接続に対しては、[トンネル完全 VPN]を推奨します。シングルサインオン(SSO)を必要とする接続に対しては、[トンネル-Web SSO]が推奨されます。

Micro VPNセッションを必須とする

[はい]の場合、企業ネットワークおよびアクティブなセッションに接続する必要があります。[いいえ]の場合、アクティブなセッションは必要ありません。デフォルト値は[以前の設定を使⽤]です。新しくアップロードされたアプリの場合、デフォルト値は[いいえ]です。このポリシーへのアップグレード前に選択されていた設定は、[以前の設定を使⽤]以外のオプションを選択するまで有効なままになります。

Micro VPNセッションを必須とするまでの猶予期間(分)

アプリ更新を利⽤できることが検出された後に、アプリの継続使⽤が許可される猶予期間を定義します。デフォルト値は 168時間(7⽇)です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 80

MDX Toolkit

注:

値に 0を使⽤することは推奨されません。(更新がダウンロードされインストールされるまで)実⾏中のアプリケーションが即座に使⽤できなくなるためです(ユーザーへの警告はなし)。この場合、必要な更新に準拠するために、アプリケーションを実⾏中のユーザーが、強制的にアプリケーションを終了させられることがあります(作業が破棄されてしまう可能性があります)。

証明書ラベル

証明書ラベル StoreFront証明書統合サービスと⼀緒に使⽤する場合、このラベルによって、このアプリに必要な特定の証明書が識別されます。ラベルが指定されないと、証明書を公開キー基盤(PKI)で使⽤できるようにはなりません。デフォルト値は空です(証明書が使⽤されません)。

除外の⼀覧

VPN接続を使⽤せずに直接アクセスする FQDNまたは DNSサフィックスのコンマ区切りの⼀覧。この設定は、Citrix Gatewayを分割トンネルリバースモードに設定している場合の[トンネルWeb SSO]モードにのみ適⽤されます。

localhost接続をブロック

[オン]の場合、アプリのローカルホストへの接続を禁⽌します。ローカルホストは、デバイス上でローカルに⾏われる通信⽤のアドレス(127.0.0.1や::1など)です。ローカルホストは、ローカルネットワークインターフェイスのハードウェアをバイパスして、ホスト上で実⾏されているネットワークサービスにアクセスします。[オフ]の場合、このポリシーが[ネットワークアクセス]ポリシーよりも優先されるため、デバイスでローカルにプロキシサーバーが実⾏されているのであれば、アプリはセキュアコンテナの外部に接続できます。デフォルトは[オフ]です。

アプリログ

デフォルトのログ出⼒

Citrix Endpoint Managementアプリ診断ログファシリティがデフォルトで使⽤する出⼒媒体を決定します。選択肢としては、[ファイル]、[コンソール]、または両⽅です。デフォルト値は[ファイル]です。

デフォルトのログレベル

業務⽤モバイルアプリ診断ログファシリティのデフォルトの詳細度を制御します。番号のレベルが⾼いほど、より詳細なログが含まれます。

• 0 -ログを記録されない

© 1999-2020 Citrix Systems, Inc. All rights reserved. 81

MDX Toolkit

• 1 -深刻なエラー• 2 -エラー• 3 -警告• 4 -情報メッセージ• 5 -詳細な情報メッセージ• 6〜 15 - 1〜 10のデバッグレベル

デフォルト値はレベル 4(情報メッセージ)です。

最⼤ログファイル数

ロールオーバーする前に、業務⽤モバイルアプリ診断ログファシリティによって保持されるログファイルの数を制限します。最⼩は 2です。最⼤は 8です。デフォルト値は 2です。

最⼤ログファイルサイズ

ロールオーバーする前に、業務⽤モバイルアプリ診断ログファシリティによって保持されるログファイルのサイズ(単位はMB)を制限します。最⼩値は 1MBです。最⼤値は 5MBです。デフォルト値は 2MBです。

アプリのジオフェンス

中⼼点の経度

経度(X座標)は、アプリの操作をその中に限定するポイント/半径ジオフェンスの中⼼点です。構成されたジオフェンスの外で操作しても、アプリはロックされたままとなります。「-31.9635」など、符号付きの⻆度形式(DDD.dddd)で指定します。西経の場合は先頭にマイナス記号を付ける必要があります。デフォルト値は 0です。

中⼼点の緯度

緯度(Y座標)は、アプリの操作をその中に限定するポイント/半径ジオフェンスの中⼼点です。構成されたジオフェンスの外で操作しても、アプリはロックされたままとなります。

「43.06581」など、符号付きの⻆度形式(DDD.dddd)で指定します。南半球の緯度の場合は先頭にマイナス記号を付ける必要があります。デフォルト値は 0です。

半径

半径は、アプリの操作をその中に限定するジオフェンスの半径です。構成されたジオフェンスの外で操作しても、アプリはロックされたままとなります。値はメートル単位で指定します。0に設定した場合、ジオフェンスは無効になります。デフォルトは 0(無効)です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 82

MDX Toolkit

Analytics

Google Analyticsの詳細レベル

シトリックスは分析データを収集して製品の質を向上させます。[匿名]を選択した場合、企業を特定できる情報は収集されません。

Android EnterpriseでサポートされているデバイスポリシーとMDXポリシー

March 5, 2020

次の表に、Android EnterpriseコンテナでサポートされているデバイスポリシーとMDXポリシーを⽰します。デバイスポリシーとMDXポリシーについて詳しくは、「デバイスポリシー」および「MDXポリシーの概要」をそれぞれ参照してください。

認証ポリシー サポート対象 サポートされている値 注

アプリのパスコード すべて

オンラインセッションを必須とする

[オフ]のみ

最⼤オフライン期間 すべて

代替 Citrix Gateway 空⽩のみ

アプリのネットワークアクセスポリシー サポート対象 サポートされている値 注

ネットワークアクセス すべて

証明書ラベル 空⽩のみ

優先 VPNモード すべて

VPNモードの切り替えを許可

すべて

PACファイルの URL、またはプロキシサーバー

すべて

デフォルトのログ出⼒ すべて

デフォルトのログレベル すべて

最⼤ログファイル数 すべて

© 1999-2020 Citrix Systems, Inc. All rights reserved. 83

MDX Toolkit

アプリのネットワークアクセスポリシー サポート対象 サポートされている値 注

最⼤ログファイルサイズ すべて

アプリログのリダイレクト

すべて

ログの暗号化 すべて

Wi-Fiネットワークのホワイトリストへの追加

空⽩のみ

デバイスセキュリティポリシー サポート対象 サポートされている値 注

ジェイルブレイクまたはRoot化を禁⽌

すべて

デバイスの暗号化を要求 すべて

デバイスのロックを必須とする

すべて

ネットワーク要件ポリシー サポート対象 サポートされている値 注

Wi-Fiを必須とする 無効

その他のアクセスポリシー サポート対象 サポートされている値 注

アプリ更新猶予期間(時間)

すべて

ロック時にアプリデータを消去

すべて

アクティブなポーリング周期(分)

すべて

© 1999-2020 Citrix Systems, Inc. All rights reserved. 84

MDX Toolkit

暗号化ポリシー サポート対象 サポートされている値 注

暗号キー オフラインアクセスを許可

Android Enterpriseポリシーでサポート

プライベートファイルの暗号化

[無効]のみ Android Enterpriseポリシーでサポート

プライベートファイルの暗号化から除外する対象

該当なし(空) Android Enterpriseポリシーでサポート

パブリックファイルへのアクセス制限

該当なし(空) Android Enterpriseポリシーでサポート

パブリックファイルの暗号化

[無効]のみ Android Enterpriseポリシーでサポート

パブリックファイルの暗号化から除外する対象

該当なし(空) Android Enterpriseポリシーでサポート

パブリックファイルの移⾏

[無効]のみ Android Enterpriseポリシーでサポート

アプリ相互作⽤ポリシー サポート対象 サポートされている値 注

セキュリティグループ 空 Android Enterpriseポリシーでサポート

切り取りおよびコピー [制限なし]のみ Android Enterpriseポリシーでサポート

貼り付け [制限なし]のみ Android Enterpriseポリシーでサポート

ドキュメント交換(このアプリケーションで開く)

[制限なし]のみ Android Enterpriseポリシーでサポート

受信ドキュメント交換(このアプリケーションで開く)

すべて Android Enterpriseポリシーでサポート

受信ドキュメント交換のホワイトリスト

空 Android Enterpriseポリシーでサポート

Restricted Open-Inexception list

空 Android Enterpriseポリシーでサポート

© 1999-2020 Citrix Systems, Inc. All rights reserved. 85

MDX Toolkit

アプリ制限ポリシー サポート対象 サポートされている値 注

カメラを禁⽌ [オン]のみ Android Enterpriseポリシーでサポート

ギャラリーを禁⽌ [オン]のみ Android Enterpriseポリシーでサポート

localhost接続をブロック

すべて

マイク録⾳を禁⽌ [オフ]のみ Android Enterpriseポリシーでサポート

位置情報サービスを禁⽌ [オフ]のみ Android Enterpriseポリシーでサポート

SMS作成を禁⽌ [オフ]のみ Android Enterpriseポリシーでサポート

スクリーンショットを禁⽌

[オフ]のみ Android Enterpriseポリシーでサポート

デバイスのセンサーを禁⽌

すべて

NFCを禁⽌ [オフ]のみ Android Enterpriseポリシーでサポート

印刷を禁⽌ すべて

アプリログを禁⽌ すべて

アプリのジオフェンスポリシー サポート対象 サポートされている値 注

中⼼点の経度 すべて

中⼼点の緯度 すべて

半径 すべて

サードパーティ iOSアプリのMDXポリシー

March 5, 2020

© 1999-2020 Citrix Systems, Inc. All rights reserved. 86

MDX Toolkit

この⽂書では、サードパーティの iOSアプリに関するMDXポリシーについて説明します。ポリシー設定は、アプリの追加時に、ポリシー XMLファイルで直接変更するか、または Citrix Endpoint Managementコンソールで変更できます。

認証

デバイスのパスコード

[オン]の場合、アプリを起動する、または⼀定期間無効になった後で再開するときにアプリのロックを解除するためPINまたはパスコードが必要です。Appleのファイル暗号化機能を使⽤してアプリデータを暗号化するには、デバイスパスコードが必要です。デバイス上のすべてのアプリデータを暗号化します。デフォルトの値は[オフ]です。

アプリのパスコード

[オン]の場合、アプリを起動する、または⼀定期間無効になった後で再開するときにアプリのロックを解除するためPINまたはパスコードが必要です。デフォルト値は[オン]です。

すべてのアプリに対して無操作タイマーを構成するには、[設定] タブの [クライアントプロパティ] で、INACTIVITY_TIMERの値を分単位で設定します。無通信タイマーのデフォルト値は 60分間です。無通信タイマーを無効にして、PINまたはパスコードを要求するプロンプトがアプリの起動時のみに表⽰されるようにするには、この値をゼロに設定します。

注:

[暗号キー]ポリシーで[セキュリティで保護されたオフラインアクセス]を選択した場合、このポリシーは⾃動的に有効になります。

オンラインセッションを必須とする

最⼤オフライン期間 (時間)

Citrix Endpoint Managementがアプリ権利の再確認とポリシー更新を⾏わずにアプリを実⾏できる最⼤期間を定義します。有効期限が切れた際には、必要に応じてサーバーへのログオンを要求されます。デフォルト値は 168時間(7⽇)です。最短の期間は 1時間です。

代替 Citrix Gateway

注:

Endpoint Managementコンソールでは、このポリシー名は「代替 NetScaler Gateway」です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 87

MDX Toolkit

認証、およびこのアプリとのMicro VPNセッションに使⽤する特定の代替 Citrix Gatewayのアドレスです。これはオプションのポリシーで、[オンラインセッションを必須とする]ポリシーと組み合わせて使⽤すると、アプリに特定のゲートウェイへの再認証を強制します。通常、このようなゲートウェイには、別の(確実性の⾼い)認証要件およびトラフィック管理ポリシーが割り当てられています。空のままにしておいた場合は、常にサーバーのデフォルトゲートウェイが使⽤されます。デフォルト値は空です。

デバイスのセキュリティ

ジェイルブレイクまたは Root化を禁⽌

[オン]の場合、デバイスがジェイルブレイクされたまたは Root化された時、アプリがロックされます。[オフ]の場合、デバイスがジェイルブレイクされたまたは Root化された時でも、アプリを実⾏できます。デフォルト値は[オン]です。

ネットワークの要件

Wi-Fiを必須とする

[オン]の場合、デバイスがWi-Fiネットワークに接続されていない時にアプリがロックされます。[オフ]の場合、デバイスに 4G/3G、LAN接続、またはWi-Fi接続などのアクティブな接続がある場合でもアプリを実⾏できます。デフォルトの値は[オフ]です。

許可されたWi-Fiネットワーク

Wi-Fiネットワークのコンマ区切り⼀覧。ネットワーク名に英数字以外の⽂字(コンマなど)を含める場合は、ネットワーク名を⼆重引⽤符で囲む必要があります。アプリは、⼀覧にあるネットワークに接続された場合のみ実⾏されます。空⽩にした場合、すべてのネットワークが許可されます。この設定は、モバイルネットワークへの接続に影響しません。デフォルトでは何も設定されていません。

その他のアクセス

アプリ更新猶予期間(時間)

アプリ更新を利⽤できることが検出された後に、アプリの継続使⽤が許可される猶予期間を定義します。デフォルト値は 168時間(7⽇)です。

注:

値に 0を使⽤することは推奨されません。(更新がダウンロードされインストールされるまで)実⾏中のアプリケーションが即座に使⽤できなくなるためです(ユーザーへの警告はなし)。この場合、必要な更新に準拠する

© 1999-2020 Citrix Systems, Inc. All rights reserved. 88

MDX Toolkit

ために、ユーザーは強制的にアプリケーションを終了させられることがあります(作業が破棄されてしまう可能性があります)。

ロック時にアプリデータを消去

アプリがロックされた時に、データを消去し、アプリをリセットします。[オフ]の場合、アプリがロックされてもアプリデータは消去されません。デフォルトの値は[オフ]です。

アプリは次のいずれかの理由によりロックされます。

• アプリのユーザー権の喪失• アプリのサブスクリプションの削除• アカウントが削除されました• Secure Hubがアンインストールされました• 指定回数を超えたアプリ認証失敗• ジェイルブレイクされたデバイスの検出(ポリシー設定ごと)• ほかの管理措置によりロック状態にされたデバイスの検出

アクティブなポーリング周期(分)

アプリを起動すると、MDXフレームワークは Citrix Endpoint Managementをポーリングして、現在のアプリとデバイス状態を判別します。Endpoint Managementを実⾏中のサーバーへの到達が可能だと推測されると、フレームワークは、デバイスのロックと消去の状態、およびアプリの有効または無効状態に関する情報を返します。サーバーへの到達の可否にかかわらず、アクティブなポーリング期間の間隔を元にして、それ以降のポーリングがスケジュールされます。期間が終了した後、新しいポーリングが再度試⾏されます。デフォルト値は 60分(1時間)です。

重要:

リスクの⾼いアプリにのみこの値を低く設定します。そうしないと、パフォーマンスが低下する可能性があります。

暗号化

暗号化の種類

データの暗号化をMDXとデバイスプラットフォームのどちらで処理するかを選択できます。[MDX暗号化]を選択すると、データはMDXによって暗号化されます。[コンプライアンス強制によるプラットフォーム暗号化]を選択すると、データはデバイスプラットフォームによって暗号化されます。既存のアプリの場合、デフォルトは[コンプライアンス強制によるプラットフォーム暗号化]に変わるまで、[MDX暗号化]に設定されています。新たに公開したアプリの場合、デフォルト値は[コンプライアンス強制によるプラットフォーム暗号化]です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 89

MDX Toolkit

注意:

新たに追加したアプリの場合、[コンプライアンス強制によるプラットフォーム暗号化]から[MDX暗号化]に変更すると、アプリの削除と再インストールをする必要があります。

⾮準拠デバイスの動作

デバイスが暗号化の最低コンプライアンス要件を順守していない場合のアクションを選択できます。[アプリを許可]を選択すると、アプリが通常どおり動作します。[警告後にアプリを許可する]を選択すると、警告が表⽰された後にアプリが実⾏されます。[ブロック]を選択すると、アプリの実⾏をブロックします。デフォルト値は[警告後にアプリを許可する]です。

MDX暗号化の有効化

[オフ]の場合、デバイスに格納されているデータは暗号化されません。[オン]の場合、デバイスに格納されているデータは暗号化されます。デフォルト値は[オン]です。

注意:

アプリの展開後にこのポリシーを変更すると、ユーザーはアプリを再インストールする必要があります。

データベースの暗号化から除外する対象

⾃動的に暗号化しないデータベースの除外⼀覧。特定のデータベースのデータベース暗号化を禁⽌するには、このコンマで区切った正規表現の⼀覧にエントリを追加します。データベースパス名が正規表現のうちのいずれかと⼀致する場合、そのデータベースは暗号化から除外されます。排除パターンは Posix 1003.2 Extended RegularExpressions構⽂をサポートします。パターンマッチングでは⼤⽂字⼩⽂字が区別されません。

\.db$,\.sqlite$では、「.db」または「.sqlite」のいずれかで終わるデータベースパス名を除外します。

\/Database\/unencrypteddb\.dbは、Databaseサブフォルダーにあるデータベース unencrypteddb.dbと⼀致します。

\/Database\/は、パス内に /Database/を含んでいるすべてのデータベースと⼀致します。

デフォルト値は空です。

ファイルの暗号化から除外する対象

⾃動的に暗号化されないファイルの除外⼀覧。特定のファイルのセットに対して暗号化を禁⽌するには、このコンマで区切った正規表現の⼀覧にエントリを追加します。ファイルパス名が正規表現のうちのいずれかと⼀致する場合、

© 1999-2020 Citrix Systems, Inc. All rights reserved. 90

MDX Toolkit

そのファイルは暗号化から除外されます。排除パターンは Posix 1003.2 Extended Regular Expressions構⽂をサポートします。パターンマッチングでは⼤⽂字⼩⽂字が区別されません。

\.log$,\.dat$は、「.log」または「.dat」のいずれかで終わるデータベースパス名を除外します。

\/Documents\/unencrypteddoc\.txtは、Documentsサブフォルダーにあるファイル unencrypteddoc.txtの内容と⼀致します。

\/Documents\/UnencryptedDocs\/.*\.txtは、サブパス/Documents/UnencryptedDocs/の下にある「.txt」ファイルと⼀致します。

デフォルト値は空です。

セキュリティグループ

Endpoint Managementで管理するすべてのモバイルアプリで情報を交換させるには、このフィールドを空⽩のままにします。アプリの特定のセット(たとえば、ファイナンスまたは⼈事など)に対するセキュリティ設定を管理するには、セキュリティグループ名を定義します。

注意:

既存のアプリに対してこのポリシーを適⽤する場合、アプリの削除と再インストールが必要です。

アプリ相互作⽤

切り取りおよびコピー

このアプリでのクリップボードへの切り取りおよびコピー操作を禁⽌、許可、または制限します。[制限]の場合、コピーしたクリップボードデータは、MDXアプリのみで使⽤できるプライベートクリップボードに貼り付けられます。デフォルト値は、[制限]です。

貼り付け

このアプリでのクリップボードへの貼り付け操作を禁⽌、許可、または制限します。[制限]の場合、クリップボードデータは、MDXアプリのみが使⽤できるプライベートクリップボードから貼り付けられます。デフォルト値は[制限なし]です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 91

MDX Toolkit

ドキュメント交換(このアプリケーションで開く)

このアプリのドキュメント交換操作を禁⽌、許可、制限します。[制限]の場合、ドキュメントはMDXアプリケーションとのみ交換できます。

[制限なし]の場合、[暗号化を有効化]ポリシーを[オン]に設定し、ラップされていないアプリでユーザーがドキュメントを開けるようにします。受信するアプリケーションがラップされていないか、または暗号化が無効になっている場合、Citrix Endpoint Managementはドキュメントを暗号化します。デフォルト値は、[制限]です。

[このアプリケーションで開く]制限の例外⼀覧

[ドキュメント交換(このアプリケーションで開く)]ポリシーの設定が[制限]の場合、[暗号化を有効化]ポリシーの設定が[オン]であっても、MDXアプリは管理されていない App IDのコンマ区切りの⼀覧とドキュメントを共有できます。デフォルトの例外の⼀覧では、次の Office 365アプリが許可されています:

com.microsoft.Office.Word,com.microsoft.Office.Excel,com.microsoft.Office.Powerpoint,com.microsoft.onenote,com.microsoft.onenoteiPad,com.microsoft.Office.Outlook

このポリシーについては、Office 365アプリだけがサポートされます。

注意:

このポリシーのセキュリティ⾯の影響について考慮する必要があります。除外⼀覧を使うと、管理されていないアプリとMDX環境間でコンテンツをやり取りできます。

受信ドキュメント交換 (このアプリケーションで開く)

このアプリのドキュメント交換操作を禁⽌、許可、制限します。[制限]の場合、ドキュメントはMDXアプリとのみ交換できます。デフォルト値は[制限なし]です。

[禁⽌]または[制限]の場合、受信ドキュメント交換のホワイトリストポリシーを使⽤してこのアプリにドキュメントを送信できるアプリを指定します。

オプション:[制限なし]、[禁⽌]、または[制限]

アプリの URLスキーム

iOSアプリは、http://などハンドル特定のスキームに登録された他のアプリにURL要求を発信できます。この機能により、アプリが他のアプリに⽀援要求を送信するメカニズムが提供されます。このポリシーでは、処理のためにこのアプリに渡されるスキーム(すなわち受信 URL)がフィルター処理されます。デフォルト値は空で、すべての登録済みアプリの URLスキームが禁⽌されることを意味します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 92

MDX Toolkit

このポリシーでは、コンマで区切られたパターンの⼀覧の形式を使⽤します。各パターンの前にプラス記号(+)またはマイナス記号(-)を付けることができます。⼀致が⾒つかるまで、⼀覧の順序で受信 URLがパターンと⽐較されます。⼀致が⾒つかると、パターン冒頭のプラスまたはマイナス記号に応じて処理が実⾏されます。

• マイナス記号「-」が付いている場合、このアプリケーションに渡されないように URLをブロックします。• プラス記号「+」が付いている場合、処理のためアプリケーションに渡されるように URLを許可します。• パターンの最初の⽂字がプラス(+)またはマイナス(-)のどちらでもない場合は、+(許可)とみなされます。• 受信 URLが⼀覧のいずれのパターンにも⼀致しない場合、その URLは禁⽌されます。

次の表は、App URLスキームの例を⽰しています。

スキーム URLスキームを必要とするアプリ ⽬的

ctxmobilebrowser Secure Web- Secure Webによる HTTPの使⽤を許可します。他のアプリからの URLです。

ctxmobilebrowsers Secure Web- Secure Webによる HTTPSの使⽤を許可します。他のアプリからの URLです。

ctxmail Secure Mail- Secure Mailによる HTTPの使⽤を許可します。他のアプリからのURLです。

COL-G2M GoToMeeting- ラップされた GoToMeetingアプリが会議要求を制御するのを許可します。

ctxsalesforce Citrix for Salesforce- Citrix for SalesforceによるSalesforce要求の処理を許可します。

wbx WebEx ラップされたWebExアプリが会議要求を制御するのを許可します。

アプリ相互作⽤(送信 URL)

URLフィルタリングから除外されたドメイン

このポリシーでは、「許可する URL」フィルタリングの対象から送信 URLを除外します。「許可する URL」フィルタリングから除外する完全修飾ドメイン名(FQDN)または DNSサフィックスを、コンマ区切りの⼀覧形式で追加します。このポリシーが空(デフォルト)の場合、「許可する URL」フィルタリング処理で定義されている URLが許可

© 1999-2020 Citrix Systems, Inc. All rights reserved. 93

MDX Toolkit

されます。このポリシーでエントリを指定している場合、⼀覧の 1つ以上の項⽬に(DNSサフィックスの照合で)⼀致するホストフィールドを持つ URLは、「許可する URL」のフィルタリング処理を受けず変更されないまま iOSに送信されます。デフォルト値は空です。

許可する URL

iOSアプリは、”http://”などハンドル特定のスキームに登録された他のアプリケーションに URL要求を発信できます。この機能により、アプリが他のアプリに⽀援要求を送信するメカニズムが提供されます。このポリシーでは、処理のためにこのアプリからほかのアプリに渡される URL(すなわち送信 URL)がフィルター処理されます。

このポリシーでは、コンマで区切られたパターンの⼀覧の形式を使⽤します。各パターンの前にプラス記号(+)またはマイナス記号(-)を付けることができます。⼀致が⾒つかるまで、⼀覧の順序で発信 URLがパターンと⽐較されます。⼀致が⾒つかると、パターン冒頭のプラスまたはマイナス記号に応じて処理が実⾏されます。マイナス「-」接頭辞では、URLを別のアプリに渡すことが禁⽌されます。プラス「+」接頭辞では、処理のためにURLを別のアプリに渡すことが許可されます。パターンの最初の⽂字がプラス「+」またはマイナス「-」のどちらでもない場合は、+(許可)とみなされます。等号「=」で区切られた値のペアは、最初の⽂字列が出現したら 2番⽬の⽂字列で置き換えるという置換処理を⽰します。検索⽂字列の先頭に正規表現「ˆ」を使⽤すると、先頭部分が⼀致している URLを検出できます。発信 URLが⼀覧のパターンと⼀致しない場合、その URLはブロックされます。

デフォルト

+maps.apple.com

+itunes.apple.com

ˆhttp:=ctxmobilebrowser:

ˆhttps:=ctxmobilebrowsers:

ˆmailto:=ctxmail:

+ˆcitrixreceiver:

+ˆtelprompt:

+ˆtel:

+ˆlmi-g2m:

+ˆmaps:ios_addr

+ˆmapitem:

+ˆsms:

+ˆfacetime:

+ˆctxnotes:

© 1999-2020 Citrix Systems, Inc. All rights reserved. 94

MDX Toolkit

+ˆctxnotesex:

+ˆctxtasks:

+ˆfacetime-audio:

+ˆitms-apps:

+ˆctx-sf:

+ˆsharefile:

+ˆlync:

+ˆslack:

何も設定しないままにすると、次を除き、すべての URLがブロックされます。

• http:• https:• +citrixreceiver: +tel:

次の表は、許可された URLの例を⽰しています。

URL形式 説明

ˆmailto:=ctxmail: すべてのmailtoの URLが Secure Mailで開きます。

ˆhttp: すべての HTTP URLが Secure Webで開きます。

ˆhttps: すべての HTTPS URLが Secure Webで開きます。

ˆtel: ユーザーによる通話発信を許可します。

-//www.dropbox.com 管理されたアプリから発信された Dropbox URLをブロックします。

+ˆCOL-G2M: 管理されたアプリが GoToMeetingクライアントアプリを開くのを許可します。

-ˆSMS: メッセージングチャットクライアントの使⽤をブロックします。

-ˆwbx: 管理対象アプリがWebExクライアントアプリを開くのをブロックします。

+ˆctxsalesforce: Citrix for Salesforceによる Salesforceサーバーとの通信を許可します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 95

MDX Toolkit

許可する Secure Webドメイン

このポリシーは、Secure Web アプリにリダイレクトする URL(ˆhttp:=ctxmobilebrowser: およびˆhttps:=ctxmobilebrowsers:)を設定する「許可する URL」ポリシーのエントリにのみ影響します。SecureWebアプリへのリダイレクトが許可された完全修飾ドメイン名(FQDN)または DNSサフィックスのコンマ区切りの⼀覧を追加します。このポリシーが空の場合(デフォルト)、すべてのドメインが Secure Webアプリへのリダイレクトを許可されます。このポリシーに値があれば、⼀覧の少なくとも 1つの項⽬に⼀致する(DNSサフィックスの⼀致)ホストフィールドを持つ URLのみが Secure Webアプリにリダイレクトされます。その他のすべての URLは Secure Webをバイパスしてそのまま iOSに送信されます。デフォルト値は空です。

アプリ制限

重要:

電話機能へのアクセスまたは使⽤からアプリをブロックするポリシーのセキュリティについて予想される事柄に関し、検討の必要があります。これらのポリシーが[オフ]に設定されている場合、管理されていないアプリと Secure環境間でコンテンツをやり取りできます。

カメラを禁⽌

[オン]の場合、アプリによるカメラハードウェアの直接使⽤が禁⽌されます。デフォルト値は[オフ]です。

フォトライブラリを禁⽌

[オン]の場合、アプリがデバイス上のフォトライブラリにアクセスするのを防ぎます。デフォルト値は[オン]です。

マイク録⾳を禁⽌

[オン]の場合、アプリでマイクハードウェアを直接使⽤できなくなります。デフォルト値は[オン]です。

ディクテーションを禁⽌

[オン]の場合、アプリによるディクテーションサービスの直接使⽤が禁⽌されます。デフォルト値は[オン]です。

位置情報サービスを禁⽌

[オン]の場合、アプリによるロケーションサービスコンポーネント(GPSまたはネットワーク)の使⽤が禁⽌されます。Secure Mailのデフォルト値は[オフ]です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 96

MDX Toolkit

SMS作成を禁⽌

[オン]の場合、アプリでは、SMS/テキストメッセージの送信に使⽤する SMS作成機能を使⽤できません。デフォルト値は[オン]です。

メール作成を禁⽌

[オン]の場合、アプリでは、そのアプリからのメールメッセージ送信に使⽤するメール作成機能を使⽤できません。デフォルト値は[オン]です。

iCloudを禁⽌

[オン]の場合、アプリによる、設定とデータの格納および共有のための iCloudの使⽤が禁⽌されます。

注:

iCloudのデータファイルは、[ファイルのバックアップを禁⽌]ポリシーによって制御されます。

デフォルト値は[オン]です。

検索を禁⽌

[オン]の場合、アプリは辞書、iTunes、App Store、動画の再⽣、位置情報などで強調表⽰されたテキストを検索する[調べる]機能を使⽤できません。デフォルト値は[オン]です。

ファイルのバックアップを禁⽌

[オン]の場合、iCloudまたは iTunesによるデータファイルのバックアップが禁⽌されます。デフォルト値は[オン]です。

AirPrintを禁⽌

[オン]の場合、アプリでは AirPrint対応プリンターでデータを印刷する AirPrint機能を使⽤できません。デフォルト値は[オン]です。

AirDropを禁⽌

[オン]の場合、アプリによる AirDropの使⽤が禁⽌されます。デフォルト値は[オン]です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 97

MDX Toolkit

Facebookと Twitterの APIを禁⽌

[オン]の場合、[オン]の場合、アプリによる iOS Facebookおよび Twitter APIの使⽤が禁⽌されます。デフォルト値は[オン]です。

画⾯の内容を不鮮明にする

[オン]の場合、ユーザーがアプリを切り替えると、画⾯が不明瞭になります。このポリシーにより、iOSが画⾯コンテンツを記録しサブネイルを表⽰するのを阻⽌します。デフォルト値は[オン]です。

サードパーティ製キーボードを禁⽌(iOS 11以降のみ)

[オン]の場合、アプリによる、iOS 8以降のデバイス上でのサードパーティ製キーボード拡張機能の使⽤が禁⽌されます。デフォルト値は[オン]です。

アプリログを禁⽌

[オン]の場合、アプリによる業務⽤モバイルアプリ診断ログファシリティの使⽤が禁じられます。[オフ]の場合、アプリログが記録され、Secure Hubのメールサポート機能を使って収集されることがあります。デフォルトの値は[オフ]です。

アプリのネットワークアクセス

ネットワークアクセス

注:

[トンネルWeb SSO]は、この設定において[セキュアブラウズ]に相当する名前です。動作は同じです。

以下は、設定オプションです:

• 以前の設定を使⽤:デフォルトでは、過去のポリシーで設定済みの値が使⽤されます。値の変更後は、[以前の設定を使⽤]に戻さないでください。また、新しいポリシーに対する変更は、ユーザーがアプリをバージョン 18.12.0以降にアップグレードするまで反映されません。

• 禁⽌:すべてのネットワークアクセスがブロックされます。アプリが使⽤するネットワーク APIは機能しません。前述のガイドラインに基づいて、このような失敗を正常に処理する必要があります。

• 制限なし:ネットワーク呼び出しはすべて直接転送され、トンネリングされません。• トンネル-完全 VPN:管理対象アプリケーションからのトラフィックはすべて Citrix Gatewayを介してトンネリングされます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 98

MDX Toolkit

• トンネル-Web SSO:HTTP/HTTPS URLが書き込まれます。このオプションでは、HTTPトラフィックおよび HTTPSトラフィックのトンネリングのみが許可されます。トンネル-Web SSOの⼤きなメリットは、HTTPトラフィックと HTTPSトラフィックのシングルサインオン(SSO)、および PKINIT認証です。Androidでは、このオプションはセットアップの⼿間が少ないため、Web閲覧操作に関する推奨オプションとなっています。

• トンネル-完全 VPNおよびWeb SSO:必要に応じて VPNモードの⾃動切り替えを許可できます。いずれかの VPNモードで認証要求が処理できないためにネットワーク要求が失敗した場合、代替モードで再試⾏されます。

いずれかのトンネルモードを選択すると、企業ネットワークに戻る Per-app VPNトンネルがこの初期モードで作成され、Citrix Gatewayの分割トンネルの設定が使⽤されます。企業ネットワークのリソースにクライアント証明書またはエンドツーエンドの SSLを使⽤する接続に対しては、[トンネル完全 VPN]を推奨します。シングルサインオン(SSO)を必要とする接続に対しては、[トンネル-Web SSO]が推奨されます。

Micro VPNセッションを必須とする

[はい]の場合、企業ネットワークおよびアクティブなセッションに接続する必要があります。[いいえ]の場合、アクティブなセッションは必要ありません。デフォルト値は[以前の設定を使⽤]です。新しくアップロードされたアプリの場合、デフォルト値は[いいえ]です。この新しいポリシーへのアップグレード前に選択されていた設定は、[以前の設定を使⽤]以外のオプションを選択するまで有効のままになります。

Micro VPNセッションを必須とするまでの猶予期間(分)

この値では、(オンラインセッションが検証されるまで)[オンラインセッションを必須とする]ポリシーにより使⽤を停⽌されるまで、アプリケーションを使⽤できる分数を指定します。デフォルト値は 0(猶予期間なし)です。このポリシーは、Microsoft Intuneおよび EMSとの統合には適⽤されません。

証明書ラベル

証明書ラベル StoreFront証明書統合サービスと⼀緒に使⽤する場合、このラベルによって、このアプリに必要な特定の証明書が識別されます。ラベルが指定されないと、証明書を公開キー基盤(PKI)で使⽤できるようにはなりません。デフォルト値は空です(証明書が使⽤されません)。

除外の⼀覧

VPN接続を使⽤せずに直接アクセスする FQDNまたは DNSサフィックスのコンマ区切りの⼀覧。この設定は、Citrix Gatewayを分割トンネルリバースモードに設定している場合の[トンネルWeb SSO]モードにのみ適⽤されます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 99

MDX Toolkit

アプリログ

デフォルトのログ出⼒

デフォルトで、業務⽤モバイルアプリ診断ログファシリティによってどの出⼒媒体が使⽤されるかを決定します。選択肢としては、[ファイル]、[コンソール]、または両⽅です。デフォルト値は[ファイル]です。

デフォルトのログレベル

業務⽤モバイルアプリ診断ログファシリティのデフォルトの詳細度を制御します。各レベルには、下位のレベル値が含まれます。使⽤できるレベルの範囲は次のとおりです:

• 0 -ログを記録されない• 1 -深刻なエラー• 2 -エラー• 3 -警告• 4 -情報メッセージ• 5 -詳細な情報メッセージ• 6〜 15 - 1〜 10のデバッグレベル

デフォルト値はレベル 4(情報メッセージ)です。

最⼤ログファイル数

ロールオーバーする前に、業務⽤モバイルアプリ診断ログファシリティによって保持されるログファイルの数を制限します。最⼩は 2です。最⼤は 8です。デフォルト値は 2です。

最⼤ログファイルサイズ

ロールオーバーする前に、業務⽤モバイルアプリ診断ログファシリティによって保持されるログファイルのサイズ(単位はMB)を制限します。最⼩値は 1MBです。最⼤値は 5MBです。デフォルト値は 2MBです。

システムログのリダイレクト

[オン]の場合、アプリから業務⽤モバイルアプリ診断ファシリティへのシステムまたはコンソールのログを傍受して、リダイレクトします。[オフ]の場合、システムまたはコンソールのログのアプリ使⽤は傍受されません。

デフォルト値は[オン]です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 100

MDX Toolkit

アプリのジオフェンス

中⼼点の経度

経度(X座標)は、アプリの操作をその中に限定するポイント/半径ジオフェンスの中⼼点です。構成されたジオフェンスの外で操作しても、アプリはロックされたままとなります。

「-31.9635」など、符号付きの⻆度形式(DDD.dddd)で指定します。西経の場合は先頭にマイナス記号を付ける必要があります。デフォルト値は 0です。

中⼼点の緯度

緯度(Y座標)は、アプリの操作をその中に限定するポイント/半径ジオフェンスの中⼼点です。構成されたジオフェンスの外で操作しても、アプリはロックされたままとなります。

「43.06581」など、符号付きの⻆度形式(DDD.dddd)で指定します。南半球の緯度の場合は先頭にマイナス記号を付ける必要があります。デフォルト値は 0です。

半径

半径は、アプリの操作をその中に限定するジオフェンスの半径です。構成されたジオフェンスの外で操作しても、アプリはロックされたままとなります。

値はメートル単位で指定します。0に設定した場合、ジオフェンスは無効になります。[位置情報サービスを禁⽌]ポリシーが有効な場合、ジオフェンスは正常に機能しません。デフォルトは 0(無効)です。

Analytics

Google Analyticsの詳細レベル

シトリックスは分析データを収集して製品の質を向上させます。[Anonymous]を選択した場合、企業を特定できる情報は収集されません。デフォルトは[Complete]です。

レポート

Citrixレポート

[オン]の場合、問題のトラブルシューティングを⽬的として、Citrixによりクラッシュレポートと診断情報が収集されます。[オフ]の場合、データの収集は⾏われません。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 101

MDX Toolkit

注:

この機能は機能フラグで制御されることもあります。この機能を動作させるには、フィーチャーフラグとこのポリシーの両⽅が有効である必要があります。

デフォルトの値は[オフ]です。

アップロードトークン

アップロードトークンは、Citrix Insight Services(CIS)アカウントから取得できます。このオプションのトークンを指定した場合、CISで、デバイスからアップロードされたクラッシュレポートと診断情報にアクセスできるようになります。これらの情報には Citrixもアクセスできます。デフォルト値は空です。

Wi-Fiのみでレポートを送信

[オン]の場合、ユーザーがWi-Fiネットワークに接続している場合のみ Citrixはクラッシュレポートと診断情報を送信します。デフォルト値は[オン]です。

レポートファイルキャッシュの最⼤値

キャッシュを削除するまでに保持するクラッシュレポートと診断情報パッケージのサイズ上限を指定します。最⼩値は 1MBです。最⼤値は 5MBです。デフォルト値は 2MBです。

MDX開発者ガイド

August 23, 2019

Citrix Endpoint Managementは、モバイルデバイス、アプリ、およびデータの管理を可能にするエンタープライズソリューションです。Endpoint Managementモバイルアプリ管理(MAM)の基本前提は、会社のプライベートアプリストア、Apple App Store、または Google Play Storeにホストされる、既存のアプリケーションにエンタープライズ機能を追加することです。

モバイルアプリに Endpoint Managementエンタープライズ機能を追加するには、MDX Toolkitでモバイルアプリをラップします。MDX Toolkitはアプリコンテナテクノロジの 1つで、MDX機能を追加することで、モバイルデバイス環境を強化し、Endpoint Managementによるセキュアな展開向けにアプリを準備します。MDX機能にはポリシーと設定、署名済みのセキュリティ証明書、およびモバイルアプリ管理コードが含まれます。

MDX Toolkitには、Citrix MDXアプリコンテナテクノロジによって包括的なMDX機能セットをモバイルアプリに提供する、MDXアプリ SDKが含まれています。APIを使⽤して次のことを⾏えます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 102

MDX Toolkit

• EndpointManagementポリシーに基づいてラップされたアプリで操作を実⾏します。たとえば、EndpointManagementポリシーによってMDXアプリでのカット/コピーを禁⽌すると、アプリでのテキスト選択を禁⽌できます。アプリでは、他のMDX準拠アプリと通信してポリシーを共有できます。

• MDX準拠アプリ内でアクティビティを検出します。たとえば、アプリがラップされているかどうかや、管理対象であるかどうかを確認できます。

• セキュリティやポリシー適⽤などのカスタム機能を追加する。

• Citrix環境内または Citrix環境外で動作するモバイルアプリを開発する。

MDXアプリ SDKを使⽤するアプリは、Endpoint Managementで使⽤する場合にMDXポリシーによって⼀元的に構成できるだけでなく、Citrix環境外でスタンドアロンで動作できます。

MDXアプリ SDK 10.2の新機能

iOS向けMDXアプリ SDKのリリース 10.2には、以下の機能強化および更新が含まれています。

最⼩データ保護クラスポリシーは⾮表⽰になっています。このポリシーを Citrix Endpoint Managementで確認できるようにするには、(Applications/Citrix/MDXToolkit/dataにある)アプリの policy_metadata.xmlファイルを開き、MinimumDataProtectionClassセクションで、PolicyHiddenの値を falseに変更します。アプリをラップ後、Citrix Endpoint Managementにアプリを追加すると、ポリシーが表⽰されます。

アプリのラップと Xcode構築プロセスの統合。開発者は、Xcode構築プロセスの⼀部として iOSアプリをラップして公開できるようになりました。詳しくは、「SDKをアプリライブラリに統合する」を参照してください。

Androidアプリでの共有コンテナのサポート。MDXアプリ SDKに、MDX共有コンテナ機能⽤の Android APIが含まれるようになり、アプリ間で管理対象コンテンツを共有できるようになりました。たとえば、共有コンテナでは、登録されたアプリを介して証明書や秘密キーを共有できるため、Secure Hubからではなくセキュアなコンテナからアプリが証明書を取得できます。詳しくは、「Androidの XenMobile API」を参照してください。

注:

開発者はバックグラウンド処理(ロックされたデバイスでのコンテンツの更新またはバックグラウンドの同期など)を実⾏するラップされたアプリをテストする必要があります。

MAMの機能

Endpoint Managementによって追加されるエンタープライズ機能は、Endpoint Managementコンソールでアプリごとに管理者が更新するポリシーによって制御します。管理者が指定したスケジュールに基づいて、EndpointManagementによってポリシーがモバイルデバイスにプッシュされます。ポリシーにより次のような機能を管理します。

• 認証。管理対象アプリを開くときに、Endpoint Managementがユーザーに対して企業資格情報または PINの⼊⼒を要求できます。この資格情報チャレンジを定期的に繰り返すことができます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 103

MDX Toolkit

• アプリの更新。管理対象アプリの更新が使⽤可能になると、Endpoint Managementがユーザーに通知します。管理者は、特定の期間内で更新を必須にできます。ユーザーが更新を受け⼊れない場合、その期間が経過すると、古いバージョンのアプリは実⾏されなくなります。

• リモートロックとリモートワイプ。管理者はアプリごとまたはデバイスごとにアプリを⼀時的にロックまたは完全にワイプできます。

• ネットワークの制限と VPN。Endpoint Managementポリシーがネットワークアクセスを制御します。アクセスは、ブロックするか、完全 VPN経由でルーティングするか、またはプロキシ VPN経由でルーティングできます。VPNルーティングは、企業でホストされている Citrix Gatewayデバイス経由で⾏われます。

• アプリ間の通信の制限。Endpoint Managementポリシーが、アプリ間のドキュメント共有をブロックするのか、管理対象アプリ間でのみ許可するのかを判断します。つまり、アプリの[このアプリケーションで開く]ポップアップで、⾮管理対象アプリを除外できます。

• 機能の抑制。Endpoint Managementポリシーで、カメラ、マイク、位置情報センサーなど、アプリのさまざまなデバイス機能を無効にできます。

Endpoint Managementコンポーネント

以下の Endpoint ManagementコンポーネントでMAM機能を利⽤できます。

• Citrix Endpoint Managementサーバー

この企業内サーバーまたはクラウド内サーバーは、内部アプリストアである Citrix Endpoint ManagementStoreをホストします。管理者はモバイルアプリを Endpoint Managementにアップロードして、アプリとデバイスのポリシーを構成します。

• Secure Hub

企業ユーザーは、モバイルデバイスに Secure Hub for Androidまたは Secure Hub for iOSをインストールして、アプリをデバイス登録 URLおよび資格情報で構成します。Secure Hubが開いたら、ユーザーがCitrix Endpoint Management Storeからエンタープライズアプリを選択します。アプリがダウンロードされてデバイスにインストールされると、Secure Hubがこれらのアプリを管理するためのハブとして機能し、ユーザー認証や、⼀元管理されているポリシーの更新などのタスクを実⾏します。

• MDX

MDXは、MAM機能のソースです。MDX ToolkitによってMDXコードがモバイルアプリに追加されます。アプリのラップ以外では、MDXコードは直接使⽤しません。

• MDX ToolkitとMDXアプリ SDK

MDX Toolkitにより、アプリのラッピングと呼ばれるプロセスであるエンタープライズ機能が既存のモバイルアプリに追加されます。MDXアプリ SDKにより、開発者およびシステムインテグレーターはモバイルアプリをMDX準拠にできます。アプリのラッピングでは、3つの主なタスクが実⾏されます。まず、アプリ管理機能を実装する Citrixコードがアプリに追加されます。このタスクの出⼒は、新しいアプリファイルです。次に、アプリのラッピングにより、新しいアプリファイルがセキュリティ証明書で署名されます。最後に、アプ

© 1999-2020 Citrix Systems, Inc. All rights reserved. 104

MDX Toolkit

リのラッピングにより、ポリシー情報およびその他の設定が含まれたMDXファイルが作成されます。署名されたアプリファイルもMDXファイルに直接含まれる場合があります。

この開発者ガイドでは、ISVのアプリのラッピングについて重点的に説明します。

ISVアプリの⾮管理モードおよび管理モード

MDXアプリ SDKにはデュアルモードアプリ動作が⽤意されており、MDXインフラストラクチャの内部または外部で実⾏できるアプリを展開できます。Secure Hubとは無関係に実⾏されるアプリは、⾮管理対象アプリと呼ばれます。特定の条件を満たしている場合、これらのアプリは管理対象アプリに移⾏し、Secure Hubの制御下で実⾏されます。

デュアルモード動作は、Endpoint Managementバックエンドから直接展開されたMDXアプリとは⼤きく異なります。これらのアプリでは必ず、Citrix MDXが存在しており、Endpoint Management Storeで承認が実⾏される必要があります。ただし、Intuneを使⽤する場合、Secure Hubや Endpoint Management Storeがなくても、これらのアプリを展開して管理できます。

アプリをMDXと統合する際に、Endpoint Management APIを使⽤して、必要になるデュアルモード動作のタイプを指定できます。管理対象アプリと⾮管理対象アプリの 2つのバージョンのアプリを開発したり、両⽅と無関係に使⽤してMDXに包含する単⼀のアプリを開発したりできます。MDXフレームワークによって、管理対象アプリおよび⾮管理対象アプリに関連付けられたデフォルト動作が適⽤されます。

⾮管理対象アプリから管理対象アプリへの移⾏は、アプリがGeneralアプリとしてラップされているのか Premiumアプリとしてラップされているのかによって異なります。

• Generalアプリ: Generalアプリは、Apple App Storeまたは Google Play Storeにホストされます。Secure Hubのないユーザーは、⼀般的なアプリストアのアプリと同様に、アプリをダウンロードして通常は⾮管理モードで実⾏できます。管理対象外のユーザーが後で Secure Hubをインストールすると、以下の条件を満たしている場合、ISVアプリが管理対象モードに移⾏します。

– ユーザーが 1つまたは複数の Citrix Endpoint Managementエンタープライズストアにサインインしている。

– ユーザーが、アプリが展開されている Endpoint Managementデリバリーグループに存在している。

– MDXでユーザーがサブスクライブされている。

– メッセージが表⽰されたら、ユーザーは企業がアプリを管理できることを確認します。

ユーザーが企業のアプリ管理を解除した場合、個⼈使⽤として引き続きそのアプリを実⾏できます。

• Premiumアプリ: Premiumアプリは、エンタープライズユーザーを対象とするアプリです。Citrix MDXアプリは Premiumアプリの⼀例です。Premiumアプリは通常、管理モードで実⾏されますが、埋め込みのMDXフレームワークでは、デフォルトのポリシーファイルで設定したデフォルトのMDXポリシーセットを使⽤して Premiumアプリを⾮管理モードで実⾏できます。そのため、ユーザーがエンタープライズアカウントに関連付けられていない場合でも、効率的にアプリ動作を制御してMDX機能を使⽤できます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 105

MDX Toolkit

管理対象外のユーザーが後で Secure Hubをインストールすると、以下の条件を満たしている場合、アプリが管理モードに⾃動的に移⾏されます。

– ユーザーが、アプリが展開されている Citrix Endpoint Managementデリバリーグループに存在している。

– 必要に応じて、ユーザーが Secure Hubにサインインしている。– MDXでユーザーがサブスクライブされている。

管理モードから⾮管理モードにアプリケーションを転換することはできません。

次の図は、管理対象か⾮管理対象かに基づいて、Generalアプリと Premiumアプリの相違点について概要を⽰したものです。

ISVアプリのラッピング

ここでは、ISVのアプリのラップについて⼀般的な情報を説明します。エンタープライズ管理者が実⾏するアプリのラップについては、「MDX Toolkitについて」を参照してください。

ISVアプリをラップする場合、MDX Toolkitによって 2つのファイル、.mdxファイルとそのアプリファイル(.ipa、.app、または.apk)が作成されます。MDX Toolkitでは、アプリストア URLを.mdxファイルに埋め込むことができ、次のセクションで説明するように、このファイルを顧客に直接配信するか、または Citrix Ready Marketplaceにアップロードできます。アプリファイルは、⾃分でホストするか、または顧客に配信して、アプリストアを介して配布します。

下の図で⽰しているように、MDX Toolkitはアプリファイル(.ipa、.app、または.apk)を Citrixコンポーネントおよびご使⽤のキーストアまたは署名証明書と結合させて、.mdxファイルと修正したアプリファイルを⽣成します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 106

MDX Toolkit

ISVアプリのラップによって追加されるアイテムには、次のものがあります。

• フレームワークが Secure Hubと結合するときに、MDX SDKフレームワークで必要となるデータが含まれた情報ファイル。対応するバインド情報は、Endpoint Managementに追加された.mdxファイルを介してEndpoint Managementサーバーから Secure Hubに渡されます。データには、⾃⼰識別に使⽤されるアプリ IDや、アプリ更新チェックに使⽤されるパケット IDなどのアイテムが含まれます。

• MDXアプリ SDKに統合されたアプリに埋め込まれているOpenSSL FIPS Crypto Object Moduleの FIPSフィンガープリント。

• iOSの場合のみ:アプリファイルに追加され、管理者が Endpoint Managementに追加する.mdxファイルによって Secure Hubにも渡される、新しい URLスキーム。

Citrix Readyプログラムについて

Citrix では、Citrix Readyプログラムを通じて ISVアプリを評価および認定しています。評価には、EndpointManagement統合テストが⼤きく関係します。認定によって、アプリが Endpoint Managementインフラストラクチャに適合していることを確認できるため、企業はアプリへの信頼を強めることができます。

Citrix Readyプログラムの⼀環として、認定された ISVアプリのバイナリを Apple App Storeまたは GooglePlay Storeに直接公開できます。つまり、企業にバイナリを配信する必要がないため、アプリの更新をさらに適切に制御できます。また、アプリは ISV証明書で署名されます。認定されたアプリを企業に直接配信するのか、各⾃でホストするのかを選択することもできます。

また、バンドルを Citrix Ready Marketplaceに公開するのか、または Citrix Endpoint Managementの顧客に直接配信するのか、ISVアプリの.mdxバンドルを配信する⽅法を選択できます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 107

MDX Toolkit

詳しくは、「Citrix Ready」を参照してください。

MDXアプリのユーザーエクスペリエンス

ユーザーはアプリを操作する⽅法は、ユーザーがアプリをどのようにインストールおよび起動するかに応じて、MDXアプリ SDKに統合されています。

ユーザーが Secure Hubで開始

1. ユーザーが Secure Hub、および Apple App Storeまたは Google Play Storeを開きます。2. ユーザーは Endpoint Management Storeにサインオンし、このストアをサブスクライブします。3. ユーザーがパブリックストアからアプリをダウンロードしてインストールします。4. 必要に応じて、Secure Hubによってユーザーにサインインを求めるメッセージが表⽰されます。5. アプリが以前に⾮管理対象であった場合、⾃動的に管理対象に移⾏します。

ユーザーが Apple App Storeまたは Google Play Storeで開始

デバイスに Secure Hubが存在する場合、ユーザーは Generalアプリおよび Premiumアプリに対し次の操作を⾏います。

Generalアプリ

1. ユーザーがアプリを起動します。

2. アプリが Secure Hubのインストールを検出して、アプリが有効になると、アプリによってユーザーに管理モードへの移⾏を確認するように求めるメッセージが表⽰されます。

3. アプリを企業が管理することをユーザーが選択する場合、必要に応じて、Secure Hubによってユーザーにサインインを求めるメッセージが表⽰されます。

4. MDXでアプリがユーザーにサブスクライブされると、アプリが管理モードに移⾏します。

Secure Hubがデバイスに存在しない場合、またはアプリが有効になっていない場合、通常のパブリックストアアプリと同様に、アプリは⾮管理モードで実⾏されます。

Premiumアプリ

1. ユーザーがアプリを起動します。2. アプリが Secure Hubのインストールを検出して、アプリが有効になると、アプリが管理モードに⾃動的に移⾏します。Secure Hubの資格情報が必要な場合、アプリによってユーザーに管理モードへの移⾏が通知されて、サインインを求めるメッセージが表⽰されます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 108

MDX Toolkit

MDXアプリ SDKの既知の問題

• アイコンが含まれている場合を除き、Androidアプリではラップは動作しません。• ⼀部のアプリケーションフレームワークは、Citrix Endpoint Managementで互換性の問題があります。詳しくは、「モバイルアプリケーション開発フレームワークのサポート」(Android)および「サードパーティ製ライブラリのサポート」(iOS)を参照してください。

• その他の問題については、「既知の問題」を参照してください。

システム要件

March 5, 2020

ここでは、MDX ToolkitおよびMDXアプリ SDKのシステム要件について説明します。

MDX ToolkitおよびMDXアプリ SDK(iOSおよび Android)

• Java Development Kit(JDK)1.7または 1.8。

JDK 1.8は、オラクル社のWebサイトのJava SE Development Kit Downloadsからダウンロードできます。インストール⼿順については、Oracle社のWebサイトのJDK 8 and JRE 8 Installation Guideを参照してください。JDKをすべてインストールし、JDK 1.8をデフォルトに設定します。

• macOS 10.10

MDX ToolkitおよびMDXアプリ SDKのインストーラーをmacOSで実⾏する必要があります。インストーラーには iOSおよび Androidアプリの両⽅をラップするmacOSツールと、AndroidアプリをラップするJavaコマンドラインツールが含まれます。

• MDXアプリ SDK:iOS 11以降、Xcode 9環境。Bitcode⽣成が無効(Appleが提供する最新バージョンのXcodeを使⽤することをお勧めします)。

デフォルトでは Bitcode⽣成は有効です。これを無効にして、MDXアプリ SDKで Xcode 9を使⽤する必要があります。

iOSモバイルアプリをラップするためのその他の要件

• iOSのアプリケーションラッピングの前提条件にアクセスするには、Apple配布アカウントに登録する必要があります。iOS開発者アカウントには、Enterprise、Individual、Universityの 3種類があります。iOSDeveloper Enterpriseアカウントを使⽤してください。

– iOS Developer Enterpriseアカウント:デバイスの制限なく、無制限のアプリをアプリラッピングにかかわらずプロビジョニング、展開、テストできる唯⼀の種類の Apple Developerアカウントです。開発者がアプリに署名できるように、開発者に Developer Certificateを配布してください。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 109

MDX Toolkit

– iOS デベロッパー個⼈アカウント:年間登録機器数は 100 台に制限されており、Citrix EndpointManagementでアプリのラッピングやエンタープライズ配信を受けることはできません。

– iOS Developer University アカウント:年間登録機器数は 200 台に制限されており、EndpointManagementでのアプリラッピングおよびエンタープライズ配信の対象にはなりません。

注:

Xcode Apple Developer Webサイトから Xcodeコマンドラインツールをダウンロードします。macOS10.10はこのツールを⾃動でインストールしません。ツールをインストールするには、次の⼿順を実⾏します。

1.[Applications]>[Utilities]で[Terminal]をクリックし、Macコマンドラインインターフェイス(CLI)を使⽤します。

2. 次のコマンドを⼊⼒します。

1 xcode-select --install

「install」の前にハイフンを 2つ⼊⼒するようにしてください。

3. Xcodeコマンドラインツールのインストール後、Xcodeを実⾏して必要な前提条件をインストールします。

Androidモバイルアプリをラップするためのその他の要件

• Androidソフトウェア開発キット(SDK)、APIレベル 21(サポートされる最⼩バージョン)。

– GoogleデベロッパーWebサイトの SDKダウンロードページから、Android SDKをダウンロードします。

– 最新の Android SDKツール、Android SDK Platform-tools、および Android SDK Build-toolsをインストールします。

詳しくは、GoogleデベロッパーWebサイトの「Installing the Android SDK」を参照してください。

– MDX Toolkitインストールフォルダーにある android_settings.txtファイルを編集します。ラッピングに使⽤する Android SDK Build Toolsを含めるように PATH変数を設定します。Platform Toolsと Android SDKの toolsサブディレクトリへのパスを追加します。以下の例を参照してください:

PATH=/Users/Sample/Downloads/android-sdk-macosx/platform-tools:/Users/Sample/Downloads/android-sdk-macosx/build-tools/28.0.2:/Users/Sample/Downloads/android-sdk-macosx/tools

• 有効なキーストア(Androidアプリの署名に使⽤するデジタル署名済みの証明書を含む)

⼀度キーストアを作成したら、現在および将来のラッピングでこのファイルを使⽤できます。以前に展開したアプリの新しいバージョンをラップする時に同じキーストアを使⽤しない場合、このアプリのアップグレードは機能しなくなります。代わりにユーザーは、新しいバージョンをインストールする前に⼿動で古いバージョンを削除する必要があります。

ほとんどの場合、キーストアに含める秘密キーは 1つのみですが、複数のキーを含めることができます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 110

MDX Toolkit

証明書について詳しくは、Android Developers Webサイトのアプリの署名を参照してください。

次のガイドラインを満たすキーでアプリを署名する必要があります。

– 2048ビットキーサイズ– DSAキーアルゴリズム(keyalg)– DSA署名アルゴリズム(sigalg)がある SHA1

Androidアプリの開発

March 5, 2020

XenMobile APIをモバイルアプリに使⽤し、アプリを Citrix Endpoint Management対応にできます。ここではMDXアプリ SDKをアプリライブラリに統合する⽅法と、アプリをテスト、認定、発⾏する⼿順について説明します。

MDXアプリ SDKの使⽤⽅法

以下は、APIの使⽤⽅法例です。

アプリで制限を適⽤する

アプリが特定の機能または操作へのアクセスを許可するかどうかを、管理対象アプリかラップされたアプリかを⽰すAPI呼び出しに基づいて制御できます。たとえば、アプリが管理対象アプリでない、またはラップされたアプリでない場合、すべての機能および操作へのユーザーアクセスを許可できます。アプリがラップされているが管理されてはいない場合、特定の機能または操作を制限できます。アプリがラップされており管理されている場合、アプリに追加の制限を適⽤できます。

Citrix Endpoint Management設定に基づいて操作を実⾏する

たとえば、Citrix Endpoint Management管理者が[Wi-Fiを必須とする]ポリシーを[オン]に設定している場合、つまりワイヤレスネットワークでアプリを実⾏できる場合、ユーザーに通知が表⽰されるようにするとします。APIを使⽤してポリシー設定を検索し、ポリシー値に基づいてコードを変更します。

• カスタムポリシーに基づいて操作を実⾏する

API を使⽤して、アプリのカスタムポリシーを読み取ることができます。たとえば、Citrix EndpointManagement 管理者がアプリに通知を表⽰できるようにします。そのためには、Citrix EndpointManagementコンソールで空のカスタムポリシー(デフォルト)、または管理者が⼊⼒したシステムメッセージが含まれるカスタムポリシーを作成します。アプリが管理対象である場合、Citrix EndpointManagement管理者によってポリシー値が変更されると、アプリがそれを検出します。ポリシー値にメッセージが含まれていると、アプリは通知を表⽰します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 111

MDX Toolkit

APIの定義については、「Android⽤の API」を参照してください。

Android Studioおよび Gradleを使⽤した、アプリライブラリへの SDKの統合

AndroidアプリにMDXアプリ SDKを追加するには、ここで説明している⼿順に従って、アプリにMDX App Javaライブラリをインポートまたはコピーする必要があります。⼿順は、Android Studioおよび Gradleのビルドシステムに基づきます。⼿順を進めると、アプリにMDXアプリ SDKライブラリが追加されて、アプリがクラスとメソッドにアクセスできるようになります。

1. 最新のMDX Toolkitがインストールされていない場合は、インストールします。

a) Citrix Endpoint Managementのダウンロードページにログオンします。

b) XenMobile AppsおよびMDX Toolkitを展開します。

c) インストールするMDX Toolkitのバージョンを⾒つけてリンクをクリックし、ダウンロードを開始します。

d) macOS 10.9.4以降および Xcode 5.1以降のmacOS Finderツールで Open MDXToolkit.mpkgを開きます。

インストールパスは、Applications/Citrix/MDXToolkitです。

MDXアプリ SDKファイルは、Applications/Citrix/MDXToolkit/data/MDXSDK_Androidで⾒つかります。

2. MDX Toolkitのインストール後、Android Developers Webサイトから Android Studioをインストールして、以下を実⾏します:

a) プロジェクトディレクトリで、libsという名前のフォルダーを作成します。

b) libsフォルダーにファイルworxsdk.aarを追加します。

c) プロジェクト「build.gradle」を編集して、libsフォルダーをリポジトリとして検索するルールを追加し、libsフォルダーのworxsdk.aarを依存関係として含めます。

d) APKファイルを作成します。

worxsdk.aarの例:

1 // Top-level build file where you can add configuration optionscommon to all sub-projects/modules.

2 buildscript {34 repositories {56 jcenter()7 }8

© 1999-2020 Citrix Systems, Inc. All rights reserved. 112

MDX Toolkit

9 dependencies {1011 classpath ’com.android.tools.build:gradle:1.1.0’12 // NOTE: Do not place your application dependencies here;

they belong13 // in the individual module build.gradle files14 }1516 }1718 allprojects {1920 repositories {2122 jcenter()23 flatDir {2425 dirs ’libs’26 }2728 }2930 }3132 dependencies {3334 compile(name:’worxsdk’, ext:’aar’)

OpenSSLライブラリは、Androidアプリ内で類似するライブラリとの競合が発⽣する可能性があります。競合を回避するために、Citrixバージョンのライブラリを使⽤することをお勧めします。

Androidアプリの公開

AndroidアプリにMDXアプリ SDKを追加したら、以下の⼿順を実⾏してアプリをラップ、テスト、認定、公開します。コマンドラインインターフェイスでアプリケーションをラップする時に、以下のいずれかのオプションを含めます。

• -appType Enterprise• -appType Premium• -appType General

デフォルトは–appType Enterpriseです。以下のガイドラインを使⽤して appTypeを選択します。

• Enterprise: アプリは、ユーザーデバイスに Secure Hub をインストールする必要があります。また、

© 1999-2020 Citrix Systems, Inc. All rights reserved. 113

MDX Toolkit

StoreFrontにアプリケーションを公開して、Secure Hubによってアプリをインストールする必要があります。

• General: ISVアプリは、Secure Hubなしに動作します(初回)。アプリケーションがユーザーデバイスでSecure Hubを検出するか、⼀致するアプリケーションが公開されると、アプリケーションは管理対象モードに移⾏できます。管理対象アプリとして実⾏される場合、Generalアプリはエンタープライズアプリと同じように動作します。⾮管理対象アプリとして実⾏される場合は、Citrixポリシーは適⽤されません。

• Premium: ISVアプリは、ユーザーデバイスに Secure Hubがインストールされていなくても動作します(初回)。アプリケーションがユーザーデバイスで Secure Hubを検出するか、⼀致するアプリケーションが公開されると、アプリケーションは管理対象アプリに移⾏できます。⾮管理対象アプリとして実⾏される場合、MDXによって抑制ポリシーなどのポリシーがいくつか適⽤されます(ネットワークアクセスの許可、スクリーンキャプチャの許可、またはカメラの禁⽌)。

ラップされた.apkファイルをアプリストアまたはWebサーバーにアップロードする必要があり、ラップ時に URLがわかる場合、-storeURLオプションを追加します。⼿順で以降に⽰すように、URLを後で追加することもできます。

MDX Toolkitによって、修正された.apkファイルおよび.mdxファイルが出⼒されます。これらのファイルを以降の⼿順で使⽤します。MDX Toolkitを使⽤してアプリケーションの.apkファイルをラップします。詳しくはMDXToolkitのドキュメントの「Androidモバイルアプリのラッピング」参照してください。ここでは、ISVアプリに固有のコマンドを含め、すべてのラップコマンドを⽰しています。

重要:

MDX Toolkitユーザーインターフェイスを使⽤して ISVアプリをラップするオプションは利⽤できなくなりました。コマンドラインを使⽤して ISVアプリをラップする必要があります。

アプリをテストするには、以下の⼿順を実⾏します

1. 変更後の.apkファイルを Androidデバイスにインストールして、すべてのアプリが機能することを確認します。

2. Citrix Endpoint Managementコンソールを使⽤して、.mdxファイルを Citrix Endpoint Managementに追加し、テストのために Androidデバイスに配信します。詳しくは、「MDXアプリを Citrix EndpointManagementに追加するには」を参照してください。そのデバイスで、アプリのMDX機能をテストします。

カスタムポリシーを追加した場合は、それらのポリシーが Citrix Endpoint Managementコンソールに表⽰されており正常に機能することを確認します。default_sdk_policies.xmlを変更した場合は、変更をテストしてください。ポリシーの追加とポリシーのデフォルトの変更について詳しくは、「ポリシーのデフォルトとカスタムポリシー」を参照してください。

3. アプリで検出された問題を解決して、.apkファイルを再⽣成し、MDX Toolkitを使⽤して再度ラップします。

4. 検証および認定のために、元の.apkファイル(MDX Toolkitで出⼒されたファイルではなく)をシトリックスに送信します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 114

MDX Toolkit

5. Citrixでアプリが認定されると、承認のために、MDX Tookitで⽣成された.apkファイルが Google PlayStoreに送信されます。

6. Googleでアプリが承認されたら、MDX Toolkitを実⾏して.mdxファイルでアプリのダウンロード⽤ URLを更新します。以下は、URLを変更するコマンドの例です。

1 java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \2 setinfo \3 -in ~/Desktop/SampleApps/Sample.mdx \4 -out ~/Desktop/SampleApps/wrapped/Sample.mdx \5 -storeURL \6 “ https://play.google.com/store/apps/details?id=com.zenprise”

7. 最終的な.mdxファイルを Citrix Endpoint Management管理者に提供します。管理者は Citrix EndpointManagementに追加してユーザーに公開します。または、アプリをより広範囲に配布するには、Citrix ReadyMarketplaceに MDX 認証アプリを登録することができます。詳しくは、「Citrix Ready Worx VerifiedProgram」を参照してください。

アプリのアップグレードに関する考慮事項

Citrix Endpoint Managementソフトウェアはリリースごとに⼤幅に変更されます。最新の機能やバグ修正を利⽤するには、最新バージョンのMDX Toolkitを使⽤してアプリをラップする必要があります。以前にMDX Toolkitで⽣成した変更後のファイルではなく、元の.ipaまたは.apkファイルをラップするように注意してください。

MDXアプリ SDKの関連バージョンを使⽤してください。

Androidアプリのベストプラクティス

January 13, 2020

ここで説明しているベストプラクティスを使⽤すると、Androidデバイスで Citrix Endpoint Managementとモバイルアプリ間の互換性が向上します。

MDXアプリ SDKおよびラッピング

アプリケーションでMDXアプリ SDKを使⽤する場合、ラップを⾏うには、⼀致するMDX Toolkitバージョンを使⽤する必要があります。これらの 2つのコンポーネント間でバージョンに不⼀致がある場合は、操作が失敗する可能性があります。

このような不⼀致を防ぐために、アプリケーションの種類 Premiumまたは Generalでアプリケーションをラップします。これにより、事前にラップされたアプリを提供できるため、顧客がアプリをラップする必要がなくなり、⼀

© 1999-2020 Citrix Systems, Inc. All rights reserved. 115

MDX Toolkit

致しないMDX Toolkitが使⽤されることがありません。アプリのラッピングについて詳しくは、「Androidモバイルアプリのラッピング」を参照してください。

メインスレッドのブロックの回避

メインスレッドでの実⾏時には、コードブロックは使⽤しないようにします。これは Googleのガイドラインですが、Citrix Endpoint Managementではさらに重要です。管理対象アプリで⼀部の操作に時間がかかる場合があり、これらの操作によって以降のスレッド実⾏がブロックされる場合もあります。

以下はコードブロックの⼀例です。

• ファイル操作またはデータベース操作• ネットワーク操作

端的に⾔えば、onCreateなどのアプリケーションライフサイクルメソッドはすべて、メインスレッドで実⾏されます。

Google から提供されている StrictMode API を使⽤すると、コードブロックを検出するのに役⽴ちます。詳しくは、このブログ投稿を参照してください。https://android-developers.blogspot.com/2010/12/new-gingerbread-api-strictmode.html

強固なコードの作成

特に、戻り値を確認するか、またはフレームワーク APIの例外をキャッチする必要があります。これはプログラミングの⼀般的なベストプラクティスに過ぎませんが、管理対象アプリケーションの場合は特に重要です。

基盤となる機能が Citrix Endpoint Managementポリシーによってブロックされていると、正常に動作すると想定されているさまざまな APIが正しく動作しません。例には、前述したすべての機能が含まれます。

• 使⽤できるネットワークがない場合、ネットワーク APIは失敗します。• GPSやカメラなどのセンサー APIは、nullを返すか例外をスローします。• 管理対象外のアプリケーションに対するインテントは失敗します。• メインスレッドから使⽤されている場合、ファイルアクセスおよびデータベースアクセスは失敗する可能性があります。詳しくは、この記事後半の「データ暗号化機能の確保」および「暗号化のユーザーエントロピー」を参照してください。

失敗が発⽣した場合、アプリケーションによって問題が正常に処理され、アプリケーションはクラッシュしません。

フックの制限

MDXは、APKの DEXコードを変更することで、バイナリの Androidアプリケーションに機能を追加します。いくつか制限があります。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 116

MDX Toolkit

• Citrix Endpoint Managementでは、4.0より前の Android SDKバージョンで提供されていた、廃⽌になったフレームワーククラスは管理されない場合があります。これらの廃⽌になったクラスは避ける必要があります。

• ほとんどの機能が Java/Androidフレームワーク APIに追加されます。通常、ネイティブ(C/C++)コードは管理されません。ただし、ネイティブコードの場合でも、例外としてファイル暗号化は引き続き実⾏されます。

• JNIを使⽤して Java機能にアクセスするネイティブコードでは、ユ−ザーアプリケーションのコードのみを対象とする必要があります。つまり、JNIを使⽤して Javaまたは Androidフレームワークメソッドを呼び出さないでください。代わりに、プロキシ設計パターンを使⽤し、必要なフレームワーククラスを Javaクラスに「ラップ」します。その後、ネイティブコードからクラスを呼び出します。

データ暗号化機能の確保

MDXの主要機能の 1つに、保持されているすべてのデータを透過的に暗号化する機能があります。アプリを変更せずにこの機能を利⽤でき、実際にこの機能を直接避けることはきません。管理者は暗号化を選択的にまたは完全に無効化できますが、アプリケーションではそのようにはできません。

これはMDXの重要な側⾯の 1つであり、以下の点を理解しておく必要があります。

• 管理対象のプロセスで実⾏されるすべての Javaコードおよびネイティブコードに対して、ファイル暗号化が実⾏されます。

• メディアプレーヤーや印刷サポートなどの⼀部のフレームワーク APIは、実際には別のOSプロセスで実⾏されます。このような APIを使⽤する場合、問題が発⽣することがあります。

– 例:アプリケーションがファイルをディスク(暗号化適⽤)に保存して、ファイルへの参照をメディアAPIに渡します。メディア APIはファイルを読み取ろうとしますが、暗号化されたコンテンツを理解しません。メディア APIが失敗し、アプリケーションがクラッシュする場合もあります。

– 例:ファイルハンドル(暗号化されたファイルを開始)を作成して、カメラ APIに割り当てます。カメラプロセスが、暗号化されたファイルに暗号化されていないデータを直接書き込みます。アプリケーションがそのデータを読み取ろうとすると、データの暗号化が解除されてガベージが⽣成されます。

• 個別のプロセスを処理する⽅法として、関連する APIにファイルを渡す前に、ファイルの暗号化を解除するという⽅法があります。または、APIによってデータが書き込まれる場合は、まず APIによってデータを書き込ませて、APIが終了したらデータを暗号化するという⽅法もあります。いくつか⼿順を実⾏する必要があります。

1. 暗号化されないままで残す領域を指定します。顧客向けにこれを⽂書化する必要があります。CitrixEndpoint Management管理者が暗号化例外ポリシーを作成する必要があるためです。

2. 暗号化を解除するには、標準の(暗号化された)場所から暗号化解除された場所にファイルをコピーするだけです。ファイル移動処理ではなく、バイトコピーを実⾏する必要があることに注意してください。

3. 暗号化するには、⽅向を逆にします。暗号化解除された場所から、暗号化された場所にコピーします。4. 暗号化解除されたファイルは、不要になったら削除します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 117

MDX Toolkit

• 暗号化されたファイルのメモリマッピングはサポートされていません。メモリマッピングを実⾏する APIを呼び出した場合、その APIは失敗し、エラーを処理する必要があります。メモリマッピングの直接的および間接的な使⽤は、可能な限り回避してください。間接的な使⽤のおもなケースとして、サードパーティのSqlCipherライブラリがあります。

メモリマッピングを回避できない場合は、関連ファイルを除外する暗号化除外ポリシーを管理者が指定する必要があります。顧客向けに、これを⽂書化する必要があります。

• 暗号化によって、オーバーヘッドが⼤幅に増加します。パフォーマンスの低下を防ぐために、ファイル I/Oを最適化するようにします。たとえば、同じ情報の読み取りおよび書き込みを繰り返し⾏う場合は、アプリケーションレベルキャッシュを実装します。

• データベースは単なるファイルであるため、データベースも暗号化されます。パフォーマンスがここでも問題になる場合があります。標準のデータベースキャッシュサイズは 2000ページまたは 8メガバイトです。データベースのサイズが⼤きい場合は、このキャッシュサイズを増やすことができます。

メモリマッピングの制限により、SQLite WALモードはサポートされていません。

暗号化のユーザーエントロピー

Citrix Endpoint Managementの特定の暗号化オプションでは、暗号キーを⽣成するにはエンドユーザーが PINを⼊⼒する必要があります。このオプションはユーザーエントロピーと呼ばれるもので、アプリケーションで特定の問題が発⽣する可能性があります。

特に、ユーザーが PINを⼊⼒するまでファイルアクセスまたはデータベースアクセスは実⾏できません。PIN UIが表⽰できるようになる前に実⾏される I/O操作が場所に存在する場合、この I/O操作は常に失敗します。影響がいくつかあります。

• メインスレッドでファイル操作およびデータベース操作が実⾏されないようにします。たとえば、アプリケーションオブジェクトの onCreate()メソッドでファイルを読み取ろうとすると、その読み取りは常に失敗します。

• サービスやコンテンツプロバイダーなどのバックグラウンド操作は、アプリケーションアクティビティがない場合でも実⾏される場合があります。これらのバックグラウンドコンポーネントは PIN UIを表⽰できないため、ファイルアクセスまたはデータベースアクセスを実⾏できません。アプリケーションでアクティビティが実⾏されると、バックグラウンド操作で I/O操作を実⾏できるようになります。

ユーザーエントロピーのために暗号キーが使⽤できない場合、次のような失敗メカニズムがあります。

• PINが使⽤可能になる前にメインスレッドがデータベースにアクセスした場合、アプリケーションは強制終了されます。

• PINが使⽤可能になる前にメインスレッド以外のスレッドがデータベースにアクセスした場合、PINが⼊⼒されるまでそのスレッドはロックされます。

• PINが使⽤可能になる前にデータベース以外へのアクセスが開始された場合、オープン操作は失敗します。Cレベルでは、EACCESエラーが返されます。Javaでは、例外がスローされます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 118

MDX Toolkit

アプリケーションにこの問題がないことを確認するには、ユーザーエントロピーが有効になった状態でテストします。Citrix Endpoint Managementクライアントプロパティ Encrypt secrets using Passcodeによって、ユーザーエントロピーを追加します。このクライアントプロパティはデフォルトでは無効になっており、Citrix EndpointManagementコンソールを使⽤して[構成]>[設定]>[詳細]>[クライアントプロパティ]で構成します。

ネットワークおよびMicro VPN

ネットワーク⽤のさまざまな Citrix Endpoint Managementポリシーオプションが管理者に提供されています。ネットワークアクセスポリシーは、アプリのネットワークアクティビティを禁⽌、許可、リダイレクトします。

重要:

MDX Toolkitバージョン 18.12.0リリースには、以前のポリシーを組み合わせたり置き換えたりした新しいポリシーが含まれています。[ネットワークアクセス]ポリシーは[ネットワークアクセス]、[優先 VPNモード]、[VPNモードの切り替えを許可]を組み合わせたものです。[除外の⼀覧]ポリシーは、[分割トンネルの除外対象⼀覧]に置き換えられます。[オンラインセッションを必須とする]ポリシーは、[Micro VPNセッションを必須とする]ポリシーに置き換えられます。詳しくは、「以前のリリースの新機能」を参照してください。

使⽤できるオプションは、次のとおりです。

• 以前の設定を使⽤:デフォルトでは、過去のポリシーで設定済みの値が使⽤されます。値の変更後は、[以前の設定を使⽤]に戻さないでください。また、新しいポリシーに対する変更は、ユーザーがアプリをバージョン 18.12.0以降にアップグレードするまで反映されません。

• 禁⽌:アプリが使⽤するネットワーク APIは機能しません。前述のガイドラインに基づいて、このような失敗を正常に処理する必要があります。

• 制限なし:ネットワーク呼び出しはすべて直接転送され、トンネリングされません。• トンネル-完全 VPN:管理対象アプリケーションからのトラフィックはすべて Citrix Gatewayを介してトンネリングされます。

制限事項:Citrix Endpoint Managementはソケットサーバーをサポートしていません。ラッピングされたアプリ内でソケットサーバーを実⾏している場合、ソケットサーバーへのネットワークトラフィックは Citrix Gatewayを介してトンネリングされません。

モバイルアプリケーション開発フレームワークのサポート

⼀部のアプリケーションフレームワークは、Citrix Endpoint Managementで互換性の問題があります:

• PhoneGapでは、位置情報サービスがブロックされません。• SQLCipherではメモリマッピングを使⽤するため、暗号化が機能しません。解決策として、SQLCipherを使⽤しないという⽅法があります。また、暗号化除外ポリシーを使⽤してデータベースファイルを暗号化から除外するという⽅法もあります。Citrix Endpoint Management管理者は、Citrix Endpoint Managementコンソールでポリシーを構成する必要があります。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 119

MDX Toolkit

デバッグに関するヒント

ラップされたアプリケーションをデバッグする場合、以下のヒントを考慮します。

• ラップされていないバージョンのアプリケーションで問題が発⽣するかどうかを判断します。ラップされていないバージョンで問題が発⽣する場合は、通常のデバッグ⽅法を使⽤します。

• さまざまな Citrix Endpoint Managementポリシーを無効にしてみてください。– こうすると、互換性のない箇所を特定するのに役⽴ちます。ポリシーを無効化すると、関連する制限がMDXによって適⽤されなくなるため、アプリケーションがラップされていないかのようにこれらの機能をテストできます。

– ポリシーを無効化すると問題が解決された場合、関連する APIのエラーがアプリケーションでチェックされないことが問題である可能性があります。

• 未変更であるが再署名されたアプリケーションが動作しない場合は、次の⼿順を実⾏します。1. JARを使⽤して APKのコンテンツを解凍します。

jar xvf {some.apk}2. META-INFフォルダーを削除します。

rm -rf META-INF3. JARを使⽤して新しい APKにコンテンツを再圧縮します。

jar cvf {/tmp/new.apk} *4. JARSIGNERを使⽤して新しい APKに署名します。

jarsigner -keystore {some.keystore} -storepass {keystorepassword} -keypass {keypass-word} {/tmp/new.apk} {keyalias}

5. アプリケーションが引き続き動作しない場合は、使⽤した元の APKとは異なる署名証明書を使⽤してアプリケーションをラップすることはできません。

• 逆コンパイルまたは再コンパイルされた apkが動作しない場合は、次の⼿順を実⾏します。1. APKTOOLを使⽤して逆コンパイルおよび再コンパイルします。

apktool d {some.apk} -o {some.directory}apktool b {some.directory} -o {new.apk}

2. 上記の説明に従って、JARSIGNERを使⽤して APKに署名します。3. アプリケーションが引き続き動作しない場合は、サードパーティの APKTOOLのバグです。

• アプリケーションのラップが動作しない場合は、次の⼿順を実⾏します。1. APKTOOLフレームワークを削除して再度ラップしてみます。

– Mac/Linux: rm -rf ~/Library/apktool/framework– Windows: del /q /s C:\Users\{username}\apktool\framework

2. ラッパーによって使⽤されている APKTOOLと、前の⼿順で正常に逆コンパイルおよび再コンパイルしたときに使⽤した APKTOOLを⽐較します。– 同じ APKTOOLバージョンである場合、ラッパーにバグがあります。– 異なる APKTOOL バージョンである場合、MDX Toolkit ユーティリティに統合されているAPKTOOLにバグがある可能性があります。a) ManagedAppUtility.jarのコンテンツを解凍します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 120

MDX Toolkit

b) 前の⼿順でアプリケーションを正常にラップしたときに使⽤した APKTOOL.jarのコンテンツで、上書きします。

c) 新しいManagedAppUtility.jarにコンテンツを再圧縮します。d) アプリケーションをラップして、組み込みの APKTOOLのバグを確認します。

• ラップされているアプリケーションを実⾏してログ情報を取得します。1. grepを使⽤し、アプリケーションに何が発⽣しているのかを調べます。アプリケーションのアクティビティを追跡するには:grep “MDX-Activity”アプリケーションのMDXロックを追跡するには:grep “MDX-Locked”

両⽅のログを同時に表⽰するには:egrep “MDX-Act MDX-Loc”

2. アプリケーション⾮応答エラーが表⽰される場合は、ADBを使⽤して ANRトレースをプルします。•[このアプリケーションで開く]を使⽤するときなど、複数のアプリケーションを操作するときに問題が発⽣する場合は、次の⼿順を実⾏します。

1. 暗号化ポリシーとセキュリティグループ設定が各アプリケーション間で同じであることを確認します。2. 別のアプリケーションを試します。テストしているいずれかのアプリケーションのバグである場合があります。

3. 関連するすべてのアプリケーションのログを取得します。Secure Hubによって、ログを処理して個々のアプリケーションのログを電⼦メール送信できます。[マイアプリ]画⾯で、右にスワイプして[サポート]画⾯を表⽰します。次に、画⾯下部にある[ヘルプ]ボタンをクリックします。

前述のツール以外に、以下のツールも役⽴ちます。

• AAPTを使⽤してアプリケーションに関する情報をダンプします。

aapt dump badging {some.apk}

• DUMPSYSコマンドをデバイスで実⾏します。

adb shell dumpsys 2>&1 | tee {dumpsys.out}

• DEX2JARを使⽤して pseudo-Javaにクラスを再コンパイルします。

dex2jar {some.apk}

Dual-Dexラップアプリケーションからクラスを変換します。

apktool d {some.apk} -o {some.dir}

dex2jar {some.dir}/assets/secondary-1.dex

• JD-GUIを使⽤して pseudo-Javaコードを表⽰します。

• BAKSMALIを使⽤して Dual-Dexラップアプリケーションからアプリケーションクラスを逆コンパイルします。

– ラップされた APKを逆コンパイルするには:

apktool d {some.apk} -o {some.dir}

© 1999-2020 Citrix Systems, Inc. All rights reserved. 121

MDX Toolkit

– 上記の呼び出しで逆コンパイルされないアプリケーションのクラスを逆コンパイルするには:

baksmali {some.dir}/assets/secondary-1.dex -o {some.dir}/smali

Android⽤の API

March 5, 2020

Androidの APIは Javaに基づいています。ここでは、Citrix Endpoint Management APIを機能別に概説し、APIの定義を説明します。

アプリの管理

• isManaged• isWrapped

MDXポリシー

• getPoliciesXML• getPolicyValue• setPolicyChangeMessenger

共有コンテナ

• MDXDictionary

ユーザーデータ:

• getUserName

Class com.citrix.worx.sdk.MDXApplication

メソッド

• isManaged

public static boolean isManaged (Context context)

アプリが現在MDXによって管理されているかどうかを確認します。つまり、デバイスに Citrix Secure Hubアプリがインストールされており、アプリに Citrix Endpoint Managementポリシーが適⽤されているかどうかを確認します。Endpoint Managementバックエンドインフラストラクチャ(キーコンテナ)に対して、アプリファイルのデータ暗号化にMDXが使⽤するデータ暗号化部分キー(シークレット)がクエリされます。アプリが管理対象の場合、trueを返します。

⾮管理対象のPremiumアプリは、Applications/Citrix/MDXToolkit/data/MDXSDK_Android/default_sdk_policies.xmlで指定されている Endpoint Managementポリシーデフォルトを使⽤します。⾮管理対象の Generalアプリには、ポリシーは適⽤されません。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 122

MDX Toolkit

パラメーター

context –この呼び出しを実⾏する Androidコンテキスト。

boolean bIsManaged = MDXApplication.isManaged(context);

• isWrapped

public static boolean isWrapped (Context context)

アプリがMDX Toolkitでラップされている場合、trueを返します。

パラメーター

context –この呼び出しを実⾏する Androidコンテキスト。

boolean bIsWrapped = MDXApplication.isWrapped(context);

• getUserName

public static String getUserName (Context context)

ユーザーのサインイン状態に関係なく、MDX管理対象アプリを実⾏する登録されたユーザーのユーザー名を含む⽂字列を返します。ユーザーが登録されていない場合、アプリが管理対象でない場合、またはアプリがラップされていない場合は、nilを返します。

パラメーター

context –この呼び出しを実⾏する Androidコンテキスト。

String userName = MDXApplication.getUserName(context);

Class com.citrix.worx.sdk.MDXPolicies

メソッド

• getPoliciesXML

public static String getPoliciesXML (Context context)

default_sdk_policies.xmlのコンテンツをポリシーごとに 1⾏で返します。接頭辞 (match)により、XMLファイル内の値がMDXPolicies.getPolicyValue()で返された値と⼀致することを⽰します。失敗した場合、空の⽂字列を返します。

パラメーター

context –この呼び出しを実⾏する Androidコンテキスト。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 123

MDX Toolkit

String policiesXML = MDXPolicies.getPoliciesXML(context);

• getPolicyValue

public static String getPolicyValue (Context context, String policyName)

指定されたポリシーの現在の値を含む Stringを返します。値が⾒つからない場合、nullを返します。

パラメーター

context –この呼び出しを実⾏する Androidコンテキスト。

policyName –検索するポリシーの名前。ポリシー名は、ポリシー XMLファイル内の PolicyNameエレメントの値です。

String value = MDXPolicies.getPolicyValue(context”DisableCamera”);

• setPolicyChangeMessenger

public static String setPolicyChangeMessenger (Context context, String policyName. Mes-senger messenger)

指定のポリシーの値が変更されたらメッセージを受け取るように、メッセンジャーを登録します。CitrixEndpoint Managementコンソールでポリシーの値が変更されたことがMDXによって検出されると、MDXからこのメッセンジャーに通知が⾏われます。その後、他の APIを使⽤してポリシー値を再度読み取って、アプリを変更できます。nullを返します。

パラメーター

context –この呼び出しを実⾏する Androidコンテキスト。

policyName –監視対象のポリシー名。ポリシー名は、ポリシー XMLファイル内の PolicyNameエレメントの値です。

messenger –ポリシー値が変更されるとメッセージを受け取るメッセンジャー。

MDXPolicies.setPolicyChangeMessenger(context, ”DisableCamera”, messenger);

Class com.citrix.mdx.common.MDXDictionary

MDXDictionaryは、暗号化された Androidキー/値ペアバンドルの読み取りと保存に使⽤されるコンテナです。同じMDXセキュリティグループ内の業務⽤モバイルアプリはディレクトリを共有します。共有コンテナ APIを使⽤し、同じMDXディレクトリを使⽤するアプリ間で管理対象コンテンツを共有します。たとえば、登録されたアプリを介

© 1999-2020 Citrix Systems, Inc. All rights reserved. 124

MDX Toolkit

して証明書と秘密キーを共有できるため、アプリは Secure Hubからではなくセキュアなコンテナから証明書を取得できます。

ディクショナリは、プライベートファイル暗号化ポリシー設定およびパブリックファイル暗号化ポリシー設定に関係なく、暗号化された状態で保存されます。開発者は、ディクショナリを取得する前にコンテナのロックを解除する必要があります。

コンストラクター

• public MDXDictionary( MDXDictionary source )

既存のMDXDictionaryのコピーを作成します。

パラメーター

source –コピーするMDXDictionary。

• public MDXDictionary( String name, Bundle bundle, long sequence )

名前、バンドル、およびシーケンス番号からMDXDictionaryを作成します。シーケンス番号が不明な場合は、create()ファクトリメソッドを使⽤します。

パラメーター

name –ディクショナリの名前。

bundle – Androidバンドル。

sequence -シーケンス番号。

メソッド

• public static MDXDictionary create( Context context, String name )

同じ名前のディクショナリが既に存在するかどうかをまず確認して、ディクショナリを作成します。ディクショナリが存在しない場合、新しいディクショナリが返されます。ディクショナリが存在する場合、既存のデイクショナリが返されます。このメソッドは nullを返すことはありません。

パラメーター

context –この呼び出しを実⾏する Androidコンテキスト。

name –ディクショナリの名前。

//ディクショナリのインスタンスを作成。

MDXDictionary dict = MDXDictionary.create(getContext(), ”app-settings”);

© 1999-2020 Citrix Systems, Inc. All rights reserved. 125

MDX Toolkit

• public static boolean delete( Context context, String name )

ディクショナリを名前によって削除します。成功すると trueを返します。失敗すると falseを返します。

パラメーター

context –この呼び出しを実⾏する Androidコンテキスト。

name –ディクショナリの名前。

//ディクショナリのインスタンスを作成。

MDXDictionary.delete(getContext(), ”app-settings”);

• public static MDXDictionary find( Context context, String name )

既存のディクショナリを⾒つけます。既存のディクショナリを返します。ディクショナリが⾒つからない場合は nullを返します。

パラメーター

context –この呼び出しを実⾏する Androidコンテキスト。

name –ディクショナリの名前。

MDXDictionary dict = MDXDictionary.find(getContext(),”app-settings”);

1 if( dict != null )2 {34 // Use dictionary5 }

• public boolean isNew( )

新しいディクショナリなのか既存のディクショナリなのかを確認します。まだディクショナリがない場合はtrueを返します。

MDXDictionary dict = MDXDictionary.create(getContext(), ”app-settings”);

1 if (dict.isNew())2 {34 // Dictionary was not found.5 }6

© 1999-2020 Citrix Systems, Inc. All rights reserved. 126

MDX Toolkit

7 else8 {910 // Existing dictionary was found.11 }

• public boolean save( Context context )

暗号化されたディクショナリを保存します。同じ名前のディクショナリが既に存在する場合は、上書きされます。成功すると trueを返します。失敗すると falseを返します。

パラメーター

context –この呼び出しを実⾏する Androidコンテキスト。

MDXDictionary dict = MDXDictionary.find(getContext(), ”app-settings”);

1 if( dict != null )2 {34 String certificate = getCertificate();5 dict.bundle.putString( &quot;secret-certificate&quot;,

certificate );6 // Update bundle by overwriting the existing bundle.7 dict.save( getContext() );8 }

• public boolean append( Context context )

既存のディクショナリに暗号化されたディクショナリを追加します。ディクショナリが存在しない場合、指定されたディクショナリが保存されます。成功すると trueを返します。失敗すると falseを返します。

パラメーター

context –この呼び出しを実⾏する Androidコンテキスト。

MDXDictionary dict = MDXDictionary.find(getContext(), ”;app-settings”);

1 if( dict != null )2 {34 String certificate = getCertificate();5 Bundle bundle = new Bundle();6 bundle.putString( &quot;secret-certificate&quot;,

certificate );

© 1999-2020 Citrix Systems, Inc. All rights reserved. 127

MDX Toolkit

7 dict.bundle = bundle;8 dict.append( getContext() );9 // Note that dict.bundle may not match the state of the10 // bundle that was stored. The stored bundle could be11 // larger.12 }

• public boolean delete( Context context )

ディクショナリを削除します。成功すると trueを返します。失敗すると falseを返します。

パラメーター

context –この呼び出しを実⾏する Androidコンテキスト。

MDXDictionary dict = MDXDictionary.find(getContext(), ”app-settings”);

1 if( dict != null )2 {34 dict.delete( getContext() );5 }

注意事項と考慮事項

• 無効なパラメーターが渡された場合、コンストラクタは IllegalArgumentExceptionをスローします。• create()操作は nullを返しません。暗号化ポリシーが有効になっている場合、ユーザーは create()が呼び出される前に暗号化ポリシーがロック解除されるようにする必要があります。

• 解析またはシリアル化される保存されたオブジェクトが既知の Javaデータ型または Androidデータ型でない場合、append()操作は失敗します。Secure Hubに対してクラスが内部的に既知でないので、SecureHubはディクショナリを復号化できません。

• append()操作は、そのバンドルを既存のディクショナリバンドルに追加します。保存されたバンドルがディクショナリ内のバンドルと異なる場合、ローカルのバンドルでは保存されたバンドルの状態は反映されません。以前に保存されたバンドルの状態をクエリするには、find()操作または create()操作が必要です。

iOSアプリの開発

March 5, 2020

MDX APIを使⽤して Citrix Endpoint Managementのモバイルアプリを有効にできます。ここではMDXアプリSDKをアプリライブラリに統合する⽅法と、アプリをテスト、認定、発⾏する⼿順について説明します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 128

MDX Toolkit

MDXアプリ SDKの使⽤⽅法

以下は、APIの使⽤⽅法例です。

• アプリで制限を適⽤する

アプリがいつ特定の機能または操作にアクセスできるかを、管理対象アプリかラップされたアプリかを表⽰する API呼び出しに基づいて制御できます。たとえば、アプリが管理されていない、またはラップされていない場合、ユーザーがすべての機能および操作にアクセスするようにできます。アプリがラップされているが管理されてはいない場合、特定の機能または操作を制限できます。アプリがラップされ、管理されている場合、アプリに追加の制限を適⽤できます。

• Citrix Endpoint Management設定に基づいて操作を実⾏する

たとえば、Citrix Endpoint Management管理者が[Wi-Fiを必須とする]ポリシーを[オン]に設定すると、ユーザーに通知が表⽰されるようにするとします。組織のネットワーク内部からのみアプリの実⾏が許可されます。APIを使⽤してポリシー設定を検索し、ポリシー値に基づいてコードを変更します。

• カスタムポリシーに基づいて操作を実⾏する

API を使⽤して、アプリのカスタムポリシーを読み取ることができます。たとえば、Citrix EndpointManagement 管理者がアプリに通知を表⽰できるようにします。そのためには、Citrix EndpointManagementコンソールで空のカスタムポリシー、または管理者が⼊⼒したシステムメッセージが含まれるカスタムポリシーを作成します。アプリが管理対象である場合、Citrix Endpoint Management管理者によってポリシー値が変更されると、アプリがそれを検出します。ポリシー値にメッセージが含まれていると、アプリは通知を表⽰します。

APIの定義については、「iOS⽤の API」を参照してください。

SDKをアプリライブラリに統合する

MDXアプリ SDKを iOSアプリに追加するには、次のセクションで説明するようにアプリに SDKフレームワークを関連付けます。Objective-Cをベースにした iOS向けMDXアプリ SDKは、ヘッダーファイルと静的ライブラリのコレクションです。

1. 最新のMDX Toolkitがインストールされていない場合は、インストールします。

a) Citrix Endpoint Managementのダウンロードページにログオンします。

b) XenMobile AppsおよびMDX Toolkitを展開します。

c) インストールするMDX Toolkitのバージョンを⾒つけてリンクをクリックし、ダウンロードを開始します。

d) macOS 10.9.4以降および Xcode 7以降のmacOS FinderツールでOpenMDXToolkit.mpkgを開きます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 129

MDX Toolkit

Xcode 8以降では、アプリをデバイスにプッシュする前にプロジェクトファイルを消去する必要があるという既知の問題が存在します。

インストールパスは、Applications/Citrix/MDXToolkitです。

MDXアプリ SDKファイルは、Applications/Citrix/MDXToolkit/data/MDXSDKで⾒つかります。

コンピューターでMDX Toolkitをインストール後、MDXフレームワークを Xcodeプロジェクトに統合します。

2. data/MDXSDKフォルダーを Apple Xcodeプロジェクトに追加します。このためには、フォルダーを Xcodeプロジェクトにドラッグします。

3. アプリプロジェクトでコンパイル済みのヘッダーファイルで⾏を変更して、次の例のようにMDX.frameworkからMDX.hをインポートします。

1 #ifdef__OBJC__2 _3 //import MDX extensions4 #import <AVFoundation/AVFoundation.h>5 #import <SystemConfiguration/SCNetworkReachability.h>6 #import <MDX/MDX.h>7 #endif

Network OnlyバージョンのMDXフレームワークのみを含める場合は、以下を変更する必要があります。変更前:

1 #import <MDX/MDX.h.>

変更後:

1 #import <MDXNetworkOnly/MDXNetworkOnly.h>

MDX SDKフレームワークによって公開された APIを明⽰的に呼び出すアプリケーションをラップする場合、MDX.hとMDXNetworkOnly.hの⾏はオプションです。

アプリケーションが明⽰的にMDXSDKAPIを呼び出すには、アプリケーションの構築時にMDX.frameworkまたはMDXNetworkOnly.frameworkバイナリにリンクされているか、これらを埋め込んでいる必要があります。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 130

MDX Toolkit

MDX Toolkitでラップされた、事前設定済みサードパーティ製エンタープライズアプリケーションでは、明⽰的なMDX SDK API呼び出しを⾏わないため、ビルドの変更は不要です。

コンピューターでMDX Toolkitをインストール後、MDXフレームワークを Xcodeプロジェクトに統合します。

4. data/MDXSDK/MDX.framework(または data/MDXSDK/MDXNetworkOnly.framework)を、アプリケーションワークスペースの[General]プロパティパネルの[Embedded Binaries]セクションにドラッグします。これによって、動的フレームワークが、アプリケーションと共にインストールされたアプリケーションバンドルに含まれるフレームワークに追加されます。さらに、このフレームワークは、アプリケーションにリンクされているフレームワークの⼀覧に⾃動的に追加されます。

1つのMDXフレームワークのみを追加する必要があります。

1. data/MDXSDK/CitrixLogger.frameworkを、アプリケーションワークスペースの[General]プロパティパネルの[Embedded Binaries]セクションにドラッグします。

2. 実⾏スクリプトを追加して、Xcodeの有効なアーキテクチャの⼀覧に表⽰されない埋め込みフレームワークからアーキテクチャを削除します。これは、埋め込みフレームワークに Apple Storeアプリケーションビルド⽤の iOS Simulatorアーキテクチャを含めることはできないという Appleの要件に対応するためです。このスクリプトは、Apple Storeとそれ以外の種類のビルドの両⽅ですべてのビルドターゲットを⾃動的に処理します。

1 echo ”Strip unnecessary archs from Embedded Frameworks”2 cd ”${3 BUILT_PRODUCTS_DIR }4 /${5 FRAMEWORKS_FOLDER_PATH }6 ”7 for file in $(find . -type f -perm +111);8 do9 if ! [[ ”$(file ”$file”)” == \*”dynamically linked shared

library”\* ]];10 then11 continue12 fi13 # Get architectures for current file14 archs=”$(lipo -info ”${15 file }16 ” | rev | cut -d ’:’ -f1 | rev)”17 # Strip any archs from frameworks not valid for current app

build18 for arch in $archs;19 do20 if ! [[ ”${21 VALID_ARCHS }

© 1999-2020 Citrix Systems, Inc. All rights reserved. 131

MDX Toolkit

22 ” == \*”$arch”\* ]];23 then24 lipo -remove ”$arch” -output ”$file” ”$file” || exit 125 fi26 done27 done

3. 実⾏スクリプトを追加して、SDKPrepコマンドラインを追加します。

• Xcodeでプロジェクトを選択してから、Build Phasesタブを選択します。左上のプラス(+)アイコンをクリックして、New Run Script Phaseをクリックします。

• 新しいRunScriptを開いて、Scriptフィールドに次のテキストを⼊⼒します。PACKAGEID、APPTYPE、STOREURL、POLICYFILE変数をアプリに適⽤できる値に変更してください。PACKAGEIDはアプリの⼀意の識別⼦(通常 UUID)です。アプリが構築されるとMDX Toolkitは⼀意のパッケージ IDを⽣成するため、これは必須ではありません。パッケージ IDを⼊⼒する場合、コマンドを使⽤してラップするすべての新しいアプリバージョンに⼀意の IDであることを確認してください。

• アプリがエンタープライズアプリの場合、デフォルト値であるパラメーター -Apptype Enterpriseを使⽤します。ISVアプリでは、Premiumまたは Generalの値を使⽤できます。

注:

APPTYPEでサポートされるキーワードは Enterprise、Premium、Generalです。

1 export PACKAGEID=”your-project-PackageID”2 export APPTYPE=”keyword”3 export STOREURL=”http://your-store-URL”4 export DATE=‘date +%Y-%m-%d_%H-%M-%S‘5 export POLICYFILE=${6 SRCROOT }7 /${8 EXECUTABLE_NAME }9 /${10 EXECUTABLE_NAME }11 \_policy_metadata.xml12 /Applications/Citrix/MDXToolkit/CGAppCLPrepTool SdkPrep -in ”$

{13 CODESIGNING_FOLDER_PATH }14 ” -out ”/Users/<UserName>/Downloads/${15 EXECUTABLE_NAME }16 \_${17 DATE }18 .mdx” -storeUrl ”${19 STOREURL }20 ” -appIdPrefix ”ABCDEFGH” -packageId ”${21 PACKAGEID }

© 1999-2020 Citrix Systems, Inc. All rights reserved. 132

MDX Toolkit

22 ” -policyXML ”${23 POLICYFILE }24 ” -appType ”${25 APPTYPE }26 ” -entitlements ”${27 CODE_SIGN_ENTITLEMENTS }28 ”

例:

1 export PACKAGEID=”a96d6ed5-6632-4739-b9b6-9ad9d5600732”2 export APPTYPE=”Enterprise3 export STOREURL=”http://example.com/12345”4 export DATE=‘date +%Y-%m-%d_%H-%M-%S‘5 export POLICYFILE=${6 SRCROOT }7 /${8 EXECUTABLE_NAME }9 /${10 EXECUTABLE_NAME }11 \_policy_metadata.xml12 /Applications/Citrix/MDXToolkit/CGAppCLPrepTool SdkPrep -in ”$

{13 CODESIGNING_FOLDER_PATH }14 ” -out ”/Users/<UserName>/Downloads/${15 EXECUTABLE_NAME }16 \_${17 DATE }18 .mdx” -storeUrl ”${19 STOREURL }20 ” -appIdPrefix ”ABCDEFGH” -packageId ”${21 PACKAGEID }22 ” -policyXML ”${23 POLICYFILE }24 ” -appType ”${25 APPTYPE }26 ” -entitlements ”${27 CODE_SIGN_ENTITLEMENTS }28 ”

© 1999-2020 Citrix Systems, Inc. All rights reserved. 133

MDX Toolkit

パラメーター 説明

-inファイル名 Xcodeで⽣成された.appファイルへのパス。MDXToolkitがMDX固有のリソースをファイルに埋め込みます。

-outファイル名 .mdxファイルの移動先パス。このファイルを使⽤して Citrix Endpoint Managementサーバーでアプリを公開します。

-storeURl URL .mdxファイルに埋め込まれたアプリのアプリストアURL。このパラメーターは-StoreURLで使⽤できません。

-appTypeキーワード キーワードは「Enterprise」、「Premium」、「General」です。

-packageId UUID アプリの⼀意のパッケージ ID。通常は UUID。アプリが構築されるとMDX Toolkitは⼀意のパッケージ IDを⽣成するため、必須ではありません。パッケージ IDを⼊⼒する場合、コマンドを使⽤してラップするすべての新しいアプリバージョンに⼀意の IDであることを確認してください。⼀意の IDは、すべてのプロビジョニングプロファイルに関連付けられています。テキストエディタでプロビジョニングプロファイル(.mobileprovision)を開くと、UUIDとともに以下の XMLタグが表⽰されます。<key>UUID</key> <string>4e38fb18-88b0-4806-acfa-e08bf38ec48d</string>

-policyXMLファイル名 アプリのMDXポリシーテンプレートへのパス。

-entitlementsファイル名 必須(10.3.10で導⼊)。アプリのライセンスファイルへのパス。MDX Toolkitは com.citrix.mdxのキーチェーンアクセスグループのエントリをファイルに追加します。アプリが、iOSキーチェーンを使⽤して同じ証明書で署名した他のMDXアプリとシークレットを共有する必要があります。

-appIdPrefixプレフィックス アプリケーション識別⼦のプレフィックス - AppleDeveloperアカウントに関連付けられたチーム ID。

4. プロジェクトをコンパイルしてアプリのバイナリを⽣成します。

• Xcodeでアプリを構築して、正しく構築されたことを検証します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 134

MDX Toolkit

•[製品]>[アーカイブ]を選択してアプリをアーカイブします。• アプリがアーカイブされた後、Xcode Organizerが⾃動で開きます。• Organizerでアーカイブされたビルドを選択して[エクスポート]を選択します。• 適⽤するエクスポート⽅法を選択して[次へ]をクリックします。

メッセージに従って、アプリを IPAファイルにエクスポートします。

5. プロジェクトをコンパイルし、アーカイブして、MDXフレームワークが埋め込まれた.ipaパッケージのアプリバンドルを⽣成します。Xcodeは Citrix Endpoint Managementサーバーにアップロードする関連MDXファイルを⽣成します。Xcodeのビルドおよびアーカイブ⼿順で IPAバンドルが作成された後、MDXファイルで SetInfoコマンドを実⾏します。また、コマンド-embedBundleオプションを実⾏して、最終的な IPAファイルをMDXファイルに挿⼊します。その後、アプリを Citrix Endpoint Managementにアップロードできます。

1 /Applications/Citrix/MDXToolkit/CGAppCLPrepTool SdkPrep -in ”${2 CODESIGNING_FOLDER_PATH }3 ” -out ”/Users/<UserName>/Downloads/${4 EXECUTABLE_NAME }5 _${6 DATE }7 .mdx” ” -embedBundle ”/Users/deva/Desktop/{8 EXECUTABLE_NAME }9 .ipa”

6. iTunes Connect Webサイト経由の配布⽤にアプリを構成すると、アプリストアまたは TestFlightに直接提出できます。

アプリのアップグレードに関する考慮事項

Citrix Endpoint Managementソフトウェアはリリース間で⼤幅に変更される可能性があります。最新の機能やバグ修正を利⽤するには、最新バージョンのMDX Toolkitを使⽤してアプリをラップする必要があります。以前にMDX Toolkitで⽣成された変更後のファイルではなく、元の.ipaまたは.apkファイルをラップするように注意してください。

MDXアプリ SDKの関連バージョンを使⽤してください。

iOSアプリのベストプラクティス

March 5, 2020

iOSアプリの開発時に、ここで説明しているベストプラクティスを使⽤すると、iOSデバイスで Citrix EndpointManagementとモバイルアプリ間の互換性が向上します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 135

MDX Toolkit

MDXアプリ SDKフレームワークおよびラッピング

アプリでMDXアプリ SDKフレームワークを使⽤する場合、ラップを⾏うには、⼀致するMDX Toolkitバージョンを使⽤する必要があります。これらの 2つのコンポーネント間でバージョンに不⼀致がある場合は、操作が失敗する可能性があります。

このような不⼀致を防ぐために、アプリを ISVアプリとしてラップして、アプリモード Premiumまたは Generalを指定します。これにより、事前にラップされたアプリを提供できるため、顧客がアプリをラップする必要がなくなり、不適切なMDX Toolkitが使⽤されることがありません。ISVによるラップ処理について詳しくは、「iOSモバイルアプリのラッピング」を参照してください。

明⽰的なアプリ IDの使⽤

使⽤する iOS Developer Enterpriseアカウントがワイルドカードアプリ IDをサポートしていない場合、MDXToolkitにラップする各アプリに明⽰的なアプリ IDを作成します。また、アプリ IDごとにプロビジョニングプロファイルを作成します。

メインスレッドのブロックの回避

メインスレッドでの実⾏時には、コードブロックは使⽤しないでください。これは Appleのガイドラインですが、Citrix Endpoint Managementではさらに重要です。⼀部の操作により、管理対象アプリで時間がかかったり、以降のスレッド実⾏がブロックされたりする場合があります。現在実⾏中のスレッドをブロックする可能性があるファイル操作、データベース操作、およびネットワーク操作などの操作は、メインスレッドでは避ける必要があります。

強固なコードの作成

特に、アプリの作成時に、『Apple Application Programming Guide』などの Appleのプログラミングガイドに記載されているベストプラクティスに従います。

Appleが公開しているインターフェイスのみ使⽤

すべての API呼び出しの戻り値を確認し、API呼び出しの結果として発⽣する可能性のある例外を処理します。これにより、アプリの正常なエラー回復や正常な終了が保証されます。これはプログラミングの⼀般的なベストプラクティスですが、管理対象アプリでは特に重要です。

基盤となる機能が Citrix Endpoint Managementポリシーによってブロックされていると、正常に動作すると想定されているさまざまな APIが正しく動作しません。例には、前述したすべての機能が含まれます。

• 使⽤できるネットワークがない場合、ネットワーク APIは失敗します。• GPSやカメラなどのセンサー APIは、nullを返すか例外をスローします。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 136

MDX Toolkit

以下の Objective-Cランタイムセレクタは、基盤となる機能が Citrix Endpoint Managementポリシーのためにブロックされている場合は常に nilを返すため、適時処理する必要があります。

オブジェクトクラス: AVCaptureDevice

• セレクタ名: devicesWithMediaType:

オブジェクトクラス:MFMailComposeViewController

• セレクタ名: init:

オブジェクトクラス:MFMessageComposeViewController

• セレクタ名: initWithNibName:bundle:

オブジェクトクラス: NSFileManager

• セレクタ名: URLForUbiquityContainerIdentifier:

オブジェクトクラス: NSUbiquitousKeyValueStore

• セレクタ名: defaultStore:

オブジェクトクラス: PHPhotoLibrary

• セレクタ名: sharedPhotoLibrary:

オブジェクトクラス: UIImagePickerController

• セレクタ名: availableCaptureModesForCameraDevice:

オブジェクトクラス: UIPasteboard

• セレクタ名:

dataForPasteboardType:

valueForPasteboardType:

items:

dataForPasteboardType:inItemSet:

valuesForPasteboardType:inItemSet:

オブジェクトクラス: UIPopoverController

• セレクタ名: initWithContentViewController:

オブジェクトクラス: UINavigationController

• セレクタ名:

ctxInitWithRootViewController:

ctxPopToViewController:animated:

© 1999-2020 Citrix Systems, Inc. All rights reserved. 137

MDX Toolkit

ランタイムインターフェイスのリダイレクト

Citrix Endpoint Managementでは UI Pinプロンプト操作が提供されるため、アプリでこの操作を実⾏する必要がありません。

Citrix Endpoint Managementの準備が確実に整うように、Objective-Cランタイムセレクタをリダイレクトまたは置換しないことをお勧めします。なぜなら、Citrix Endpoint Managementは複数のオブジェクトクラスセレクタの基盤となるメソッドを開始し、アプリのランタイム動作を制御または変更するためです。次の表は、CitrixEndpoint Managementによってリダイレクトされる Objective-Cクラスセレクタの⼀覧です:

オブジェクトクラス名: NSURLProtectionSpace

• セレクタ名: serverTrust

オブジェクトクラス名: NSURLAuthenticationChallenge

• セレクタ名: sender

オブジェクトクラス名: NSURLConnection

• セレクタ名:

sendSynchronousRequest:returningResponse:error:

initWithRequest:delegate:startImmediately:

initWithRequest:delegate:

connectionWithRequest:delegate:

オブジェクトクラス名: NSURLConnectionDelegate

• セレクタ名:

connection:canAuthenticateAgainstProtectionSpace:

connection:didReceiveAuthenticationChallenge:

connection:willSendRequestForAuthenticationChallenge:

オブジェクトクラス名: NSURLSessionConfiguration

• セレクタ名:

defaultSessionConfiguration

ephemeralSessionConfiguration

オブジェクトクラス名: ALAssetsLibrary

• セレクタ名: authorizationStatus

オブジェクトクラス名: AVAudioRecorder

© 1999-2020 Citrix Systems, Inc. All rights reserved. 138

MDX Toolkit

• セレクタ名:

record

prepareToRecord

recordForDuration:

recordAtTime:

recordAtTime:ForDuration:

オブジェクトクラス名: AVAudioSession

• セレクタ名: recordPermission

オブジェクトクラス名: AVCaptureDevice

• セレクタ名:

デバイス

devicesWithMediaType:

オブジェクトクラス名: AVAsset

• セレクタ名: assetWithURL:

オブジェクトクラス名: AVURLAsset

• セレクタ名:

initWithURL:options:

URLAssetWithURL:options:

オブジェクトクラス名: AVPlayerItem

• セレクタ名:

playerItemWithAsset:

initWithURL:

playerItemWithURL:

オブジェクトクラス名: AVPlayer

• セレクタ名:

playerWithPlayerItem:

initWithPlayerItem:

initWithURL:

オブジェクトクラス名: CLLocationManager

© 1999-2020 Citrix Systems, Inc. All rights reserved. 139

MDX Toolkit

• セレクタ名: startUpdatingLocation

オブジェクトクラス名: UIScrollView

• セレクタ名: setContentOffset:

オブジェクトクラス名:MFMailComposeViewController

• セレクタ名:

canSendMail

init

オブジェクトクラス名:MFMessageComposeViewController

• セレクタ名:

canSendText

initWithNibName:bundle:

オブジェクトクラス名: NSFileManager

• セレクタ名: URLForUbiquityContainerIdentifier:

オブジェクトクラス名: NSUbiquitousKeyValueStore

• セレクタ名: defaultStore

オブジェクトクラス名: PHPhotoLibrary

• セレクタ名: authorizationStatus

オブジェクトクラス名: QLPreviewController

• セレクタ名:

setDataSource:

canPreviewItem:

オブジェクトクラス名: QLPreviewControllerDataSource

• セレクタ名:

numberOfPreviewItemsInPreviewController:

previewController:previewItemAtIndex:

オブジェクトクラス名: SLComposeViewController

• セレクタ名: isAvailableForServiceType:

オブジェクトクラス名: UIActivityViewController

© 1999-2020 Citrix Systems, Inc. All rights reserved. 140

MDX Toolkit

• セレクタ名:

initWithActivityItems:applicationActivities:

setExcludedActivityTypes:

オブジェクトクラス名: UIApplication

• セレクタ名:

openURL:

canOpenURL:

setApplicationIconBadgeNumber:

オブジェクトクラス名: UIDocument

• セレクタ名:

closeWithCompletionHandler:

contentsForType:error:

オブジェクトクラス名: UIDocumentInteractionController

• セレクタ名:

interactionControllerWithURL:

setURL:

setDelegate:

presentPreviewAnimated:

presentOpenInMenuFromBarButtonItem:animated:

presentOpenInMenuFromRect:inView:animated:

presentOptionsMenuFromBarButtonItem:animated:

presentOptionsMenuFromRect:inView:animated:

オブジェクトクラス名: UIDocumentMenuViewController

• セレクタ名: initWithDocumentTypes:inMode:

オブジェクトクラス名: UIImage

• セレクタ名: imageNamed:

オブジェクトクラス名: UIImagePickerController

• セレクタ名: setSourceType:

takePicture

© 1999-2020 Citrix Systems, Inc. All rights reserved. 141

MDX Toolkit

startVideoCapture

isSourceTypeAvailable:

isCameraDeviceAvailable:

isFlashAvailableForCameraDevice:

availableCaptureModesForCameraDevice:

setMediaTypes

オブジェクトクラス名: UINavigationController

• セレクタ名:

ctxInitWithRootViewController:

ctxPushViewController:animated:

ctxPopToViewController:animated:

オブジェクトクラス名: UIPasteboard

• セレクタ名:

generalPasteboard

pasteboardWithName:create:

pasteboardWithUniqueName

setValue:forPasteboardType:

setData:forPasteboardType:

setItems:

addItems:

dataForPasteboardType:

valueForPasteboardType:

numberOfItems

pasteboardTypes

pasteboardTypesForItemSet:

containsPasteboardTypes:

containsPasteboardTypes:inItemSet:

items

itemSetWithPasteboardTypes:

© 1999-2020 Citrix Systems, Inc. All rights reserved. 142

MDX Toolkit

dataForPasteboardType:inItemSet:

valuesForPasteboardType:inItemSet:

string

strings

URL

URL

image

images

color

colors

オブジェクトクラス名: UIPopoverController

• セレクタ名: initWithContentViewController

オブジェクトクラス名: UIPrintInteractionController

• セレクタ名:

isPrintingAvailable

presentAnimated:completionHandler:

presentFromBarButtonItem:animated:completionHandler:

presentFromRect:inView:animated:completionHandler:

オブジェクトクラス名: UIViewController

• セレクタ名: presentViewController:animated:completion:

オブジェクトクラス名: UIWebView

• セレクタ名:

loadRequest:

setDelegate:

UIWebViewDelegate

webView:shouldStartLoadWithRequest:navigationType:

webViewDidStartLoad:

webViewDidFinishLoad:

webView:didFailLoadWithError:

© 1999-2020 Citrix Systems, Inc. All rights reserved. 143

MDX Toolkit

オブジェクトクラス名: UIWindow

• セレクタ名:makeKeyAndVisible

オブジェクトクラス名: UIApplicationDelegate

• セレクタ名:

applicationDidFinishLaunching:

application:didFinishLaunchingWithOptions:

application:willFinishLaunchingWithOptions:

applicationWillResignActive:

applicationDidEnterBackground:

applicationWillEnterBackground:

applicationDidBecomeActive:

applicationWillTerminate:

application:openURL:sourceApplication:annotation:

application:handleOpenURL:

applicationProtectedDataWillBecomeUnavailable:

applicationProtectedDataDidBecomeAvailable:

application:performFetchWithCompletionHandler:

application:handleEventsForBackgroundURLSession:completionHandler:

application:didReceiveLocalNotification:

application:didReceiveRemoteNotification:

application:didReceiveRemoteNotification:fetchCompletionHandler:

application:didRegisterForRemoteNotificationsWithDeviceToken:

application:didFailToRegisterForRemoteNotificationsWithError:

applicationSignificantTimeChange:

application:shouldAllowExtensionPointIdentifier:

オブジェクトクラス名: QLPreviewController

• セレクタ名: allocWithZone:

© 1999-2020 Citrix Systems, Inc. All rights reserved. 144

MDX Toolkit

データ暗号化機能の確保

MDXの主要機能の 1つに、保持されているすべてのデータを透過的に暗号化する機能があります。アプリを変更せずにこの機能を利⽤でき、実際にこの機能を直接避けることはきません。Citrix Endpoint Management管理者は暗号化を選択的にまたは完全に無効化できますが、アプリではそのようにすることはできません。

これはMDXの重要な側⾯の 1つであり、以下の点を理解しておく必要があります。

• 管理対象のプロセスで実⾏されるすべてのネイティブコードに対して、ファイル暗号化が実⾏されます。

ファイルデータ暗号化の実装は、すべてのネイティブコードをサポートしており、AppleフレームワークやApple Objective-Cランタイムを使⽤するアプリのコードだけではありません。Objective-Cランタイム内にこのランタイムのみを対象として実装されたファイルデータ暗号化を、簡単に無効化できます。

• AVPlayerクラス、UIWebViewクラス、QLPreviewControllerなどの⼀部のフレームワーク APIは、ユーザーの管理対象アプリプロセスとは異なる実⾏コンテキストで iOSサービスプロセスによって実装されます。

これらのサービスプロセスは、MDX暗号化ファイルデータを暗号化解除できません。したがって、管理対象アプリでは、データの暗号化されていない⼀時的なコピーをサービスプロセスに提供する必要があります。このコピーは、5秒後に管理対象アプリによって削除されます。これらのクラスを使⽤するときは、制限に注意することが重要です。なぜなら、Appleの特定クラスの実装のためにこれらのクラスに対して提供されるデータへの抑制の制御が失われるからです。

• メモリマッピングではアプリ呼び出しファイル I/O システムコールインターフェイスが使⽤されるため、Citrix Endpoint Management暗号化に問題が発⽣します。

ファイルがメモリマップされると、そのファイルの I/O要求は、Citrix Endpoint Managementの暗号化をバイパスし、ユーザーアプリのコンテキストの外部で管理されます。管理対象アプリによるすべての POSIXmmap(2)呼び出しがMAP_PRIVATEおよびMAP_ANONとしてマップされ、ファイル説明には関連付けられません。オペレーティングシステムによる後続のデータページイン以降にすべてのデータのファイル記述が[fault]に指定されている場合、mmap呼び出し中にすべてのマップデータで読み取りが試みられると、Citrix Endpoint Managementによって暗号化解除されずに暗号化データが読み取られます。アプリ内でメモリページの解放が⾏われず、メモリマップされるデータの量が⼩さいため、この⼿法は Citrix EndpointManagementでテストされたすべてのアプリで成功しています。

• 暗号化によって、オーバーヘッドが⼤幅に増加します。パフォーマンスの低下を防ぐために、開発者はディスク I/Oを最適化する必要があります。たとえば、同じ情報の読み取りと書き込みを繰り返し⾏う場合は、アプリケーションレベルキャッシュを実装します。

• Citrix Endpoint Managementは、Apple libsqlite.dylibのインスタンスのみを暗号化します。アプリケーションに libsqlite.dylibのプライベートバージョンが直接リンクしている、または埋め込まれている場合、そのプライベートライブラリのデータベースインスタンスは Citrix Endpoint Managementによって暗号化されません。

• Apple SQLite データベースは、SQLite 仮想ファイルシステムレイヤーを使⽤して Citrix EndpointManagementによって暗号化されます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 145

MDX Toolkit

パフォーマンスが問題になる場合があります。標準のデータベースキャッシュサイズは 2000ページまたは8メガバイトです。データベースのサイズが⼤きい場合、開発者はデータベースキャッシュサイズを増やすように SQLiteプラグマを指定することが必要になる可能性があります。Objective-C Core Dataフレームワークで、Persistent Storeオブジェクトを Persistent Store Controllerオブジェクトに追加するときに、SQLiteプラグマをオプションディレクトリとして追加できます。

• ライブラリがファイル I/Oインターフェイスに再リンクされて内部的にメモリマッピングが広範に使⽤されるため、SQLite WALモードはサポートされていません。

• NSURLCache DiskCacheが、SQLiteデータベースを使⽤して iOSによって実装されます。このデータベースは管理対象外の iOSサービスプロセスによって参照されるため、関連付けられたディスクキャッシュがCitrix Endpoint Managementによって無効化されます。

• 以下は、ハードコードされて除外されるファイルパス名のパターン⼀覧です:

– .plist:プロセスのコンテキストの外側での iOSシステムプロセスによるアクセスのため、除外されます。

– .app:アプリケーションバンドル名の古い部分⽂字列。明⽰的なアプリケーションバンドルパスが除外されるようになったため、この部分⽂字列は廃⽌されました。

– .db:ファイルが SQLiteデータベースでない場合、このサフィックスが付いたファイルは暗号化されません。

– /System/Library:アプリバンドルサンドボックスディレクトリ内に存在するファイルパスおよびアプリデータサンドボックス外のファイルパスは暗号化できません。iOSでは、インストールされたアプリは読み取り専⽤であり、実⾏時にアプリによって⽣成されて保存されるアプリデータファイルとは別のディレクトリに保存されます。

– Library/Preferences:ファイルは iOSから直接アクセスされます。通常、このディレクトリパスには.plistファイルのみ存在します。

– /com.apple.opengl/: iOSはファイルに直接アクセスします。– csdk.db:古い Citrix SSLSDK SQLiteデータベース– /Library/csdk.sql:Citrix SSLSDK SQLiteデータベース– CtxLog_:Citrixログファイル名のプレフィックス– CitrixMAM.config:MDX内部ファイル名– CitrixMAM.traceLog:古いMDX内部ファイル名– CtxMAM.log:MDX内部ファイル名– data.999:MDX内部ファイル名– CTXWrapperPersistentData:MDX内部ファイル名– /Documents/CitrixLogs:MDXログディレクトリ– /Document/CitrixLogs.zip:圧縮されたMDXログのディレクトリ名– アプリバンドルディレクトリパスのファイル:アプリファイルの読み取り専⽤ディレクトリ

• Citrix Endpoint Managementにより、実⾏時に Apple Objective-C QLPreviewControllerオブジェクトクラスのインスタンスがプライベートの Citrix Endpoint Management SecureViewControllerクラスのインスタンスに置換されます。Citrix Endpoint Management SecureViewControllerクラスは、

© 1999-2020 Citrix Systems, Inc. All rights reserved. 146

MDX Toolkit

Apple Objective-C UIWebViewオブジェクトクラスから派⽣されます。QLPreviewControllerオブジェクトクラスは、UIWebViewオブジェクトクラスではネイティブにはサポートされていないオーディオタイプや PDFタイプなどの⼀部のファイル形式をネイティブにサポートしています。

• 最適なパフォーマンスを得るには、4096バイトの倍数であるファイルオフセットに対してファイル I/O要求が発⾏される必要があります。また、4096バイトの倍数である⻑さに対して発⾏される必要があります。

• Citrix Endpoint Management暗号化では、O_NONBLOCKファイルモードフラグはサポートされていません。このファイルモードフラグは、Citrix Endpoint Managementによる処理時にモードリストから削除されます。

暗号化のユーザーエントロピー

Citrix Endpoint Managementの特定の暗号化オプションでは、暗号キーを⽣成するにはエンドユーザーが PINを⼊⼒する必要があります。このオプションはユーザーエントロピーと呼ばれるもので、アプリケーションで特定の問題が発⽣する可能性があります。

特に、ユーザーが PINを⼊⼒するまでファイルアクセスまたはデータベースアクセスは実⾏できません。PIN UIが表⽰できるようになる前に実⾏される I/O操作が場所に存在する場合、この I/O操作は常に失敗します。

アプリケーションにこの問題がないことを確認するには、ユーザーエントロピーが有効になった状態でテストします。Citrix Endpoint Managementクライアントプロパティ Encrypt secrets using Passcodeによって、ユーザーエントロピーを追加します。このクライアントプロパティはデフォルトでは無効になっており、Citrix EndpointManagementコンソールを使⽤して[構成]>[設定]>[詳細]>[クライアントプロパティ]で構成します。

データ抑制機能

• リモートビューコントローラーはMDX管理対象アプリとは別のプロセスコンテキストで実⾏されるので、リモートビューコントローラーではセキュリティ抑制(データ暗号化、ポリシーブロックのコピー、切り取り、貼り付けなど)が⾏われません。

• UIResponderではコピー操作のみがサポートされます。切り取りや削除などの他の操作は、サポートされていません。

• AirDropは、UIレベルでのみインターセプトされ、それよりも低いレベルではインターセプトされません。• MFIおよび Bluetoothはインターセプトされません。

アイコンファイルのサポート

MDXのラップには、ホーム画⾯アイコンまたはアプリアイコンとして使⽤できる 1つ以上のアイコンが必要です。アプリ開発者は、アセットカタログにアイコンを追加するか、または Info.plistの CFBundleIconsキーまたはCFBundleIconFilesキーを使⽤できます。

MDX Toolkitでは、Info.plist内の既知の plistの場所⼀覧から最初のキーが取得されます:

© 1999-2020 Citrix Systems, Inc. All rights reserved. 147

MDX Toolkit

• CFBundleIcons• CFBundlePrimaryIcon• CFBundleIconFiles• UINewsstandIcon• CFBundleDocumentTypes

これらのキーが Info.plist内に⾒つからない場合、MDX Toolkitでアプリバンドルのルートフォルダ内にある以下のアイコンのいずれかが特定されます。

• Icon.png• [email protected]• Icon-72.png• Icon-76.png

ネットワークおよびMicro VPN

MDXでは現在、アプリによって直接発⾏されたネットワーク呼び出しのみ管理されています。⼀部の DNSクエリはAppleフレームワークによって直接発⾏されるため、MDXでは管理されません。

ネットワーク⽤のさまざまな Citrix Endpoint Managementポリシーオプションが管理者に提供されています。

ネットワークアクセスポリシーは、アプリのネットワークアクティビティを禁⽌、許可、リダイレクトします。

重要:

MDX Toolkitバージョン 18.12.0リリースには、以前のポリシーを組み合わせたり置き換えたりした新しいポリシーが含まれています。[ネットワークアクセス]ポリシーは[ネットワークアクセス]、[優先 VPNモード]、[VPNモードの切り替えを許可]を組み合わせたものです。[除外の⼀覧]ポリシーは、[分割トンネルの除外対象⼀覧]に置き換えられます。[オンラインセッションを必須とする]ポリシーは、[Micro VPNセッションを必須とする]ポリシーに置き換えられます。詳しくは、「以前のリリースの新機能」を参照してください。

[トンネル-Web SSO]は、この設定において[セキュアブラウズ]に相当する名前です。動作は同じです。

使⽤できるオプションは、次のとおりです。

• 以前の設定を使⽤:デフォルトでは、過去のポリシーで設定済みの値が使⽤されます。値の変更後は、[以前の設定を使⽤]に戻さないでください。また、新しいポリシーに対する変更は、ユーザーがアプリをバージョン 18.12.0以降にアップグレードするまで反映されません。

• 禁⽌:アプリが使⽤するネットワーク APIは機能しません。前述のガイドラインに基づいて、このような失敗を正常に処理する必要があります。

• 制限なし:ネットワーク呼び出しはすべて直接転送され、トンネリングされません。• トンネル-完全 VPN:管理対象アプリケーションからのトラフィックはすべて Citrix Gatewayを介してトンネリングされます。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 148

MDX Toolkit

• トンネル-Web SSO:HTTP/HTTPS URLが書き込まれます。このオプションでは、HTTPトラフィックおよび HTTPSトラフィックのトンネリングのみが許可されます。トンネル-Web SSOの⼤きなメリットは、HTTPトラフィックと HTTPSトラフィックのシングルサインオン(SSO)、および PKINIT認証です。Androidでは、このオプションはセットアップの⼿間が少ないため、Web閲覧操作に関する推奨オプションとなっています。

• トンネル-完全 VPNおよびWeb SSO:必要に応じて VPNモードの⾃動切り替えを許可できます。いずれかの VPNモードで認証要求が処理できないためにネットワーク要求が失敗した場合、代替モードで再試⾏されます。

制限事項

• ユーザーは内部Webサイトにホストされているビデオを iOSラップされたMDXアプリで再⽣できません。MDXによってインターセプトされないデバイス上で、メディアプレーヤープロセスでビデオが再⽣されるためです。

• NSURLSessionのバックグラウンドダウンロード(NSURLSessionConfiguration backgroundSession-ConfigurationWithIdentifier)はサポートされていません。

• ネットワークアクセスポリシーが[禁⽌]に設定されている場合、UDPトラフィックがブロックされます。ネットワークアクセスポリシーが[トンネル-完全 VPN]に設定されている場合、UDPトラフィックはトンネリングされません。

• MDXラップされたアプリでは、受信接続をリスンするソケットサーバーを置換できません。ただし、MDXでラップされたアプリでは、クライアントソケットを使⽤してサーバーに接続できます。

サードパーティライブラリのサポート

⼀部のアプリケーションフレームワークは、Citrix Endpoint Managementで互換性の問題があります:

• Xamarinクロスプラットフォーム開発環境で開発されたアプリはサポートされています。使⽤例とテスト例が不⼗分なため、他のクロスプラットフォーム開発環境でのサポートは正式に表明されていません。

• SQLCipherではメモリマッピングを使⽤するため、暗号化が機能しません。解決策として、SQLCipherを使⽤しないという⽅法があります。また、暗号化除外ポリシーを使⽤してデータベースファイルを暗号化から除外するという⽅法もあります。Citrix Endpoint Management管理者は、Citrix Endpoint Managementコンソールでポリシーを構成する必要があります。

• OpenSSL libcrypto.aライブラリおよび libssl.aライブラリに直接リンクしているアプリおよびサードパーティライブラリでは、シンボルの⽋落が原因のリンクエラー、および複数シンボル定義が原因のリンクエラーが発⽣する可能性があります。

• Appleプッシュ通知サービスのサポートが必要なアプリでは、Appleで必要とされている特定の⼿順に従う必要があります。

• Citrix Endpoint Managementでは、SQLiteデータベース内でログ先⾏書き込み(WAL)ファイルおよびメモリマップファイルのサポートを無効化するために、SQLiteデータベースバージョンが 1に明⽰的に設定

© 1999-2020 Citrix Systems, Inc. All rights reserved. 149

MDX Toolkit

されます。SQLiteバージョン 2またはバージョン 3で SQLiteインターフェイスに直接アクセスしようとすると、そのアクセスは失敗します。

iOS⽤の API

March 5, 2020

iOS⽤の XenMobile APIは Objective-Cに基づいています。ここでは、Citrix Endpoint Management APIを機能別に概説し、APIの定義を説明します。

アプリの管理

• isAppManaged

Secure Hubの操作

• isMDXAccessManagerInstalled• logonMdxWithFlag• isAppLaunchedByWorxHome

MDXポリシー

• getValueOfPolicy

共有コンテナ

• getVaultDataFromVault• saveVaultData• updateAndSynchronizeVaultItem• updateAndSynchronizeVaultItems• deleteVault• deleteVaultWithError

ユーザーデータ

• managedUserInformation

クラスMdxManager

メソッド

• getValueOfPolicy

+(NSString*)getValueOfPolicy:(NSString*)policyName error:(NSError **)error;

© 1999-2020 Citrix Systems, Inc. All rights reserved. 150

MDX Toolkit

管理対象アプリの場合、Citrix Endpoint Management管理者が設定したポリシー値を返します。⾮管理対象の Premiumアプリの場合、Applications/Citrix/MDXToolkit/data/MDXSDK/default_policies.xmlに設定されたポリシー値を返します。⾮管理対象の Generalアプリの場合、nilを返します。

パラメーター:

policyName – default_policies.xmlで検索するポリシーの名前。

例:

+(NSString*)getValueOfPolicy:(NSString*)DisableCamera error:(NSError**)error;

• isMDXAccessManagerInstalled

+(BOOL)isMDXAccessManagerInstalled: (NSError **)error;

Secure Hubがインストールされているか確認します。インストールされている場合、アプリが管理対象ではない場合もアプリのMDX制御は有効です。Secure Hubがインストールされている場合、trueを返します。

• isAppManaged

+(BOOL)isAppManaged;

アプリが現在MDXによって管理されているかを確認します。つまり、MDXポリシーバンドルは XMLファイルとしてアプリに組み込まれています。Citrix Endpoint Managementバックエンドインフラストラクチャ(キーコンテナ)に対して、アプリデータベースのデータ暗号化にMDXが使⽤するデータ暗号化部分キー(シークレット)がクエリされます(iOS 9以降)。アプリが管理対象の場合、trueを返します。

• logonMdxWithFlag

+(BOOL)logonMdxWithFlag:(BOOL)force error:(NSError**)error;

Secure HubでMDXログオン要求を開始します。

• isAppLaunchedByWorxHome

+(BOOL)isAppLaunchedByWorxHome;

アプリ間の URL要求が、Secure Hubからか、デバイス上の他のアプリからなのかを確認します。これは、アプリがMDX制御の通信を認識する必要がある場合に必要です。iOSでは、アプリが特定の URLスキーマを登録できます。URLスキーマは URLの最初の部分です(コロンの前まで。コロンは含みません)。URLがhttp://で始まる場合、スキーマは httpです。

MDX対応のアプリおよび Secure Hubは、カスタム URLスキーマを使⽤して通信します。たとえば、他のアプリからの mailto: URL を処理するには、Secure Mail は URL スキーマ ctxmail が必要です。他のアプリからの http URL または https URL を処理するには、Secure Web はそれぞれ URL スキーマctxmobilebrowserまたは ctxmobilebrowsersが必要です。MDXアプリのURLスキーマポリシーおよび許可する URLポリシーについて詳しくは、「iOSアプリのMDXポリシー」を参照してください。

次の UIApplication代理イベント呼び出しの最中または後で、クエリが実⾏される時間や場所に関係なく、正確な結果を返します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 151

MDX Toolkit

– アプリがホーム画⾯または openURL呼び出しからロードする場合:

1 application:willFinishLaunchingWithOptions:23 application:didFinishLaunchingWithOptions:45 applicationDidFinishLaunching:

– ユーザーがデバイスホーム画⾯からアプリをアクティブ化または⾮アクティブ化する場合:

1 applicationDidBecomeActive:

重要:

applicationWillEnterForeground:の実⾏中にクエリを実⾏しないでください。

– openURL呼び出しによってアプリをアクティブ化または⾮アクティブ化する場合:

1 application:openURL:sourceApplication:annotation:23 application:handleOpenURL:

• managedUserInformation

extern __attribute__((visibility (”default”)))NSString *const kXenMobileUsername; +(NSDictionary*)managedUserInformation;

ユーザーのサインイン状態に関係なく、MDX管理対象アプリを実⾏する登録されたユーザーの UserNameを含む⽂字列を返します。ユーザーが登録されていない場合、アプリが管理対象でない場合、またはアプリがラップされていない場合は、空の⽂字列を返します。

Class XenMobileSharedKeychainVault

メソッド

• initWithVaultName

- (instancetype)initWithVaultName:(NSString*)vaultName accessGroup:(NSString*)accessGroup;

Citrix Endpoint Management共有コンテナを初期化します。

共有コンテナ APIを使⽤して、同じキーチェーンアクセスグループを持つアプリ間で管理対象コンテンツを共有します。たとえば、登録されたアプリを介してユーザー証明書を共有できるため、アプリは Secure Hubからではなくセキュアなコンテナから証明書を取得できます。

パラメーター:

© 1999-2020 Citrix Systems, Inc. All rights reserved. 152

MDX Toolkit

vaultName – Citrix Endpoint Management共有コンテナの名前。

accessGroup –キーチェーンアクセスグループの名前。これは、TEAMID_A.appOriginalBundleIDという名前のデフォルトのMDXアクセスグループ、またはアプリ間でデータを共有するために使⽤するキーチェーンアクセスグループの場合があります。

• コンテナデータ型プロパティ

1 @property(nonatomic,readonly) BOOL exists;23 @property(nonatomic,readonly) BOOL isAccessible;45 @property(nonatomic,strong) NSMutableDictionary* vaultData

コンテナを初期化した後で、以下のコンテナデータ型プロパティが返されます。

exists –指定された vaultNameのコンテナが検出されたかどうかを⽰します。

isAccessible –指定された accessGroupにコンテナがあるかどうか、およびコンテナにアクセスできるかどうかを⽰します。

vaultData –共有コンテナのコンテンツです。コンテナを初めて初期化する場合、vaultDataは nilディクショナリです。

• getVaultDataFromVault

+ (NSDictionary*)getVaultDataFromVault:(NSString*)vaultName accessGroup:(NSString*)accessGroup error:(NSError *__autoreleasing *)error;

Citrix Endpoint Management共有コンテナからデータを読み取ります。これは、以下に⽰す、コンテナデータを読み取る 3つの⽅法のうちの 1つです。

– getVaultDataFromVault:accessGroup:errorを直接使⽤する。

– XenMobileSharedKeychainVaultインスタンスを作成して、vaultDataプロパティを読み取る。

– XenMobileSharedKeychainVault インスタンスを作成してから、-(BOOL) loadDataWithEr-ror:(NSError *__autoreleasing *)error;を使⽤して vaultDataプロパティを読み取って、コンテナデータをリロードする。

サンプルコードについては、この記事の「共有コンテナのサンプル」を参照してください。

パラメーター:

vaultName – Citrix Endpoint Management共有コンテナの名前。

accessGroup –キーチェーンアクセスグループの名前。これは、TEAMID_A.appOriginalBundleIDという名前のデフォルトのMDXアクセスグループ、またはアプリ間でデータを共有するために使⽤するキーチェーンアクセスグループの場合があります。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 153

MDX Toolkit

• saveVaultData

+ (BOOL)saveVaultData:(NSDictionary*)vaultData toVault:(NSString*)vaultName accessGroup:(NSString*)accessGroup error:(NSError *__autoreleasing*)error;

Citrix Endpoint Management共有コンテナにデータを保存します。これは、以下に⽰す、コンテナデータを保存する 3つの⽅法のうちの 1つです。

– saveVaultData:toVault:accessGroup:error:を直接使⽤する。

– updateAndSynchronizeVaultItem:または updateAndSynchronizeVaultItemsを使⽤する(この表の次の部分で説明)。

– XenMobileSharedKeychainVaultインスタンスを作成し、コンテナデータをロードして変更し、データを同期させて、- (BOOL)synchronizeWithError:(NSError *__autoreleasing *)error;を使⽤する。

サンプルコードについては、この記事の「共有コンテナのサンプル」を参照してください。

パラメーター:

vaultData – Citrix Endpoint Management共有コンテナに保存するデータ。共有コンテナに保存するデータは、@{@”username”:@”andreo”}などのキー/値ペアのディクショナリです。

vaultName – Citrix Endpoint Management共有コンテナの名前。

accessGroup –キーチェーンアクセスグループの名前。これは、TEAMID_A.appOriginalBundleIDという名前のデフォルトのMDXアクセスグループ、またはアプリ間でデータを共有するために使⽤するキーチェーンアクセスグループの場合があります。

• updateAndSynchronizeVaultItem

updateAndSynchronizeVaultItems

- (BOOL)updateAndSynchronizeVaultItem:(NSString*)vaultItem withValue:(id)itemValue error:(NSError *__autoreleasing *)error;

- (BOOL)updateAndSynchronizeVaultItems:(NSDictionary*)vaultItems error:(NSError *__autoreleasing *)error;

Citrix Endpoint Management 共有コンテナのデータを更新します。この⽅法を使⽤するためには、XenMobileSharedKeychainVaultインスタンスを作成し、コンテナデータアイテムを追加または更新してこのインスタンスを同期します。たとえば、既存のコンテナエントリに {a:123, b:234, c:305}を使⽤している場合、この APIをデータに使⽤して {c:345, d:456}を更新すると、この APIによってコンテナデータが{a:123, b:234, c:345, d:456}に更新されます。サンプルコードについては、この記事の「共有コンテナのサンプル」を参照してください。

コンテナデータを保存する他の 2つの⽅法については、上記の saveVaultDataを参照してください。

パラメーター:

© 1999-2020 Citrix Systems, Inc. All rights reserved. 154

MDX Toolkit

vaultItem – @{ @”;username::@”andreo”} の形式の単⼀のキー/値ペア。

vaultItems –キー/値ペアのリスト。

• deleteVault

+ (BOOL)deleteVault:(NSString*)vaultName accessGroup:(NSString*)accessGrouperror:(NSError *__autoreleasing *)error;

指定の共有コンテナを削除します。

パラメーター:

vaultName – Citrix Endpoint Management共有コンテナの名前。

accessGroup –削除対象のコンテナによって使⽤されているキーチェーンアクセスグループの名前。

• deleteVaultWithError

-(BOOL)deleteVaultWithError:(NSError *__autoreleasing *)error;

XenMobileSharedKeychainVaultインスタンスにより返された共有コンテナを削除します。delete-VaultWithErrorで削除した後で、オブジェクトを解放する必要があります。

共有コンテナのサンプル

1 #import ”XenMobileSharedKeychainVault.h”23 @interface ClassA ()4 ...5 @property(nonatomic,strong) XenMobileSharedKeychainVault*

XenMobileSharedKeychainVault;6 ...7 @end89 @implementation ClassA10 ...11 @synthesize XenMobileSharedKeychainVault =

_XenMobileSharedKeychainVault;121314 ...15 #ifdef USE_CLASS_INSTANCE_METHODS16 -(XenMobileSharedKeychainVault*)XenMobileSharedKeychainVault17 {1819 if(_XenMobileSharedKeychainVault==nil) {20

© 1999-2020 Citrix Systems, Inc. All rights reserved. 155

MDX Toolkit

21 _XenMobileSharedKeychainVault = [[XenMobileSharedKeychainVault alloc]22 initWithVaultName:<VAULT_NAME>23 accessGroup:kXenMobileKeychainAccessGroup];24 }2526 return _XenMobileSharedKeychainVault;27 }2829 #endif3031 -(void)read32 {3334 NSError* error=nil;35 #ifdef USE_CLASS_INSTANCE_METHODS36 NSDictionary* vaultDictionary = nil;37 if([self.XenMobileSharedKeychainVault loadDataWithError:&error]) {3839 vaultDictionary = [self.XenMobileSharedKeychainVault vaultData];40 }4142 #else43 NSDictionary* vaultDictionary = [XenMobileSharedKeychainVault44 getVaultDataFromVault:<VAULT_NAME>45 accessGroup:kXenMobileKeychainAccessGroup error:&error];46 #endif4748 }495051 -(void)save52 {5354 NSError* error=nil;55 /// check error handling here...5657 NSDictionary* dictToSave = @{58 <VAULT_DATA_DICTIONARY_OBJECTS> }59 ;60 #ifdef USE_CLASS_INSTANCE_METHODS61 #ifdef USE_CLASS_INSTANCE_METHODS_TO_UPDATE62 BOOL result = [self.XenMobileSharedKeychainVault63 updateAndSynchronizeVaultItems:dictToSave error:&error];64 #else65 self.XenMobileSharedKeychainVault.vaultData = [NSMutableDictionary

© 1999-2020 Citrix Systems, Inc. All rights reserved. 156

MDX Toolkit

66 dictionaryWithDictionary:dictToSave];67 BOOL result = [self.XenMobileSharedKeychainVault synchronizeWithError:&

error];68 #endif69 #else70 BOOL result = [XenMobileSharedKeychainVault71 saveVaultData:dictToSave toVault:<VAULT_NAME>72 accessGroup:kXenMobileKeychainAccessGroup error:&error];73 #endif7475 }767778 -(void)delete79 {8081 NSError* error=nil;82 #ifdef USE_CLASS_INSTANCE_METHODS83 BOOL result = [self.XenMobileSharedKeychainVault deleteVaultWithError:&

error];84 #else85 BOOL result = [XenMobileSharedKeychainVault deleteVault:<VAULT_NAME>86 accessGroup:kXenMobileKeychainAccessGroup error:&error];87 #endif8889 }909192 ...9394 @end

ポリシーのデフォルトとカスタムポリシー

March 5, 2020

ここでは、ラップされた ISVアプリでポリシーを使⽤する⽅法について説明します。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 157

MDX Toolkit

⾮管理対象の Premiumアプリに関するポリシーのデフォルトの変更

MDXアプリ SDKには、⾮管理対象の Premiumアプリにのみポリシーのデフォルトを指定する、以下のポリシーファイルが含まれています。

• Android:Applications/Citrix/MDXToolkit/data/MDXSDK_Android/ default_sdk_policies.xml• iOS:Applications/Citrix/MDXToolkit/data/MDXSDK/default_policies.xml

これらのファイルのポリシーはすべて、無効になっています。ファイルにないポリシーは、⾮管理対象の Premiumアプリでは無視されます。

次のように、デフォルト設定を変更できます。

1. 後で必要になった場合に備えて、変更するデフォルトポリシーファイルのバックアップを作成します。2. ISVアプリのポリシーのデフォルトを変更するには、MDX Toolkitのドキュメント「AndroidアプリのMDXポリシー」および「iOSアプリのMDXポリシー」で指定されているポリシー値を使⽤します。

3. Premiumアプリを構築するときに、アプリリソースにデフォルトポリシーファイルを含めます。

カスタムポリシーの作成

MDX Toolkit のポリシーファイルには、Citrix Endpoint Management コンソールに表⽰されるポリシーラベルやヘルプテキストを含め、すべてのポリシー定義が⽤意されています。アプリをラップすると、⽣成される.mdxファイルにこれらのポリシーが含まれます。これらのファイルはMDX ToolkitインストールフォルダーのApplications/Citrix/MDXToolkit/dataにあり、これらのファイルにカスタムポリシーを追加できます。

1. 後で必要になった場合に備えて、変更するポリシーファイルのバックアップを作成します。

2. ポリシー XMLファイルにポリシーを追加するには、次の「ポリシーの形式」に指定されている形式を使⽤します。

3. アプリをラップする時に、ラッピングのコマンドラインに-policyxmlオプションを含めることによって、変更されたポリシー XMLファイルの場所を指定します。

-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml

コマンドラインを使⽤して ISVアプリをラップする⽅法の詳細は、「コマンドラインを使った iOSエンタープライズアプリラッピング」および「コマンドラインを使った Android ISVアプリラッピング」を参照してください。

4. ポリシーの名前、説明、および値を Citrix Endpoint Managementコンソールで確認するには、アプリをCitrix Endpoint Managementにアップロードします。

ポリシー追加に関するガイドライン

• 太字で表⽰されるアイテムのみ変更します。• PolicyNameエレメントの値は、アプリからコールされる名前です。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 158

MDX Toolkit

• PolicyCategoryエレメントの値は、Citrix Endpoint Managementコンソールにポリシーが表⽰される場合のカテゴリ名です。カテゴリ名を⾒つけるには、MDXポリシーファイルの <Category>セクションでCategoryId値を参照します。

• PolicyDefaultエレメントの値は、ポリシーのデフォルト設定です。• <Title res_id=”POLICY_ID”>の POLICY_IDは、ポリシーで使⽤される⼀意の IDです。IDの先頭が⽂字である必要があります。また、IDにスペースを含めることはできません。⽂字、数字、またはアンダースコアのみ含めます。

• Titleエレメントの値は、Citrix Endpoint Managementコンソールに表⽰されるポリシーラベルです。• <Description res_id=”POLICY_DESC_ID”>の POLICY_DESC_IDは、ポリシー説明の⼀意の IDです。IDの先頭が⽂字である必要があります。また、IDにスペースを含めることはできません。⽂字、数字、またはアンダースコアのみ含めます。

• Descriptionエレメントの値は、Citrix Endpoint Managementコンソールに表⽰されるポリシー説明です。

⽂字列

1 <Policy>2 <PolicyName>PolicyName</PolicyName>3 <PolicyType>string</PolicyType>4 <PolicyCategory>Category_ID</PolicyCategory>5 <PolicyDefault>Value</PolicyDefault>6 <PolicyStrings>7 <Title res_id=”POLICY_ID” >Sample String Policy</Title>8 <Description res_id=”POLICY_DESC_ID”>9 Please enter the policy value.10 </Description>11 </PolicyStrings>12 </Policy>

ブーリアン型

1 <Policy>2 <PolicyName>PolicyName</PolicyName>3 <PolicyType>string</PolicyType>4 <PolicyCategory>Category_ID</PolicyCategory>5 <PolicyDefault>false</PolicyDefault>6 <PolicyStrings>7 <Title res_id=”POLICY_ID” >Sample Boolean Policy</Title>8 <BooleanTrueLabel res_id=”POLICY_ON”>On</BooleanTrueLabel>9 <BooleanFalseLabel res_id=”POLICY_OFF”>Off</BooleanFalseLabel>10 <Description res_id=”POLICY_DESC_ID”>

© 1999-2020 Citrix Systems, Inc. All rights reserved. 159

MDX Toolkit

11 If On, the app does something.12 If Off, the app does something else.1314 Default value is Off.15 </Description>16 </PolicyStrings>17 </Policy>

列挙型

1 <Policy>2 <PolicyName>PolicyName</PolicyName>3 <PolicyType>enum</PolicyType>4 <PolicyEnumValues>5 <PolicyEnumValue>6 <PolicyEnumValueId>Value1</PolicyEnumValueId>7 <PolicyEnumValueString res_id=”ID_1”>Yes</

PolicyEnumValueString>8 </PolicyEnumValue>9 <PolicyEnumValue>10 <PolicyEnumValueId>Value2</PolicyEnumValueId>11 <PolicyEnumValueString res_id=”ID_2”>No</

PolicyEnumValueString>12 </PolicyEnumValue>13 <PolicyEnumValue>14 <PolicyEnumValueId>Value3</PolicyEnumValueId>15 <PolicyEnumValueString res_id=”ID_3”>Maybe</

PolicyEnumValueString>16 </PolicyEnumValue>17 </PolicyEnumValues>18 <PolicyCategory>Category_ID</PolicyCategory>19 <PolicyDefault>Value1</PolicyDefault>20 <PolicyStrings>21 <Title res_id=”POLICY_ID” >Sample Enum Policy</Title>22 <Description res_id=”POLICY_DESC_ID”>23 Sample policy description.2425 Default value is Yes.26 </Description>27 </PolicyStrings>28 </Policy>

© 1999-2020 Citrix Systems, Inc. All rights reserved. 160

MDX Toolkit

トラブルシューティング

January 10, 2020

Citrix Endpoint Management環境でアプリを実⾏しているときに発⽣した問題をトラブルシューティングするには、まず、アプリがラップされていないと問題が発⽣するのか、ラップされていると問題が発⽣するのかを特定する必要があります。アプリがラップされていると問題が発⽣する場合は、問題はアプリ固有のものです。通常のトラブルシューティング⼿順に従います。

アプリがラップされていると問題が発⽣する場合

• 既知の問題を確認します。MDXアプリ SDKの既知の問題および既知の問題を参照してください。

• 使⽤している MDXアプリ SDKのバージョンが、アプリをラップするために使⽤しているのと同じ MDXToolkitのバージョンであることを確認します。iOSの場合、プロジェクトに正しい⾏が追加されていることを確認します。これにより、フレームワークが追加されて APIが機能します。Androidの場合、使⽤するすべてのデバイスのライブラリがプロジェクトに追加されており、worxsdk.aarがプロジェクト依存関係に追加されていることを確認します。SDKとプロジェクトの統合時にその他の問題が発⽣する場合は、CitrixReadyまたは Citrixサポートに連絡してください。

• 問題がアプリのラップエラーかどうかを特定します。Applications/Citrix/MDXToolkit/logsにある MDXToolkitログを確認します。

ログファイルには、ラップの情報および進⾏状況が含まれています。これらのファイルで、エラーメッセージと警告を確認します。詳しくは、「iOSアプリのラッピングエラーの識別」および「Androidアプリのラッピングエラーの識別」を参照してください。

Secure Hubからログを収集する:Secure Hubで[サポート]、[ヘルプ]、アプリ名の順にタップします。Secure Mailで、選択したアプリのログが添付された新しいメッセージが開きます。このメッセージに、問題についての詳細な情報を追加できます。問題を再現するために必要な⼿順を記載し、失敗したラップのログと、問題についての追加情報を含めます。

その他のデバイスログも役⽴つ場合があります。iOSデバイスでのシステムログの収集およびコマンドラインからログを収集するを参照してください。

ラップされたアプリをデバイスにインストールできない場合

• Androidアプリの場合は有効なキーストアを使⽤していることを、iOSの場合は有効なプロビジョニングプロファイルと証明書ペアを使⽤していることを確認します。「iOSモバイルアプリのラッピング」に記載されている、プロビジョニングプロファイルと証明書に関する特別な考慮事項に注意してください。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 161

MDX Toolkit

Apple証明書キーで問題がある場合

• Appleキーチェーンアクセスアプリから、証明書の再発⾏を要求します。これにより、新しい秘密キーが⽣成されます。Apple開発者向けWebサイトから証明書とプロビジョニングプロファイルをダウンロードします。

© 1999-2020 Citrix Systems, Inc. All rights reserved. 162

MDX Toolkit

© 1999-2020 Citrix Systems, Inc. All rights reserved. 163

LocationsCorporate Headquarters | 851 Cypress Creek Road Fort Lauderdale, FL 33309, United StatesSilicon Valley | 4988 Great America Parkway Santa Clara, CA 95054, United States

© 2020 Citrix Systems, Inc. All rights reserved. Citrix, the Citrix logo, and other marks appearing herein are property of

Citrix Systems, Inc. and/or one or more of its subsidiaries, andmay be registered with the U.S. Patent and Trademark Office

and in other countries. All other marks are the property of their respective owner(s).

Citrix Product Documentation | docs.citrix.com March 5, 2020