プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Mobile Security Suiteの管理
11gリリース2 (11.1.2.3) for All Platforms
E61946-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

9 Oracle Mobile Security Suiteのアプリケーションのコンテナ化ツール

Oracle Mobile Security Suiteは、リッチなユーザー・エクスペリエンスを維持しながら、モバイル・デバイスから企業アプリケーションおよびデータにセキュアにアクセスできるようにして、従業員の生産性を向上します。そのモバイル・セキュリティ・コンテナにより、企業または個人が所有しているiOSまたはAndroidデバイス上で、エンタープライズ・ワークスペースが作成されます。従業員は、企業向けのセキュリティ、および真のシングル・サインオンのためのWindows認証との緊密な統合により、企業データおよびアプリケーションにシームレスにアクセスできます。

Oracle Mobile Security ContainerはOracle Mobile Security Suiteの重要な機能です。コンテナは、個人用デバイス上のエンタープライズ・アクセスを分離し、企業の個人所有デバイス(BYOD)を有効にします。この章では、アプリケーションをセキュア・ワークスペースにデプロイできるようにコンテナ化するツールについて説明します。

このドキュメントの内容は次のとおりです。

9.1 コンテナ化ツールの機能

モバイル・セキュリティ・アプリケーションのコンテナ化ツールを使用すると、標準化されたセキュリティ・レイヤーをネイティブ・モバイル・アプリケーションに追加できます。コンテナ化プロセスはシンプルで、次のセキュリティ・サービスをアプリケーションに追加します。

  • セキュアなデータ転送: エンタープライズ・ファイアウォールの背後にあるアプリケーション・バックエンド・リソースへのモバイル・セキュリティ・アクセス・サーバーを介した暗号化済AppTunnel。

  • 認証: アプリケーション・バックエンド・サーバーに対するWindows統合認証/SSO (KerberosまたはNTLM)。

  • セキュアなデータ記憶域: ファイル、データベース、アプリケーション・キャッシュおよびユーザー・プリファレンスなどのアプリケーション・データの暗号化済記憶域。

  • データ・リークの制御: 他の信頼できるアプリケーションに対してファイル共有とコピーおよび貼付けを制限する機能。これにより、電子メール、メッセージ送信、出力および保存などのデータ共有を制限できます。

  • 動的ポリシー・エンジン: 認証頻度、ジオフェンスとタイム・フェンスおよびリモート・ロックとワイプなどの50を超える詳細なアプリケーション制御。

モバイル・セキュリティ・アプリケーションのコンテナ化ツールを使用して、多要素認証やWindows統合認証(KerberosまたはNTLM)などの高度な機能を含むアプリケーションにエンタープライズ・セキュリティ・サービスを追加します。

9.2 コンテナ化プロセス

コンテナ化プロセスはシンプルで、開発者がコードを変更する必要はありません。最初の手順として、未署名のバージョンのアプリケーションを取得します。未署名のバージョンは完全なコンパイル済アプリケーションであり、エンタープライズappstoreで内部アプリケーションとして企業の従業員に配布するために、エンタープライズ配布証明書によって署名されます。未署名のアプリケーションは、Androidの場合はapkファイルで、iOSの場合はipaファイルまたは静的ライブラリのいずれかです。

コンテナ化プロセスの論理図

次に、管理者は未署名のアプリケーションをモバイル・セキュリティ・アプリケーションのコンテナ化ツールにインポートし、ターゲット・アプリケーションを検査してから、コンテナ化コードを挿入し、ターゲット・エンタープライズ配布証明書で署名します。このプロセスの結果は、完全署名付きアプリケーションによるエンタープライズ配布が可能で、モバイル・セキュリティ・アクセス・サーバーまたは他のエンタープライズAppStoreにアップロードできます。挿入されたコードは、ターゲットOSに対する特定のシステム・コールを検索し、モバイル・セキュリティ・フレームワークを挿入して、データ暗号化、ネットワーキングおよび認証などのセキュリティ・タスクを処理します。このプロセスの利点は、開発者がコードを変更しなくてもよいという点です。つまり、パブリックなappstoreにある同じアプリケーションを企業の顧客に対して異なる配布パッケージで使用可能にします。

