Oracle® Fusion Middleware Oracle Mobile Security Suiteの管理 11gリリース2 (11.1.2.3) for All Platforms E61946-02 |
|
前 |
次 |
Oracle Mobile Security Suiteは、リッチなユーザー・エクスペリエンスを維持しながら、モバイル・デバイスから企業アプリケーションおよびデータにセキュアにアクセスできるようにして、従業員の生産性を向上します。そのモバイル・セキュリティ・コンテナにより、企業または個人が所有しているiOSまたはAndroidデバイス上で、エンタープライズ・ワークスペースが作成されます。従業員は、企業向けのセキュリティ、および真のシングル・サインオンのためのWindows認証との緊密な統合により、企業データおよびアプリケーションにシームレスにアクセスできます。
Oracle Mobile Security ContainerはOracle Mobile Security Suiteの重要な機能です。コンテナは、個人用デバイス上のエンタープライズ・アクセスを分離し、企業の個人所有デバイス(BYOD)を有効にします。この章では、アプリケーションをセキュア・ワークスペースにデプロイできるようにコンテナ化するツールについて説明します。
このドキュメントの内容は次のとおりです。
モバイル・セキュリティ・アプリケーションのコンテナ化ツールを使用すると、標準化されたセキュリティ・レイヤーをネイティブ・モバイル・アプリケーションに追加できます。コンテナ化プロセスはシンプルで、次のセキュリティ・サービスをアプリケーションに追加します。
セキュアなデータ転送: エンタープライズ・ファイアウォールの背後にあるアプリケーション・バックエンド・リソースへのモバイル・セキュリティ・アクセス・サーバーを介した暗号化済AppTunnel。
認証: アプリケーション・バックエンド・サーバーに対するWindows統合認証/SSO (KerberosまたはNTLM)。
セキュアなデータ記憶域: ファイル、データベース、アプリケーション・キャッシュおよびユーザー・プリファレンスなどのアプリケーション・データの暗号化済記憶域。
データ・リークの制御: 他の信頼できるアプリケーションに対してファイル共有とコピーおよび貼付けを制限する機能。これにより、電子メール、メッセージ送信、出力および保存などのデータ共有を制限できます。
動的ポリシー・エンジン: 認証頻度、ジオフェンスとタイム・フェンスおよびリモート・ロックとワイプなどの50を超える詳細なアプリケーション制御。
モバイル・セキュリティ・アプリケーションのコンテナ化ツールを使用して、多要素認証やWindows統合認証(KerberosまたはNTLM)などの高度な機能を含むアプリケーションにエンタープライズ・セキュリティ・サービスを追加します。
コンテナ化プロセスはシンプルで、開発者がコードを変更する必要はありません。最初の手順として、未署名のバージョンのアプリケーションを取得します。未署名のバージョンは完全なコンパイル済アプリケーションであり、エンタープライズappstoreで内部アプリケーションとして企業の従業員に配布するために、エンタープライズ配布証明書によって署名されます。未署名のアプリケーションは、Androidの場合はapk
ファイルで、iOSの場合はipa
ファイルまたは静的ライブラリのいずれかです。
次に、管理者は未署名のアプリケーションをモバイル・セキュリティ・アプリケーションのコンテナ化ツールにインポートし、ターゲット・アプリケーションを検査してから、コンテナ化コードを挿入し、ターゲット・エンタープライズ配布証明書で署名します。このプロセスの結果は、完全署名付きアプリケーションによるエンタープライズ配布が可能で、モバイル・セキュリティ・アクセス・サーバーまたは他のエンタープライズAppStoreにアップロードできます。挿入されたコードは、ターゲットOSに対する特定のシステム・コールを検索し、モバイル・セキュリティ・フレームワークを挿入して、データ暗号化、ネットワーキングおよび認証などのセキュリティ・タスクを処理します。このプロセスの利点は、開発者がコードを変更しなくてもよいという点です。つまり、パブリックなappstoreにある同じアプリケーションを企業の顧客に対して異なる配布パッケージで使用可能にします。
コンテナ化済アプリケーションは専用のログイン画面が必要ありません。アプリケーションが起動されると、モバイル・セキュリティ・コンテナにリダイレクトされ、シングル・サインオンが実行されると、セッションがアプリケーションに戻ります。また、アプリケーションは、内部のWebサイトまたはサービスに接続するためのVPNが必要ありません。かわりに、セキュアなAppTunnelがアプリケーションとモバイル・セキュリティ・アクセス・サーバー間に確立され、これにより、セキュアな転送が実行され、内部のサイトおよびサービスにアクセスします。
コンテナ化のためにアプリケーションを準備するには、次の項の説明のとおりに作業を進めます。
コンテナ化の準備を行うために、コンテナ化用のiOSアプリケーションは、未署名であるか、アプリケーションのコンテナ化後に署名する際に使用する証明書と同じもので署名する必要があります。署名済iOSアプリケーションを異なる証明書で再度署名することはできません。
未署名のiOSアプリケーション作成するには、次の手順に従います。
XcodeでBitzerSecureContainer.xcodeproj
を開きます。
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」に設定します。
プロジェクトを保存して終了します。
コマンドラインから、エンタープライズ配布の静的ライブラリのプロジェクトを展開したフォルダに移動します。
次のコマンドを実行します。
xcodebuild clean build -project BitzerSecureContainer.xcodeproj -target Bitzer CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -configuration Release
これにより、build/Release-iphoneos
フォルダに拡張子が.app
の未署名のアプリケーション・バンドルが生成されます。アプリケーション・バンドル用のIPAを作成することも、アプリケーション・バンドルの.app
ファイルを入力ファイルとしてコンテナ化ツールに渡すこともできます。
アプリケーション・バンドルからIPAを作成するには、次の手順に従います。
Payload
というフォルダを作成します。
アプリケーション・バンドル(.app
ファイル)をPayload
フォルダにコピーします。
Payload
フォルダを圧縮し、ファイル拡張子を.zip
から.ipa
に変更して、ファイル名を変更します。
コンテナ化の準備として、Androidアプリケーションは署名済でも未署名でも可能です。署名済のAndroidアプリケーションを異なる証明書で署名しないでください。
既存の署名付きアプリケーションを未署名にするには、次のコマンドを実行します。
build-apk.sh extract
YourSigned.apk
build-apk.sh package
YourSignedApkFolder
Unsigned.apk
YourSigned.apk
コンテナ化ツールは、c14n
というファイル名のコマンドライン・ユーティリティです。ツールは、iOSおよびAndroidワークスペース・アプリケーションとともにOracle eDeliveryから配布されたバイナリに含まれています。Oracle Mobile Security Suiteインストーラでは、インストール時にコンテナ化ツールのシステム・パスを設定するため、どこからでもc14n
を実行できます。
c14n
コマンドには多数のパラメータがあります。iOSアプリケーションとAndroidアプリケーションでは、使用するパラメータが異なります。ツールでは、どのタイプのアプリケーションを入力として使用しているかを判定します。
ほとんどのパラメータは、オブションであるか、コマンドラインで渡すかわりに環境変数で渡すことが可能なため、省略できます。これにより、同じパラメータを毎回入力することなく、複数のアプリケーションのコンテナ化をより簡単に行うことができます。
コンテナ化ツールのコマンド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} ]
-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 | 必須 | 環境変数 | デフォルト値 |
---|---|---|---|---|---|
|
はい |
はい |
いいえ |
|
|
|
はい |
はい |
はい |
|
|
|
はい |
はい |
いいえ |
|
|
|
はい |
いいえ |
いいえ |
|
|
|
はい |
いいえ |
はい |
|
|
|
はい |
いいえ |
はい |
|
|
|
いいえ |
はい |
はい |
|
|
|
いいえ |
はい |
はい |
|
|
|
いいえ |
はい |
はい |
|
|
|
いいえ |
はい |
いいえ |
|
|
|
はい |
いいえ |
いいえ |
||
|
はい |
はい |
いいえ |
||
|
はい |
はい |
いいえ |
||
|
はい |
はい |
いいえ |
|
c14n -c inject -i Candidate.ipa -o injected.ipa -conf c14n.conf -cert 'iPhone Distribution: Acme Corp Inc.' -p dist.mobileprovision -v
c14n -c injectonly -i Candidate.ipa -o injected.ipa -conf c14n.conf
c14n -c signonly -i ./Candidate.ipa -o ./injected.ipa -cert 'iPhone Distribution: Acme Corp Inc.' -p dist.mobileprovision -v
c14n -c inject -i candidate.apk -o containerized.apk -keystore prod-key.keystore -storepass
mypass
-storealias mykey -v
c14n -c injectonly -i candidate.apk -o containerized.apk
c14n -c signonly -i candidate.apk -o containerized.apk -keystore prod-key.keystore -storepass
mypass
-storealias
mykey
-v
アプリケーションの署名時には、次の要件が適用されます。これらの条件が満たされない場合、コンテナ化済アプリケーションはワークスペース・アプリケーションでは動作しません。
ワークスペース・アプリケーションおよびコンテナ化済アプリケーションは、同じアプリケーションID接頭辞を持つプロビジョニング・プロファイルを使用して署名する必要があります。アプリケーションID接頭辞が異なる場合、コンテナ化済アプリケーションはワークスペース・アプリケーションでは動作しません。
ワークスペース・アプリケーションおよびコンテナ化済アプリケーションは、同じ証明書を使用して署名する必要があります。コンテナ化済アプリケーションは、異なる証明書で署名されている場合、ワークスペース・アプリケーションでは動作しません。
Androidアプリケーションの詳細は、http://developer.android.com
の「Signing Your Applications」を参照してください。
コンテナ化ツールでは、アプリケーションがコンテナ化されるたびに、ログ・ファイルが作成されます。デフォルトでは、ログ・ファイルはoutput ipa
-c14n-
command
-
MMDDYYYY
.log
という名前で生成されます。ファイル名および場所は、-log
log_file parameter
を使用して指定できます。ロギングは、-log
off
parameter
を使用して無効化することもできます。
devモードにより、開発者はXcodeを使用してデバイス上でiOSアプリケーションをコンテナ化および実行できるようになります。devモードを使用すると、開発者には次の利点があります。
開発時に、アプリケーションに対してシングル・サインオンおよびAppTunnelを利用できます。
Xcodeを使用して、コンテナ化済アプリケーションの問題をデバッグできます。
開発時にアプリケーションのテストおよびデバッグを行う際に、ファイル・システムの暗号化またはSQLite暗号化のオン/オフを切り替えることができます。
devモードを実行するための前提条件は次のとおりです。
iOSデバイスを宛先として選択する必要があります。devモードはシミュレータではサポートされていません。
特定のコード署名アイデンティティをビルド設定時に選択する必要があります。devモードは、コード署名アイデンティティの場合、自動選択では動作しません。
ビルド設定時に選択したコード署名アイデンティティと同じもので署名されたワークスペース・アプリケーションが、デバイス上でインストールされている必要があります。
devモードを有効化するには、Xcodeプロジェクトで次の手順に従います。
Xcodeプロジェクトを開き、スキームを編集します(「Product」→「Scheme」→「Edit Scheme...」)。
「Edit Scheme」ウィンドウで、「Build steps」を展開して、「Pre-actions」に移動します。
新しい「Run Script」を追加します。
「Run Script」ウィンドウで次のフィールド値を設定し、「OK」をクリックします。
Shell: /bin/bash
Provide build settings from: リストからターゲットを選択します。
Script: /opt/BitzerC14N/bin/c14n -c devmode_clean -v
「Edit Scheme」ウィンドウで、「Build steps」を展開して、「Post-actions」に移動します。
新しい「Run Script」を追加します。
「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
という名前のログ・ファイルが生成されます。コンテナ化中にエラーが生成された場合に、このファイルを監視できます。