Android 10'da kurumlar için yenilikler

Bu sayfada, Android 10'da kullanıma sunulan yeni kurumsal API'ler, özellikler ve davranış değişikliklerine genel bir bakış sunulmaktadır.

Şirkete ait cihazlar için iş profilleri

Android 10, yalnızca iş profili gerektiren şirkete ait cihazlar için yeni temel hazırlık ve onay özellikleri sunar.

İş profilleri için gelişmiş temel hazırlık araçları

QR kodu veya El değmeden önce kaydedilen Android 10 ve sonraki sürümlerin yüklü olduğu cihazlarda iş profillerinin temel hazırlığını yapabilirsiniz. Şirkete ait bir cihazın temel hazırlığı sırasında, yeni bir intent ekstrası, cihaz politikası denetleyici uygulamalarının (DPC'ler) iş profili veya tümüyle yönetilen kurulumu başlatmasına olanak tanır. Bir iş profili oluşturulduktan veya tam yönetim oluşturulduktan sonra, DPC'ler başlangıçtaki politikaları uygulamak için politikaya uygunluk ekranlarını başlatmalıdır.

DPC'nizin manifest dosyasında bir etkinlikteki GET_PROVISIONING_MODE için yeni bir intent filtresi tanımlayın 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>

Temel hazırlık sırasında, sistem 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 temel hazırlık eklerinin alınması yararlı olabilir. Etkinlik, aşağıdakileri almak için getIntent() işlevini çağırabilir:

DPC'ler ayrıca yeni bir sonuç amacı oluşturabilir ve buna aşağıdaki ekstraları ekleyebilir:

Cihazda yönetim modunu ayarlamak için putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode) numaralı telefonu arayın. Burada desiredProvisioningMode:

  • İş profili: PROVISIONING_MODE_MANAGED_PROFILE
  • Tümüyle yönetilen: PROVISIONING_MODE_FULLY_MANAGED_DEVICE

Temel hazırlık ayrıntılarını setResult(RESULT_OK, Intent) üzerinden kuruluma geri göndererek iş profilini veya tümüyle yönetilen temel hazırlığı tamamlayın ve finish() ile tüm etkin ekranları kapatın.

Temel hazırlık tamamlandıktan sonra, DPC'lerin uygunluk ekranlarını başlatması ve ilk politika ayarlarını zorunlu kılması için yeni bir Intent kullanılabilir. İş profili kullanılan cihazlarda, uygunluk ekranları iş profilinde gösterilir. DPC'niz, kullanıcı kurulum akışından kaçsa bile uygunluk ekranlarının kullanıcılara gösterilmesini sağlamalıdır.

DPC'nizin manifest dosyasında bir etkinlikteki ADMIN_POLICY_COMPLIANCE için yeni bir intent filtresi tanımlayın 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.

Amaç filtresiyle ilişkili etkinlik, EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE parametresini almak için getIntent() yöntemini çağırabilir. ADMIN_POLICY_COMPLIANCE, politikaya uygunluk gerçekleştirdikten sonra 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ılardan ana ekrana döndürmeden önce kişisel hesaplarını eklemelerini ister.

İş profili cihaz kimliği onayı

El değmeden kayıt kullanılarak sağlanan iş profilinin yöneticisi olarak ayarlanan DPC'ler, IMEI veya üreticinin seri numarası gibi güvenli donanım tarafından onaylanmış cihaz kimliklerini alabilir. Cihaz, güvenli donanımlar (ör. güvenilir yürütme ortamı (TEE) veya Secure Element (SE)) içermeli, cihaz kimliği onayını ve el değmeden kayıt sürecini desteklemelidir.

Bir iş profilinin yönetici bileşeni DevicePolicyManager.generateKeyPair() yöntemini çağırabilir ve idAttestationFlags bağımsız değişkeni için ID_TYPE_SERIAL, ID_TYPE_IMEI ya da ID_TYPE_MEID özelliklerinden birini veya daha fazlasını iletebilir.

Cihaz kimliklerini ayıklama ve doğrulama hakkında daha fazla bilgi edinmek için Donanım destekli anahtar çiftlerini Anahtar Onayı ile doğrulama başlıklı makaleye bakın.

İş profili iyileştirmeleri

Profiller arası takvim görünürlüğünü desteklemek ve bilinmeyen kaynaklardan uygulama yüklemelerinin cihaz genelinde engellenmesini sağlamak için yeni API'ler kullanıma sunulmuştur.

İş profili, cihaz genelinde bilinmeyen kaynaklar

