Bir hizmetin, yürütmesine izin verilmeyen bir işlemi gerçekleştirmeye çalışması durumunda yetkilendirme ihlali oluşur. Standart permissionsOnly zorlama modunda, yazılımla tanımlanan araç (SDV) çerçevesi, öznenin veya sanal makinesinin (VM) politikasında belirtilen gerekli izne sahip olup olmadığını kontrol eder.
İhlal mesajlarını güvenlik bağlamında değerlendirmeniz gerekir. Her ihlal, bir hatayı veya yetkisiz erişim girişimini göstermez.
Tüm yetkilendirme kararları günlüğe kaydedilir. Bunları görüntülemek için logcat çıkışında denetleme mesajlarını arayın:
adb -s $SERIAL logcat | grep 'audit message'
Başarılı yetkilendirme
Başarılı kontroller debug düzeyinde günlüğe kaydedilir.
Bu, konuyla ilgili gerekli iznin beyan edildiğini gösterir:
D SdvServiceManagerServer: instance2:com.sdv.google.sample.bar.ServiceBundleBar/instance declares permission to access com.sdv.google.sample.foo.ServiceBundleFoo#foo-rpc, audit message: ...
İhlaller ve eksik izinler
İzin eksik olduğunda ihlaller oluşur.
Bu durum, yetkilendirme politikasında konuyla ilgili client, server, publisher veya subscriber gibi gerekli izinlerin olmaması ya da konunun sanal makinesinde sanal makine düzeyindeki politikada bu izinlerin olmaması durumunda ortaya çıkar.
Bu, error düzeyinde kaydedilir:
E SdvServiceManagerServer: Authz violation. instance2:com.sdv.google.sample.bar.ServiceBundleBar/instance does not declare permission to access com.sdv.google.sample.foo.ServiceBundleFoo#foo-rpc, audit message: Subject lacks 'client' permission...
Düzeltme
Günlüğün audit message bölümünde genellikle ihlali çözmek için ne eklenmesi gerektiğiyle ilgili faydalı bir öneri yer alır.
Örneğin, şuna benzer bir izin hatası görebilirsiniz:
Subject 'vm:com.client.Bundle/default' lacks 'client' permission for service 'com.server.TargetType' with channel 'my-unit'. Add 'client { service: "com.server.TargetType" channel: "my-unit" }' to the subject's Authz policy
Bu durumu düzeltmek için kuralı konu sahibinin yetkilendirme politikasına ekleyin. textproto:
client {
service: "com.server.TargetType"
channel: "my-unit"
}
Hata mesajında, konuyla ilgili sanal makinede eksik bir izin olduğu belirtiliyorsa bu izni sanal makine düzeyindeki politikaya (ör. com.oem.sdv.authz APEX'te <vm_name>.textproto veya .default.textproto) eklemeniz gerekir:
allow_server {
service: "com.server.TargetType"
channel: "my-unit"
}
EKL'lerden taşıma
Geriye dönük uyumluluk ve taşıma için çerçeve, önceki erişim kontrol listelerini (EKL'ler) dikkate alan ACLs only, Lenient ve Strict modlarını destekler.
Yalnızca EKL'ler modu
ACLs only modunda, erişime yalnızca ACL'ler izin veriyorsa izin verilir. İzinler yok sayılır. EKL'ler erişimi reddederse bir hata günlüğe kaydedilir:
E SdvServiceManagerServer: Authz violation. com.sdv.google.sample.foo.ServiceBundleFoo#foo-rpc denies access to instance2:com.sdv.google.sample.bar.ServiceBundleBar/instance, audit message: ...
Esnek mod
Lenient modunda, erişime izin verilmesi için ACL'lerin veya izinlerin erişime izin vermesi gerekir.
EKL'ler kullanılarak erişim verilir ancak izinler eksikse sistemin işlevsel kalmasını sağlarken eksik izinleri belirlemenize yardımcı olmak için debug düzeyinde geçici ihlal olarak kaydedilir:
D SdvServiceManagerServer: Permissions Authz violation (access granted by ACLs): instance2:com.sdv.google.sample.bar.ServiceBundleBar/instance does not declare permission to access com.sdv.google.sample.foo.ServiceBundleFoo#foo-rpc, audit message: ...
Hem erişim kontrol listeleri hem de izinler başarısız olursa her ikisi için de hata olarak günlüğe kaydedilir:
E SdvServiceManagerServer: Authz violation. com.sdv.google.sample.foo.ServiceBundleFoo#foo-rpc denies access to instance2:com.sdv.google.sample.bar.ServiceBundleBar/instance, audit message: ...
E SdvServiceManagerServer: Authz violation. instance2:com.sdv.google.sample.bar.ServiceBundleBar/instance does not declare permission to access com.sdv.google.sample.foo.ServiceBundleFoo#foo-rpc, audit message: ...
Yüksek düzey modu
Strict modunda hem ACL'ler hem de izinler erişime izin vermelidir. Erişim kontrol listeleri veya izinler başarısız olursa erişim reddedilir ve bir hata günlüğe kaydedilir.