Android 10 のエンタープライズ向けの新機能

このページでは、エンタープライズ向けの新しい API、機能、 Android 10 で導入された動作変更。

会社所有デバイスの仕事用プロファイル

Android 10 では、Android 10 の 仕事用プロファイルのみが必要な会社所有デバイス

仕事用プロファイル向けのプロビジョニング ツールの改善

以下を使用して登録した Android 10 以降のデバイスで、仕事用プロファイルをプロビジョニングできます。 QR コード またはゼロタッチ。 会社所有デバイスのプロビジョニング中に、新しいインテント エクストラによって Device Policy Controller アプリ(DPC)を使用して仕事用プロファイルまたは完全管理対象 できます。仕事用プロファイルの作成または完全な管理が確立されると、DPC 初期ポリシーを適用するために、ポリシー コンプライアンス画面を起動する必要があります。

DPC のマニフェスト ファイルで、新しいインテント フィルタを宣言して、 GET_PROVISIONING_MODE アクティビティ内で、BIND_DEVICE_ADMIN を追加する 権限を設定することで、任意のアプリがアクティビティを開始できないようにすることができます。例:

<activity
    android:name=".GetProvisioningModeActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action
            android:name="android.app.action.GET_PROVISIONING_MODE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

プロビジョニング中に、システムは、関連付けられたアクティビティを起動します。 使用します。このアクティビティの目的は、管理モードを指定することです。 (仕事用プロファイルまたはフルマネージド)に設定できます。

状態を決定する前にプロビジョニング エクストラを取得すると、 デバイスに適した管理モードを選択します。アクティビティは、 取得する getIntent() 次のとおりです。

また、DPC は、新しい結果インテントを作成して、以下のエクストラを追加することもできます。

デバイスで管理モードを設定するには、 putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode), ここで、desiredProvisioningMode は次のとおりです。

  • 仕事用プロファイル: PROVISIONING_MODE_MANAGED_PROFILE
  • 完全管理型: PROVISIONING_MODE_FULLY_MANAGED_DEVICE

プロビジョニングを送信することで、仕事用プロファイルまたはフルマネージド プロビジョニングを完了させる setResult(RESULT_OK, Intent) で詳細の設定を戻します すべてのアクティブな画面を finish()

プロビジョニングが完了すると、DPC が新しいインテントを起動できるようになる 初期ポリシー設定を適用できます。仕事用プロファイルを使用 仕事用プロファイルにコンプライアンス画面が表示されます。DPC は ユーザーがエスケープした場合でも、コンプライアンス画面を確実にユーザーに表示する 説明します。

DPC のマニフェスト ファイルで、新しいインテント フィルタを宣言して、 ADMIN_POLICY_COMPLIANCE アクティビティ内で、BIND_DEVICE_ADMIN を追加する 権限を設定することで、任意のアプリがアクティビティを開始できないようにすることができます。例:

<activity
    android:name=".PolicyComplianceActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action android:name="android.app.action.ADMIN_POLICY_COMPLIANCE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

DPC は、新しいインテントをリッスンする代わりに、この新しいインテントを使用する必要がありますACTION_PROFILE_PROVISIONING_COMPLETE あります。

インテント フィルタに関連付けられたアクティビティは、 取得する getIntent() EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE。 ポリシーへの準拠を行った後、ADMIN_POLICY_COMPLIANCEsetResult(RESULT_OK, Intent) を返し、次を含むアクティブな画面をすべて閉じる必要があります。 finish()

完全管理対象デバイスの場合は、ホーム画面に戻ります。仕事用プロファイルのデバイス ユーザーを家に戻す前に個人アカウントを追加するようユーザーに促す 表示されます。

仕事用プロファイルのデバイス ID 構成証明

ゼロタッチ登録を使用してプロビジョニングされた仕事用プロファイルの管理者として設定された DPC 安全なハードウェアで認証されたデバイス ID(IMEI やメーカーの情報など)を シリアル番号です。デバイスにはセキュア ハードウェア(信頼できるハードウェアなど)が 実行環境(TEE)またはセキュア エレメント(SE)のいずれか)をサポートし、 ゼロタッチ登録などがあります

仕事用プロファイルの管理コンポーネントは DevicePolicyManager.generateKeyPair() を呼び出し、idAttestationFlags 引数に ID_TYPE_SERIALID_TYPE_IMEIID_TYPE_MEID のうち 1 つ以上を渡すことができます。

デバイス ID の抽出と検証について詳しくは、キー構成証明を使用してハードウェア格納型キーペアを検証するをご覧ください。

