מה חדש ב-Android 8.0

בדף הזה נספק סקירה כללית על ממשקי ה-API, התכונות והשינויים בהתנהגות החדשים שהוצגו ב-Android 8.0 (רמת API‏ 26) ומשפיעים על Android בארגון.

ממשקי API ותכונות חדשים

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

פרופילים של עבודה במכשירים מנוהלים באופן מלא

ב-Android 8.0, גם במכשירים מנוהלים יש אפשרות להגדיר פרופילים של עבודה. כך לארגונים יש אפשרות להפריד בין אפליקציות לבין מדיניות, תוך שמירה על שליטה ועל שקיפות בשני הפרופילים. הבעלים הקיים של המכשיר או אמצעי אחר לניהול מדיניות המכשיר (DPC) יכולים ליצור את הפרופיל המנוהל.

כשמשתמשים בפרופילים של עבודה במכשירים מנוהלים, בעלי המכשירים יכולים:

  • כדי ליצור פרופיל מנוהל ללא אינטראקציה עם משתמש, צריך להפעיל את הפונקציה EXTRA_PROVISIONING_SKIP_USER_CONSENT.
  • לקבל התראות כשיוצרים או מסירים משתמשים משניים או פרופילים מנוהלים. פונקציות ה-callbacks הן onUserAdded() ו-onUserRemoved().
  • למנוע מ-DPC אחרים ליצור פרופילים מנוהלים באמצעות DISALLOW_ADD_MANAGED_PROFILE. זוהי הגדרת ברירת המחדל ב-Android 8.0 לבעלי מכשירים במכשירים חדשים שהוקצתה להם תמיכה או במכשירים ששודרגו ל-Android 8.0.
  • בנוסף, בעלי המכשירים יכולים למנוע ממשתמשים להסיר פרופילים מנוהלים קיימים באמצעות DISALLOW_REMOVE_MANAGED_PROFILE.

בעלי המכשירים ובעלי הפרופילים יכולים לתקשר ביניהם אם הם מאותו קובץ APK והבעלים קשורים זה לזה (ראו שיוך משתמשים בהמשך).

מידע מפורט יותר על התמיכה בתרחיש הפריסה החדש הזה זמין בדף הייעודי בנושא פרופילים לעבודה במכשירים מנוהלים לחלוטין.

שיוך של משתמשים

כשבעלים של מכשיר ובעלים של פרופיל מייצגים את אותו ארגון:

  • בעלי המכשיר והפרופיל יכולים לתקשר ביניהם באותו קובץ APK. יכול להיות שהם ירצו לשתף מדיניות או סטטוס (ראו פרופילים של עבודה במכשירים מנוהלים למעלה).

  • תכונות ברמת המכשיר, כמו רישום ביומן או הוספה לרשימת ההיתרים של מצב המשימה של נעילת המסך, יכולות לחול על משתמשים משויכים.

מזהי שיוך, שמצורפים לפרופיל או למשתמש, מזהים ארגונים. כשמזהי השותפות תואמים, המשתמשים הופכים לשותפים. בעלי המכשירים ובעלי הפרופילים משתמשים ב-setAffiliationIds()‎ כדי להגדיר את מזהי השותפות שלהם. ייצוג ארגונים באמצעות מחרוזות מזהות ארוכות שקשה לנחש.

גישה חדשה למשתמשים שמשויכים לחשבון

אם כל המשתמשים והפרופילים המשניים במכשיר משויכים לבעלים של המכשיר, התכונות הבאות יהיו זמינות:

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

משתמשים משניים ופרופילים מנוהלים יכולים להשתמש במצב משימות נעול אם הם משויכים לבעלים של המכשיר דרך setLockTaskPackages(). מידע מפורט יותר על שיוך משתמשים זמין במאמר משתמשים משויכים.

כתבי ויתור מותאמים אישית לצורכי הקצאה