コンテナ化済アプリケーションは専用のログイン画面が必要ありません。アプリケーションが起動されると、モバイル・セキュリティ・コンテナにリダイレクトされ、シングル・サインオンが実行されると、セッションがアプリケーションに戻ります。また、アプリケーションは、内部のWebサイトまたはサービスに接続するためのVPNが必要ありません。かわりに、セキュアなAppTunnelがアプリケーションとモバイル・セキュリティ・アクセス・サーバー間に確立され、これにより、セキュアな転送が実行され、内部のサイトおよびサービスにアクセスします。

9.3 コンテナ化のためのアプリケーションの準備

コンテナ化のためにアプリケーションを準備するには、次の項の説明のとおりに作業を進めます。

9.3.1 コンテナ化のためのiOSアプリケーションの準備

コンテナ化の準備を行うために、コンテナ化用のiOSアプリケーションは、未署名であるか、アプリケーションのコンテナ化後に署名する際に使用する証明書と同じもので署名する必要があります。署名済iOSアプリケーションを異なる証明書で再度署名することはできません。

未署名のiOSアプリケーション作成するには、次の手順に従います。

  1. XcodeでBitzerSecureContainer.xcodeprojを開きます。

  2. Xcode 6.2で、「Build Settings」→「Code Signing」に移動して、「Provisioning Profile」「Automatic」に、「Code Signing Identity」「Don't Code Sign」に設定します。

    6.2より古いバージョンのXcodeを使用している場合は、「Build Settings」に移動して、「Provisioning Profile」「None」に、「Code Signing Identity」「Don't Code Sign」に設定します。

  3. プロジェクトを保存して終了します。

  4. コマンドラインから、エンタープライズ配布の静的ライブラリのプロジェクトを展開したフォルダに移動します。

  5. 次のコマンドを実行します。

    xcodebuild clean build -project BitzerSecureContainer.xcodeproj -target Bitzer CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -configuration Release
    

これにより、build/Release-iphoneosフォルダに拡張子が.appの未署名のアプリケーション・バンドルが生成されます。アプリケーション・バンドル用のIPAを作成することも、アプリケーション・バンドルの.appファイルを入力ファイルとしてコンテナ化ツールに渡すこともできます。

アプリケーション・バンドルからIPAを作成するには、次の手順に従います。

  1. Payloadというフォルダを作成します。

  2. アプリケーション・バンドル(.appファイル)をPayloadフォルダにコピーします。

  3. Payloadフォルダを圧縮し、ファイル拡張子を.zipから.ipaに変更して、ファイル名を変更します。

9.3.2 コンテナ化のためのAndroidアプリケーションの準備

コンテナ化の準備として、Androidアプリケーションは署名済でも未署名でも可能です。署名済のAndroidアプリケーションを異なる証明書で署名しないでください。

既存の署名付きアプリケーションを未署名にするには、次のコマンドを実行します。

  1. build-apk.sh extract YourSigned.apk

  2. build-apk.sh package YourSignedApkFolder Unsigned.apk YourSigned.apk

9.4 コンテナ化ツールの実行

コンテナ化ツールは、c14nというファイル名のコマンドライン・ユーティリティです。ツールは、iOSおよびAndroidワークスペース・アプリケーションとともにOracle eDeliveryから配布されたバイナリに含まれています。Oracle Mobile Security Suiteインストーラでは、インストール時にコンテナ化ツールのシステム・パスを設定するため、どこからでもc14nを実行できます。

c14nコマンドには多数のパラメータがあります。iOSアプリケーションとAndroidアプリケーションでは、使用するパラメータが異なります。ツールでは、どのタイプのアプリケーションを入力として使用しているかを判定します。

ほとんどのパラメータは、オブションであるか、コマンドラインで渡すかわりに環境変数で渡すことが可能なため、省略できます。これにより、同じパラメータを毎回入力することなく、複数のアプリケーションのコンテナ化をより簡単に行うことができます。

9.4.1 c14nの構文

コンテナ化ツールのコマンドc14nの構文は、次のとおりです。

c14n [-c command] 
     [-i input_file] 
     [-o output_file] 
     [-conf conf_file] 
     [-cert cert_name -p provisioning_profile_file] 
     [-keystore keystore_file -storepass keystore_password -storealias keystore_alias] 
     [-x custom_parameters] 
     [-xc] 
     [-v ]
     [-version ]
     [-log {log_file | off} ]  

