במדריך הזה מוסבר איך לפתח בקר לניהול מדיניות מכשירים (DPC) עבור מכשירים בפריסה ארגונית של Android. אפליקציית DPC, שהייתה ידועה בעבר כנאמן מידע של מדיניות העבודה, שולט בכללי מדיניות המכשירים המקומיים באפליקציות במכשירים שונים.
מידע על בקרי DPC
בפריסה ארגונית של Android, לארגון יש שליטה היבטים שונים של מכשירי המשתמש, כמו בידוד במהלך העבודה מידע ממשתמשים מידע אישי, הגדרה מראש של אפליקציות שאושרו עבור את הסביבה, או השבתת יכולות המכשיר (לדוגמה, המצלמה).
בתור ספק EMM, אתה מפתח אפליקציית בקר DPC שבה הלקוחות שלך יכולים להשתמש ב: יחד עם מסוף ה-EMM השרת. הלקוח פורס את ה-DPC במכשירי המשתמשים שהם מנהלים. בקר ה-DPC משמש כגשר בין מסוף ה-EMM (והשרת) לבין המכשיר. אדמין משתמש במסוף ה-EMM כדי לבצע מגוון משימות, כולל קביעת ההגדרות והאפליקציות במכשיר.
ה-DPC יוצר ומנהל את פרופיל העבודה במכשיר שבו הוא מותקן. פרופיל העבודה מצפין מידע שקשור לעבודה ושומר אותו בנפרד משתמשים אפליקציות ונתונים אישיים. לפני יצירת פרופיל העבודה, בקר ה-DPC יכול גם מקצים חשבון Google Play מנוהל לשימוש במכשיר.
במדריך הזה מוסבר איך לפתח בקר DPC שיכול ליצור ולנהל פרופילי עבודה.
ספריית תמיכה בבקר DPC ל-EMM
ספריית התמיכה של בקרי DPC ל-EMM מורכבת ממחלקות של כלים ומחלקות מסייעות לאפשר הקצאה וניהול של מכשירי Android בארגון הסביבה. הספרייה מאפשרת לך לנצל תכונות חשובות אפליקציות בקר DPC:
- תמיכה בהקצאת חשבונות Google Play לארגונים: ההקצאה מנוהלת כדי להשתמש בחשבונות Google Play מאפליקציית DPC, יש צורך ב-Google Play וב-Google האפליקציות של Play Services עומדות בדרישות הגרסה המינימליות. יחד עם זאת, עדכון אפליקציות יכולות להיות מורכבות. ספריית התמיכה של בקר DPC דואגת לעדכון ומבטיחה גם תאימות לעדכונים עתידיים תהליך הקצאת חשבונות Play. צפייה בחשבונות Google Play מנוהלים לקבלת פרטים, תמיכה בהקצאת הרשאות ידנית.
- תמיכה בהגדרות מנוהלות: השימוש ב-Play EMM API לטיפול בהגדרות מנוהלות של אפליקציות שאושרו הוא היא הדרך הקלה ביותר להטמיע הגדרות מנוהלות ב-DPC. תמיכה בקר DPC הספרייה מאפשרת לך להעניק גישה ל-Google Play כמשימה של החלת חשבונות מנוהלים הגדרות אישיות (לשעבר 'הגבלות אפליקציות') כפי שהוגדרו על ידי האדמין באמצעות ה-EMM במסוף. השימוש ב-Play EMM API לטיפול בהגדרות מנוהלות מאפשר הגדרת האפליקציה שתחול באופן אטומי במהלך ההתקנה. צפייה החלת הגדרות מנוהלות לעבודה של אפליקציות לקבלת מידע נוסף על האופן שבו אפשר להפעיל את היכולת הזו בקר ה-DPC.
כדי להוריד את הספרייה, צריך לפעול לפי השלבים הבאים. המשימות שמפורטות במדריך הזה להניח שנעשה שימוש בספריית התמיכה של בקר DPC.
הורדת ספריית התמיכה של בקר DPC
כדי להשתמש בספריית התמיכה של בקרי DPC, צריך להוריד את הספרייה מקהילת ספקי ה-EMM של Android Enterprise. עליכם להוסיף את הספרייה לקובץ build.gradle ולטפל בדברים אחרים ואת יחסי התלות בזמן יצירת אפליקציית בקר DPC. לדוגמה, הספרייה דורשת גרסה 11.4.0. ספריית הלקוח לאימות של Google Play Services.
- מוסיפים את הספרייה לקובץ
build.gradle
:
מגניב
implementation(name:'dpcsupport-yyyymmdd', ext:'aar')
Kotlin
implementation(name = "dpcsupport-yyyymmdd", ext = "aar")
- הוספת 11.4.0
ספריית הלקוח לאימות של Google Play Services לקובץ build.gradle:
מגניב
implementation 'com.google.android.gms:play-services-auth:11.4.0'
Kotlin
implementation("com.google.android.gms:play-services-auth:11.4.0")
הספרייה דורשת הרשאות מסוימות כדי לפעול, ולכן עליך להוסיף אותן אל המניפסט של אפליקציית DPC כשמעלים ל-Google Play:
<uses-permission android:name= "android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/> <uses-permission android:name= "android.permission.GET_ACCOUNTS"/> <uses-permission android:name= "android.permission.MANAGE_ACCOUNTS"/> <uses-permission android:name= "android.permission.WRITE_SYNC_SETTINGS"/> <uses-permission android:name= "com.google.android.providers.gsf.permission.READ_GSERVICES"/>
בנוסף לשלבים הראשוניים האלה של הגדרה ופריסה, עליכם גם לאתחל את הפונקציונליות הספציפית של הספרייה בקוד ה-DPC, בהתאם שאפשר להטמיע. הפרטים נכללים בהמשך.
יצירת בקר DPC
בונים את בקר ה-DPC על פי המודל הקיים שמשמש לאפליקציות לניהול מכשירים.
באופן ספציפי, האפליקציה שלך חייבת לתת מחלקה משנית
DeviceAdminReceiver
(כיתה מ-android.app.admin
) כפי שמתואר
ניהול המכשיר.
יצירת פרופיל עבודה
לצפייה בדוגמה שמדגימה איך ליצור פרופיל עבודה בסיסי, BasicManagedProfile ב-GitHub.
כדי ליצור פרופיל עבודה במכשיר שכבר יש לו פרופיל אישי:
בודקים אם המכשיר יכול לתמוך בפרופיל עבודה, על ידי בדיקה
את קיומו של
תכונת מערכת של FEATURE_MANAGED_USERS
:
Kotlin
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) { // This device does not support work profiles! }
Java
PackageManager pm = getPackageManager(); if (!pm.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) { // This device does not support work profiles! }
אם המכשיר תומך בפרופילים של עבודה, אפשר ליצור פרופיל עבודה על ידי שליחת Intent עם ACTION_PROVISION_MANAGED_PROFILE פעולה. (במסמכים מסוימים, פרופיל מנוהל הוא מונח כללי שמשמעותו זהה לפרופיל העבודה בהקשר של Android בארגון.) יש לכלול את שם החבילה של מנהל המכשיר כתוספת תשלום:
Kotlin
val provisioningActivity = getActivity() // You'll need the package name for the DPC app. val myDPCPackageName = "com.example.myDPCApp" // Set up the provisioning intent val adminComponent = ComponentName(provisioningActivity.applicationContext, MyAdminReceiver::class.java) provisioningIntent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString()) if (provisioningIntent.resolveActivity(provisioningActivity.packageManager) == null) { // No handler for intent! Can't provision this device. // Show an error message and cancel. } else { // REQUEST_PROVISION_MANAGED_PROFILE is defined // to be a suitable request code startActivityForResult(provisioningIntent, REQUEST_PROVISION_MANAGED_PROFILE) provisioningActivity.finish() }
Java
Activity provisioningActivity = getActivity(); // You'll need the package name for the DPC app. String myDPCPackageName = "com.example.myDPCApp"; // Set up the provisioning intent Intent provisioningIntent = new Intent("android.app.action.PROVISION_MANAGED_PROFILE"); ComponentName adminComponent = new ComponentName(provisioningActivity.getApplicationContext(), MyAdminReceiver.class); provisioningIntent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString()); if (provisioningIntent.resolveActivity(provisioningActivity.getPackageManager()) == null) { // No handler for intent! Can't provision this device. // Show an error message and cancel. } else { // REQUEST_PROVISION_MANAGED_PROFILE is defined // to be a suitable request code startActivityForResult(provisioningIntent, REQUEST_PROVISION_MANAGED_PROFILE); provisioningActivity.finish(); }
המערכת מגיבה לכוונה הזו באמצעות הפעולות הבאות:
- מאשרת שהמכשיר מוצפן. אם לא, המערכת תשלח שהמשתמש יצפין את המכשיר לפני ההמשך.
- יצירת פרופיל עבודה.
- מסירה אפליקציות לא נחוצות מפרופיל העבודה.
- מעתיק את אפליקציית ה-DPC לפרופיל העבודה ומגדיר את ה-DPC עצמו בתור את הבעלים של הפרופיל.
שינוי של
onActivityResult()
ל-
בדיקה אם ההקצאה הצליחה:
Kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { // Check if this is the result of the provisioning activity if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) { // If provisioning was successful, the result code is // Activity.RESULT_OK if (resultCode == Activity.RESULT_OK) { // Work profile created and provisioned. } else { // Provisioning failed. } return } else { // This is the result of some other activity. Call the superclass. super.onActivityResult(requestCode, resultCode, data) } }
Java
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // Check if this is the result of the provisioning activity if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) { // If provisioning was successful, the result code is // Activity.RESULT_OK if (resultCode == Activity.RESULT_OK) { // Work profile created and provisioned. } else { // Provisioning failed. } return; } else { // This is the result of some other activity. Call the superclass. super.onActivityResult(requestCode, resultCode, data); } }
סיום ההפעלה של פרופיל העבודה
לאחר ההקצאה של הפרופיל, המערכת תפעיל את ה-DPC
השיטה
DeviceAdminReceiver.onProfileProvisioningComplete()
של האפליקציה. שינוי מברירת המחדל
שיטת הקריאה החוזרת הזו כדי לסיים את ההפעלה של פרופיל העבודה.
DeviceAdminReceiver.onProfileProvisioningComplete()
טיפוסי
הטמעת הקריאה החוזרת מבצעת את הפעולות הבאות:
- מאשרת שהמכשיר עומד בדרישות מדיניות המכשיר של ה-EMM, וכן שמתואר במאמר הגדרת מדיניות המכשיר.
- המדיניות מפעילה את אפליקציות המערכת שנוצרו על ידי האדמין
זמינה בפרופיל העבודה באמצעות
DevicePolicyManager.enableSystemApp()
. - אם המכשיר משתמש ב-Google Play לארגונים, החשבון המתאים מוסיף את החשבון המתאים
פרופיל העבודה כדי שיהיה אפשר להתקין במכשיר אפליקציות שאושרו.
- בחשבונות Google Play מנוהלים: ראו איך מוודאים שהפעולה מתבצעת לחשבונות Google Play מנוהלים ולהוספת חשבון Google Play מנוהל לקבלת פרטים.
- חשבונות Google: יש להשתמש ב-
AccountManager.addAccount()
.
הפעלת פרופיל העבודה
אחרי השלמת המשימות האלה, צריך לקרוא לפונקציה של מנהל מדיניות המכשיר
שיטה
setProfileEnabled()
כדי להפעיל את פרופיל העבודה:
Kotlin
// Get the device policy manager val myDevicePolicyMgr = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager val componentName = myDeviceAdminReceiver.getComponentName(this) // Set the name for the newly created work profile. myDevicePolicyMgr.setProfileName(componentName, "My New Work Profile") // ...and enable the profile myDevicePolicyMgr.setProfileEnabled(componentName)
Java
// Get the device policy manager DevicePolicyManager myDevicePolicyMgr = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); ComponentName componentName = myDeviceAdminReceiver.getComponentName(this); // Set the name for the newly created work profile. myDevicePolicyMgr.setProfileName(componentName, "My New Work Profile"); // ...and enable the profile myDevicePolicyMgr.setProfileEnabled(componentName);
הגדרת כללי המדיניות של המכשיר
אפליקציית DPC מחילה את מדיניות המכשיר כפי שהוגדרה על ידי האדמין כדי לעמוד הדרישות והאילוצים של הארגון. לדוגמה, מדיניות האבטחה עשויה לדרוש שהמכשירים יינעלו לאחר מספר מסוים של ניסיונות כושלים להזנת סיסמה. בקר ה-DPC שולח שאילתה למסוף ה-EMM לגבי המדיניות הנוכחית ולאחר מכן מחיל את המדיניות באמצעות המכשיר API לניהול.
לקבלת מידע על החלת כללי מדיניות מכשיר, אפשר לעיין במאמר מדיניות.
החלה של הגדרות מנוהלות לאפליקציות לעבודה
הגדרות מנוהלות מאפשרות לך לספק ללקוחות שלך את היכולת להגדיר מראש את האפליקציות שאושרו לפריסה ולעדכן אותן אפליקציות בקלות במקרים שבהם צריך לשנות את ההגדרות. הגדרת אפליקציה לפני מבטיחה שאבטחת הארגון וכללי מדיניות אחרים מתקיימים אחרי ההתקנה של האפליקציה במכשיר היעד.
יכולות האפליקציה מוגדרות על ידי מפתח האפליקציה בסכימת XML ( שמתלווה לאפליקציה בזמן ההעלאה ל-Google Play (למפתחי אפליקציות, אפשר לקרוא פרטים נוספים במאמר הגדרת הגדרות מנוהלות).
מאחזרים את הסכימה הזו מהאפליקציה כדי להציג אותה לאדמינים של לקוחות במסוף ה-EMM, לספק ממשק משתמש שבו האפשרויות השונות מוגדרות ולאפשר לאדמינים לקבוע מראש את הגדרות האפליקציה. ההגדרה המנוהלת שנקבעה על ידי האדמין היא בדרך כלל בשרת ה-EMM, ולאחר מכן משתמשת הפעלת EMM API להגדרה הגדרות מנוהלות במכשיר או managed configurationsforuser. צפייה הגדרות מנוהלות ב-Play.
ניתן להפעיל הגדרות מנוהלות באפליקציה באמצעות ממשק ה-API של Play EMM (גישה מומלצת) או ישירות מה-DPC (כפי שמתואר במאמר החלת הגדרות מנוהלות) ישירות מה-DPC). שימוש ב-API של Play EMM יש כמה יתרונות, כולל הטמעה קלה, כי אפשר להשתמש ספריית התמיכה של DPC מאפשרת לפשט משימות בקר DPC. כמו כן, ממשק ה-API של Play EMM:
- המדיניות הזו קובעת את התצורה באופן אטומי כשאפליקציה חדשה מותקנת, כדי להבטיח שהאפליקציה מוכנה בפעם הראשונה שהמשתמש מפעיל אותה.
- כשבוחרים באפשרות הזו, ניתן לנהל את ההגדרות ברמת המשתמש, וכך להימנע ממעקב אחרי ההקצאה לכל מכשיר בנפרד.
להחיל הגדרות מנוהלות באמצעות הפעלת ממשק API של EMM
כדי להשתמש ב-API של Play EMM להגדרות מנוהלות, ה-DPC צריך לאשר Google Play כדי לקבוע הגדרות. ספריית התמיכה של בקר DPC מטפלת בזה עבורך על ידי העברת ההגדרות האישיות שנשלחו על ידי Google Play.
כדי להשתמש ב-Play ל-EMM API, יש להוריד את ספריית התמיכה של DPC ואז להפעיל תמיכה בהגדרות מנוהלות ב-DPC.
הפעלת התמיכה בהגדרות מנוהלות במסגרת בקר ה-DPC
ייבוא הכיתה הזו אל בקר ה-DPC:
com.google.android.apps.work.dpcsupport.ManagedConfigurationsSupport
הפעלת ספריית ההגדרות האישיות המנוהלות בדוגמה זו, המילה 'admin' (מנהל) תואם לערך השדה ComponentName של ה-DeviceAdminReceiver.
Kotlin
var managedConfigurationsSupport = ManagedConfigurationsSupport(context, admin)
Java
ManagedConfigurationsSupport managedConfigurationsSupport = new ManagedConfigurationsSupport(context, admin);
מפעילים הגדרות מנוהלות:
Kotlin
managedConfigurationsSupport.enableManagedConfigurations()
Java
managedConfigurationsSupport.enableManagedConfigurations();
כשהספרייה הזו מאותחלת בבקר ה-DPC, אפשר להשתמש Google Play EMM API ב-EMM במסוף ובשרת כדי להחיל הגדרות מנוהלות על אפליקציות שאושרו, במקום לתכנת את המשימות האלה ישירות בבקר ה-DPC. צפייה לפרטים נוספים, יש הגדרות מנוהלות דרך Play.
החלה של הגדרות מנוהלות ישירות מה-DPC
כדי לשנות הגדרות אישיות של אפליקציה ישירות מה-DPC, קוראים אל השיטה DevicePolicyManager.setApplicationRestrictions() ומעבירים לרכיבי ה-DPC של אפליקציית ה-DPC DeviceAdminReceiver, שם החבילה של אפליקציית היעד, וה-Bundle שמכיל את ההגדרה המנוהלת של האפליקציה, כפי שהאדמין הגדיר. צפייה איך יש אינטראקציה בין מסוף DPC ומסוף EMM וכן להגדיר הגדרות מנוהלות לקבלת פרטים. אבל, לפעמים שימו לב שהגישה החלופית הזו ליישום חשבונות מנוהלים לא מומלץ להשתמש בהגדרות אישיות בפריסות של חשבונות Google Play מנוהלות.
הקצאת חשבונות Google Play לארגונים תמיכה
ספריית התמיכה של DPC כוללת תמיכה להקצאה בחשבונות Google Play מנוהלים. כדי להשתמש בתמיכה הזו, קודם עליך לאתחל את הספרייה, ואז אפשר לוודא סביבת עבודה וגם להוסיף חשבון Google Play לארגונים.
הפעלה של חשבונות Google Play מנוהלים תמיכה בבקר ה-DPC
ייבוא הכיתה הזו אל בקר ה-DPC:
com.google.android.apps.work.dpcsupport.AndroidForWorkAccountSupport
אתחול ספריית התאימות להקצאת הרשאות ידנית. בדוגמה הזו, הערך admin (אדמין) הוא
ComponentName
של
DeviceAdminReceiver
.
Kotlin
var androidForWorkAccountSupport = AndroidForWorkAccountSupport(context, admin)
Java
AndroidForWorkAccountSupport androidForWorkAccountSupport = new AndroidForWorkAccountSupport(context, admin);
ליצור סביבת עבודה חשבונות Google Play מנוהלים
אחרי שבקר ה-DPC מקצה מכשיר במצב 'בעלי הפרופיל' (ACTION_PROVISION_MANAGED_PROFILE
) או במכשיר
במצב בעלים (ACTION_PROVISION_MANAGED_DEVICE
), צריך לוודא שהמכשיר יכול לתמוך בחשבונות Google Play מנוהלים באמצעות התקשרות:
Kotlin
androidForWorkAccountSupport.ensureWorkingEnvironment(callback)
Java
androidForWorkAccountSupport.ensureWorkingEnvironment(callback);
הקריאה החוזרת מדווחת על ההצלחה או הכשל של התהליך הזה. כשהקריאה החוזרת מוחזרת בהצלחה, ניתן להוסיף חשבון Google Play מנוהל. אם המיקום הקריאה החוזרת מדווחת על שגיאה, ולבקש מהמשתמש לוודא למכשיר יש חיבור לרשת (לדוגמה, אם ההורדה נכשלה). בעוד לדווח על הכשל ל-Google.
Kotlin
object : WorkingEnvironmentCallback() { override fun onSuccess() { // Can now provision the managed Google Play Account } override fun onFailure(error: Error) { // Notify user, handle error (check network connection) } }
Java
new WorkingEnvironmentCallback() { @Override public void onSuccess() { // Can now provision the managed Google Play Account } @Override public void onFailure(Error error) { // Notify user, handle error (check network connection) } }
הוספה של חשבון Google Play מנוהל
AccountManager
של מסגרת Android
יכולים להוסיף למכשיר חשבון Google Play מנוהל. כדי לפשט את האינטראקציה עם
AccountManager
, צריך להשתמש בפונקציה העוזרת (Helper) (מוצגת בדוגמה למטה)
מספריית התמיכה של DPC. הפונקציה
מטפל באסימון המוחזר על ידי שרת Google Play ומאפשר את ההקצאה
חשבון Google Play המנוהל. הפונקציה חוזרת כש Google Play לארגונים
החשבון במצב חוקי:
Kotlin
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback)
Java
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
token
– אסימון אימות המשתמש שנוצר על ידי Google השמעת השיחהUsers.generateAuthenticationToken()
ב-API ל-EMM.accountAddedCallback
– החזרת חשבון Google Play המנוהל שנוסף בהצלחה למכשיר. הקריאה החוזרת (callback) הזו צריכה לכלולonAccountReady()
ו-onFailure()
.
Kotlin
val workAccountAddedCallback = object : WorkAccountAddedCallback() { override fun onAccountReady(account: Account, deviceHint: String) { // Device account was successfully added to the device // and is ready to be used. } override fun onFailure(error: Error) { // The account was not successfully added. Check that the token // provided was valid (it expires after a certain period of time). } }
Java
WorkAccountAddedCallback workAccountAddedCallback = new WorkAccountAddedCallback() { @Override public void onAccountReady(Account account, String deviceHint) { // Device account was successfully added to the device // and is ready to be used. } @Override public void onFailure(Error error) { // The account was not successfully added. Check that the token // provided was valid (it expires after a certain period of time). } };
מסמכים קשורים
- מידע נוסף על Device Administration API זמין בכתובת מכשיר ניהול.
- מידע נוסף על שיטות להקצאת הרשאות ידנית ב-Android Enterprise הקצאת מכשירים בקטע מדריך למפתחים של Android Enterprise.
- לדוגמה של GitHub שמדגימה איך ליצור פרופיל עבודה בסיסי: לעיון ב-BasicManagedProfile.
- לדוגמה של GitHub שמדגימה איך לקבוע הגדרות אישיות באפליקציות אחרות בעלי הפרופיל, ראו AppRestrictionEnforcer.