עכשיו ספקי שירותי צד שלישי יכולים להציג למשתמשים כתבי ויתור משלהם במהלך ההקצאה. משתמשים ב-EXTRA_PROVISIONING_DISCLAIMERS, ב-EXTRA_PROVISIONING_DISCLAIMER_HEADER וב-EXTRA_PROVISIONING_DISCLAIMER_CONTENT כדי לספק כתבי ויתור עם טקסט מעוצב. כתבי ויתור מותאמים אישית של DPC מופיעים ברשימה המכוונת של התנאים.

אבטחה

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

בעלי המכשיר ובעלי הפרופילים יכולים לאפס באופן מאובטח את הסיסמאות של המכשיר ושל פרופיל העבודה באמצעות resetPasswordWithToken(). במכשירים שתומכים בהצפנה מבוססת-קובץ, ממשק ה-API הזה זמין לפני שהמשתמש פותח את המכשיר או את הפרופיל, בתנאי שה-DPC מודע להצפנה.

כשנועלים פרופיל עבודה במכשיר שתומך בהצפנה מבוססת-קובץ, אפשר להשתמש ב-lockNow(int) כדי להוציא את מפתחות ההצפנה הראשיים של פרופיל העבודה באמצעות FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY. מפתחות ההצפנה יימחקו גם אם המשתמש יכבה את פרופיל העבודה שלו.

בנוסף, בעלי מכשירים יכולים להשתמש ב-setNetworkLoggingEnabled() כדי להפעיל את הרישום ביומן הרשת של שאילתות DNS וחיבורי TCP שמתחילים ממכשירים בבעלות החברה. מידע נוסף זמין במאמר רישום ביומן של פעילות הרשת.

בעלי הפרופילים יכולים להגביל את החבילות של המשתמש הראשי שיכולות לראות את ההתראות בפרופיל העבודה. קוראים ל-setPermittedCrossProfileNotificationListeners() כדי להגדיר את החבילות ברשימת ההיתרים שמקבלות אירועים דרך NotificationListenerService. הגדרת המאזינים המורשים ל-null (ברירת המחדל) משביתה את רשימת ההיתרים וכל החבילות יכולות להאזין להתראות. כדי להגביל את האירועים לחבילות מערכת, מעבירים קבוצה (Set) ריקה. כדי לראות אילו אפליקציות לא יכולות לגשת להתראות בפרופיל העבודה, המשתמשים יכולים להקיש על הגדרות > אפליקציות והתראות > הרשאות גישה מיוחדות לאפליקציות > גישה להתראות.

לבסוף, בעלי פרופילים ובעלי מכשירים יכולים לאחזר מידע על עדכוני המערכת בהמתנה שזמינים במכשיר באמצעות getPendingSystemUpdate().

הענקת גישה ל-API לניהול אפליקציות

הענקת גישה ל-API מאפשרת לבעלי מכשירים ולבעלי פרופילים להעביר את ניהול האפליקציות לאפליקציות אחרות. בכיתה DevicePolicyManager יש שיטות לניהול היקפי הענקת הגישה שבעלים של מכשירים ושל פרופילים יכולים להעניק לחבילה:

  • השיטה setDelegatedScopes() מאפשרת לבעלי מכשירים ולבעלי פרופילים להעניק לאפליקציות אחרות גישה לממשקי API עם הרשאות.
  • השיטה getDelegatedScopes() מחזירה את ההיקפים שהוענקו לחבילה.
  • הפונקציה getDelegatePackages() מחזירה את החבילות שיש להן היקף.

בטבלה הבאה מוסבר איך השיטות השונות ב-DevicePolicyManager מאורגנות בהיקפים השונים:

טבלה 1. התאמה בין היקפים לשיטות של מדיניות המכשיר

