مجوزهای Android کنترل هایی را ارائه می دهند که آگاهی کاربر را افزایش می دهد و دسترسی برنامه به داده های حساس را محدود می کند. پیکربندی مجوزها در Android 8.0 و پایینتر شامل لیست مجاز است که بدون آن برنامههای دارای امتیاز غیرفعال میشوند، حتی اگر در مسیر priv-app
باشند. در اندروید 9 و بالاتر، دستگاهی که سعی می کند از برنامه هایی استفاده کند که به درستی در لیست مجاز نیستند، بوت نمی شود.
اندروید 10 مفهوم نقش را معرفی کرد، یک نام منحصر به فرد در سیستم همراه با الزامات و امتیازات خاص. نقشهایی را به برنامهها اختصاص دهید تا برای هدف خاصی به آنها مجوز بدهید و نقشهای پیشفرض را با استفاده از منابع پیکربندی پلت فرم پیکربندی کنید.
افزایش حفاظت در برابر برنامههای بالقوه مضر (PHA) بهبود مییابد:
- شفافیت در رفتار بالقوه مضر برنامه.
- کنترل کاربر بر رفتار برنامه
- صلاحدید توسعه دهندگان برنامه هنگام استفاده از داده های خصوصی، که توسط مجوزها محافظت می شود.
نصب و مجوز بسته
در اندروید 9 و پایینتر، قابلیتهای نصب بسته و کنترل مجوز در بسته PackageInstaller
( //packages/apps/PackageInstaller
) وجود داشت. در Android 10 و بالاتر، عملکرد کنترل مجوز در یک بسته جداگانه قرار دارد، PermissionController
( //packages/apps/PermissionController
). شکل 1 نشان می دهد که این دو بسته در Android 10 در کجا قرار دارند.
شکل 1. نصب بسته و عملکردهای کنترل مجوز در اندروید 10
لیست های مجاز و دسترسی
در Android نسخه 6.0 و بالاتر، برنامهها درخواست دسترسی به مجوزهای خطرناک در زمان اجرا را دارند. اندروید 10 مجوزهای زمان اجرا شناسایی فعالیت (AR) را اضافه میکند که از کاربر میخواهد مجوزهای خطرناک را تغییر دهد یا اجازه دهد.
Android 8.0 از شما میخواهد که برنامههای دارای امتیاز را در فایلهای XML پیکربندی سیستم در فهرست /etc/permissions
فهرست کنید. در اندروید 9 و بالاتر، مجوزهای ممتاز باید در لیست مجاز باشند یا دستگاه نمی تواند بوت شود.
برای محدود کردن دید API داخلی و جلوگیری از دسترسی تصادفی برنامهها به کتابخانههای پلتفرم، Android 7.0 Namespaces را برای کتابخانههای بومی معرفی کرد. این کار کتابخانه های سیستم را از کتابخانه های برنامه جدا می کند و سازندگان دستگاه می توانند کتابخانه های بومی خود را اضافه کنند.
شروع در برنامههای Android 10 باید دارای مجوز امضا و رضایت کاربر برای دسترسی به محتوای صفحه دستگاه باشد. برنامههای ممتازی که به عملکرد ضبط بیصدا، مانند گرفتن اسکرین شات، متکی هستند، باید از کلاس MediaProjection استفاده کنند.
Android 15 از شما میخواهد که مجوزهای امضای پلتفرم را که توسط برنامههای غیرسیستم درخواست شده یا بهروزرسانیهای برنامههای سیستم به تازگی درخواست شدهاند را در فایلهای XML پیکربندی سیستم در فهرست /etc/permissions
فهرست کنید .
شفافیت و حریم خصوصی
در Android نسخه 6.0 و بالاتر، یک آدرس MAC کارخانه دستگاه از دسترسی ارائه دهندگان خدمات Wi-Fi و تحلیلگرهای بسته محافظت می شود. محدودیتهای اضافی مربوط به Android 10، دسترسی برنامهها به شناسههای دستگاه (ID) غیرقابل تغییر را محدود میکند، مگر اینکه برای مجوزهای ممتاز در فهرست مجاز باشند. (بخش اتصال ، بحث مرتبطی را در مورد شناسههای دستگاه ارائه میکند، زیرا این بر حاملها تأثیر میگذارد.)
در اندروید 9 و پایینتر، کاربران هنگام اعطای دسترسی موقعیت مکانی به برنامهها، انتخابهای مداومی انجام میدهند. با شروع در اندروید 10، یک ویژگی مجوزهای موقعیت مکانی سه ایالت به کاربران سه گزینه برای اجازه دسترسی برنامه به مکان دستگاه را می دهد. این الزامات مجوز برای برنامههای Android 10 بدون در نظر گرفتن SDK هدف اعمال میشود.
مجوزها را برای سایر ویژگیهای شفافیت و حریم خصوصی از Android 10 پیکربندی کنید
- یادآوری مکان دسترسی در پسزمینه زمانی که یک برنامه با استفاده از مجوز
ACCESS_FINE_LOCATION
در پسزمینه به موقعیت مکانی دستگاه آنها دسترسی پیدا میکند، به کاربران نشان میدهد. - دادههای مربوط به ارتباط با مخاطبین، که توسط مؤلفه ارائهدهنده مخاطبین مدیریت میشوند، بهصورت متفاوتی قابل دسترسی هستند: برنامهها نمیتوانند روی دادههای وابستگی مخاطبین در پایگاه داده بنویسند یا بخوانند. این بر API های مربوط به تماس گیرنده تأثیر می گذارد.
تنظیمات ساده
پیکربندی مجوزها برای Android 6.0 و بالاتر ساده شده است.
- قابلیتهای محیطی برای سرویسهای راهاندازی شده توسط
init
تمام جنبههای پیکربندی سرویس را در یک فایل.rc
نگه میدارد. هنگام تنظیم قابلیتها برای سرویسهایی که توسطinit
راهاندازی نشدهاند، به جای آن، قابلیتهای سیستم فایل را با استفاده ازfs_config.c
پیکربندی کنید. - Android 7.x و پایینتر، مکانیسم Android ID (AIDs) را گسترش میدهد، با استفاده از یک فایل
android_filesystem_config.h
مخصوص دستگاه برای مشخص کردن قابلیتهای سیستم فایل و/یا AIDهای سفارشی سازنده دستگاه. اندروید 8.0 و بالاتر از روش جدیدی برای گسترش قابلیتهای سیستم فایل پشتیبانی میکند. - در اندروید 8.0، کنترل دستورات USB از اسکریپت های
init
مخصوص دستگاه (جایگزینی برای لایه های HAL) خارج شد و به یک شبح USB بومی تبدیل شد. رابط USB HAL باید در هر دستگاهی که با Android نسخه 8.0 و بالاتر راه اندازی می شود، اجرا شود.