Связыватель Android - ограничение вызовов связывателей одним процессом - PullRequest
1 голос
/ 17 октября 2019

У меня есть Java-сервис Android, который взаимодействует с собственным процессом через связыватель (AIDL).

Я вижу, что сервис отображается в списке "список служб оболочки adb". Также я могу отправлять команды в эту службу с помощью «запуска службы оболочки adb 1 xxx».

Для этого я бы хотел, чтобы транзакции IPC связующего выполнялись только между этой конкретной службой Java и собственным процессом.

Я не смог найти нигде убедительную информацию. Любая помощь в этом отношении с благодарностью.

1 Ответ

1 голос
/ 18 октября 2019

Управление доступом к интерфейсам связывателя может быть выполнено с помощью SELinux.

В зависимости от того, используете ли вы binder или vdbinder, вы определяете контекст службы в service_contexts или vndservice_contextsфайл, подобный следующему:

myservice      u:object_r:myservice_[vnd]service:s0

Примечание : myservice - это имя, которое вы указываете в defaultServiceManager()->addService()

Теперь вы можете явно определить, к какому процессу разрешен доступmyservice в файле политики .te.

Пример : разрешить myclient доступ к myservice:

allow myclient myservice_[vnd]service:service_manager find
[vnd]binder_use(myclient)
binder_call(myclient, myservice_[vnd]service)

Более подробную информацию можно найти здесь .

...