/DeviceManager

EMM Android,DeviceAdmin、DeviceOwner.

Primary LanguageJava

ניהול מובייל בעסקים (EMM)

ניהול מובייל בעסקים (Enterprise Mobile Management - EMM) הוא מערכת המאפשרת ניהול מוקדם על פני מערכת למכשירים סלולריים. המערכת כוללת פונקציות שונות שמספקות פתרונות מתקדמים לניהול מובייל, כולל ניהול נכסים, ניהול מכשירים (MDM), ניהול אפליקציות (MAM), ניהול תוכן (MCM), וניהול יומנים, ועוד.

ניהול נכסים ניידים

פונקציית ניהול הנכסים יכולה לכלול מכשירים ניידים כנכסי חברה במערכת הניהול, כולל רישום מכשירים, מצב, ביטול רישום ועוד.

פונקציות ספציפיות:

  • רישום נכסים: בעת חיבור המכשיר לרשת הארגונית בפעם הראשונה, על המשתמש להזין את שם המשתמש, סוג המכשיר ומספר הנכס כדי לבצע רישום נכס, כדי להשלים את הקשר בין הנכס למידע המשתמש.
  • הסכם סודיות: כאשר המשתמש מתחבר למכשיר בפעם הראשונה, תופיע הודעה "הסכם סודיות". המשתמש יכול להירשם רק לאחר קריאת והבנת ההסכם. המידע בהסכם יכול להיות מותאם אישית על ידי החברה בהתאם לדרישות אבטחת המידע שלה.
  • ביטול רישום נכסים: תומך ברישום עצמי של משתמשים וביטולו הידני של מידע נכסים על ידי מנהלי מערכת. מכשירים שנרשמו יוסרו מהחיבור למשתמש ונתוני המידע של החברה המאוחסנים באופן מקומי יימחקו.
  • דוח מצב המכשירים: מציג את דגם המכשיר, המשתמש, מידע המערכת ורשימה של יישומים מותקנים.
  • ניהול עצמי של משתמשים: משתמשים יכולים להציג את מידע הנכסים המקושר באמצעות אתר עצמי, לבצע פעולות ניהול כגון נעילה, פתיחה, ביטול רישום נכסים ומחיקת נתונים.

ניהול מכשירים ניידים (MDM)

ניהול מכשירים ניידים מספק ניהול של יכולות המכשיר הקצה ושל הגדרות הסביבה המערכתית, כפי שיפורט להלן:

  • בדיקת הרשאות Root: תומך באיתור מכשירים עם הרשאות Root, וניתן לנקוט במדיניות של ביקורת, התראה, איסור גישה, מחיקה של נתוני AnyOffice ושחזור להגדרות היצרן עבור מכשירים עם הרשאות Root.
  • בקרת פונקציות מערכת: במערכת ההפעלה Android, תומך בהגדרת פונקציות כגון מצלמה, Bluetooth, סריקת Bluetooth, Wi-Fi, נקודת חם WLAN ניידת. במערכת ההפעלה iOS, תומך בהגדרת פונקציות כגון מצלמה וצילום מסך.
  • הגדרה מהירה של יישומי מערכת (iOS): תומך בהגדרה וניהול מהירים של חשבונות Exchange ActiveSync, IMAP/POP, VPN ו-WiFi ארגוניים.
  • שליטה מרחוק: תומך בנעילה/שחרור מרחוק של המכשיר הקצה ושחזור להגדרות היצרן.
  • מדיניות סיסמה: תומך בדרישות של סיסמה הכוללת אותיות ומספרים, אורך סיסמה מינימלי, תוקף סיסמה מקסימלי, השוואה בין סיסמה חדשה לסיסמה ישנה, מספר המספרים המרבי של סיסמאות שגויות (לאחר מכן המכשיר נמחק), הגדרת זמן נעילה אוטומטי.
  • ניהול נדידה: תומך בהתראה על נדידה, והרשאה/איסור של העברת נתונים בעת נדידה.

ניהול אפליקציות ניידות (MAM)