Google Play dışındaki kaynaklardan (veya diğer güvenilir uygulama mağazaları) indirilen uygulamalara bilinmeyen kaynaklardan uygulama adı verilir. Android 10'da iş profili yöneticileri, yeni kullanıcı kısıtlamasını DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY ekleyerek herhangi bir kullanıcının veya profilin cihazın herhangi bir yerinde bilinmeyen kaynaklardan uygulama yüklemesini engelleyebilir. Ancak bu kısıtlama eklendikten sonra, cihazı kullanan kişi adb kullanarak uygulama yüklemeye devam edebilir.

Kullanıcıların yanlışlıkla bilinmeyen kaynaklardan uygulama yüklemesini engellemek için Google Play hizmetlerinin yüklenmesini gerektirmediğinden bu kullanıcı kısıtlamasını eklemenizi öneririz. Daha eski Android sürümlerini desteklemek istiyorsanız Google Play için yönetilen yapılandırma değeri belirleyebilirsiniz.

İzin verilen giriş cihazlarını iş profilleriyle sınırla

İş profili yöneticileri DevicePolicyManager.setPermittedInputMethods()'i çağırdığında, kullanıcılar cihazın tamamı yerine yalnızca iş profillerinde izin verilen giriş yöntemleriyle kısıtlanır. Böylece kullanıcılara cihazlarının kişisel tarafındaki giriş yöntemleri üzerinde tam kontrol verilir.

İş profillerini sessizce silme

DevicePolicyManager.wipeData() alan adına WIPE_SILENTLY işareti eklendi. İşaret ayarlanırsa iş profilleri wipeData() ile temizlendikten sonra kullanıcılara bildirim gönderilmez.

Tümüyle yönetilen cihazlar için yeni özellikler

Android 10, tümüyle yönetilen cihazlar için manuel sistem güncellemeleri, QR kodu ve NFC temel hazırlığının EAP kablosuz ağın kimlik bilgilerini içerecek şekilde genişletilmesi ve TLS üzerinden DNS desteği gibi yeni özellikler ve API'ler sunar.

Manuel sistem güncellemesi yükleme

Android 10'da, tümüyle yönetilen cihazların yöneticileri sistem güncellemelerini bir sistem güncelleme dosyası aracılığıyla yükleyebilir. Manuel sistem güncellemeleri, BT yöneticilerinin aşağıdakileri yapmasına olanak tanır:

  • Bir güncellemeyi 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 bölüp veya yalnızca kullanılmadıkları zamanlarda cihazları güncelleyin.

Öncelikle, BT yöneticisi otomatik yüklemeyi geciktirmek (gerekirse) için ertelenmiş bir sistem güncelleme politikası belirler. Ardından, bir cihazın DPC'si, cihaz üreticisinin sistem güncelleme dosyasının yoluyla installSystemUpdate() numaralı telefonu arar. Cihaz yeniden başlatılmadan önce oluşan hataları bildirmek için sistemin kullanabileceği bir InstallSystemUpdateCallback nesnesi iletin. Bir şeyler ters giderse sistem onInstallUpdateError()'i arar ve hata kodunu bildirir.

Cihaz yeniden başlatıldıktan sonra DPC'nizin Build.FINGERPRINT gibi bir sürüm API'si kullanarak başarılı yükleme işlemini onaylaması gerekir. Güncelleme başarısız olursa hatayı bir BT yöneticisine bildirin.

EAP kablosuz ağ temel hazırlığı

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ını ve kimlik bilgilerini içerebilir. Bir kişi QR kodunu taradığında veya NFC etiketine dokunduğunda, cihaz EAP kullanarak yerel kablosuz ağa kimlik doğrulamasını otomatik olarak yapar ve herhangi bir ek manuel giriş olmadan temel hazırlık işlemini başlatır.

EAP kullanarak kablosuz ağ kimliğini doğrulamak için "EAP" değeriyle fazladan bir EXTRA_PROVISIONING_WIFI_SECURITY_TYPE ekleyin. EAP kimlik doğrulamasını belirtmek için amacınıza aşağıdaki temel hazırlık ekstralarını ekleyebilirsiniz:

Gizli DNS desteği

Kuruluşlar, dahili ana makine adları 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 şu çağrıyı yapın:

DPC'niz bu yöntemlerden birini çağırdığında, çağrı başarılı olduysa sistem PRIVATE_DNS_SET_NO_ERROR değerini döndürür. Aksi takdirde, bir hata döndürür.

Bir cihazda Gizli DNS modunu ve ana makine ayarını 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 gizli DNS ayarlarını değiştirmesini engelleyebilirsiniz.

VPN tam gizlilik modu muafiyeti

