Google Android security & permissions (вопросы безопасности и допусков)

Рейтинг:   / 2
ПлохоОтлично 

ТЕГ: android ликбез.

В процессе разработки приложения для устройств под управлением операционной системы Google Android, система создаст уникального пользователя и ID группы (unique user & group ID) для каждого отдельного приложения. Каждое отдельное Android приложение это - файл сгенерированный пользователем (он может быть как закрыт от доступа других уникальных приложений, так и разрешить другим приложениям к себе в общем или к какой-то своей части).

Кроме того,

 каждое приложение Android запускается в своем собственном процессе (надеюсь вам понятно про распределение такого ресурса как ПАМЯТЬ, в такой ситуации).

Позвольте вам напомнить, а для не посвящённых в секреты операционной системы Android сообщить, что Google Android то сначала Linux, а уже потом Android и прочие Google. Так исторически сложилось :). У меня в доме уже просто не осталось электронных устройств куда бы производитель не ставил свою собственную персональную сборку Linux-а. Media HDD Player, Internet router, даже в холодильнике есть выход в интернет и я почти уверен, что там все мозги - Linux. Конечно и гаджетам просто Бог велел работать под самой популярной и всепроникающей операционной системой мира - Linux. Как бы мне не было неприятно это признать, как Microsoft инженеру, 15 лет своей жизни прошагавшим в ногу с этой ОС.

Итак, в Linux/Google Android все приложения изолированы друг от друга. Как когда-то кричали и "дрались" в курилке апологеты Linux, Microsoft и OS/2... ах как спорили до хрипоты про вытесняющую многозадачность и прочие безобразия "параллельных миров". Так в дроиде одно приложение ни как не может нарушить работоспособность другого (давайте будем думать, что мы сейчас не обсуждаем вопросы хака, а говорим про обычные, гражданские разработки, а не боевых петухов от мира IT).

Но в дроиде естественно есть механизмы "допусков без посадок". Если приложение имеет одной из своих сторон предоставления разделённого доступа к своим ресурсам (ну, там, данным, к примеру), то всенепременно разработчик должен это сделать явно. Есть некоторые механизмы, к примеру СЕРВИСы (Google Android Service) или ContentProvider.

Помимо отношений между приложениями пермишины (разрешения и допуски) так же распространяем на саму ОС дроида. Android предопределяет разрешения/допуски для определенных задач, но каждое приложение так же может определить (затребовать, в данной трактовке) свои собственные права.

Чуть позже, я расскажу немного про структуру проекта и содержимое результирующего APK файла, который и устанавливается на устройство. Но, при рассказе о запрашиваемых допусках к ресурсам дроида просто вынужден забежать вперёд и сказать, что, как и в .Net (web.config или app.config), в iOS, так и в Android есть свой XML файл для настройки приложения, который информирует операционную систему о каких-то там его свойствах. Система сама "достаёт" его из правильного места, читает и на основании заявленного там предоставляет приложению доступ к тем или иных ресурсам (контакты, GPS, интернет и прочее). Данный файл называется AndroidManifest.xml, а раздел разрешений (ну, скажем традиционная его часть) выглядит, например так:

 <uses-permission android:name="android.permission.VIBRATE" />

	<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

	<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

	<uses-permission android:name="android.permission.INTERNET" />

	<uses-permission android:name="android.permission.READ_CONTACTS" />

	<uses-permission android:name="android.permission.WRITE_CONTACTS" />

	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

	<uses-permission android:name="android.permission.GET_ACCOUNTS" />

	<uses-permission android:name="android.permission.BROADCAST_STICKY" />

	<uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" />

	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

	<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />

	<uses-permission android:name="android.permission.INSTALL_PACKAGES" />

	<uses-permission android:name="android.permission.INSTALL_PACKAGES" />

	<uses-permission android:name="android.permission.STATUS_BAR" />

	<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />

	<uses-permission android:name="android.permission.READ_CALENDAR" />

	<uses-permission android:name="android.permission.READ_CONTACTS" />

При установке на дроид устройство APK вручную вы можете увидеть что-то типа:

Что показывает Android при установке приложения из APK. Доступ к каким ресурсам будет иметь приложение?

Вот дроид и прочёл перечень моих "пожеланий", которые я привёл выше, о чём и сообщим мне при установке.

Тоже самое вы можете сами посмотреть всегда зайдя в Settings/Applications/Manage applications. Выберите интересующее вас приложение и посмотрите информацию о нём (вот, к примеру, как выглядит Angry Birds):

Как (где) в android посмотреть к каким системным ресурсам он имеет доступ

Как видите всё это доступно для контроля вами.

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

Это носит название "управляемой пользователем безопасности". Именно пользователь принимает решение о выдаче разрешения или отказе в нём. Если пользователь не даёт доступ, необходимый приложению, то приложение не может быть установлено. Проверка разрешений производится только во время установки, в разрешении не может быть отказано или предоставлена ​​после установки.

  Обычно не все пользователи проверьте разрешения в деталях, но некоторые пользователи. Если есть, кажется, что-то странное в связи с ними, они будут писать плохие отзывы на Play Google.