ניהול אפליקציות ניידות מספק בעיקר ניהול אפליקציות ארגוניות ומדיניות בקרה על אפליקציות צד שלישי. הפונקציות הספציפיות הן כדלקמן:

  • הצגת רשימת אפליקציות: ניתן לחפש רשימת מידע של אפליקציות בצד המכשיר, כולל שם, גודל, ID, גרסה ונתוני יישום.
  • רשימה שחורה/לבנה של אפליקציות: אם המכשיר מותקן עם אפליקציה הרשומה ברשימת השחור, ניתן לנקוט בפעולות של ביקורת, תזכורת או איסור חיבור לפי מדיניות בדיקת האפליקציה. אם האפליקציה ברשימת השחור פועלת, היא לא תוכל להתחבר לאפליקציה. אם מוגדרות אפליקציות ברשימת הלבנה, תופיע הודעת שאין להתקין למשתמשים.
  • חנות אפליקציות ארגונית: יצירת, מחיקה, צפייה וניהול גירסאות של חנות אפליקציות ארגוניות. מתן פונקציות התקנה ידנית, הסרה, עדכון, חיפוש וצפייה לפי קטגוריה של אפליקציות.

ניהול תוכן נייד (MCM)

ניהול תוכן נייד מתייחס בעיקר להגנה על בטיחות נתוני הארגון במהלך שמירתם, השימוש בהם והעברתם במכשיר הקצה. הפונקציות הספציפיות הן כדלקמן:

  • פענוח וקידוד קבצים במצב מקוון: במצב מקוון, נתוני הארגון והמסמכים של המשתמשים מאוחסנים ומקודדים, כדי לשמור על ניהול מקוון של פעולות חסויות, ולא ניתן להשתמש בנתוני הארגון על ידי יישומים חיצוניים. ניתן גם להשתמש בתוכנת GigaTust, כדי להציג ולערוך מסמכי RMS מוצפנים, להשיג הגנה כפולה.
  • הגנה על נתונים במצב לא מקוון: במקרים המותרים על פי מדיניות, ניתן להשתמש במצב לא מקוון. הנתונים הלא מקוונים מאוחסנים במכשיר הקצה ומקודדים. המשתמשים יכולים להזין סיסמה כדי לפתוח קבצים במצב לא מקוון.
  • מחיקה מרחוק: מחיקה מרחוק כוללת מחיקה מלאה ומחיקה בררנית. מחיקה מלאה מתייחסת למחיקת כל הנתונים במכשיר, והחזרת תצורת המכשיר להגדרות היצרן. לדוגמה, כאשר הטלפון נייד אבד, המשתמשים יכולים לשחזר את הגדרות היצרן באמצעות דף עצמי-שירות או הגדרות מנהל. מחיקה בררנית מתייחסת למחיקת הנתונים של יישום ספציפי.

DeviceAdmin ו-DeviceOwner

בניהול מכשירי נייד, משתמשים בעיקר בשתי מודולים של Android: DeviceAdmin ו-DeviceOwner.

DeviceAdmin (ניהול מכשיר): בקרה חלשה

בניהול מכשירי נייד משתמשים ביכולות ניהול המכשיר של Google, שהוצגו ב-Android בגרסה 2.2. לאחר שהמשתמש מעניק לאפליקציה שלך הרשאות ניהול מכשיר, אתה יכול לשנות הרבה הגדרות מערכת בקוד, כגון הגדרת סוג נעילת המסך, איפוס להגדרות היצרן, הגדרת סיסמה, מחיקה כפויה של סיסמה ושינוי סיסמה.

DeviceOwner(设备所有者):强管控

通过DeviceAdmin所做的功能很有限,所以你需要用到DeviceOwner。“设备所有者”是一类特殊的设备管理员,具有在设备上创建和移除辅助用户以及配置全局设置的额外能力。之前申请的DeviceAdmin可以对你的设备进行一些修改,而当你的应用成为DeviceOwner后,你就可以拥有更多的能力,可以对其他应用进行限制。

DeviceAdmin使用教程

  • 在res/xml目录下新建device_admin_receiver.xml文件