VPN tam gizlilik modu, 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ı tam kilitleme modundan muaf tutabilir. Muaf tutulan uygulamalar varsayılan olarak VPN kullanır. Ancak VPN yoksa otomatik olarak diğer ağlara bağlanır. VPN'e erişimi açık bir şekilde reddedilen muaf tutulan uygulamalar da yalnızca diğer ağları kullanır.

Bir uygulamayı kilitlenme modundan muaf tutmak için muaf tutulan uygulama paketlerinin listesini kabul eden yeni DevicePolicyManager yöntemini setAlwaysOnVpnPackage() çağırın. DPC'nin eklediği tüm uygulama paketleri, yöntem çağrıldığında cihaza yüklenmelidir. Bir uygulama kaldırılıp yeniden yüklenirse uygulamanın tekrar muaf tutulması gerekir. Daha önce tam gizlilik modundan muaf tutulan uygulamaları almak için getAlwaysOnVpnLockdownWhitelist() numaralı telefonu arayın.

Tümüyle yönetilen cihazların ve iş profili yöneticilerinin tam kilitleme modu durumunu almasına yardımcı olmak için Android 10, isAlwaysOnVpnLockdownEnabled() yöntemini ekler.

Yeni yetki kapsamları

Android 10, DPC'nin daha özel uygulamalara yetki verebileceği işlevlerin listesini genişletir. Android, bir görev için gereken API yöntemlerini kapsamlar halinde gruplandırır. Bir kapsam yetkilendirmek için setDelegatedScopes() çağrısı yapın ve aşağıdaki kapsamlardan birini veya daha fazlasını iletin:

Android 10, yetki verme uygulamaları için yeni DelegatedAdminReceiver sınıfını kullanıma sunuyor. Sistem, uygulama yetkisi vermek üzere DPC benzeri geri çağırmalar göndermek için bu yayın alıcısını kullanır. Ağ etkinliği günlüğü kaydı ve sertifika seçimi yetkisi verilen uygulamalar bu sınıfı uygulamalıdır. Bu bileşeni yetki verilen bir uygulamaya eklemek için şu adımları uygulayın:

  1. Yetki verilmiş uygulamaya bir DelegatedAdminReceiver alt sınıfı ekleyin.
  2. Uygulama manifest dosyasında <receiver> tanımlayarak her geri çağırma için intent filtresi işlemi ekleyin. Örneğin, ACTION_NETWORK_LOGS_AVAILABLE veya ACTION_CHOOSE_PRIVATE_KEY_ALIAS.
  3. Yayın alıcısını BIND_DEVICE_ADMIN izniyle koruyun.

Aşağıdaki snippet'te hem ağ günlük kaydını hem de sertifika seçimini işleyen tek bir yetki verilmiş 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ı günlüğe kaydedebilir. Android 10'da, tümüyle yönetilen cihazların yöneticileri özel bir uygulamaya ağ günlük kaydı yetkisi verebilir.

Sistem bir grubu kullanıma sunduktan sonra ağ günlüklerini almak için yetki verilen uygulamaların, ilk alt sınıf olan DelegatedAdminReceiver (önceden açıklandığı gibi) olması gerekir. Alt sınıfınızda, Günlükleri alma bölümündeki yönergeleri izleyerek onNetworkLogsAvailable() geri çağırmasını uygulayın.

Yetki verilmiş uygulamalar aşağıdaki DevicePolicyManager yöntemlerini çağırabilir (admin bağımsız değişkeni için null kullanılmaktadır):

Günlük kayıtlarını kaybetmemek için DPC'ler, başka bir uygulamaya yetki vermeyi planlıyorsa ağ günlük kaydını etkinleştirmemelidir. Yetki verilen uygulama, ağ günlüklerini etkinleştirmeli ve toplamalıdır. DPC ağ günlük kaydı için yetki verdikten sonra başka onNetworkLogsAvailable() geri çağırması almaz.

Yetkili bir uygulamadan ağ etkinliği günlük kaydını nasıl raporlayacağınızı öğrenmek için Ağ etkinliği günlük kaydı adlı geliştirici kılavuzunu okuyun.

Sertifika seçimi

Android 10'da tümüyle yönetilen cihazların, iş profillerinin ve ikincil kullanıcıların yöneticileri özel bir uygulamaya sertifika seçimi yetkisi verebilir.

Sertifika takma adı seçmek için yetki verilen uygulamaların birinci sınıf DelegatedAdminReceiver (daha önce açıklanmıştır) olması gerekir. Alt sınıfınızda onChoosePrivateKeyAlias() geri çağırmasını uygulayın ve tercih edilen sertifika için bir takma ad döndürün veya kullanıcıdan sertifika seçmesini istemek için null kodunu döndürün.

