اجازههای 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
- یادآور
دسترسی به مکان در پسزمینه به کاربران نشان میدهد که چه زمانی برنامهای بااستفاده از اجازه
ACCESS_FINE_LOCATIONدر پسزمینه به مکان دستگاهشان دسترسی پیدا میکند. - دادههای مربوط به قرابت مخاطبین، که توسط مؤلفه «ارائهدهنده مخاطبین» مدیریت میشود، بهطور متفاوتی قابلدسترسی است: برنامهها نمیتوانند در دادههای قرابت مخاطبین در پایگاه داده بنویسند یا از آن بخوانند. این موضوع بر میاناهای برنامهسازی کاربردی مرتبط با تماسگیرنده تأثیر میگذارد.
پیکربندیهای سادهشده
پیکربندیهای اجازهها برای 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 نسخه ۸.۰ و بالاتر راهاندازی میشود پیادهسازی شود.