מה חדש ב-Android 10 לארגונים

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

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

ב-Android 10 יש תכונות חדשות של ניהול הקצאות ואימות (attestation) מכשירים בבעלות החברה שנדרש בהם רק פרופיל עבודה.

כלים משופרים להקצאת הרשאות ידנית בפרופילי עבודה

אפשר להקצות פרופילי עבודה במכשירים עם Android 10 ואילך שנרשמו באמצעות קוד QR או ללא מגע. במהלך ההקצאה של מכשיר בבעלות החברה, תוספת Intent חדשה מאפשרת אפליקציות לבקרת מדיניות מכשיר (DPC) להפעלת פרופיל עבודה או בניהול מלא הגדרה אישית. אחרי שיוצרים פרופיל עבודה או מגדירים ניהול מלא, בקרי DPC חייבים להפעיל מסכים של תאימות למדיניות כדי לאכוף כל מדיניות ראשונית.

בקובץ המניפסט של ה-DPC, מצהירים על מסנן Intent חדש עבור 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>

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

מומלץ לאחזר את תוספות האספקה לפני קביעת מצב הניהול המתאים למכשיר. הפעילות יכולה להתקשר getIntent() לאחזור הבאים:

בקרי DPC יכולים גם ליצור Intent חדש לתוצאה ולהוסיף לה את התוספות הבאות:

כדי להגדיר את מצב הניהול במכשיר, צריך להתקשר putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode), כאשר desiredProvisioningMode הוא:

  • פרופיל העבודה: PROVISIONING_MODE_MANAGED_PROFILE
  • מנוהל באופן מלא: PROVISIONING_MODE_FULLY_MANAGED_DEVICE

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

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

בקובץ המניפסט של ה-DPC, מצהירים על מסנן Intent חדש עבור 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 חייב להשתמש ב-Intent החדש במקום להאזין ל ACTION_PROFILE_PROVISIONING_COMPLETE שידור.

הפעילות שמשויכת למסנן Intent יכולה להפעיל getIntent() לאחזור ה EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE לאחר העמידה בדרישות המדיניות, על ADMIN_POLICY_COMPLIANCE להחזיר את המוצר setResult(RESULT_OK, Intent) ולסגור את כל המסכים הפעילים עם finish().

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

אימות (attestation) מכשיר של פרופיל עבודה

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

רכיב האדמין של פרופיל עבודה יכול לבצע קריאה ל-DevicePolicyManager.generateKeyPair(), להעביר אחד או יותר מהפרטים ID_TYPE_SERIAL, ID_TYPE_IMEI או ID_TYPE_MEID עבור הארגומנט idAttestationFlags.

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

שיפורים בפרופיל העבודה

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

פרופיל עבודה, מקורות לא מוכרים בכל המכשיר

אפליקציות שהורדו ממקורות אחרים מלבד Google Play (או אפליקציה מהימנה אחרת) חנויות) נקראים אפליקציות ממקורות לא ידועים. ב-Android 10, מנהלי מערכת של Workspace פרופילים יכולים למנוע מכל משתמש או פרופיל להתקין אפליקציות מקורות בכל מקום במכשיר על ידי הוספת ההגבלה החדשה על משתמשים DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY עם זאת, לאחר הוספת ההגבלה הזו, אנשים שמשתמשים במכשיר עדיין יוכלו להתקין אפליקציות באמצעות adb.

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

הגבלת מכשירים לקליטת נתונים שמותר להשתמש בהם לפרופילי עבודה

כשאדמינים של פרופילי עבודה קוראים לפונקציה DevicePolicyManager.setPermittedInputMethods(), המשתמשים מוגבלים רק לשיטות הקלט המותרות במסגרת העבודה שלהם פרופיל במקום על כל המכשיר, וכך המשתמשים מקבלים שליטה מלאה על הקלט שיטות בצד האישי של המכשיר שלהם.

איפוס שקט של פרופילים של עבודה

הוספת את WIPE_SILENTLY סימון ל-DevicePolicyManager.wipeData(). אם הדגל מוגדר, המשתמשים לא יקבלו הודעה אחרי איפוס של פרופיל העבודה שלהם באמצעות wipeData().

תכונות חדשות למכשירים מנוהלים