仕事用プロファイルの改善

クロス プロファイル カレンダーの公開設定と、 提供元不明のアプリのインストールをデバイス全体でブロックする。

仕事用プロファイルを使用して提供元不明のアプリをデバイス全体で制限する

Google Play(またはその他の信頼できるアプリ)以外の提供元からダウンロードしたアプリ ストアなど)は、提供元不明のアプリと呼ばれます。Android 10 では、仕事の管理者は プロファイルを使用して、ユーザーまたはプロファイルによる不明なアプリのインストールを防止できます。 新しいユーザーの制限を追加して、デバイス上の DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY。 ただし、この制限を追加した後も、そのデバイスを使用しているユーザーは adb を使用してアプリをインストールします。

ユーザーが誤って不明な提供元からアプリをインストールするのを防ぐため、 このユーザー制限は Google Play を必要としないため、追加することをおすすめします インストールされます。古いバージョンの Android をサポートする場合は、 Google Play の管理対象設定の値を設定します。

許可対象の入力デバイスを仕事用プロファイルだけに制限する

仕事用プロファイルの管理者が DevicePolicyManager.setPermittedInputMethods() を呼び出すと、ユーザーは業務内で許可されている入力方法のみに制限されます。 デバイス全体ではなくプロファイルを使用して、ユーザーが入力を完全に制御できるようにします。 使用することもできます。

仕事用プロファイルを通知せずにワイプする

WIPE_SILENTLY を追加しました DevicePolicyManager.wipeData() にフラグを設定します。 このフラグが設定されている場合、仕事用プロファイルがワイプされてもユーザーに通知されません wipeData() を使用します。

完全管理対象デバイスの新機能

Android 10 では、完全管理対象デバイス向けの新しい機能と API が導入されています。 たとえば、手動によるシステム アップデート、QR コードや NFC プロビジョニングの拡張 EAP Wi-Fi ネットワークの認証情報と DNS over TLS のサポートが含まれます。

手動によるシステム アップデートのインストール

Android 10 では、完全管理対象デバイスの管理者が、以下を使用してシステム アップデートをインストールできます。 システム アップデート ファイル。手動システム アップデートにより、IT 管理者は次のことができるようになります。

  • 全体にインストールする前に、少数のデバイスでアップデートをテストできます。
  • 帯域幅が制限されたネットワークで、ダウンロードの重複を回避できます。
  • インストールのタイミングをずらしたり、デバイスが使用されていないときだけにアップデートしたりすることができます。

IT 管理者がシステム アップデートの延期ポリシーを設定する 自動インストールを遅らせることもできます(必要な場合)。次に、デバイスの DPC が installSystemUpdate() を呼び出します。 (デバイス メーカーのシステム アップデート ファイルのパスに置き換えます)InstallSystemUpdateCallback を渡す デバイスより前に発生したエラーをシステムが報告するために使用できる 構成されます。問題が発生すると、onInstallUpdateError() が呼び出されます。 示されます。

デバイスの再起動後、インストールが正常に完了したかどうかを DPC が確認する必要があります などのバージョン API を使用する Build.FINGERPRINT。アップデートが 失敗した場合は、IT 管理者に報告します。

EAP Wi-Fi プロビジョニング

Android 10 では、デバイスのプロビジョニングに使用する QR コードと NFC データには、 EAP 設定と認証情報(証明書を含む)。ユーザーが QR コードをスキャンしたとき または NFC タグをタップすると、デバイスは自動的にローカル Wi-Fi で認証されます。 接続し、追加のユーザーなしでプロビジョニング プロセスを開始できる できます。

EAP を使用して Wi-Fi を認証するには、 EXTRA_PROVISIONING_WIFI_SECURITY_TYPE"EAP" を持つエクストラ。EAP 認証を指定するには、 次のプロビジョニング エクストラをインテントに追加します。

プライベート DNS のサポート

組織は DNS over TLS を使用できます。 (Android デバイスでは限定公開 DNS と呼ばれています)を使用して DNS クエリの漏洩を防止できます。 ホスト名のホスト名も含まれます。完全管理対象デバイスの管理コンポーネント デバイスのプライベート DNS 設定を制御できます。プライベート DNS モードを設定するには、 呼び出し:

DPC がこれらのメソッドのいずれかを呼び出すと、次の場合に PRIVATE_DNS_SET_NO_ERROR が返されます。 成功したことになります。失敗した場合はエラーが返されます。