קיבוץ שיטות
DELEGATION_CERT_INSTALL
DELEGATION_APP_RESTRICTIONS
DELEGATION_BLOCK_UNINSTALL setUninstallBlocked()
DELEGATION_PERMISSION_GRANT
DELEGATION_PACKAGE_ACCESS
DELEGATION_ENABLE_SYSTEM_APP enableSystemApp()

שירותים ארוכים ברקע

בעלי המכשיר והפרופיל יכולים ליצור תת-סוג של DeviceAdminService כדי ליצור שירותי רקע. מערכת Android מנסה להמשיך את הפעלת השירות בזמן שהמשתמש רץ. אם רוצים להריץ משימות תקופתיות, כדאי להשתמש ב-JobScheduler לפני שיוצרים שירות רקע.

שליטה בשירות הגיבוי

בעלי המכשירים יכולים להפעיל או להשבית את שירות הגיבוי של Android באמצעות שיטות חדשות ב-DevicePolicyManager. הפעלה והשבתה של שירות הגיבוי באמצעות setBackupServiceEnabled(). בודקים את סטטוס שירות הגיבוי באמצעות isBackupServiceEnabled().

הגדרת שרת proxy ב-Wi-Fi

בעלי המכשירים ובעלי הפרופילים יכולים להגדיר שרתי proxy של HTTP לרשתות Wi-Fi. להשתמש בקובץ PAC או בהגדרות ידניות כדי להגדיר שרת proxy לכל רשת Wi-Fi. כדי להגדיר או להסיר את שרת ה-proxy של WifiConfiguration, צריך לבצע קריאה ל-method‏ setHttpProxy() שלו. כדי לקבל את הגדרות שרת ה-proxy, קוראים את הפונקציה getHttpProxy().

תיבות דו-שיח עם הסבר על תכונות שהאדמין השבית

באפליקציה צריך להופיע הסבר שימושי למשתמשים שמנסים להשתמש בתכונה שהאדמין השבית. עכשיו כל האפליקציות יכולות להשתמש ב-createAdminSupportIntent() כדי ליצור כוונה שמוצגת בה תיבת דו-שיח עם הסבר כשהיא מועברת אל startActivity(Intent). הכוונות כוללות הסברים מותאמים אישית ומותאם לאזור לגבי מצלמות מושבתות, צילומי מסך מושבתים וכל ההגבלות של UserManager.

הגבלת Bluetooth

בעלי המכשיר יכולים להשבית את ה-Bluetooth, והפעולה הזו תשפיע על כל המשתמשים והפרופילים במכשיר. כדי להשבית את ה-Bluetooth, מוסיפים את הגבלת המשתמש DISALLOW_BLUETOOTH.

בעלי המכשיר ובעלי הפרופילים יכולים למנוע ממשתמשים לשלוח קבצים באמצעות Bluetooth באמצעות DISALLOW_BLUETOOTH_SHARING. קבלת קבצים לא מושפעת. כשהיא מוגדרת על ידי הבעלים של המכשיר, הערך DISALLOW_BLUETOOTH_SHARING חל על כל המשתמשים במכשיר. זוהי הגדרת ברירת המחדל ב-Android 8.0 לפרופילים חדשים ולפרופילים קיימים במכשירים ששודרגו ל-Android 8.0.

שינויים בהתנהגות

אם אתם מפתחים אפליקציות לעסקים, כולל ל-DPC, כדאי לבדוק את השינויים הבאים בהתנהגות ב-Android 8.0 ולשנות את האפליקציה בהתאם.

הסרת משתמשים

בעלי המכשיר יכולים להסיר משתמשים משניים ופרופילים מנוהלים באמצעות removeUser(), גם אם ההגדרה DISALLOW_REMOVE_USER מופעלת.

אבטחה

אימות