מערכת Android 10 כוללת תכונות וממשקי API חדשים למכשירים מנוהלים, כולל עדכוני מערכת ידניים, הרחבת הקצאת קודי QR ו-NFC אל כוללים את פרטי הכניסה לרשת Wi-Fi של EAP ותמיכה ב-DNS דרך TLS.

התקנה של עדכון מערכת ידני

ב-Android 10, אדמינים של מכשירים מנוהלים יכולים להתקין עדכוני מערכת דרך קובץ עדכון מערכת. עדכוני מערכת ידניים מאפשרים לאדמינים ב-IT לבצע את הפעולות הבאות:

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

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

לאחר הפעלה מחדש של המכשיר, ה-DPC צריך לאשר התקנה מוצלחת באמצעות גרסה API, כמו Build.FINGERPRINT אם העדכון נכשל, יש לדווח על הכשל לאדמין ב-IT.

הקצאת Wi-Fi של EAP

ב-Android 10, קודי QR ונתוני NFC שמשמשים להקצאת מכשירים עשויים להכיל הגדרות ופרטי כניסה של EAP — כולל אישורים. כשמשתמש סורק קוד QR או מקיש על תג NFC, המכשיר יבצע אימות אוטומטי לרשת Wi-Fi מקומית באמצעות EAP ומתחיל את תהליך ההקצאה ללא צורך נוסף קלט ידני.

כדי לאמת Wi-Fi באמצעות EAP, הוסף EXTRA_PROVISIONING_WIFI_SECURITY_TYPE נוסף עם הערך "EAP". כדי לציין אימות EAP, ניתן להוסיף את את התוספות הבאות להקצאת הרשאות ידנית לפי כוונה:

תמיכה ב-DNS פרטי

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

כשבקר ה-DPC שולח קריאה לאחת מהשיטות האלה, המערכת מחזירה את הערך PRIVATE_DNS_SET_NO_ERROR אם השיחה בוצעה בהצלחה. אחרת, היא מחזירה שגיאה.

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

פטור ממצב נעילה של VPN

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

כדי לפטור אפליקציה ממצב ללא 'ביטול נעילה עם טביעת אצבע', מפעילים את הפונקציה אמצעי תשלום DevicePolicyManager setAlwaysOnVpnPackage() שמקבל רשימה של חבילות אפליקציה פטורות. חבילות אפליקציה שנוסיף בקר DPC חייבים להיות מותקנים במכשיר כשהקריאה ל-method מתבצעת. אם אפליקציה היא הוסרה ותותקן מחדש, לכן צריך לתת לאפליקציה פטורה נוספת. כדי להוריד את האפליקציות פטורה בעבר ממצב 'ללא 'ביטול נעילה בטביעת אצבע'', getAlwaysOnVpnLockdownWhitelist()

כדי לעזור לאדמינים של מכשירים ופרופילים של עבודה שמנוהלים באופן מלא להשתמש במצב נעילה הסטטוס, Android 10 מוסיף את isAlwaysOnVpnLockdownEnabled() .

היקפי הרשאות חדשים להענקת גישה

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

Android 10 מציג את הכיתה החדשה DelegatedAdminReceiver לאפליקציות להענקת גישה. המערכת משתמשת במקלט שידורים זה כדי לשלוח דמוי DPC קריאות חוזרות (callback) להענקת גישה לאפליקציות. אפליקציות שקיבלו האצלת פעילות ברשת רישום ביומן ובחירת אישורים צריכים להטמיע את המחלקה הזו. כדי להוסיף את הפריט הזה רכיב לאפליקציה להענקת גישה, יש לבצע את השלבים הבאים:

  1. הוספת מחלקה משנית של DelegatedAdminReceiver לאפליקציה להענקת גישה.
  2. להצהיר על <receiver> ב קובץ מניפסט של אפליקציה, בתוספת פעולת סינון Intent לכל קריאה חוזרת. לדוגמה, ACTION_NETWORK_LOGS_AVAILABLE או ACTION_CHOOSE_PRIVATE_KEY_ALIAS.
  3. הגנה על מקלט השידורים באמצעות BIND_DEVICE_ADMIN הרשאה.