デバイスに設定されたプライベート DNS モードとホストを取得するには、getGlobalPrivateDnsMode() を呼び出します。 および getGlobalPrivateDnsHost()。 ユーザーがプライベート DNS の設定を変更できないようにするには、 DISALLOW_CONFIG_PRIVATE_DNS できます。

VPN ロックダウン モードの適用除外

VPN ロックダウン モードでは DPC があらゆるネットワークをブロック可能 トラフィックを 接続できます。完全管理者の管理者 管理対象デバイスと仕事用プロファイルによって、アプリをロックダウン モードから除外できます。 免除対象アプリはデフォルトで VPN を使用するが、他のアプリケーションに自動的に接続する ネットワークに接続することもできます。明示的に除外されているアプリでも アクセスが拒否されました: VPN 他のネットワークのみを使用します

アプリをロックダウン モードから除外するには、新しい DevicePolicyManager メソッド setAlwaysOnVpnPackage() 除外されたアプリ パッケージのリストを受け入れるメソッドです。DPC によって追加されるすべてのアプリ パッケージ メソッドが呼び出されたときにデバイスにインストールする必要があります。アプリが アンインストールしてから再インストールした場合は、アプリを再度除外する必要があります。アプリを入手するには ロックダウン モードから除外された場合は、 getAlwaysOnVpnLockdownWhitelist()

完全管理対象デバイスと仕事用プロファイルの管理者がロックダウン モードを利用できるようにするには 示されているため、Android 10 では isAlwaysOnVpnLockdownEnabled() メソッドを呼び出します。

新しい委任スコープ

Android 10 では、DPC が他の関数に委任できる機能のリストが拡張されています。 専用のアプリです。Android は、タスクに必要な API メソッドをグループ化します。 スコープ。スコープを委任するには、次のコマンドの setDelegatedScopes() 次のスコープを 1 つ以上渡します。

Android 10 で新しいクラスが導入されました DelegatedAdminReceiver 委任アプリでも使用できます。システムはこのブロードキャスト レシーバを使用して、DPC に似た アプリをデリゲートするためのコールバックを使用します。ネットワーク アクティビティが委任されているアプリ ロギングと証明書の選択はこのクラスを実装する必要があります。これを追加するには コンポーネントを委任アプリに割り当てるには、次の手順を行います。

  1. DelegatedAdminReceiver のサブクラスを追加する 委任アプリに追加できます。
  2. <receiver> を コールバックごとにインテント フィルタ アクションを追加します。たとえば ACTION_NETWORK_LOGS_AVAILABLE または ACTION_CHOOSE_PRIVATE_KEY_ALIAS
  3. BIND_DEVICE_ADMIN でブロードキャスト レシーバを保護する 付与します。

次のスニペットは、1 つの委任アプリのアプリ マニフェストを示しています。 ネットワーク ロギングと証明書選択の両方を処理します。

<receiver android:name=".app.DelegatedAdminReceiver"
        android:permission="android.permission.BIND_DELEGATED_ADMIN">
    <intent-filter>
        <action android:name="android.app.admin.action.NETWORK_LOGS_AVAILABLE">
        <action android:name="android.app.action.CHOOSE_PRIVATE_KEY_ALIAS">
    </intent-filter>
    </receiver>

ネットワーク アクティビティ ログ

組織がマルウェアを検出して追跡できるように、DPC は TCP 接続をログに記録できる DNS ルックアップがあります。Android 10 では、 フルマネージドの管理者 デバイスは、ネットワーク ロギングを専用アプリに委任できます。

システムの終了後にネットワーク ログを取得する バッチが使用可能になるので、委譲アプリで最初にサブクラスを DelegatedAdminReceiver 必要があります。サブクラスで、 onNetworkLogsAvailable() ログを取得するのガイダンスに沿って操作します。

委任アプリは以下を呼び出すことができます DevicePolicyManager メソッド (admin 引数に null を渡します)。

ログが失われないようにするため、DPC でネットワーク ロギングを有効にすることはしないでください。 別のアプリにデリゲートする場合。委任アプリでは、 ネットワーク ログを収集します。DPC がネットワーク ロギングを委任すると、DPC は それ以降 onNetworkLogsAvailable() 使用できます。

委任アプリからネットワーク アクティビティ ログを報告する方法については、 デベロッパー ガイドのネットワーク アクティビティ ロギング

証明書選択

Android 10 では、次の管理者は 完全管理対象デバイス、仕事用プロファイル、セカンダリ ユーザーが 証明書の選択を専用アプリに提供します。

