Bu sayfada, Android 10'da kullanıma sunulan yeni Enterprise API'leri, özellikleri ve davranış değişiklikleri hakkında genel bilgiler verilmektedir.
Şirkete ait cihazlarda iş profilleri
Android 10, yalnızca iş profili gerektiren şirkete ait cihazlar için yeni sağlama ve onay özellikleri sunar.
İş profilleri için geliştirilmiş hazırlama araçları
Android 10 ve sonraki sürümlerin yüklü olduğu, QR kodu veya sıfır dokunma kullanılarak kaydedilmiş cihazlarda iş profillerini hazırlayabilirsiniz. Şirkete ait bir cihazın temel hazırlığı sırasında, cihaz politikası denetleyici uygulamalarının (DPC'ler) iş profili veya tümüyle yönetilen kurulumu başlatmasına olanak tanıyan yeni bir amaç ekstrası kullanılır. İş profili oluşturulduktan veya tam yönetim kurulduktan sonra DPC'ler, ilk politikaları zorunlu kılmak için politika uyumluluğu ekranlarını başlatmalıdır.
DPC'nizin manifest dosyasında, bir etkinlikte GET_PROVISIONING_MODE için yeni bir intent filtresi beyan edin ve rastgele uygulamaların etkinliği başlatmasını önlemek için BIND_DEVICE_ADMIN iznini ekleyin. Örneğin:
<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>
Sistem, sağlama sırasında amaç filtresiyle ilişkili etkinliği başlatır. Bu etkinliğin amacı, bir yönetim modu (iş profili veya tümüyle yönetilen) belirtmektir.
Cihaz için uygun yönetim modunu belirlemeden önce ek hazırlık bilgilerini almak faydalı olabilir. Etkinlik, aşağıdakileri almak için
getIntent() işlevini çağırabilir:
DPC'ler yeni bir sonuç amacı da oluşturabilir ve buna aşağıdaki ekstraları ekleyebilir:
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE: Mevcut pakete ekleyin veya yeni bir paket oluşturun. Bu paket, DPC'niz politika uygunluğu ekranlarını başlattığında amaç ekstrası olarak gönderilir.EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE: Yalnızca iş profili hazırlama kapsamında bir iş hesabı ekliyorsanız taşınacak bir hesap belirtin.EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS
Cihazda yönetim modunu ayarlamak için putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode)'yı arayın. Burada desiredProvisioningMode şunları ifade eder:
- İş profili:
PROVISIONING_MODE_MANAGED_PROFILE - Tümüyle yönetilen:
PROVISIONING_MODE_FULLY_MANAGED_DEVICE
setResult(RESULT_OK,
Intent) aracılığıyla sağlama ayrıntılarını kurulum işlemine geri göndererek iş profili veya tümüyle yönetilen sağlama işlemini tamamlayın ve finish() ile tüm etkin ekranları kapatın.
Hazırlama işlemi tamamlandıktan sonra, DPC'lerin uygunluk ekranlarını başlatması ve ilk politika ayarlarını zorunlu kılması için yeni bir Amaç kullanılabilir. İş profili cihazlarında, uygunluk ekranları iş profilinde gösterilir. DPC'niz, kullanıcı kurulum akışından çıksa bile uygunluk ekranlarının kullanıcılara gösterilmesini sağlamalıdır.
DPC'nizin manifest dosyasında, bir etkinlikte ADMIN_POLICY_COMPLIANCE için yeni bir intent filtresi beyan edin ve rastgele uygulamaların etkinliği başlatmasını önlemek için BIND_DEVICE_ADMIN iznini ekleyin. Örneğin:
<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'niz, ACTION_PROFILE_PROVISIONING_COMPLETE yayınını dinlemek yerine bu yeni Intent'i kullanmalıdır.
Intent filtresiyle ilişkili etkinlik, getIntent() işlevini çağırarak EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE değerini alabilir.
Politikaya uygunluk sağlandıktan sonra ADMIN_POLICY_COMPLIANCE, setResult(RESULT_OK,
Intent) değerini döndürmeli ve finish() ile tüm etkin ekranları kapatmalıdır.
Tümüyle yönetilen cihazlar, kullanıcıları ana ekrana döndürür. İş profili cihazları, kullanıcıları ana ekrana döndürmeden önce kişisel hesaplarını eklemeye yönlendirir.
İş profili cihaz kimliği onayı
El değmeden kayıt özelliği kullanılarak sağlanan bir iş profilinin yöneticisi olarak ayarlanan DPC'ler, IMEI veya üreticinin seri numarası gibi güvenli donanım onaylı cihaz kimlikleri alabilir. Cihazda güvenli donanım (ör. güvenilir yürütme ortamı (TEE) veya güvenli öğe (SE)) bulunmalı ve cihaz kimliği onaylama ile el değmeden kayıt desteklenmelidir.
Bir iş profilinin yönetici bileşeni, DevicePolicyManager.generateKeyPair() işlevini çağırabilir ve idAttestationFlags bağımsız değişkeni için ID_TYPE_SERIAL, ID_TYPE_IMEI veya ID_TYPE_MEID değerlerinden birini ya da daha fazlasını iletebilir.
Cihaz kimliklerini ayıklama ve doğrulama hakkında daha fazla bilgi edinmek için Anahtar Onayı ile donanım tabanlı anahtar çiftlerini doğrulama başlıklı makaleyi inceleyin.
İş profiliyle ilgili iyileştirmeler
Profiller arası takvim görünürlüğünü ve bilinmeyen kaynaklardan uygulama yüklemelerinin cihaz genelinde engellenmesini desteklemek için yeni API'ler kullanıma sunuldu.
İş profili, cihaz genelinde bilinmeyen kaynaklar
Google Play (veya diğer güvenilir uygulama mağazaları) dışındaki kaynaklardan indirilen uygulamalara bilinmeyen kaynaklardan gelen uygulamalar denir. Android 10'da iş profillerinin yöneticileri, yeni kullanıcı kısıtlaması DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY ekleyerek cihazın herhangi bir yerinde bilinmeyen kaynaklardan uygulama yüklenmesini engelleyebilir.
Ancak bu kısıtlama eklendikten sonra cihazı kullanan kişiler adb kullanarak uygulama yüklemeye devam edebilir.
Kullanıcıların bilinmeyen kaynaklardan yanlışlıkla uygulama yüklemesini engellemek için bu kullanıcı kısıtlamasını eklemenizi öneririz. Bu kısıtlama, Google Play Hizmetleri'nin yüklenmesini gerektirmez. Eski Android sürümlerini desteklemek istiyorsanız Google Play için yönetilen yapılandırma değeri ayarlayabilirsiniz.
İzin verilen giriş cihazlarını iş profilleriyle sınırlama
İş profillerinin yöneticileri DevicePolicyManager.setPermittedInputMethods() işlevini çağırdığında kullanıcılar, cihazın tamamı yerine yalnızca iş profillerindeki izin verilen giriş yöntemleriyle kısıtlanır. Böylece kullanıcılar, cihazlarının kişisel tarafındaki giriş yöntemleri üzerinde tam denetime sahip olur.
İş profillerini sessizce silme
WIPE_SILENTLY
işareti DevicePolicyManager.wipeData() öğesine eklendi.
Bayrak ayarlanırsa kullanıcılar, iş profilleri wipeData() kullanılarak silindikten sonra bildirim almaz.
Tümüyle yönetilen cihazlar için yeni özellikler
Android 10, tümüyle yönetilen cihazlar için yeni özellikler ve API'ler sunar. Bunlar arasında manuel sistem güncellemeleri, EAP kablosuz ağ kimlik bilgilerini içerecek şekilde QR kodu ve NFC ile sağlama işlemlerinin genişletilmesi ve TLS üzerinden DNS desteği yer alır.
Sistem güncellemesini manuel olarak yükleme
Android 10'da, tamamen yönetilen cihazların yöneticileri sistem güncellemelerini sistem güncelleme dosyası aracılığıyla yükleyebilir. Manuel sistem güncellemeleri, BT yöneticilerinin aşağıdakileri yapmasına olanak tanır:
- Güncellemeleri geniş çapta yüklemeden önce az sayıda cihazda test edin.
- Bant genişliği sınırlı ağlarda yinelenen indirmelerden kaçının.
- Yüklemeleri kademelendirin veya cihazları yalnızca kullanılmadıkları zaman güncelleyin.
İlk olarak, bir BT yöneticisi otomatik yüklemeyi geciktirmek için (gerekirse) ertelenmiş sistem güncelleme politikası ayarlar. Ardından, cihazın DPC'si, cihaz üreticisinin sistem güncelleme dosyasının yoluyla installSystemUpdate()
işlevini çağırır. Sistem tarafından cihaz yeniden başlatılmadan önce oluşan hataları bildirmek için kullanılabilecek bir InstallSystemUpdateCallback
nesnesi iletin. Bir sorun oluşursa sistem, hata koduyla birlikte onInstallUpdateError() işlevini çağırır.
Cihaz yeniden başlatıldıktan sonra DPC'nizin, Build.FINGERPRINT gibi bir sürüm API'si kullanarak başarılı bir yükleme yaptığını onaylaması gerekir. Güncelleme başarısız olursa BT yöneticisine bildirin.
EAP Wi-Fi provisioning
Android 10'da, cihaz temel hazırlığı için kullanılan QR kodları ve NFC verileri, sertifikalar da dahil olmak üzere EAP yapılandırması ve kimlik bilgileri içerebilir. Bir kişi QR kodunu taradığında veya NFC etiketine dokunduğunda cihaz, EAP kullanarak yerel bir kablosuz ağda otomatik olarak kimlik doğrulaması yapar ve ek manuel giriş yapmadan hazırlama sürecini başlatır.
EAP kullanarak kablosuz ağ kimlik doğrulaması yapmak için EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
değeri "EAP" olan bir ekleyin. EAP kimlik doğrulamasını belirtmek için niyetinize aşağıdaki sağlama ekstralarını ekleyebilirsiniz:
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
Gizli DNS desteği
Kuruluşlar, dahili ana makine adlarının DNS sorguları da dahil olmak üzere DNS sorgularının sızdırılmasını önlemek için TLS üzerinden DNS'yi (Android cihazlarda Gizli DNS olarak adlandırılır) kullanabilir. Tümüyle yönetilen cihazların yönetici bileşenleri, cihazın gizli DNS ayarlarını kontrol edebilir. Gizli DNS modunu ayarlamak için: şunu çağırın:
setGlobalPrivateDnsModeOpportunistic()Sistem, destekleyen bir alan adı sunucusu keşfettiğinde cihazın gizli DNS kullanması için veyasetGlobalPrivateDnsModeSpecifiedHost()privateDnsHostbağımsız değişkeninde RFC7858'i destekleyen bir alan adı sunucusunun ana makine adını belirtmek için.
DPC'niz bu yöntemlerden birini çağırdığında, çağrı başarılı olursa sistem PRIVATE_DNS_SET_NO_ERROR değerini döndürür. Aksi takdirde hata döndürülür.
Bir cihazda ayarlanan gizli DNS modunu ve ana makineyi almak için getGlobalPrivateDnsMode()
ve getGlobalPrivateDnsHost() numaralı telefonu arayın.
DISALLOW_CONFIG_PRIVATE_DNS
kullanıcı kısıtlamasını ekleyerek kullanıcıların özel DNS ayarlarını değiştirmesini engelleyebilirsiniz.
VPN tam gizlilik modu muafiyeti
VPN kilitleme modu, bir DPC'nin VPN'yi kullanmayan tüm ağ trafiğini engellemesine olanak tanır. Tümüyle yönetilen cihazların ve iş profillerinin yöneticileri, uygulamaları kilitlenme modundan muaf tutabilir. Muaf tutulan uygulamalar varsayılan olarak VPN kullanır ancak VPN kullanılamıyorsa otomatik olarak diğer ağlara bağlanır. VPN'ye erişimi açıkça reddedilen muaf tutulan uygulamalar yalnızca diğer ağları kullanır.
Bir uygulamayı kilit modu dışında tutmak için yeni DevicePolicyManager yöntemini çağırın.
setAlwaysOnVpnPackage()
Bu yöntem, kilit modu dışında tutulan uygulama paketlerinin listesini kabul eder. DPC'nin eklediği tüm uygulama paketleri, yöntem çağrıldığında cihaza yüklenmiş olmalıdır. Bir uygulama kaldırılıp yeniden yüklenirse uygulamanın tekrar muaf tutulması gerekir. Daha önce kilitlenme modundan muaf tutulan uygulamaları almak için getAlwaysOnVpnLockdownWhitelist() işlevini çağırın.
Tümüyle yönetilen cihazların ve iş profillerinin yöneticilerinin kilitlenme modu durumunu almasına yardımcı olmak için Android 10'da isAlwaysOnVpnLockdownEnabled() yöntemi eklenmiştir.
Yeni yetki kapsamları
Android 10, bir DPC'nin diğer, daha uzmanlaşmış uygulamalara devredebileceği işlevlerin listesini genişletir. Android, bir görev için gereken API yöntemlerini kapsamlara göre gruplandırır. Bir kapsamı temsilciye devretmek için setDelegatedScopes() işlevini çağırın ve aşağıdaki kapsamları iletin:
DELEGATION_NETWORK_LOGGINGAğ etkinliği günlük kaydını temsilciye devretmek içinDELEGATION_CERT_SELECTIONSertifika seçimini temsilciye devretmek için
Android 10, temsilci uygulamaları için yeni bir sınıf olan
DelegatedAdminReceiver'ı kullanıma sunuyor. Sistem, bu yayın alıcısını kullanarak DPC benzeri geri aramaları temsilci uygulamalara gönderir. Ağ etkinliği günlüğü oluşturma ve sertifika seçimi için yetki verilmiş uygulamalar bu sınıfı uygulamalıdır. Bu bileşeni bir temsilci uygulamasına eklemek için aşağıdaki adımları uygulayın:
- Temsilci uygulamasına
DelegatedAdminReceiveralt sınıfı ekleyin. - Geri çağırma işlemlerinin her biri için bir intent filtresi işlemi ekleyerek
<receiver>öğesini uygulama manifestinde bildirin. Örneğin,ACTION_NETWORK_LOGS_AVAILABLEveyaACTION_CHOOSE_PRIVATE_KEY_ALIAS. - Yayın alıcısını
BIND_DEVICE_ADMINizniyle koruyun.
Aşağıdaki snippet'te hem ağ günlüğünü hem de sertifika seçimini işleyen tek bir temsilci uygulamanın uygulama manifesti gösterilmektedir:
<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>
Ağ etkinliği günlük kaydı
DPC'ler, kuruluşların kötü amaçlı yazılımları tespit edip izlemesine yardımcı olmak için sistem tarafından TCP bağlantılarını ve DNS aramalarını kaydedebilir. Android 10'da, tümüyle yönetilen cihazların yöneticileri ağ günlüğünü özel bir uygulamaya devredebilir.
Sistem bir grubu kullanıma sunduktan sonra ağ günlüklerini almak için temsilci uygulamalar önce DelegatedAdminReceiver alt sınıfını oluşturmalıdır (daha önce açıklanmıştır). Alt sınıfınızda, onNetworkLogsAvailable() geri çağırma işlevini Günlükleri alma bölümündeki yönergeleri uygulayarak kullanın.
Temsilci uygulamalar aşağıdaki DevicePolicyManager yöntemleri çağırabilir
(admin bağımsız değişkeni için null iletme):
Günlüklerin kaybolmasını önlemek için DPC'ler başka bir uygulamaya yetki vermeyi planlıyorsa ağ günlüğünü etkinleştirmemelidir. Yetki verilen uygulama, ağ günlüklerini etkinleştirmeli ve toplamalıdır. Bir DPC, ağ günlüğünü kaydetme görevini devrettikten sonra başka onNetworkLogsAvailable()
geri çağırma almaz.
Bir temsilci uygulamasından ağ etkinliği günlük kaydını nasıl bildireceğinizi öğrenmek için geliştirici kılavuzundaki Ağ etkinliği günlük kaydı başlıklı makaleyi okuyun.
Sertifika seçimi
Android 10'da tümüyle yönetilen cihazların, iş profillerinin ve ikincil kullanıcıların yöneticileri, sertifika seçimini özel bir uygulamaya devredebilir.
Sertifika takma adı seçmek için temsilci uygulamalar önce DelegatedAdminReceiver alt sınıfını oluşturmalıdır (daha önce açıklanmıştır). Alt sınıfınızda onChoosePrivateKeyAlias() geri çağırmasını uygulayın ve tercih edilen bir sertifika için bir takma ad döndürün veya kullanıcıdan sertifika seçmesini istemek için null döndürün.
Cihaz yöneticisi politikalarının desteğinin sonlandırılması
Android 10, uygulamaların ve DPC'lerin eski device_admin politikalarını uygulamalarını engeller. Müşterilerin ve iş ortaklarının tümüyle yönetilen cihazlara veya iş profillerine geçmesini öneririz. Aşağıdaki politikalar, Android 10'u hedefleyen bir cihaz yöneticisi tarafından çağrıldığında SecurityException hatası verir:
USES_POLICY_DISABLE_CAMERAUSES_POLICY_DISABLE_KEYGUARD_FEATURESUSES_POLICY_EXPIRE_PASSWORDUSES_POLICY_LIMIT_PASSWORD
Bazı uygulamalar, tüketici cihazı yönetimi için cihaz yöneticisini kullanır. Örneğin, kayıp bir cihazı kilitleme ve silme. Bu özelliği etkinleştirmek için aşağıdaki politikalar kullanılmaya devam eder:
Bu değişiklikler hakkında daha fazla bilgi için Cihaz yöneticisi desteğinin sonlandırılması başlıklı makaleyi inceleyin.
Uygulamalara yönelik yeni özellikler
Android 10'u hedefleyen uygulamalar, gizli verileri görüntülemeden veya kritik özellikleri başlatmadan önce cihazda ayarlanan ekran kilidi karmaşıklığını sorgulayabilir. KeyChain API'sini çağıran uygulamalar, davranış iyileştirmelerinden yararlanır. Ayrıca VPN uygulamaları için yeni özellikler de kullanıma sunulur.
Ekran kilidi kalite kontrolü
Android 10'dan itibaren, ekran kilidi gerektiren kritik özelliklere sahip uygulamalar, cihazın veya iş profilinin ekran kilidi karmaşıklığını sorgulayabilir. Daha güçlü bir ekran kilidine ihtiyaç duyan uygulamalar, kullanıcıyı sistem ekran kilidi ayarlarına yönlendirerek güvenlik ayarlarını güncellemelerine olanak tanıyabilir.
Ekran kilidi kalitesini kontrol etmek için:
- Uygulamanızın manifest dosyasına yeni
REQUEST_PASSWORD_COMPLEXITYiznini ekleyin. DevicePolicyManager.getPasswordComplexity()numaralı telefonu arayın. Karmaşıklık dört kategoriye ayrılır:
Sistem ekran kilidi ayarlarını başlatmak için
ACTION_SET_NEW_PASSWORD
ile ek EXTRA_PASSWORD_COMPLEXITY'ı kullanın. Amaç ekstrasında belirtilen karmaşıklığı karşılamayan seçenekler devre dışı bırakılır. Kullanıcılar, mevcut ekran kilidi seçeneklerinden birini belirleyebilir veya ekrandan çıkabilir.
En iyi uygulama: Sistem ekran kilidi sayfasını başlatmadan önce uygulamanızda bir mesaj gösterin. Uygulamanız devam ettiğinde DevicePolicyManager.getPasswordComplexity() işlevini tekrar çağırın. Daha güçlü bir ekran kilidi hâlâ gerekiyorsa kullanıcıları güvenlik ayarlarını güncellemeye tekrar tekrar yönlendirmek yerine erişimi kısıtlayın.
VPN uygulamalarında HTTP proxy desteği
Android 10'da VPN uygulamaları, VPN bağlantıları için bir HTTP proxy ayarlayabilir. HTTP proxy'si eklemek için VPN uygulamasının, VpnService.Builder.setHttpProxy() çağrılmadan önce ana makine ve bağlantı noktası içeren bir ProxyInfo örneği yapılandırması gerekir.
Sistem ve birçok ağ kitaplığı bu proxy ayarını kullanır ancak sistem, uygulamaları HTTP isteklerini proxy'lemeye zorlamaz.
HTTP proxy'sinin nasıl ayarlanacağını gösteren örnek kod için ToyVPN örnek uygulamasına bakın.
VPN hizmeti modları
VPN uygulamaları, hizmetin her zaman açık VPN nedeniyle çalışıp çalışmadığını ve tam kilitleme modunun etkin olup olmadığını tespit edebilir. Android 10'da eklenen yeni yöntemler, kullanıcı arayüzünüzü ayarlamanıza yardımcı olabilir. Örneğin, her zaman açık VPN, hizmetinizin yaşam döngüsünü kontrol ettiğinde bağlantıyı kesme düğmenizi devre dışı bırakabilirsiniz.
VPN uygulamaları, VpnService yöntemlerini hizmete bağlandıktan ve yerel arayüzü oluşturduktan sonra çağırabilir:
- Sistemin, her zaman açık VPN nedeniyle hizmeti başlatıp başlatmadığını öğrenmek için
isAlwaysOn() isLockdownEnabled()sistemin, VPN kullanmayan bağlantıları engelleyip engellemediğini öğrenmek için
Hizmetiniz çalışırken her zaman açık durumu aynı kalır ancak kilit modu durumu değişebilir.
Anahtarlık iyileştirmeleri
Android 10, KeyChain API'siyle ilgili çeşitli iyileştirmeler sunar.
Bir uygulama KeyChain.choosePrivateKeyAlias() işlevini çağırdığında Android 10 ve sonraki sürümleri çalıştıran cihazlar, kullanıcının seçebileceği sertifika listesini çağrıda belirtilen verenlere ve anahtar algoritmalarına göre filtreler.
Örneğin, bir TLS sunucusu TLS el sıkışması kapsamında Certificate Request (Sertifika İsteği) mesajı gönderdiğinde ve tarayıcı KeyChain.choosePrivateKeyAlias() işlevini çağırdığında, sertifika seçimi istemi yalnızca verenler parametresiyle eşleşen seçenekleri içerir. Eşleşen seçenek yoksa veya cihaza sertifika yüklenmemişse kullanıcıya seçim istemi gösterilmez.
Ayrıca, KeyChain artık anahtarların veya CA sertifikalarının içe aktarılabilmesi için cihazda ekran kilidi olmasını gerektirmiyor.