השינויים הבאים נכנסו לתוקף בכיתה DevicePolicyManager:

  • השיטה lockNow() נועלת את פרופיל העבודה רק אם יש אתגר נפרד לפרופיל העבודה.
  • השיטה resetPassword() כבר לא זמינה ל-DPCs שפועלים כבעלים של מכשיר או כבעלים של פרופיל, ומטרגטים את Android מגרסה 8.0. אם יקראו ל-method, תושלח חריגת אבטחה. במקום זאת, ספקי שירותי ה-DPC צריכים להשתמש ב-resetPasswordWithToken().

    הערה: השינוי הזה לא משפיע על אפליקציות DPC שמטרגטות את Android 7.1.1 (רמת API 25) או גרסאות ישנות יותר, וגם על אפליקציות DPC עם הרשאות אדמין של מכשיר בלבד.

  • במכשירים שתומכים בהצפנה מבוססת-קבצים, הערך isActivePasswordSufficient() לא זמין לפני שהמשתמש פותח את המכשיר בפעם הראשונה אחרי הפעלה מחדש. אם הקריאה מתבצעת לפני שהמשתמש פותח את המכשיר, מתרחשת חריגה.

נתונים מפרופילים של עבודה נעולים

ב-Android 8.0 יש שינויים בממשק המשתמש שמאפשרים להפריד נתונים מפרופיל עבודה נעול.

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

תקינות המכשיר

  • הדגל ENSURE_VERIFY_APPS הוא עכשיו הגבלת משתמשים גלובלית. אם למשתמש כלשהו במכשיר יש את ההגבלה הזו, אימות האפליקציות ייאלץ את כל המשתמשים במכשיר לבצע אימות. לדוגמה, אם בעל הפרופיל מגדיר את ההגבלה בפרופיל העבודה, אימות האפליקציות יבוצע בפרופיל האישי של המשתמש.
  • השיטה onSystemUpdatePending() מופעלת עכשיו גם לבעלים של פרופילים, בנוסף לבעלים של מכשירים.
  • כשמשתמשים בכיתה SystemUpdatePolicy, מדיניות ההשהיה כבר לא חלה על תיקוני אבטחה, ולכן אי אפשר יותר לדחות תיקוני אבטחה. עם זאת, ההתנהגות של סוגים אחרים של מדיניות, כמו מדיניות אוטומטית ומדיניות בחלון זמן, לא מושפעת.
  • בעלי המכשיר יכולים להפעיל איפוס להגדרות המקוריות באמצעות wipeData(), גם אם DISALLOW_FACTORY_RESET מופעל.

VPN שפועל כל הזמן

ב-Android 8.0 יש שינויים בממשק המשתמש שיעזרו למשתמשים להבין את הסטטוס של חיבורי VPN שפועלים כל הזמן:

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

מעכשיו, ה-VpnService של אפליקציות ה-VPN צריך להפעיל את השיטה startForeground() אחרי ההפעלה. מערכת Android מפעילה ישירות את השירות של אפליקציית ה-VPN, ולכן המעבר לחזית הוא באחריות האפליקציה. ב-Android 8.0, אפליקציות VPN שלא מעבירות את שירות ה-VPN לחזית מושבתות.

 קריאות חוזרות (callbacks) של סיסמאות

פונקציות ה-callbacks לשינוי סיסמה של DeviceAdminReceiver כוללות עכשיו את הפרמטר user כדי לזהות את המשתמש או את הפרופיל שאליו הסיסמה שייכת. אלה חתימות ה-method החדשות:

ההטמעה שמוגדרת כברירת מחדל של כל שיטה חדשה קוראת לגרסה הקודמת – בלי להעביר את ארגומנטים המשתמש. ב-Android מגרסה 8.0, השיטות הקודמות הוצאו משימוש.

הענקת גישה ל-API לניהול אפליקציות

השיטות הבאות בכיתה DevicePolicyManager הוצאו משימוש:

בנוסף, עכשיו אפשר להקצות היקף אחד לכמה חבילות. במילים אחרות, בעלי המכשירים ובעלי הפרופילים יכולים להעניק לשני חבילות שונות גישה לאותה קבוצה של ממשקי API בו-זמנית.