証明書エイリアスを選択するには、まず委任アプリで DelegatedAdminReceiver 必要があります。サブクラスで、 onChoosePrivateKeyAlias() コールバックを使用し、優先したいオブジェクトのエイリアスを返す 証明書を選択するようユーザーに求める場合は、null を返します。

デバイス管理ポリシーのサポート終了

Android 10 では、アプリや DPC は従来のデバイスを適用できない 管理ポリシー。お客様には 完全管理対象デバイスまたは仕事用プロファイルに移行する。次の ポリシーにより SecurityException がスローされる Android 10 をターゲットとするデバイス管理によって呼び出された場合:

で確認できます。

アプリによっては、ユーザーのデバイス管理のためにデバイス管理コンポーネントを利用している場合があります。対象 たとえば紛失したデバイスをロックしてワイプしますこれを可能にするために、 ポリシーは引き続き使用できます。

これらの変更について詳しくは、デバイス管理をご覧ください サポートを終了

アプリの新機能

Android 10 をターゲットとするアプリは、デバイスに設定されている画面ロックの複雑さをクエリできる 機密データの表示や重要な機能のリリース前に行うようにします。アプリからの通話 KeyChain API には次のようなメリットがあります。 動作が改善されました。また、VPN アプリにも新機能が追加されました。

画面ロックの品質チェック

Android 10 以降、画面ロックを必要とする重要な機能を備えたアプリ デバイスまたは仕事用プロファイルの画面ロックの複雑さをクエリできます。以下を必要とするアプリ: 画面ロックを強固にすると、ユーザーはシステムの画面ロック設定に誘導される可能性があります。 セキュリティ設定をアップデートできます。

画面ロックの品質をチェックするには:

システムの画面ロック設定を起動するには、次のコマンドを使用します。 ACTION_SET_NEW_PASSWORD 追加の EXTRA_PASSWORD_COMPLEXITY - オプション インテント エクストラで指定された複雑さに一致するとグレー表示されます。ユーザーができること 利用可能な画面ロック オプションから選択するか、画面を閉じます。

おすすめの方法: システムを起動する前にアプリにメッセージを表示する 画面ロックのページです。アプリの再開時に、 DevicePolicyManager.getPasswordComplexity() もう一度クリックします。より強力な画面ロックが引き続き必要な場合は、 セキュリティ設定を更新するようユーザーに繰り返し求める。

VPN アプリにおける HTTP プロキシのサポート

Android 10 では、VPN アプリで HTTP プロキシを設定できます。 接続する必要がありますHTTP プロキシを追加するには、VPN アプリで ホストとポートが設定された ProxyInfo インスタンス 呼び出す前に VpnService.Builder.setHttpProxy()。 システムや多くのネットワーキング ライブラリではこのプロキシ設定を使用しますが、 HTTP リクエストをプロキシするようアプリに強制することはありません。

HTTP プロキシの設定方法を示すサンプルコードについては、 ToyVPN サンプルアプリです。

VPN サービスモード

VPN アプリは、常時接続であるため、サービスが実行されているかどうかを検出できます。 VPNロックダウンの場合 モードがアクティブであることを表します。新しいメソッド Android 10 で追加された機能は、ユーザー インターフェースを調整するのに役立ちます。たとえば、 常時接続 VPN によってライフサイクルが制御される場合、接続解除ボタンが無効になることがあります 説明します。

VPN アプリは次の VpnService を呼び出すことができます サービスに接続した後のメソッド ローカル インターフェースを確立します。

  • isAlwaysOn()~ 常時接続 VPN が原因でシステムがサービスを開始したかどうかを調べる
  • isLockdownEnabled() VPN を使用しない接続がシステムによってブロックされているかどうかを調べる

サービスの実行中、常時オンのステータスは変わりませんが、 ロックダウン モードのステータスが変わります。

KeyChain の改善

Android 10 では、 KeyChain API。

アプリが KeyChain.choosePrivateKeyAlias() を呼び出したとき(Android 10 以降) 証明書のリストをフィルタできます。証明書のリストは、 鍵のアルゴリズムによって識別されます。

たとえば、TLS サーバーが証明書リクエストを送信すると、 メッセージを受け取り、ブラウザは KeyChain.choosePrivateKeyAlias()、証明書選択プロンプトのみ Issuer パラメータに一致するオプションが含まれています。一致するオプションがない場合 証明書がデバイスにインストールされていない場合、 ユーザーには表示されません。

また、KeyChain はサポートされなくなりました 鍵または CA 証明書を使用するには、デバイスで画面ロックが有効になっている必要があります 表示されます。