Нарушения прав отладки

Нарушение авторизации происходит, когда служба пытается выполнить действие, которое ей не разрешено выполнять. В стандартном режиме принудительного применения permissionsOnly ) платформа программно-определяемого транспортного средства (SDV) проверяет, имеет ли субъект или его виртуальная машина (ВМ) необходимые разрешения, указанные в его политике.

Необходимо оценивать сообщения о нарушениях в контексте безопасности. Не каждое нарушение указывает на ошибку или попытку несанкционированного доступа.

Все решения об авторизации регистрируются в журнале. Чтобы просмотреть их, найдите в выводе logcat сообщения аудита:

adb -s $SERIAL logcat | grep 'audit message'

Успешная авторизация

Успешные проверки регистрируются на уровне debug .

Это означает, что субъект имеет заявленное необходимое разрешение:

D SdvServiceManagerServer: instance2:com.sdv.google.sample.bar.ServiceBundleBar/instance declares permission to access com.sdv.google.sample.foo.ServiceBundleFoo#foo-rpc, audit message: ...

Отсутствуют нарушения и разрешения.

Нарушения происходят, когда отсутствует разрешение.

Это происходит, когда у субъекта отсутствуют необходимые разрешения, такие как client , server , publisher или subscriber , в его политике авторизации, или когда у виртуальной машины субъекта отсутствуют такие разрешения в политике на уровне виртуальной машины.

Это регистрируется на уровне error :

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...

Очистка

audit message часто содержится полезное предложение о том, что необходимо добавить для устранения нарушения.

Например, вы можете увидеть ошибку доступа следующего вида:

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

Для устранения этой проблемы добавьте правило в текстовый протокол политики авторизации субъекта:

client {
    service: "com.server.TargetType"
    channel: "my-unit"
}

Если сообщение об ошибке указывает на отсутствие разрешения в виртуальной машине субъекта, необходимо добавить его в политику уровня виртуальной машины, например, <vm_name>.textproto или .default.textproto в файле APEX com.oem.sdv.authz :

allow_server {
    service: "com.server.TargetType"
    channel: "my-unit"
}

Переход с ACL

Для обеспечения обратной совместимости и миграции платформа поддерживает режимы ACLs only ), Lenient и Strict , которые учитывают более ранние списки контроля доступа (ACL).

режим только ACL

В режиме ACLs only доступ разрешается только в том случае, если это разрешено списками ACL. Права доступа игнорируются. Если списки ACL запрещают доступ, в журнал записывается ошибка:

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: ...

Мягкий режим

В режиме Lenient доступ разрешен, если это позволяют списки контроля доступа (ACL) или разрешения. Если доступ предоставлен с помощью ACL, но отсутствуют необходимые разрешения, это регистрируется как мягкое нарушение на уровне debug , чтобы помочь вам выявить отсутствующие разрешения, сохраняя при этом работоспособность системы.

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: ...

Если и списки контроля доступа (ACL), и разрешения не работают, это регистрируется как ошибка для обоих случаев:

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: ...

Строгий режим

В Strict режиме доступ должен быть разрешен как списками контроля доступа (ACL), так и правами доступа. Если хотя бы один из списков ACL или прав доступа не выполняется, доступ запрещается, и в журнал регистрируется ошибка.