مجوزهای اندروید

مجوزهای 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 نسخه 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 و بالاتر راه اندازی می شود، اجرا شود.