9.4.2 c14nのパラメータとそのオプション

-c コマンド

コンテナ化ツールに渡すコマンド。このコマンドにより、入力IPA上で実行されるアクションが決まります。コマンドは次のいずれかです。

  • inject: 未署名のアプリケーションを1行に挿入し、署名します。出力アプリケーションはエンタープライズ配布可能です。-cが指定されていない場合、これがデフォルト値です。

  • injectonly: 未署名のアプリケーションを署名しないで挿入します。出力アプリケーションは未署名であり、signonlyオプションを使用して署名する必要があります。


    注意:

    iOSの場合、コード署名を未挿入のIPAで直接使用しないでください。

  • signonly: 挿入済または未挿入のアプリケーションを署名します。アプリケーションは、未署名であるか、同じ証明書で事前に署名されている必要があります。

  • info: 挿入済または未挿入のアプリケーションに関する情報を表示します。

-i input_file

コンテナ化ツールを実行するための入力ファイル。これには、iOS IPA (.ipa)、iOSアプリケーション・バンドル(.app)、iOS Xcodeアーカイブ(.xcarhive)またはAndroid APK (.apk)があります。input_fileはファイルのフルパスで指定するか、またはファイル名で指定します。ファイル名を指定した場合、コマンドでは、コンテナ化ツールの実行元であるディレクトリ内で入力ファイルが検索されます。

環境変数C14N_INPUT_FILEを設定して、入力ファイルを指定することもできます。

-o output_file

コマンドによって生成された出力アプリケーション・ファイル。パスを指定しない場合、出力ファイルは入力ファイルと同じ場所に生成されます。iOSの場合の出力ファイルの拡張子は.ipaで、Androidの場合は.apkです。

出力ファイルを指定しない場合、コマンドを実行すると、入力ファイルと同じフォルダにデフォルトの名前input_file-c14n-command-MMDDYYYY.ipaまたはinput_file-c14n-command-MMDDYYYY.apkを持つファイルが生成されます。

環境変数C14N_OUTPUT_FILEを設定して、出力ファイルを指定することもできます。

-conf conf_file

iOSの場合に使用する構成ファイル。このパラメータはオプションです。このパラメータを使用しない場合、デフォルトの構成ファイルが使用されます。

環境変数C14N_CONF_FILEを設定して、構成ファイルを指定することもできます。

-cert cert_name

iOSアプリケーションをコード署名するために使用する証明書。有効なiOS開発証明書または配布証明書がキー・チェーンに存在する必要があります。

環境変数C14N_CERT_NAMEを設定して、証明書を指定することもできます。

このパラメータはiOSアプリケーションのコンテナ化の場合にのみ必要です。

-p provisioning_profile_file

iOSアプリケーションに使用するプロビジョニング・プロファイル・ファイル。ファイルのパスまたはプロファイル名を指定できます。プロファイル名を指定した場合、コンテナ化ツールでは、コンテナ化ツールの実行元であるフォルダ内でプロファイルが検索されます。

環境変数C14N_PROVISIONING_PROFILEを設定して、プロビジョニング・プロファイルを指定することもできます。

このパラメータはiOSアプリケーションのコンテナ化の場合にのみ必要です。

-keystore keystore_file

Android APKを署名するために使用するキーストア・ファイルのパス。

キーストア・ファイルを指定しない場合、デフォルトのキーストアが使用されます。テストの場合は、デフォルトのキーストアのみを使用できます。これを行うには、デフォルトのキーストアで署名されたワークスペース・アプリケーションも必要です。

環境変数C14N_KEYSTORE_FILEを設定して、キーストア・ファイルを指定することもできます。

このパラメータはAndroidアプリケーションのコンテナ化の場合にのみ必要です。

-storepass password

-keystoreで指定したキーストア・ファイルのパスワード。

環境変数C14N_KEYSTORE_PASSWORDを設定して、キーストア・パスワードを指定することもできます。

このパラメータはAndroidアプリケーションのコンテナ化の場合にのみ必要です。

-storealias alias

-keystoreで指定したキーストアに使用するキーストア・エントリの別名。