Cihaz yöneticisi politikalarının kullanımdan kaldırılması

Android 10, uygulamaların ve DPC'lerin eski cihaz yöneticisi politikalarını uygulamasını engeller. Müşterilerin ve iş ortaklarının tümüyle yönetilen cihazlara veya iş profillerine geçiş yapmalarını öneririz. Aşağıdaki politikalar, Android 10'u hedefleyen bir cihaz yöneticisi tarafından çağrıldığında bir SecurityException hatası verir:

Bazı uygulamalar, tüketici cihaz yönetimi için cihaz yöneticisini kullanır. Örneğin, kayıp bir cihazı kilitleme ve silme. Bunun için aşağıdaki politikalar kullanılabilir:

Bu değişiklikler hakkında daha fazla bilgi için Cihaz yöneticisi desteğinin sonlandırılması konusunu okuyun.

Uygulamalara yönelik yeni özellikler

Android 10'u hedefleyen uygulamalar, gizli verileri görüntülemeden veya kritik özellikleri kullanıma sunmadan önce bir cihazda ayarlanan ekran kilidi karmaşıklığını sorgulayabilir. KeyChain API'yi çağıran uygulamalar davranış iyileştirmelerinden yararlanırken VPN uygulamaları için yeni özellikler de mevcut.

Ekran kilidi kalite kontrolü

Android 10'dan itibaren, ekran kilidi gerektiren kritik özelliklere sahip uygulamalar bir 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üncelleyebilir.

Ekran kilidi kalitesini kontrol etmek için:

Sistem ekran kilidi ayarlarını başlatmak için ACTION_SET_NEW_PASSWORD ile birlikte ekstra EXTRA_PASSWORD_COMPLEXITY kullanın. Amaç ekstra bölümünde 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örüntüleyin. Uygulamanız devam ettirildiğinde DevicePolicyManager.getPasswordComplexity() numaralı telefonu tekrar arayın. Yine de daha güçlü bir ekran kilidi gerekliyse kullanıcılardan güvenlik ayarlarını güncellemelerini sürekli olarak istemek yerine erişimi kısıtlayın.

VPN uygulamalarında HTTP proxy desteği

Android 10'da VPN uygulamaları kendi VPN bağlantısı için HTTP proxy ayarlayabilir. HTTP proxy eklenebilmesi için VPN uygulamasının, VpnService.Builder.setHttpProxy() çağrısı yapmadan önce ana makine ve bağlantı noktasıyla ProxyInfo örneğini yapılandırması gerekir. Sistem ve birçok ağ iletişimi kitaplığı bu proxy ayarını kullanır ancak sistem, uygulamaları HTTP isteklerinde proxy yapmaya zorlamaz.

HTTP proxy'nin nasıl ayarlanacağını gösteren örnek kod için ToyVPN örnek uygulamasına bakın.

VPN hizmet modları

VPN uygulamaları, hizmetin her zaman açık VPN nedeniyle ve tam kilitleme modunun etkin olup olmadığını keşfedebilir. Android 10'a 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ı, hizmete bağlandıktan ve yerel arayüzü oluşturduktan sonra aşağıdaki VpnService yöntemlerini çağırabilir:

  • Sistemin hizmeti her zaman açık VPN nedeniyle başlatıp başlatmadığını öğrenmek için isAlwaysOn()
  • Sistemin, VPN kullanmayan bağlantıları engelleyip engellemediğini öğrenmek için isLockdownEnabled()

Hizmetiniz çalışırken her zaman açık durumu aynı kalır ancak tam kilitleme modu durumu değişebilir.

Anahtar zinciri iyileştirmeleri

Android 10, KeyChain API ile ilgili çeşitli iyileştirmeler sunar.

Bir uygulama KeyChain.choosePrivateKeyAlias() çağırdığında, Android 10 ve sonraki sürümlerin yüklü olduğu cihazlar, kullanıcının görüşmede belirtilen sertifika verenlere ve anahtar algoritmalara göre seçebileceği sertifika listesini filtreler.

Örneğin, bir TLS sunucusu TLS el sıkışması kapsamında Sertifika İsteği mesajı gönderdiğinde ve tarayıcı KeyChain.choosePrivateKeyAlias() çağrısında bulunduğunda, sertifika seçimi istemi yalnızca verenin parametresiyle eşleşen seçenekleri içerir. Herhangi bir eşleştirme seçeneği yoksa veya cihazda yüklü sertifika yoksa seçim istemi kullanıcıya gösterilmez.

Ayrıca KeyChain, anahtarların veya CA sertifikalarının içe aktarılabilmesi için cihazlarda ekran kilidi kullanılmasını zorunlu kılmamaktadır.