בקטע הקוד הבא מוצג קובץ המניפסט של אפליקציה אחת שהוענקה לה גישה מטפל גם ברישום ברשת וגם בבחירת אישורים:

<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() לבצע קריאה חוזרת (callback) על ידי ביצוע ההנחיות בקטע אחזור יומנים.

אפליקציות שקיבלו גישה יכולות לבצע את הפעולות הבאות DevicePolicyManager אמצעי תשלום (העברת null לארגומנט admin):

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

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

בחירת אישור

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

כדי לבחור כינוי לאישור, אפליקציות עם הענקת גישה צריכות קודם להענקת מחלקה משנית DelegatedAdminReceiver (כפי שתואר קודם). במחלקה המשנית, מטמיעים את onChoosePrivateKeyAlias() קריאה חוזרת (callback) והחזרת כתובת אימייל חלופית עבור המשתמש המועדף , או כדי להציג למשתמש בקשה לבחור אישור, מוחזר null.

הוצאה משימוש של כללי מדיניות לניהול מכשירים

ב-Android 10, אפליקציות ובקרי DPC לא מחילים מכשירים מדור קודם על ידי אפליקציות ובקרי DPC מדיניות. אנחנו ממליצים ללקוחות והשותפים עוברים למכשירים או לפרופילי עבודה מנוהלים באופן מלא. הבאים מדיניות שגורמת ל-SecurityException בהפעלה על ידי אדמין במכשיר שמטרגט ל-Android 10:

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

מידע נוסף על השינויים האלה זמין במאמר ניהול המכשיר להוצאה משימוש.

תכונות חדשות לאפליקציות

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

בדיקת איכות של נעילת מסך

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

כדי לבדוק את האיכות של נעילת המסך:

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

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

תמיכה בשרת proxy ל-HTTP באפליקציות VPN

ב-Android 10, אפליקציות VPN יכולות להגדיר שרת proxy ל-HTTP של חיבור ל-VPN שלהם. כדי להוסיף שרת proxy ל-HTTP, אפליקציית VPN צריכה להגדיר במכונה ProxyInfo עם מארח ויציאה, לפני שמתקשרים VpnService.Builder.setHttpProxy() המערכת וספריות רשת רבות משתמשות בהגדרת שרת ה-proxy הזו, אבל המערכת לא מאלצת אפליקציות להעביר בקשות HTTP בשרת proxy.

לקוד לדוגמה שמראה איך להגדיר שרת proxy ל-HTTP, קראו את המאמר ToyVPN אפליקציה לדוגמה.

מצבי שירות של VPN

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

אפליקציות VPN יכולות לקרוא לVpnService הבא אחרי ההתחברות לשירות והכנת הממשק המקומי:

  • isAlwaysOn() עד בדיקה אם המערכת הפעילה את השירות באמצעות חיבור תמידי של VPN
  • isLockdownEnabled() כדי לבדוק אם המערכת חוסמת חיבורים שלא משתמשים ב-VPN

הסטטוס 'תמיד פועל' לא משתנה בזמן שהשירות פועל, אבל הסטטוס של מצב 'ללא 'ביטול נעילה עם טביעת אצבע'' עשוי להשתנות.

שיפורים ב-Keychain

ב-Android 10 יש כמה שיפורים שקשורים KeyChain API.

כשאפליקציה מבצעת שיחה ל-KeyChain.choosePrivateKeyAlias() או Android 10 ואילך במכשירים מסננים את רשימת האישורים שמתוכם המשתמש יכול לבחור על סמך מהמנפיקים ומהאלגוריתמים של המפתחות שצוינו בשיחה.

לדוגמה, כששרת TLS שולח בקשת אישור כחלק מלחיצת יד בפרוטוקול TLS והשיחות בדפדפן KeyChain.choosePrivateKeyAlias(), הבקשה לבחירת אישור בלבד כוללת אפשרויות שתואמות לפרמטר של המנפיק. אם לא נמצאו אפשרויות תואמות או שלא מותקנים במכשיר אישורים זמינים, בקשת הבחירה לא תוצג למשתמש.

בנוסף, KeyChain כבר לא נדרשת נעילת מסך במכשיר כדי שניתן יהיה להשתמש במפתחות או אישורי CA שיובאו.