環境変数C14N_KEYSTORE_ALIASを設定して、キーストアの別名を指定することもできます。

このパラメータはAndroidアプリケーションのコンテナ化の場合にのみ必要です。

-x custom_parameters

コンテナ化ツールに渡すカスタム・パラメータ。

環境変数C14N_CUSTOM_PARAMETERSを設定して、カスタム・パラメータを指定することもできます。

このパラメータはAndroidアプリケーションのコンテナ化の場合にのみ必要です。

-xc

入力iOSアプリケーションが-certで指定した証明書と同じもので署名されているかどうかの検証を無効にします。この検証は、デフォルトでは有効になっています。

このパラメータはiOSアプリケーションのコンテナ化の場合にのみ必要です。

-v

詳細モード。指定しない場合、コンテナ化ツールはサイレント・モードで実行されます。

-version

コンテナ化ツールのバージョンを出力します。

-log log_file | off

log_fileで指定されたパスのログ・ファイルを生成します。または、offを指定した場合、ログ・ファイルの生成を無効化します。

デフォルトでは、コンテナ化ツールが実行されるたびに、ログ・ファイルは/opt/BitzerC14N directoryに生成されます。デフォルトでは、ログ・ファイル名はoutput_ipa-c14n-command-MMDDYYYY.logになります。

次の表に、iOSおよびAndroidに必要なパラメータのスナップショットを示します。

表9-1 コンテナ化ツール(c14n)のパラメータ

パラメータ iOS Android 必須 環境変数 デフォルト値

-c

はい

はい

いいえ


inject

-i

はい

はい

はい

C14N_INPUT_FILE


-o

はい

はい

いいえ

C14N_OUTPUT_FILE

input_file-c14n-command-MMDDYYYY.ipaまたは.apk

-conf

はい

いいえ

いいえ

C14N_CONF_FILE

c14nで設定

-cert

はい

いいえ

はい

C14N_CERT_NAME


-p

はい

いいえ

はい

C14N_PROVISIONING_PROFILE


-keystore

いいえ

はい

はい

C14N_KEYSTORE_FILE

c14nでデフォルト値を使用

-storepass

いいえ

はい

はい

C14N_KEYSTORE_PASSWORD

c14nでデフォルト値を使用

-storealias

いいえ

はい

はい

C14N_KEYSTORE_ALIAS

-keystoreを指定しない場合、c14nでデフォルト値を使用

-x

いいえ

はい

いいえ

C14N_CUSTOM_PARAMETERS


-xc

はい

いいえ

いいえ



-v

はい

はい

いいえ



-version

はい

はい

いいえ



-log

はい

はい

いいえ


output_ipa-c14n-command-MMDDYYYY.log


9.4.3 c14nの例

例1   未署名のiOSアプリケーションの挿入および署名

c14n -c inject -i Candidate.ipa -o injected.ipa -conf c14n.conf -cert 'iPhone Distribution: Acme Corp Inc.' -p dist.mobileprovision -v

例2   未署名のiOSアプリケーションの挿入のみ(サイレント・モードでの実行)

c14n -c injectonly -i Candidate.ipa -o injected.ipa -conf c14n.conf

例3   iOSアプリケーションの署名のみ(挿入なし)

c14n -c signonly -i ./Candidate.ipa -o ./injected.ipa -cert 'iPhone Distribution: Acme Corp Inc.' -p dist.mobileprovision -v

例4   Android apkの挿入および署名

c14n -c inject -i candidate.apk -o containerized.apk -keystore prod-key.keystore -storepass mypass -storealias mykey -v

例5   Android apkの挿入のみ(サイレント・モードでの実行)

c14n -c injectonly -i candidate.apk -o containerized.apk

例6   Android apkの署名のみ(挿入なし)

c14n -c signonly -i candidate.apk -o containerized.apk -keystore prod-key.keystore -storepass mypass -storealias mykey -v

9.5 アプリケーションの署名要件

アプリケーションの署名時には、次の要件が適用されます。これらの条件が満たされない場合、コンテナ化済アプリケーションはワークスペース・アプリケーションでは動作しません。

9.5.1 iOSの場合のアプリケーション署名要件

