blob: 55e7bd8c650c2fc34cbb90b5df3696eeb67bdefc [file] [log] [blame]
rpcraigb19665c2012-07-30 09:33:03 -04001<?xml version="1.0" encoding="utf-8"?>
2<policy>
3
4<!--
5 Sample signer stanza for install policy
6
7 Rules:
8 * A signature is a hex encoded X.509 certificate and is required for each signer tag.
9 * A <signer signature="" > element may have multiple child elements:
10 allow-permission : produces a set of maximal allowed permissions (whitelist).
11 deny-permission : produces a blacklist of permissions to deny.
12 allow-all : a wildcard tag that will allow every permission requested.
13 package : a complex tag which itself defines allow, deny, and wildcard sub elements for
14 a specific package name protected by the signature
15 * Zero or more global <package name=""> tags are allowed. These tags allow a policy
16 to be set outside any signature for specific package names.
17 * Unknown tags at any level are skipped.
18 * Zero or more signer tags are allowed.
19 * Zero or more package tags are allowed per signer tag.
20 * A <package name=""> tag may not contain another <package name=""> tag. If found, it's skipped.
21 * A <default> tag is allowed that can contain install policy for all apps not signed with a
22 previously listed cert and not having a per package global policy.
23 * When multiple sub elements appear for a tag the following logic is used to
24 ultimately determine the type of enforcement:
25 ** A blacklist is used if at least one deny-permission tag is found
26 ** A whitelist is used if not a blacklist and at least one allow-permission tag is found
27 ** A wildcard (accept all permission) policy is used if not a blacklist and not a whitelist
28 and at least one allow-all tag is present.
29 ** If a <package name=""> sub element is found then that sub element's policy is used
30 according to the above logic and overrides any signature global policy type.
31 ** In order for a policy stanza to be enforced at least one of the above situations must
32 apply. Meaning, empty signer, default or package tags will not be accepted.
33 * Each signer/default/global package tag is allowed to contain one <seinfo value=""/> tag.
34 This tag represents additional info that each app can use in setting a SELinux security
35 context on the eventual process. Any <seinfo value=""/> tag found as a child of a
36 <package name=""> tag which is protected (sub element of signer or the default tag) is
37 ignored. It's possible that multiple seinfo tags are relevant for one app. In the event
38 that this happens, the seinfo tag that will be applied is the one for which the corresponding
39 policy stanza is used in the policy decision.
40 * Strict enforcing of any xml stanza is not enforced in most cases. This mainly applies to
41 duplicate tags which are allowed. In the event that a tag already exists, the original
42 tag is replaced.
43 * There are also no checks on the validity of permission names. Although valid android
44 permissions are expected, nothing prevents unknowns.
45 * Enforcement decisions:
46 - All signatures used to sign an app are checked for policy according to signer tags.
47 Only one of the signature policies has to pass however.
48 - In the event that none of the signature policies pass, or none even match, then
49 a global package policy is sought. If found, this policy mediates the install.
50 - The default tag is consulted last if needed.
51 - A local package policy always overrides any parent policy.
52 - If none of the cases apply then the app is denied.
53
54
55 Example global package policy
56 <package name="com.foo.com">
57 <allow-permission name="android.permission.INTERNET" />
58 <allow-permission name="android.permission.WRITE_EXTERNAL_STORAGE" />
59 <allow-permission name="android.permission.ACCESS_NETWORK_STATE" />
60 </package>
61
62 Sample stanzas are given below based on the AOSP developer keys.
63
64-->
65
66 <!-- Platform dev key with AOSP -->
Geremy Condracd4104e2013-03-26 18:19:12 +000067 <signer signature="@PLATFORM" >
rpcraigb19665c2012-07-30 09:33:03 -040068 <allow-all />
69 <seinfo value="platform" />
70 </signer>
71
72 <!-- Media dev key in AOSP -->
Geremy Condracd4104e2013-03-26 18:19:12 +000073 <signer signature="@MEDIA" >
rpcraigb19665c2012-07-30 09:33:03 -040074 <allow-permission name="android.permission.ACCESS_ALL_DOWNLOADS" />
75 <allow-permission name="android.permission.ACCESS_CACHE_FILESYSTEM" />
76 <allow-permission name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
77 <allow-permission name="android.permission.ACCESS_MTP" />
78 <allow-permission name="android.permission.ACCESS_NETWORK_STATE" />
79 <allow-permission name="android.permission.CONNECTIVITY_INTERNAL" />
80 <allow-permission name="android.permission.INTERNET" />
81 <allow-permission name="android.permission.MODIFY_NETWORK_ACCOUNTING" />
82 <allow-permission name="android.permission.READ_EXTERNAL_STORAGE" />
83 <allow-permission name="android.permission.RECEIVE_BOOT_COMPLETED" />
84 <allow-permission name="android.permission.RECEIVE_WAP_PUSH" />
85 <allow-permission name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS" />
86 <allow-permission name="android.permission.UPDATE_DEVICE_STATS" />
87 <allow-permission name="android.permission.WAKE_LOCK" />
88 <allow-permission name="android.permission.WRITE_EXTERNAL_STORAGE" />
89 <allow-permission name="android.permission.WRITE_MEDIA_STORAGE" />
90 <allow-permission name="android.permission.WRITE_SETTINGS" />
91 <seinfo value="media" />
92 </signer>
93
94 <!-- shared dev key in AOSP -->
Geremy Condracd4104e2013-03-26 18:19:12 +000095 <signer signature="@SHARED" >
rpcraigb19665c2012-07-30 09:33:03 -040096 <allow-permission name="android.permission.ACCESS_COARSE_LOCATION" />
97 <allow-permission name="android.permission.ACCESS_FINE_LOCATION" />
98 <allow-permission name="android.permission.ACCESS_NETWORK_STATE" />
99 <allow-permission name="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK" />
100 <allow-permission name="android.permission.BIND_APPWIDGET" />
101 <allow-permission name="android.permission.BIND_WALLPAPER" />
102 <allow-permission name="android.permission.CALL_PHONE" />
103 <allow-permission name="android.permission.CALL_PRIVILEGED" />
104 <allow-permission name="android.permission.CAMERA" />
105 <allow-permission name="android.permission.GET_ACCOUNTS" />
106 <allow-permission name="android.permission.GLOBAL_SEARCH" />
107 <allow-permission name="android.permission.INTERNET" />
108 <allow-permission name="android.permission.MANAGE_ACCOUNTS" />
109 <allow-permission name="android.permission.MODIFY_AUDIO_SETTINGS" />
110 <allow-permission name="android.permission.MODIFY_PHONE_STATE" />
111 <allow-permission name="android.permission.NFC" />
112 <allow-permission name="android.permission.PACKAGE_USAGE_STATS" />
113 <allow-permission name="android.permission.READ_CALL_LOG" />
114 <allow-permission name="android.permission.READ_CONTACTS"/>
115 <allow-permission name="android.permission.READ_EXTERNAL_STORAGE" />
116 <allow-permission name="android.permission.READ_PHONE_STATE" />
117 <allow-permission name="android.permission.READ_PROFILE" />
118 <allow-permission name="android.permission.READ_SOCIAL_STREAM" />
119 <allow-permission name="android.permission.READ_SYNC_SETTINGS" />
120 <allow-permission name="android.permission.READ_SYNC_STATS" />
121 <allow-permission name="android.permission.READ_USER_DICTIONARY" />
122 <allow-permission name="android.permission.REBOOT" />
123 <allow-permission name="android.permission.RECEIVE_BOOT_COMPLETED" />
124 <allow-permission name="android.permission.RECORD_AUDIO" />
125 <allow-permission name="android.permission.SET_WALLPAPER" />
126 <allow-permission name="android.permission.SET_WALLPAPER_COMPONENT" />
127 <allow-permission name="android.permission.SET_WALLPAPER_HINTS" />
128 <allow-permission name="android.permission.SUBSCRIBED_FEEDS_READ" />
129 <allow-permission name="android.permission.SUBSCRIBED_FEEDS_WRITE" />
130 <allow-permission name="android.permission.USE_CREDENTIALS" />
131 <allow-permission name="android.permission.VIBRATE" />
132 <allow-permission name="android.permission.WAKE_LOCK" />
133 <allow-permission name="android.permission.WRITE_CALL_LOG" />
134 <allow-permission name="android.permission.WRITE_CONTACTS" />
135 <allow-permission name="android.permission.WRITE_EXTERNAL_STORAGE" />
136 <allow-permission name="android.permission.WRITE_PROFILE" />
137 <allow-permission name="android.permission.WRITE_SETTINGS" />
138 <allow-permission name="android.permission.WRITE_USER_DICTIONARY" />
139 <allow-permission name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
140 <allow-permission name="com.android.launcher.permission.INSTALL_SHORTCUT" />
141 <allow-permission name="com.android.launcher.permission.READ_SETTINGS" />
142 <allow-permission name="com.android.launcher.permission.WRITE_SETTINGS" />
143 <allow-permission name="com.android.voicemail.permission.ADD_VOICEMAIL" />
144 <allow-permission name="com.android.voicemail.permission.READ_WRITE_ALL_VOICEMAIL" />
145 <allow-permission name="com.google.android.googleapps.permission.GOOGLE_AUTH" />
146 <allow-permission name="com.google.android.googleapps.permission.GOOGLE_AUTH.cp" />
147 <allow-permission name="com.google.android.googleapps.permission.GOOGLE_AUTH.mail" />
148 <seinfo value="shared" />
149 </signer>
150
151 <!-- release dev key in AOSP -->
Geremy Condracd4104e2013-03-26 18:19:12 +0000152 <signer signature="@RELEASE" >
rpcraigb19665c2012-07-30 09:33:03 -0400153 <seinfo value="release" />
154 <deny-permission name="android.permission.BRICK" />
155 <deny-permission name="android.permission.READ_LOGS" />
156 <deny-permission name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
157 <deny-permission name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS" />
158 <package name="com.android.browser" >
159 <allow-permission name="android.permission.ACCESS_COARSE_LOCATION"/>
160 <allow-permission name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
161 <allow-permission name="android.permission.ACCESS_FINE_LOCATION"/>
162 <allow-permission name="android.permission.ACCESS_NETWORK_STATE"/>
163 <allow-permission name="android.permission.ACCESS_WIFI_STATE"/>
164 <allow-permission name="android.permission.GET_ACCOUNTS"/>
165 <allow-permission name="android.permission.INTERNET" />
166 <allow-permission name="android.permission.MANAGE_ACCOUNTS" />
167 <allow-permission name="android.permission.NFC" />
168 <allow-permission name="android.permission.READ_CONTACTS" />
169 <allow-permission name="android.permission.READ_EXTERNAL_STORAGE" />
170 <allow-permission name="android.permission.READ_PROFILE" />
171 <allow-permission name="android.permission.READ_SYNC_SETTINGS" />
172 <allow-permission name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS" />
173 <allow-permission name="android.permission.SET_WALLPAPER" />
174 <allow-permission name="android.permission.USE_CREDENTIALS"/>
175 <allow-permission name="android.permission.WAKE_LOCK"/>
176 <allow-permission name="android.permission.WRITE_EXTERNAL_STORAGE" />
177 <allow-permission name="android.permission.WRITE_SETTINGS" />
178 <allow-permission name="android.permission.WRITE_SYNC_SETTINGS" />
179 <allow-permission name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
180 <allow-permission name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/>
181 <allow-permission name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
182 </package>
183 </signer>
184
185 <!-- All other keys -->
186 <default>
187 <seinfo value="default" />
188 <deny-permission name="android.permission.ACCESS_COARSE_LOCATION" />
189 <deny-permission name="android.permission.ACCESS_FINE_LOCATION" />
190 <deny-permission name="android.permission.AUTHENTICATE_ACCOUNTS" />
191 <deny-permission name="android.permission.CALL_PHONE" />
192 <deny-permission name="android.permission.CAMERA" />
193 <deny-permission name="android.permission.READ_LOGS" />
194 <deny-permission name="android.permission.WRITE_EXTERNAL_STORAGE" />
195 </default>
196
197</policy>