| type statsd, domain, mlstrustedsubject; |
| |
| type statsd_exec, system_file_type, exec_type, file_type; |
| binder_use(statsd) |
| |
| # Allow statsd to scan through /proc/pid for all processes. |
| r_dir_file(statsd, domain) |
| |
| # Allow executing files on system, such as running a shell or running: |
| # /system/bin/toolbox |
| # /system/bin/logcat |
| # /system/bin/dumpsys |
| allow statsd devpts:chr_file { getattr ioctl read write }; |
| allow statsd shell_exec:file rx_file_perms; |
| allow statsd system_file:file execute_no_trans; |
| allow statsd toolbox_exec:file rx_file_perms; |
| |
| userdebug_or_eng(` |
| allow statsd su:fifo_file read; |
| ') |
| |
| # Create, read, and write into /data/misc/stats-data, /data/misc/stats-system. |
| allow statsd stats_data_file:dir create_dir_perms; |
| allow statsd stats_data_file:file create_file_perms; |
| |
| # Allow statsd to make binder calls to any binder service. |
| binder_call(statsd, appdomain) |
| binder_call(statsd, healthd) |
| binder_call(statsd, incidentd) |
| userdebug_or_eng(` |
| binder_call(statsd, perfprofd) |
| ') |
| binder_call(statsd, system_server) |
| |
| # Allow statsd to interact with gpuservice |
| allow statsd gpu_service:service_manager find; |
| binder_call(statsd, gpuservice) |
| |
| # Allow logd access. |
| read_logd(statsd) |
| control_logd(statsd) |
| |
| # Grant statsd with permissions to register the services. |
| allow statsd { |
| app_api_service |
| incident_service |
| userdebug_or_eng(` |
| perfprofd_service |
| ') |
| system_api_service |
| }:service_manager find; |
| |
| # Grant statsd to access health hal to access battery metrics. |
| allow statsd hal_health_hwservice:hwservice_manager find; |
| |
| # Allow statsd to send dump info to dumpstate |
| allow statsd dumpstate:fd use; |
| allow statsd dumpstate:fifo_file { getattr write }; |
| |
| # Allow access to with hardware layer and process stats. |
| allow statsd proc_uid_cputime_showstat:file { getattr open read }; |
| hal_client_domain(statsd, hal_health) |
| hal_client_domain(statsd, hal_power) |
| hal_client_domain(statsd, hal_power_stats) |
| hal_client_domain(statsd, hal_thermal) |
| |
| # Allow 'adb shell cmd' to upload configs and download output. |
| allow statsd adbd:fd use; |
| allow statsd adbd:unix_stream_socket { getattr read write }; |
| allow statsd shell:fifo_file { getattr read write }; |
| |
| unix_socket_send(statsd, statsdw, statsd) |
| |
| ### |
| ### neverallow rules |
| ### |
| |
| # Only statsd and the other root services in limited circumstances. |
| # can get to the files in /data/misc/stats-data, /data/misc/stats-service. |
| # Other services are prohibitted from accessing the file. |
| neverallow { domain -statsd -system_server -init -vold } stats_data_file:file *; |
| |
| # Limited access to the directory itself. |
| neverallow { domain -statsd -system_server -init -vold } stats_data_file:dir *; |