android - 如何锁定我公司的 Android 服务?

标签 android android-service selinux android-service-binding android-security

背景:
我正在 Android 操作系统中构建一项服务,我希望它只能由我公司发布的应用程序访问。此服务作为基于 Java 的系统应用程序的组件实现,并且所述系统应用程序必须由平台证书签名才能使用它所需的多个系统权限(protectionLevel="signature|privileged"in frameworks/base/core/资源库/AndroidManifest.xml)。将访问它的应用程序需要由我的公司证书(不同于平台证书)签名,因此 AFAIK 服务需要远程导出。这些应用程序将使用 messenger 跨进程与服务通信。 (尽管 AIDL 也是一种选择)。

问题:
如何将导出的系统服务锁定到我公司的应用程序?
我已经不得不为我公司的另一个项目的应用程序实现自定义 SELinux 域,因此 SELinux 策略解决方案(例如,只允许给定 SELinux 域的成员绑定(bind)到给定服务)将是理想的。

最佳答案

如果我了解你的情况,你有:

  • 系统应用内的服务,因此它具有系统应用权限。

  • 需要与此服务通信的应用程序,并且您知道如何为它们创建一个单独的 selinux 域。

在这种情况下,您可以在 init.rc 中使用与您的应用程序相同的 selinux 上下文和具有系统权限的域套接字来实现服务。现在,只有您的应用程序可以访问 init.rc 服务,它可以使用套接字与 java 服务进行通信。

关于android - 如何锁定我公司的 Android 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38234921/

相关文章:

android - 在 android 中的相机中捕获图像后的全屏预览

android - 是否建议使用 Android WorkManager 来执行长任务?

java - 将服务添加到具有困难包结构的 Android list (LibGDX)/在 Android list 中引用包

linux - MySql SeLinux 策略权限

CENTOS 8/SELinux 的 Pm2 启动问题

android - 使用长短名称在 Android 中搜索应用

android - 如果内部布局有边距,则 scrollview 不工作

Android广播接收器在动态注册时不会唤醒应用程序

android - 单击按钮后如何从 float 的相应 recyclerview 项目中获取相应的文本和图像?

php - 当启用 SELinux 时,如何允许 PHP 在 exec() 调用中使用 at 命令?