ワークスペース・アプリケーションおよびコンテナ化済アプリケーションは、同じアプリケーションID接頭辞を持つプロビジョニング・プロファイルを使用して署名する必要があります。アプリケーションID接頭辞が異なる場合、コンテナ化済アプリケーションはワークスペース・アプリケーションでは動作しません。

9.5.2 Androidの場合のアプリケーション署名要件

ワークスペース・アプリケーションおよびコンテナ化済アプリケーションは、同じ証明書を使用して署名する必要があります。コンテナ化済アプリケーションは、異なる証明書で署名されている場合、ワークスペース・アプリケーションでは動作しません。

Androidアプリケーションの詳細は、http://developer.android.comの「Signing Your Applications」を参照してください。

9.6 ロギング

コンテナ化ツールでは、アプリケーションがコンテナ化されるたびに、ログ・ファイルが作成されます。デフォルトでは、ログ・ファイルはoutput ipa-c14n-command-MMDDYYYY.logという名前で生成されます。ファイル名および場所は、-log log_file parameterを使用して指定できます。ロギングは、-log off parameterを使用して無効化することもできます。

9.7 iOSの場合のdevモード

devモードにより、開発者はXcodeを使用してデバイス上でiOSアプリケーションをコンテナ化および実行できるようになります。devモードを使用すると、開発者には次の利点があります。

  • 開発時に、アプリケーションに対してシングル・サインオンおよびAppTunnelを利用できます。

  • Xcodeを使用して、コンテナ化済アプリケーションの問題をデバッグできます。

  • 開発時にアプリケーションのテストおよびデバッグを行う際に、ファイル・システムの暗号化またはSQLite暗号化のオン/オフを切り替えることができます。

devモードを実行するための前提条件は次のとおりです。

  • iOSデバイスを宛先として選択する必要があります。devモードはシミュレータではサポートされていません。

  • 特定のコード署名アイデンティティをビルド設定時に選択する必要があります。devモードは、コード署名アイデンティティの場合、自動選択では動作しません。

  • ビルド設定時に選択したコード署名アイデンティティと同じもので署名されたワークスペース・アプリケーションが、デバイス上でインストールされている必要があります。

devモードを有効化するには、Xcodeプロジェクトで次の手順に従います。

  1. Xcodeプロジェクトを開き、スキームを編集します(「Product」→「Scheme」→「Edit Scheme...」)。

  2. 「Edit Scheme」ウィンドウで、「Build steps」を展開して、「Pre-actions」に移動します。

  3. 新しい「Run Script」を追加します。

  4. 「Run Script」ウィンドウで次のフィールド値を設定し、「OK」をクリックします。

    • Shell: /bin/bash

    • Provide build settings from: リストからターゲットを選択します。

    • Script: /opt/BitzerC14N/bin/c14n -c devmode_clean -v

  5. 「Edit Scheme」ウィンドウで、「Build steps」を展開して、「Post-actions」に移動します。

  6. 新しい「Run Script」を追加します。

  7. 「Run Script」ウィンドウで次のフィールド値を設定し、「OK」をクリックします。

    • Shell: /bin/bash

    • Provide build settings from: ドロップダウンからターゲットを選択します。

    • Script: /opt/BitzerC14N/bin/c14n -c devmode -v

    「Edit Scheme」ウィンドウの上部で、「Scheme」を選択してiOSデバイスを宛先として設定します。

XcodeでiOSデバイスが宛先として選択されていることを確認し、アプリケーションを実行します。Xcodeではアプリケーションをコンテナ化してから、これをデバイス上にデプロイし、実行します。アプリケーションをデバイス上で実行すると、これをデバッガにアタッチし、コンテナ化済アプリケーション用のXcodeデバッグ機能を十分に利用できます。

コンテナ化済アプリケーションを初めて実行した後に、次の2つのブール・キーがアプリケーションのInfo.plistに追加されます。

  • C14NEncryptFilesystem

  • C14NEncryptSQLite

ブール・キーをYESまたはNOに設定すると、アプリケーションをテストするための暗号化を有効または無効にできます。

Xcodeを介してdevモードでアプリケーションを実行すると、コンテナ化ツールでは、/opt/BitzerC14N/logsフォルダにc14n-devmode-MM-DD-YYYYという名前のログ・ファイルが生成されます。コンテナ化中にエラーが生成された場合に、このファイルを監視できます。