<?xml version="1.0" encoding="utf-8"?>
<device-admin>
    <uses-policies>
        <!--停用相机-->
        <disable-camera/>
        <!--锁屏时禁用某些功能-->
        <disable-keyguard-features/>
        <!--设置存储设备加密-->
        <encrypted-storage/>
        <!--设置锁定屏幕密码的有效期-->
        <expire-password/>
        <!--锁定屏幕-->
        <force-lock/>
        <!--设置密码规则-->
        <limit-password/>
        <!--更改屏幕解锁密码-->
        <reset-password/>
        <!--设置设备全局代理-->
        <set-global-proxy/>
        <!--监控屏幕解锁尝试次数-->
        <watch-login/>
        <!--恢复出厂设置-->
        <wipe-data/>
    </uses-policies>
</device-admin>
  • 注册一个广播继承DeviceAdminReceiver
package cn.com.codeteenager.devicemanager.receiver;

import android.annotation.TargetApi;
import android.app.admin.DeviceAdminReceiver;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.util.Log;

import cn.com.codeteenager.devicemanager.MainActivity;
import cn.com.codeteenager.devicemanager.R;

public class CTDeviceAdminReceiver extends DeviceAdminReceiver {
    @Override
    public void onEnabled(Context context, Intent intent) {
        Log.i("onEnabled", "设备管理:可用");
    }

    @Override
    public CharSequence onDisableRequested(Context context, Intent intent) {
        Log.e("onDisableRequested", "设备管理:不可用");
        return super.onDisableRequested(context, intent);
    }

    @Override
    public void onDisabled(Context context, Intent intent) {
        super.onDisabled(context, intent);
        Log.e("onDisableRequested", "设备管理:不可用");
    }

    /**
     * Called on the new profile when device owner provisioning has completed. Device owner
     * provisioning is the process of setting up the device so that its main profile is managed by
     * the mobile device management (MDM) application set up as the device owner.
     */
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    public void onProfileProvisioningComplete(Context context, Intent intent) {
        // Enable the profile
        DevicePolicyManager manager =
                (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
        ComponentName componentName = getComponentName(context);
        manager.setProfileName(componentName, context.getString(R.string.app_name));
        // Open the main screen
        Intent launch = new Intent(context, MainActivity.class);
        launch.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(launch);

    }

    /**
     * Generates a {@link ComponentName} that is used throughout the app.
     *
     * @return a {@link ComponentName}
     */
    public static ComponentName getComponentName(Context context) {
        return new ComponentName(context.getApplicationContext(), CTDeviceAdminReceiver.class);
    }
}
  • 在清单文件里注册广播
<!--定义设备管理策略-->
        <receiver
            android:name=".receiver.CTDeviceAdminReceiver"
            android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/device_admin_receiver" />
            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
                <action android:name="android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED" />
                <action android:name="android.app.action.DEVICE_ADMIN_DISABLED" />
            </intent-filter>
        </receiver>
  • 激活设备管理器
if (!mDevicePolicyManager.isAdminActive(mDeviceAdminReceiver)) {
    Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
    intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminReceiver);
    intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "用于设备和应用安全管理");
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    mContext.startActivity(intent);
} else {
    Toast.makeText(this, "此App已激活设备管理器", Toast.LENGTH_SHORT).show()
}

DeviceOwner激活教程

使用利用ADB命令。

$adb shell dpm set-device-owner cn.com.codeteenager.devicemanager/cn.com.codeteenager.devicemanager.receiver.CTDeviceAdminReceiver

若出现如下类似错误:

java.lang.IllegalStateException: Not allowed to set the device owner because
there are already some accounts on the device

则可尝试到设置-账号中退出所有账户,然后重新尝试ADB设置。

DeviceOwner移除教程

当一个app成为DeviceOwner后,这个app是不能被卸载,也无法在设置->安全中关闭其权限。要想DeviceOwner后还能卸载这个app,也就是退出DeviceOwner,有如下方法:

  • devicePolicyManager.clearDeviceOwnerApp(packageName)
    1. 在AndroidManifest.xml中的节点添加android:testOnly="true";
    2. 通过命令adb install -t examole.apk安装该app;
    3. 通过命令adb shell dpm set-device-owner com.example.sample/.MyDeviceAdminReceiver成为DeviceOwner;
    4. 通过命令adb shell dpm remove-active-admin com.example.sample/.MyDeviceAdminReceive退出DeviceOwner;