หน้านี้แสดงภาพรวมของ API, ฟีเจอร์ และ การเปลี่ยนแปลงลักษณะการทำงานใหม่ๆ สำหรับองค์กรที่เปิดตัวใน Android 10
โปรไฟล์งานสำหรับอุปกรณ์ของบริษัท
Android 10 เปิดตัวฟีเจอร์การจัดสรรและการรับรองใหม่สำหรับ อุปกรณ์ของบริษัทที่ต้องใช้โปรไฟล์งานเท่านั้น
เครื่องมือการจัดสรรโปรไฟล์งานที่ได้รับการปรับปรุง
คุณจัดสรรโปรไฟล์งานในอุปกรณ์ Android 10 ขึ้นไปที่ลงทะเบียนโดยใช้ คิวอาร์โค้ด หรือการลงทะเบียนแบบไม่ต้องสัมผัสได้ ในระหว่างการจัดสรรอุปกรณ์ของบริษัท ส่วนเสริม Intent ใหม่จะอนุญาตให้แอปเครื่องมือควบคุมนโยบายด้านอุปกรณ์ (DPC) เริ่มการตั้งค่าโปรไฟล์งานหรือการจัดการครบวงจร หลังจากสร้างโปรไฟล์งานหรือตั้งค่าการจัดการแบบเต็มแล้ว DPC ต้องเปิดหน้าจอการปฏิบัติตามนโยบายเพื่อบังคับใช้นโยบายเริ่มต้น
ในไฟล์ Manifest ของ 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 ผลลัพธ์ใหม่และเพิ่มส่วนเสริมต่อไปนี้ลงใน Intent ได้ด้วย
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE: เพิ่มลงในกลุ่มที่มีอยู่หรือสร้างกลุ่มใหม่ ระบบจะส่งชุดนี้เป็น ส่วนเพิ่มเติมของ Intent เมื่อ DPC เปิดหน้าจอการปฏิบัติตามนโยบายEXTRA_PROVISIONING_ACCOUNT_TO_MIGRATEระบุบัญชีที่จะย้ายข้อมูลก็ต่อเมื่อเพิ่มบัญชีงานเป็นส่วนหนึ่งของการจัดสรรโปรไฟล์งานEXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS
หากต้องการตั้งค่าโหมดการจัดการในอุปกรณ์ ให้โทรหา
putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode)
โดยที่ desiredProvisioningMode คือ
- โปรไฟล์งาน:
PROVISIONING_MODE_MANAGED_PROFILE - การจัดการครบวงจร:
PROVISIONING_MODE_FULLY_MANAGED_DEVICE
จัดสรรโปรไฟล์งานหรือการจัดการครบวงจรให้เสร็จสมบูรณ์โดยส่งรายละเอียดการจัดสรรกลับไปที่การตั้งค่าผ่าน setResult(RESULT_OK,
Intent)
และปิดหน้าจอที่ใช้งานอยู่ทั้งหมดด้วย
finish()
หลังจากจัดสรรเสร็จสมบูรณ์แล้ว DPC จะมี Intent ใหม่ให้เปิดหน้าจอการปฏิบัติตามข้อกำหนดและบังคับใช้การตั้งค่านโยบายเริ่มต้น ในอุปกรณ์ที่มีโปรไฟล์งาน หน้าจอการปฏิบัติตามข้อกำหนดจะแสดงในโปรไฟล์งาน DPC ของคุณต้อง ตรวจสอบว่าหน้าจอการปฏิบัติตามข้อกำหนดแสดงต่อผู้ใช้ แม้ว่าผู้ใช้จะออกจาก โฟลว์การตั้งค่าก็ตาม
ในไฟล์ Manifest ของ 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()
อุปกรณ์ที่มีการจัดการเต็มรูปแบบจะนำผู้ใช้กลับไปที่หน้าจอหลัก อุปกรณ์โปรไฟล์งาน จะแจ้งให้ผู้ใช้เพิ่มบัญชีส่วนตัวก่อนที่จะนำผู้ใช้กลับไปที่หน้าจอหลัก
การรับรองรหัสอุปกรณ์ของโปรไฟล์งาน
DPC ที่ตั้งค่าเป็นผู้ดูแลระบบของโปรไฟล์งานที่จัดสรรโดยใช้การตั้งค่าอุปกรณ์พร้อมใช้แบบรวมกลุ่ม จะรับรหัสอุปกรณ์ที่รับรองโดยฮาร์ดแวร์ที่ปลอดภัยได้ เช่น IMEI หรือหมายเลขซีเรียลของผู้ผลิต อุปกรณ์ต้องมีฮาร์ดแวร์ที่ปลอดภัย (เช่น สภาพแวดล้อมการดำเนินการที่เชื่อถือได้ (TEE) หรือ Secure Element (SE)) และรองรับการรับรองอุปกรณ์ด้วยรหัสอุปกรณ์และการตั้งค่าอุปกรณ์พร้อมใช้แบบรวมกลุ่ม
คอมโพเนนต์ผู้ดูแลระบบของโปรไฟล์งานสามารถเรียก DevicePolicyManager.generateKeyPair() โดยส่ง ID_TYPE_SERIAL, ID_TYPE_IMEI หรือ ID_TYPE_MEID อย่างน้อย 1 รายการสำหรับอาร์กิวเมนต์ idAttestationFlags
ดูข้อมูลเพิ่มเติมเกี่ยวกับการแยกและตรวจสอบรหัสอุปกรณ์ได้ที่การยืนยันคู่คีย์อิงฮาร์ดแวร์ด้วยเอกสารรับรองคีย์
การปรับปรุงโปรไฟล์งาน
API ใหม่พร้อมใช้งานแล้วเพื่อรองรับการมองเห็นปฏิทินข้ามโปรไฟล์และ การบล็อกการติดตั้งแอปจากแหล่งที่มาที่ไม่รู้จักทั่วทั้งอุปกรณ์
โปรไฟล์งาน แหล่งที่มาที่ไม่รู้จักทั่วทั้งอุปกรณ์
แอปที่ดาวน์โหลดจากแหล่งที่มาอื่นๆ ที่ไม่ใช่ Google Play (หรือ App Store อื่นๆ ที่เชื่อถือได้) เรียกว่าแอปจากแหล่งที่มาที่ไม่รู้จัก ใน Android 10 ผู้ดูแลระบบโปรไฟล์งานสามารถป้องกันไม่ให้ผู้ใช้หรือโปรไฟล์ใดก็ตามติดตั้งแอปจากแหล่งที่ไม่รู้จักในอุปกรณ์ได้ทุกที่โดยการเพิ่มข้อจำกัดของผู้ใช้ใหม่ DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY
อย่างไรก็ตาม หลังจากเพิ่มข้อจำกัดนี้แล้ว ผู้ที่ใช้อุปกรณ์จะยังคง
ติดตั้งแอปโดยใช้ adb ได้
เราขอแนะนำให้เพิ่มข้อจำกัดของผู้ใช้นี้เพื่อป้องกันไม่ให้ผู้ใช้ติดตั้งแอปจากแหล่งที่มาที่ไม่รู้จักโดยไม่ตั้งใจ เนื่องจากไม่จำเป็นต้องติดตั้งบริการ Google Play หากต้องการรองรับ Android เวอร์ชันเก่า คุณสามารถ ตั้งค่าการกำหนดค่าที่มีการจัดการสำหรับ Google Play ได้
จำกัดอุปกรณ์อินพุตที่อนุญาตให้ใช้กับโปรไฟล์งาน
เมื่อผู้ดูแลระบบของโปรไฟล์งานเรียกใช้ DevicePolicyManager.setPermittedInputMethods() ระบบจะจำกัดผู้ใช้ให้ใช้เฉพาะวิธีการป้อนข้อมูลที่อนุญาตภายในโปรไฟล์งานแทนที่จะจำกัดทั้งอุปกรณ์ ซึ่งจะทำให้ผู้ใช้ควบคุมวิธีการป้อนข้อมูลในส่วนส่วนตัวของอุปกรณ์ได้อย่างเต็มที่
ล้างข้อมูลโปรไฟล์งานโดยไม่แจ้งให้ทราบ
เพิ่มธง WIPE_SILENTLY
ไปยัง DevicePolicyManager.wipeData() แล้ว
หากตั้งค่า Flag ไว้ ผู้ใช้จะไม่ได้รับการแจ้งเตือนหลังจากที่ระบบล้างข้อมูลโปรไฟล์งานโดยใช้ wipeData()
ฟีเจอร์ใหม่สำหรับอุปกรณ์ที่มีการจัดการแบบสมบูรณ์
Android 10 เปิดตัวฟีเจอร์และ API ใหม่สำหรับอุปกรณ์ที่มีการจัดการครบวงจร ซึ่งรวมถึงการอัปเดตระบบด้วยตนเอง การขยายการจัดสรร QR Code และ NFC เพื่อ รวมข้อมูลเข้าสู่ระบบสำหรับเครือข่าย Wi-Fi EAP และการรองรับ DNS ผ่าน TLS
การติดตั้งการอัปเดตระบบด้วยตนเอง
ใน Android 10 ผู้ดูแลระบบของอุปกรณ์ที่มีการจัดการครบวงจรจะติดตั้งการอัปเดตระบบผ่าน ไฟล์การอัปเดตระบบได้ การอัปเดตระบบด้วยตนเองช่วยให้ผู้ดูแลระบบไอทีทำสิ่งต่อไปนี้ได้
- ทดสอบการอัปเดตในอุปกรณ์จำนวนน้อยก่อนที่จะติดตั้งในวงกว้าง
- หลีกเลี่ยงการดาวน์โหลดที่ซ้ำกันในเครือข่ายที่มีการจำกัดแบนด์วิดท์
- ติดตั้งแบบเหลื่อมเวลา หรืออัปเดตอุปกรณ์เมื่อไม่ได้ใช้งานเท่านั้น
ก่อนอื่น ผู้ดูแลระบบไอทีจะตั้งนโยบายการอัปเดตระบบที่เลื่อนออกไป
เพื่อเลื่อนการติดตั้งอัตโนมัติ (หากจำเป็น) จากนั้น DPC ของอุปกรณ์จะเรียกใช้ installSystemUpdate() พร้อมเส้นทางไปยังไฟล์การอัปเดตระบบของผู้ผลิตอุปกรณ์ ส่งออบเจ็กต์ InstallSystemUpdateCallback
ที่ระบบใช้เพื่อรายงานข้อผิดพลาดที่เกิดขึ้นก่อนที่อุปกรณ์จะ
รีสตาร์ทได้ หากเกิดข้อผิดพลาด ระบบจะเรียกใช้ onInstallUpdateError()
พร้อมรหัสข้อผิดพลาด
หลังจากอุปกรณ์รีสตาร์ทแล้ว DPC ของคุณต้องยืนยันการติดตั้งสำเร็จ
โดยใช้ API เวอร์ชัน เช่น
Build.FINGERPRINT หากการอัปเดต
ไม่สำเร็จ ให้รายงานความล้มเหลวแก่ผู้ดูแลระบบไอที
การจัดสรร Wi-Fi ของ EAP
ใน Android 10 คิวอาร์โค้ดและข้อมูล NFC ที่ใช้ในการจัดเตรียมอุปกรณ์อาจมีการกำหนดค่าและข้อมูลเข้าสู่ระบบ EAP รวมถึงใบรับรอง เมื่อมีผู้สแกนคิวอาร์โค้ด หรือแตะแท็ก NFC อุปกรณ์จะตรวจสอบสิทธิ์กับเครือข่าย Wi-Fi ในพื้นที่ โดยอัตโนมัติโดยใช้ EAP และเริ่มกระบวนการจัดสรรโดยไม่ต้องป้อนข้อมูล ด้วยตนเองเพิ่มเติม
หากต้องการตรวจสอบสิทธิ์ Wi-Fi โดยใช้ EAP ให้เพิ่ม
EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
ส่วนพิเศษที่มีค่า "EAP" หากต้องการระบุการตรวจสอบสิทธิ์ EAP คุณสามารถเพิ่มการจัดสรรพิเศษต่อไปนี้ลงใน Intent ได้
EXTRA_PROVISIONING_WIFI_EAP_METHODEXTRA_PROVISIONING_WIFI_IDENTITYEXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITYEXTRA_PROVISIONING_WIFI_DOMAINEXTRA_PROVISIONING_WIFI_PHASE2_AUTHEXTRA_PROVISIONING_WIFI_USER_CERTIFICATEEXTRA_PROVISIONING_WIFI_CA_CERTIFICATE
การรองรับ DNS ส่วนตัว
องค์กรสามารถใช้ DNS over TLS (เรียกว่า DNS ส่วนตัวในอุปกรณ์ Android) เพื่อหลีกเลี่ยงการรั่วไหลของการค้นหา DNS รวมถึงการค้นหาชื่อโฮสต์ภายใน คอมโพเนนต์ผู้ดูแลระบบของอุปกรณ์ที่มีการจัดการครบวงจร สามารถควบคุมการตั้งค่า DNS ส่วนตัวของอุปกรณ์ได้ หากต้องการตั้งค่าโหมด DNS ส่วนตัว ให้เรียกใช้คำสั่งต่อไปนี้
setGlobalPrivateDnsModeOpportunistic()เพื่อให้อุปกรณ์ใช้ DNS ส่วนตัวเมื่อระบบค้นพบเนมเซิร์ฟเวอร์ที่รองรับ หรือsetGlobalPrivateDnsModeSpecifiedHost()เพื่อระบุชื่อโฮสต์ของเนมเซิร์ฟเวอร์ที่รองรับ RFC7858 ในอาร์กิวเมนต์privateDnsHost
เมื่อ DPC เรียกใช้เมธอดใดเมธอดหนึ่ง ระบบจะแสดง PRIVATE_DNS_SET_NO_ERROR หาก
การเรียกใช้สำเร็จ ไม่เช่นนั้น ระบบจะแสดงข้อผิดพลาด
หากต้องการเรียกโหมด DNS ส่วนตัวและโฮสต์ที่ตั้งค่าไว้ในอุปกรณ์ ให้เรียกใช้ getGlobalPrivateDnsMode()
และ getGlobalPrivateDnsHost()
คุณสามารถป้องกันไม่ให้ผู้ใช้เปลี่ยนการตั้งค่า DNS ส่วนตัวได้โดยเพิ่มข้อจํากัดของผู้ใช้
DISALLOW_CONFIG_PRIVATE_DNS
ข้อยกเว้นโหมดปิดล็อก VPN
โหมดการปิดล็อก VPN ช่วยให้ DPC บล็อกการรับส่งข้อมูลในเครือข่ายที่ไม่ได้ใช้ VPN ได้ ผู้ดูแลระบบของอุปกรณ์ที่มีการจัดการครบวงจรและโปรไฟล์งานสามารถยกเว้นแอปจากโหมดล็อกดาวน์ได้ แอปที่ได้รับการยกเว้นจะใช้ VPN โดยค่าเริ่มต้น แต่จะเชื่อมต่อกับเครือข่ายอื่นๆ โดยอัตโนมัติหาก VPN ไม่พร้อมใช้งาน แอปที่ได้รับการยกเว้นซึ่งปฏิเสธการเข้าถึง VPN อย่างชัดเจนจะใช้เครือข่ายอื่นเท่านั้น
หากต้องการยกเว้นแอปจากโหมดล็อกดาวน์ ให้เรียกใช้เมธอดใหม่
DevicePolicyManager
setAlwaysOnVpnPackage()
ซึ่งรับรายการแพ็กเกจแอปที่ยกเว้น แพ็กเกจแอปใดก็ตามที่ DPC เพิ่ม
ต้องติดตั้งในอุปกรณ์เมื่อมีการเรียกใช้เมธอด หากถอนการติดตั้งแอปแล้วติดตั้งอีกครั้ง คุณจะต้องยกเว้นแอปอีกครั้ง หากต้องการรับแอปที่
ก่อนหน้านี้ได้รับการยกเว้นจากโหมดล็อกดาวน์ ให้เรียกใช้
getAlwaysOnVpnLockdownWhitelist()
Android 10 ได้เพิ่มเมธอด
isAlwaysOnVpnLockdownEnabled()
เพื่อช่วยให้ผู้ดูแลระบบของอุปกรณ์ที่มีการจัดการครบวงจรและโปรไฟล์งานทราบสถานะของโหมดล็อกดาวน์
ขอบเขตการมอบสิทธิ์ใหม่
Android 10 ขยายรายการฟังก์ชันที่ DPC สามารถมอบสิทธิ์ให้แอปอื่นๆ ที่มีความเชี่ยวชาญมากกว่า
ได้ Android จัดกลุ่มเมธอด API ที่จำเป็นสำหรับงานหนึ่งๆ ไว้ในขอบเขต หากต้องการมอบสิทธิ์ขอบเขต ให้เรียกใช้
setDelegatedScopes()
และส่งขอบเขตต่อไปนี้อย่างน้อย 1 รายการ
DELEGATION_NETWORK_LOGGINGเพื่อมอบสิทธิ์ให้การบันทึกกิจกรรมเครือข่ายDELEGATION_CERT_SELECTIONเพื่อมอบสิทธิ์การเลือกใบรับรอง
Android 10 ขอแนะนำคลาสใหม่
DelegatedAdminReceiver
สำหรับแอปที่ได้รับมอบสิทธิ์ ระบบจะใช้ Broadcast Receiver นี้เพื่อส่ง Callback ที่คล้ายกับ DPC ไปยังแอปที่ได้รับมอบสิทธิ์ แอปที่ได้รับมอบหมายให้บันทึกกิจกรรมเครือข่ายและเลือกใบรับรองควรใช้คลาสนี้ หากต้องการเพิ่มคอมโพเนนต์นี้
ลงในแอปที่มอบสิทธิ์ ให้ทำตามขั้นตอนต่อไปนี้
- เพิ่มคลาสย่อยของ
DelegatedAdminReceiverลงในแอปที่ได้รับมอบสิทธิ์ - ประกาศ
<receiver>ในไฟล์ Manifest ของแอปโดยเพิ่มการดำเนินการตัวกรอง Intent สำหรับการเรียกกลับแต่ละรายการ เช่นACTION_NETWORK_LOGS_AVAILABLEหรือACTION_CHOOSE_PRIVATE_KEY_ALIAS - ปกป้อง Broadcast Receiver ด้วยสิทธิ์
BIND_DEVICE_ADMIN
ข้อมูลโค้ดต่อไปนี้แสดงไฟล์ Manifest ของแอปตัวแทนแอปเดียวที่จัดการทั้งการบันทึกเครือข่ายและการเลือกใบรับรอง
<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ต่อไปนี้
(ส่ง null สำหรับอาร์กิวเมนต์ admin)
DPC ไม่ควรเปิดใช้การบันทึกเครือข่าย
หากวางแผนที่จะมอบสิทธิ์ให้แอปอื่น เพื่อไม่ให้บันทึกสูญหาย แอปที่ได้รับมอบสิทธิ์ควรเปิดใช้และ
รวบรวมบันทึกเครือข่าย หลังจากที่ DPC มอบสิทธิ์การบันทึกเครือข่ายแล้ว DPC จะไม่ได้รับการเรียกกลับonNetworkLogsAvailable()
อีก
หากต้องการดูวิธีรายงานการบันทึกกิจกรรมเครือข่ายจากแอปที่ได้รับมอบสิทธิ์ โปรดอ่านคู่มือนักพัฒนาซอฟต์แวร์การบันทึกกิจกรรมเครือข่าย
การเลือกใบรับรอง
ใน Android 10 ผู้ดูแลระบบของ อุปกรณ์ที่มีการจัดการครบวงจร โปรไฟล์งาน และผู้ใช้รองสามารถมอบสิทธิ์ การเลือกใบรับรองให้แอปเฉพาะได้
หากต้องการเลือกนามแฝงของใบรับรอง แอปที่ได้รับมอบสิทธิ์ควรสร้างคลาสย่อยของ
DelegatedAdminReceiver
(อธิบายไว้ก่อนหน้านี้) ก่อน ในคลาสย่อย ให้ใช้การเรียกกลับ onChoosePrivateKeyAlias() และส่งคืนชื่อแทนสำหรับใบรับรองที่ต้องการ หรือส่งคืน null เพื่อแจ้งให้ผู้ใช้เลือกใบรับรอง
การเลิกใช้งานนโยบายผู้ดูแลระบบอุปกรณ์
Android 10 ป้องกันไม่ให้แอปและ DPC ใช้ผู้ดูแลระบบ
อุปกรณ์ตามนโยบายเดิม เราขอแนะนำให้ลูกค้า
และพาร์ทเนอร์เปลี่ยนไปใช้อุปกรณ์ที่มีการจัดการเต็มรูปแบบหรือโปรไฟล์งาน นโยบายต่อไปนี้จะทำให้เกิด SecurityException
เมื่อผู้ดูแลระบบอุปกรณ์ที่กำหนดเป้าหมายเป็น Android 10 เรียกใช้
USES_POLICY_DISABLE_CAMERAUSES_POLICY_DISABLE_KEYGUARD_FEATURESUSES_POLICY_EXPIRE_PASSWORDUSES_POLICY_LIMIT_PASSWORD
แอปพลิเคชันบางอย่างใช้ผู้ดูแลระบบอุปกรณ์สำหรับการดูแลระบบอุปกรณ์ของผู้บริโภค เช่น การล็อกและล้างข้อมูลในอุปกรณ์ที่สูญหาย หากต้องการเปิดใช้ฟีเจอร์นี้ นโยบายต่อไปนี้จะยังคงมีผลบังคับใช้
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงเหล่านี้ได้ที่การเลิกใช้งานผู้ดูแลระบบอุปกรณ์
ฟีเจอร์ใหม่สำหรับแอป
แอปที่กำหนดเป้าหมายเป็น Android 10 สามารถค้นหาความซับซ้อนของการล็อกหน้าจอที่ตั้งค่าไว้ในอุปกรณ์
ก่อนที่จะแสดงข้อมูลที่เป็นความลับหรือเปิดใช้ฟีเจอร์ที่สำคัญ แอปที่เรียกใช้
API KeyChain จะได้รับประโยชน์จากการปรับปรุงลักษณะการทำงาน ขณะเดียวกันแอป VPN ก็มีฟีเจอร์ใหม่ๆ ให้ใช้งานด้วย
การตรวจสอบคุณภาพการล็อกหน้าจอ
ตั้งแต่ Android 10 เป็นต้นไป แอปที่มีฟีเจอร์สำคัญซึ่งต้องใช้การล็อกหน้าจอ จะค้นหาความซับซ้อนของการล็อกหน้าจอของอุปกรณ์หรือโปรไฟล์งานได้ แอปที่ต้องการ การล็อกหน้าจอที่รัดกุมยิ่งขึ้นสามารถนำผู้ใช้ไปยังการตั้งค่าการล็อกหน้าจอของระบบ เพื่อให้ผู้ใช้อัปเดตการตั้งค่าความปลอดภัยได้
วิธีตรวจสอบคุณภาพการล็อกหน้าจอ
- เพิ่มสิทธิ์
REQUEST_PASSWORD_COMPLEXITYใหม่ลงในไฟล์ Manifest ของแอป - โทรหา
DevicePolicyManager.getPasswordComplexity()ความซับซ้อนแบ่งออกเป็น 4 หมวดหมู่ ดังนี้
หากต้องการเปิดการตั้งค่าการล็อกหน้าจอของระบบ ให้ใช้
ACTION_SET_NEW_PASSWORD
พร้อมกับEXTRA_PASSWORD_COMPLEXITYเพิ่มเติม โดยตัวเลือกที่ไม่
เป็นไปตามความซับซ้อนที่ระบุไว้ในส่วนเสริมของ Intent จะเป็นสีเทา ผู้ใช้สามารถ
เลือกจากตัวเลือกการล็อกหน้าจอที่มีอยู่หรือออกจากหน้าจอ
แนวทางปฏิบัติแนะนำ: แสดงข้อความในแอปก่อนเปิดตัวหน้าจอล็อกของระบบ เมื่อแอปกลับมาทำงานอีกครั้ง ให้โทรหา
DevicePolicyManager.getPasswordComplexity()
อีกครั้ง หากยังคงต้องใช้การล็อกหน้าจอที่รัดกุมยิ่งขึ้น ให้จำกัดการเข้าถึงแทนที่จะ
แจ้งให้ผู้ใช้อัปเดตการตั้งค่าความปลอดภัยซ้ำๆ
การรองรับพร็อกซี HTTP ในแอป VPN
ใน Android 10 แอป VPN สามารถตั้งค่าพร็อกซี HTTP
สำหรับการเชื่อมต่อ VPN ได้ หากต้องการเพิ่มพร็อกซี HTTP แอป VPN ต้องกำหนดค่าอินสแตนซ์ ProxyInfo ด้วยโฮสต์และพอร์ต
ก่อนเรียกใช้
VpnService.Builder.setHttpProxy()
ระบบและไลบรารีเครือข่ายจำนวนมากใช้การตั้งค่าพร็อกซีนี้ แต่ระบบไม่ได้บังคับให้แอปพร็อกซีคำขอ HTTP
ดูโค้ดตัวอย่างที่แสดงวิธีตั้งค่าพร็อกซี HTTP ได้ที่แอปตัวอย่าง ToyVPN
โหมดบริการ VPN
แอป VPN สามารถตรวจหาได้ว่าบริการกำลังทำงานอยู่หรือไม่เนื่องจาก VPN แบบเปิดตลอดเวลาและโหมดล็อกดาวน์เปิดใช้งานอยู่หรือไม่ วิธีการใหม่ๆ ที่เพิ่มเข้ามาใน Android 10 จะช่วยให้คุณปรับอินเทอร์เฟซผู้ใช้ได้ เช่น คุณอาจปิดใช้ปุ่มยกเลิกการเชื่อมต่อเมื่อ VPN แบบเปิดตลอดเวลาควบคุมวงจร ของบริการ
แอป VPN สามารถเรียกใช้เมธอด VpnService
ต่อไปนี้หลังจากเชื่อมต่อกับบริการ
และสร้างอินเทอร์เฟซภายในแล้ว
isAlwaysOn()เพื่อดูว่าระบบเริ่มบริการเนื่องจาก VPN แบบเปิดตลอดเวลาหรือไม่isLockdownEnabled()เพื่อดูว่าระบบบล็อกการเชื่อมต่อที่ไม่ได้ใช้ VPN หรือไม่
สถานะเปิดตลอดจะยังคงเหมือนเดิมในขณะที่บริการทำงาน แต่สถานะโหมดล็อกดาวน์อาจเปลี่ยนแปลง
การปรับปรุงพวงกุญแจ
Android 10 มีการปรับปรุงหลายอย่างที่เกี่ยวข้องกับ API ของ
KeyChain
เมื่อแอปเรียกใช้ KeyChain.choosePrivateKeyAlias() อุปกรณ์ Android 10 ขึ้นไป
จะกรองรายการใบรับรองที่ผู้ใช้เลือกได้ตามผู้ออกใบรับรองและอัลกอริทึมคีย์ที่ระบุในการเรียกใช้
ตัวอย่างเช่น เมื่อเซิร์ฟเวอร์ TLS ส่งข้อความคำขอใบรับรอง
เป็นส่วนหนึ่งของการแฮนด์เชค TLS และเบราว์เซอร์เรียกใช้
KeyChain.choosePrivateKeyAlias() พรอมต์การเลือกใบรับรองจะมีเฉพาะตัวเลือกที่ตรงกับพารามิเตอร์ผู้ออกเท่านั้น
หากไม่มีตัวเลือกที่ตรงกัน
หรือไม่มีการติดตั้งใบรับรองในอุปกรณ์ ระบบจะไม่แสดงข้อความแจ้งการเลือกแก่ผู้ใช้
นอกจากนี้ KeyChain ไม่จำเป็นต้อง
มีหน้าจอล็อกในอุปกรณ์ก่อนจึงจะนำเข้าคีย์หรือใบรับรอง CA ได้อีกต่อไป