اجازه‌های Android

اجازه‌های Android کنترل‌هایی را ارائه می‌دهند که آگاهی کاربر را افزایش می‌دهند و دسترسی برنامه به داده‌های حساس را محدود می‌کنند. پیکربندی اجازه‌ها در Android نسخه ۸.۰ و پایین‌تر شامل فهرست مجاز می‌شود که بدون آن برنامه‌های ممتاز غیرفعال می‌شوند، حتی اگر در مسیر priv-app باشند. در Android 9 و نسخه‌های بالاتر، دستگاهی که سعی کند از برنامه‌هایی استفاده کند که به‌درستی در فهرست مجاز قرار نگرفته‌اند راه‌اندازی نخواهد شد.

در Android 10 مفهوم نقش معرفی شد، نامی یکتا در سیستم که با الزامات و امتیازهای خاصی مرتبط است. نقش‌هایی را به برنامه‌ها اختصاص دهید تا اجازه‌هایی را برای هدفی خاص به آن‌ها اعطا کنید، و نقش‌های پیش‌فرض را بااستفاده از منابع پیکربندی پلاتفرم پیکربندی کنید.

محافظت‌های افزایش‌یافته دربرابر برنامه‌های احتمالاً مضر (PHAs) موارد زیر را بهبود می‌بخشد:

  • شفاف‌سازی درباره رفتار بالقوه مضر برنامه.
  • کاربر بر رفتار برنامه کنترل داشته باشد.
  • توسعه‌دهندگان نرم‌افزار هنگام استفاده از داده‌های خصوصی که با اجازه‌ها محافظت می‌شوند، اختیار دارند.

نصب بسته و اجازه

در Android 9 و نسخه‌های پایین‌تر، عملکردهای نصب بسته و کنترل اجازه در بسته PackageInstaller (//packages/apps/PackageInstaller) قرار داشت. در Android 10 و نسخه‌های بالاتر، عملکرد کنترل اجازه در بسته جداگانه‌ای، PermissionController (//packages/apps/PermissionController)، قرار دارد. شکل ۱ نشان می‌دهد که این دو بسته در Android 10 کجا قرار دارند.

جداسازی عملکردهای کنترل اجازه و نصب بسته برای برنامه‌های سیستم و برنامه‌های نصب‌شده توسط کاربر

شکل ۱. عملکردهای نصب بسته و کنترل اجازه در Android 10

فهرست‌های مجاز و دسترسی

در Android نسخه ۶.۰ و بالاتر، برنامه‌ها در زمان اجرا درخواست دسترسی به اجازه‌های خطرناک می‌کنند. ‫Android 10 مجوزهای زمان اجرای تشخیص فعالیت (AR) را اضافه می‌کند که از کاربر می‌خواهد مجوزهای خطرناک را اصلاح یا مجاز کند.

‫Android 8.0 از شما می‌خواست که برنامه‌های ممتاز را به‌طور صریح در فایل‌های XML پیکربندی سیستم در فهرست مجاز قرار دهید. در فهرست راهنمای /etc/permissions. در Android 9 و بالاتر، اجازه‌های ممتاز باید در فهرست مجازها قرار بگیرند وگرنه دستگاه نمی‌تواند راه‌اندازی شود.

برای محدود کردن نمایان بودن میانای برنامه‌سازی کاربردی داخلی و جلوگیری از دسترسی تصادفی برنامه‌ها به کتابخانه‌های پلاتفرم، Android 7.0 فضاهای نام برای کتابخانه‌های بومی را معرفی کرد. این کار کتابخانه‌های سیستم را از کتابخانه‌های برنامه جدا می‌کند و سازندگان دستگاه می‌توانند کتابخانه‌های بومی خودشان را اضافه کنند.

از Android 10 به بعد، برنامه‌ها برای دسترسی به محتوای صفحه دستگاه باید هم اجازه‌های امضا و هم رضایت کاربر را داشته باشند. برنامه‌های دارای امتیاز که به عملکرد ضبط بی‌صدا متکی هستند، مثل گرفتن نماگرفت، باید به‌جای آن از کلاس MediaProjection استفاده کنند.

Android 15 از شما می‌خواهد که اجازه‌های امضای پلاتفرم را که توسط برنامه‌های غیرسیستمی درخواست شده‌اند یا به‌تازگی توسط به‌روزرسانی‌های برنامه‌های سیستمی درخواست شده‌اند، به‌طور صریح در فایل‌های XML پیکربندی سیستم در دایرکتوری /etc/permissions در فهرست مجاز قرار دهید.

شفافیت و حریم خصوصی

در Android 6.0 و بالاتر، مک آدرس کارخانه دستگاه دربرابر دسترسی ارائه‌دهندگان سرویس Wi-Fi و تحلیل‌گران بسته محافظت می‌شود. محدودیت‌های اضافی از Android 10 به بعد، دسترسی برنامه‌ها به شناسه‌های تغییرناپذیر دستگاه را محدود می‌کند، مگراینکه برای اجازه‌های ممتاز در فهرست مجاز قرار گرفته باشند. (بخش اتصال‌پذیری بحثی مرتبط درباره شناسه‌های دستگاه ارائه می‌دهد، زیرا این موضوع بر شرکت‌های مخابراتی تأثیر می‌گذارد.)

در Android 9 و نسخه‌های پایین‌تر، کاربران هنگام اعطای دسترسی مکان به برنامه‌ها، انتخاب‌های دائمی انجام می‌دهند. از Android 10 به بعد، ویژگی اجازه‌های مکان سه‌حالتی به کاربران سه گزینه می‌دهد تا به برنامه اجازه دهند به مکان دستگاه دسترسی داشته باشد. این الزامات اجازه برای برنامه‌ها در Android 10، صرف‌نظر از کیت توسعه نرم‌افزار هدف، اعمال می‌شود.

پیکربندی اجازه‌ها برای دیگر ویژگی‌های شفافیت و حریم خصوصی از Android 10

پیکربندی‌های ساده‌شده

پیکربندی‌های اجازه‌ها برای Android نسخه ۶.۰ و بالاتر ساده‌تر شده است.

  • قابلیت‌های محیطی برای سرویس‌های راه‌اندازی‌شده توسط init همه جنبه‌های پیکربندی سرویس را در یک فایل .rc نگه می‌دارد. هنگام تنظیم قابلیت‌ها برای سرویس‌هایی که توسط init راه‌اندازی نشده‌اند، قابلیت‌های سیستم فایل را بااستفاده از fs_config.c پیکربندی کنید.
  • ‫Android 7.x و نسخه‌های پایین‌تر سازوکار «شناسه‌های Android» (AIDs) را بااستفاده از فایل android_filesystem_config.h مختص دستگاه برای تعیین قابلیت‌های سیستم فایل و/یا «شناسه‌های Android» سفارشی سازنده دستگاه گسترش می‌دهند. ‫Android 8.0 و بالاتر از روش جدیدی برای گسترش قابلیت‌های سیستم فایل پشتیبانی می‌کند.
  • در Android 8.0، مدیریت فرمان‌های USB از اسکریپت‌های init مختص دستگاه (جایگزینی برای لایه‌های HAL) خارج شد و به یک شبح USB بومی منتقل شد. رابط USB HAL باید در هر دستگاهی که با Android نسخه ۸.۰ و بالاتر راه‌اندازی می‌شود پیاده‌سازی شود.