آنچه در Android 9 برای برنامه های سازمانی وجود دارد

این صفحه یک نمای کلی از APIهای سازمانی، ویژگی‌ها و تغییرات رفتاری موجود در Android 9 ارائه می‌کند.

رابط کاربری پروفایل کاری

اندروید 9 (سطح API 28) شامل تغییرات رابط کاربری در راه‌انداز پیش‌فرض است تا به کاربران کمک کند برنامه‌های شخصی و کاری را جدا کنند. سازندگان دستگاه‌هایی که از این پشتیبانی می‌کنند می‌توانند برنامه‌های کاربران را در برگه‌های کاری و شخصی جداگانه ارائه کنند. ما همچنین با قرار دادن سوئیچ در برگه کاری راه‌انداز، روشن و خاموش کردن نمایه کاری را برای کاربران دستگاه آسان‌تر کرده‌ایم.

شکل 1. برگه شخصی پرتاب کننده پیش فرض و برگه کاری با سوئیچ نمایه کاری

هنگام تهیه نمایه‌های کاری و دستگاه‌های مدیریت‌شده، Android 9 شامل تصاویر متحرک می‌شود تا به کاربران دستگاه کمک کند تا این ویژگی‌ها را درک کنند.

جابه‌جایی برنامه‌ها در نمایه‌ها

اندروید 9 شامل APIهایی برای راه‌اندازی نمونه دیگری از یک برنامه در نمایه دیگری است تا به کاربران کمک کند بین حساب‌ها جابه‌جا شوند. به عنوان مثال، یک برنامه ایمیل می‌تواند رابط کاربری ایجاد کند که به کاربر اجازه می‌دهد بین نمایه شخصی و نمایه کاری جابجا شود تا به دو حساب ایمیل دسترسی پیدا کند. همه برنامه‌ها می‌توانند این APIها را برای راه‌اندازی فعالیت اصلی همان برنامه در صورتی که قبلاً در نمایه دیگر نصب شده باشد، فراخوانی کنند. برای افزودن تغییر حساب بین پروفایل به برنامه خود، مراحل زیر را دنبال کنید تا روش های فراخوانی کلاس CrossProfileApps را دنبال کنید:

  1. برای دریافت لیستی از پروفایل هایی که می توانید نمونه دیگری از برنامه را در آن راه اندازی کنید getTargetUserProfiles() فراخوانی کنید. این روش بررسی می کند که برنامه در پروفایل ها نصب شده باشد.
  2. با تماس getProfileSwitchingIconDrawable() نمادی دریافت کنید که می توانید از آن برای نمایش نمایه دیگری استفاده کنید.
  3. برای دریافت متن محلی که از کاربر می خواهد پروفایل ها را تغییر دهد getProfileSwitchingLabel() را فراخوانی کنید.
  4. برای راه اندازی نمونه ای از برنامه خود در نمایه دیگر startMainActivity() را فراخوانی کنید.

بررسی کنید که فعالیت اصلی که می‌خواهید راه‌اندازی کنید در فایل مانیفست برنامه‌تان با یک کنش هدف ACTION_MAIN اعلام شده باشد و شامل یک دسته هدف CATEGORY_LAUNCHER باشد.

به صورت برنامه‌ریزی نمایه‌های کاری را روشن یا خاموش کنید

راه‌انداز پیش‌فرض (یا برنامه‌هایی که دارای مجوز MANAGE_USERS یا MODIFY_QUIET_MODE ) می‌توانند نمایه کاری را با فراخوانی UserManager.requestQuietModeEnabled() روشن یا خاموش کنند. می‌توانید مقدار بازگشتی را بررسی کنید تا بدانید که آیا کاربر باید اعتبار خود را قبل از تغییر وضعیت تأیید کند یا خیر. از آنجا که ممکن است تغییر فوراً اتفاق نیفتد، به پخش ACTION_MANAGED_PROFILE_AVAILABLE یا ACTION_MANAGED_PROFILE_UNAVAILABLE گوش دهید تا بدانید چه زمانی باید رابط کاربری را به‌روزرسانی کنید.

برنامه شما می‌تواند وضعیت نمایه کاری را با تماس UserManager.isQuietModeEnabled() بررسی کند.

هر برنامه ای را روی یک دستگاه قفل کنید

با شروع اندروید 9، صاحبان دستگاه و دارندگان نمایه (از کاربران ثانویه) می‌توانند با قرار دادن برنامه در حالت قفل کردن، هر برنامه را روی صفحه دستگاه قفل کنند. پیش از این، توسعه دهندگان برنامه مجبور بودند از حالت قفل کردن کار در برنامه های خود پشتیبانی کنند . اندروید 9 همچنین APIهای وظیفه قفل را به صاحبان پروفایل کاربران ثانویه غیروابسته نیز گسترش می دهد. برای قفل کردن یک برنامه روی صفحه، مراحل زیر را دنبال کنید:

  1. با DevicePolicyManager.setLockTaskPackages() تماس بگیرید تا برنامه های مجاز را برای حالت کار قفل کنید.
  2. با ActivityOptions.setLockTaskEnabled() تماس بگیرید تا یک برنامه مجاز را در حالت قفل کردن کار راه اندازی کنید.

برای متوقف کردن یک برنامه در حالت قفل کار، برنامه را از لیست مجوزهای حالت کار قفل با استفاده از DevicePolicyManager.setLockTaskPackages() حذف کنید.

ویژگی های رابط کاربری سیستم را فعال کنید

وقتی حالت کار قفل فعال است، صاحبان دستگاه و صاحبان نمایه می‌توانند با فراخوانی DevicePolicyManager.setLockTaskFeatures() و ارسال قسمتی از پرچم‌های ویژگی زیر، ویژگی‌های رابط کاربری سیستم را در دستگاه فعال کنند:

می‌توانید با DevicePolicyManager.getLockTaskFeatures() تماس بگیرید تا لیستی از ویژگی‌های موجود در دستگاه را هنگامی که حالت کار قفل فعال است، دریافت کنید. وقتی دستگاهی از حالت کار قفل خارج می‌شود، به حالتی که توسط سایر خط‌مشی‌های دستگاه تعیین شده است، برمی‌گردد.

محاوره های خطا را سرکوب کنید

در برخی از محیط‌ها، مانند نمایش‌های خرده‌فروشی یا نمایش اطلاعات عمومی، ممکن است نخواهید کادرهای محاوره‌ای خطا را به کاربران نشان دهید. یک کنترل‌کننده خط‌مشی دستگاه (DPC) می‌تواند با افزودن محدودیت کاربر DISALLOW_SYSTEM_ERROR_DIALOGS ، دیالوگ‌های خطای سیستم را برای برنامه‌های خراب یا بی‌پاسخ سرکوب کند. این محدودیت زمانی که توسط مالک دستگاه اعمال می‌شود، همه گفتگوها را تحت تأثیر قرار می‌دهد، اما وقتی محدودیت توسط مالکان نمایه اعمال می‌شود، فقط گفتگوهای خطا که در کاربر اصلی یا ثانویه نشان داده شده است، سرکوب می‌شوند. این محدودیت بر نمایه‌های کاری تأثیر نمی‌گذارد.

در اندروید 9، برنامه‌هایی که در حالت تمام صفحه همه‌جانبه اجرا می‌شوند، حباب یادآوری را در حالت کار قفل نشان نمی‌دهند. حباب یادآور پانلی است که به کاربران نشان داده می شود (در اولین راه اندازی) که نحوه خروج از حالت غوطه ور را توضیح می دهد.

پشتیبانی از چندین کاربر در دستگاه های اختصاصی

اندروید 9 مفهوم یک کاربر زودگذر را برای دستگاه های اختصاصی (که قبلاً دستگاه های COSU نامیده می شد) معرفی می کند. کاربران زودگذر، کاربران کوتاه مدتی هستند که برای مواردی در نظر گرفته شده اند که چند کاربر یک دستگاه اختصاصی واحد را به اشتراک می گذارند. این شامل جلسات عمومی کاربر در دستگاه‌هایی مانند کیوسک‌های ورود به کتابخانه یا مهمان‌نوازی، و همچنین جلسات دائمی بین مجموعه ثابتی از کاربران در دستگاه‌ها، به‌عنوان مثال، کارگران شیفت می‌شود.

کاربران زودگذر باید در پس زمینه ایجاد شوند. آنها به عنوان کاربران ثانویه در یک دستگاه ایجاد می شوند و (به همراه برنامه ها و داده های مرتبط) با توقف، جابجایی یا راه اندازی مجدد دستگاه حذف می شوند. برای ایجاد یک کاربر زودگذر، صاحبان دستگاه می توانند:

  1. هنگام فراخوانی DevicePolicyManager.createAndManageUser() پرچم MAKE_USER_EPHEMERAL را تنظیم کنید.
  2. برای راه‌اندازی کاربر زودگذر در پس‌زمینه DevicePolicyManager.startUserInBackground() را فراخوانی کنید.

توجه داشته باشید، برنامه‌هایی که Android 9 را هدف قرار می‌دهند، هنگام فراخوانی createAndManageUser() باید UserManager.UserOperationException را بگیرند. متد getUserOperationResult() استثنا را فراخوانی کنید تا متوجه شوید که چرا کاربر ایجاد نشده است.

اعلان های رویداد را دریافت کنید

DeviceAdminReceiver اعلان هایی را برای رویدادهای زیر دریافت می کند:

نمایش پیام های رویداد برای کاربران

صاحبان دستگاه می توانند پیام هایی را که هنگام شروع و پایان جلسات خود به کاربران نمایش داده می شود پیکربندی کنند:

از سیستم خارج شوید و کاربران را متوقف کنید

صاحبان دستگاه می توانند از DevicePolicyManager.setLogoutEnabled() استفاده کنند تا مشخص کنند که خروج از سیستم برای کاربران ثانویه فعال است یا خیر. برای بررسی فعال بودن خروج از سیستم، با DevicePolicyManager.isLogoutEnabled() تماس بگیرید.

دارندگان نمایه کاربران ثانویه می توانند برای توقف کاربر ثانویه و بازگشت به کاربر اصلی DevicePolicyManager.logoutUser() را فراخوانی کنند.

صاحبان دستگاه می توانند از DevicePolicyManager.stopUser() برای متوقف کردن کاربر ثانویه مشخص شده استفاده کنند.

ذخیره بسته

برای ساده‌سازی ارائه‌دهی کاربر در دستگاه‌های مشترک با مجموعه ثابتی از کاربران، مانند دستگاه‌هایی برای کارگران شیفت، می‌توان بسته‌هایی را که برای جلسات چند کاربره مورد نیاز است ذخیره کرد:

  1. با DevicePolicyManager.setKeepUninstalledPackages() تماس بگیرید تا لیست بسته هایی را که باید به عنوان APK نگهداری شوند مشخص کنید. برای بازیابی لیستی از این بسته ها، با DevicePolicyManager.getKeepUninstalledPackages() تماس بگیرید.

  2. برای نصب بسته ای که پس از حذف از طریق setKeepUninstalledPackages() نگه داشته شده است، DevicePolicyManager.installExistingPackage() را فراخوانی کنید.

روش ها و ثابت های اضافی

Android 9 همچنین شامل روش ها و ثابت های زیر برای پشتیبانی بیشتر از جلسات کاربر در دستگاه های مشترک است:

داده های بسته را پاک کنید و حساب ها را حذف کنید

صاحبان دستگاه و صاحبان نمایه می توانند برای پاک کردن داده های کاربر برای یک بسته معین clearApplicationUserData() را فراخوانی کنند. برای حذف یک حساب از AccountManager ، صاحبان دستگاه و نمایه می توانند removeAccount() را فراخوانی کنند.

محدودیت های کاربر و افزایش کنترل بر تنظیمات

اندروید 9 مجموعه‌ای از محدودیت‌های کاربر را برای DPCها و همچنین توانایی پیکربندی APN، زمان و منطقه زمانی و تنظیمات سیستم در یک دستگاه معرفی می‌کند.

APN ها را پیکربندی کنید

دارندگان دستگاه می توانند از روش های زیر در کلاس DevicePolicyManager برای پیکربندی APN ها در دستگاه استفاده کنند:

زمان و منطقه زمانی را پیکربندی کنید

دارندگان دستگاه می توانند از روش های زیر در کلاس DevicePolicyManager برای تنظیم زمان و منطقه زمانی در دستگاه استفاده کنند:

اعمال محدودیت های کاربر در تنظیمات مهم

اندروید 9 محدودیت های کاربر را برای غیرفعال کردن ویژگی ها و تنظیمات سیستم اضافه می کند. برای افزودن یک محدودیت، DevicePolicyManager.addUserRestriction() را با یکی از ثابت های UserManager زیر فراخوانی کنید:

اگر DISALLOW_CONFIG_BRIGHTNESS و DISALLOW_CONFIG_SCREEN_TIMEOUT روی دستگاهی اعمال شوند، مالکان دستگاه همچنان می‌توانند با استفاده از API DevicePolicyManager.setSystemSetting() تنظیمات روشنایی صفحه ، حالت روشنایی صفحه و تنظیمات مهلت زمانی صفحه را روی دستگاه تنظیم کنند.

داده های اندازه گیری شده

صاحبان دستگاه و مالکان نمایه می توانند از استفاده برنامه ها از شبکه های داده اندازه گیری شده دستگاه جلوگیری کنند. هنگامی که کاربر به دلیل هزینه، محدودیت داده یا مشکلات باتری و عملکرد، به مصرف سنگین داده حساس باشد، شبکه اندازه‌گیری شده در نظر گرفته می‌شود. برای جلوگیری از استفاده برنامه‌ها از شبکه‌های اندازه‌گیری، با DevicePolicyManager.setMeteredDataDisabledPackages() تماس بگیرید و فهرستی از نام‌های بسته را ارسال کنید. برای بازیابی برنامه‌های محدود کنونی، با DevicePolicyManager.getMeteredDataDisabledPackages() تماس بگیرید.

برای کسب اطلاعات بیشتر در مورد داده های اندازه گیری شده در Android، بهینه سازی استفاده از داده شبکه را بخوانید.

DPC ها را مهاجرت کنید

کنترل‌کننده‌های خط‌مشی دستگاه (DPC) می‌توانند مالکیت دستگاه یا نمایه کاری خود را به DPC دیگری منتقل کنند. می‌توانید مالکیت را برای انتقال برخی از ویژگی‌ها به API مدیریت Android ، انتقال دستگاه‌ها از DPC قدیمی خود یا کمک به سرپرستان فناوری اطلاعات در انتقال به EMM انتقال دهید. از آنجایی که شما فقط مالکیت DPC را تغییر می‌دهید، نمی‌توانید از این ویژگی برای تغییر نوع مدیریت استفاده کنید، به عنوان مثال، انتقال از یک دستگاه مدیریت‌شده به نمایه کاری یا بالعکس.

می‌توانید از منبع XML سیاست‌های سرپرست دستگاه استفاده کنید تا نشان دهید که این نسخه از DPC شما از انتقال پشتیبانی می‌کند. یک DPC هدف نشان می‌دهد که می‌تواند با گنجاندن عنصری به نام <support-transfer-ownership> مالکیت را دریافت کند. مثال زیر نشان می دهد که چگونه می توانید این کار را در فایل XML سرپرست دستگاه DPC خود انجام دهید:

<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
    <support-transfer-ownership />
    <uses-policies>
        <limit-password />
        <watch-login />
        <reset-password />
    </uses-policies>
</device-admin>

DPCهایی که می خواهند مالکیت را به برنامه جدید DPC منتقل کنند، می توانند با فراخوانی متد DeviceAdminInfo supportsTransferOwnership() بررسی کنند که آیا نسخه DPC هدف از مهاجرت پشتیبانی می کند. قبل از انتقال مالکیت، این مسئولیت منبع DPC است که DPC هدف را با مقایسه امضاهای برنامه تأیید کند. کلاس PackageManager شامل متدهایی برای کار با امضاهای کد است.

Android سیستم منبع DPC و خط‌مشی‌های کاربر را از طریق انتقال مالکیت حفظ می‌کند — DPC‌ها نیازی به انتقال این موارد ندارند. یک DPC منبع می‌تواند داده‌های سفارشی را با استفاده از جفت‌های کلید-مقدار در یک PersistableBundle به DPC هدف ارسال کند. پس از انتقال موفقیت آمیز، DPC هدف می تواند این داده ها را با فراخوانی DevicePolicyManager.getTransferOwnershipBundle() بازیابی کند.

مراحل انتقال مالکیت دستگاه مدیریت شده یا نمایه کاری یکسان است:

  1. منبع DPC بررسی می‌کند که نسخه DPC هدف از مهاجرت پشتیبانی می‌کند و تأیید می‌کند که امضای برنامه DPC هدف با مقدار مورد انتظار مطابقت دارد.
  2. منبع DPC، transferOwnership() برای شروع انتقال فراخوانی می کند.
  3. سیستم، DPC مورد نظر را به عنوان سرپرست فعال تبدیل می کند و آن را به عنوان مالک دستگاه مدیریت شده یا نمایه کاری تعیین می کند.
  4. DPC هدف، callback onTransferOwnershipComplete() را دریافت می کند و می تواند خود را با استفاده از مقادیر آرگومان bundle پیکربندی کند.
  5. اگر مشکلی در انتقال رخ دهد، سیستم مالکیت را به منبع DPC باز می گرداند. اگر DPC منبع شما باید تأیید کند که انتقال مالکیت با موفقیت انجام شده است، با isAdminActive() تماس بگیرید تا بررسی کنید که منبع DPC دیگر مدیر فعال نیست.

همه برنامه‌های در حال اجرا در نمایه کاری، پخش ACTION_PROFILE_OWNER_CHANGED را هنگامی که مالک نمایه تغییر می‌کند، دریافت می‌کنند. برنامه‌هایی که روی دستگاه مدیریت‌شده اجرا می‌شوند، پخش ACTION_DEVICE_OWNER_CHANGED را هنگامی که مالک دستگاه تغییر می‌کند، دریافت می‌کنند.

نمایه های کار در دستگاه های کاملاً مدیریت شده

انتقال دو نمونه از DPC در حال اجرا به عنوان مالک دستگاه و مالک نمایه در دو مرحله انجام می شود. هنگامی که نمایه شخصی و نمایه کاری وابسته هستند ، انتقال را به ترتیب زیر تکمیل کنید:

  1. ابتدا، مالکیت نمایه کاری را منتقل کنید.
  2. منتظر تماس DeviceAdminReceiver onTransferAffiliatedProfileOwnershipComplete() بمانید تا تأیید شود که نمایه کاری به DPC هدف منتقل شده است.
  3. در نهایت، مالکیت دستگاه مدیریت شده را به DPC هدف منتقل کنید.

به‌روزرسانی‌های هوایی (OTA) را به تعویق بیندازید

دارندگان دستگاه‌ها می‌توانند به‌روزرسانی‌های سیستم OTA را برای دستگاه‌ها تا ۹۰ روز به تعویق بیاندازند تا نسخه سیستم‌عامل در حال اجرا بر روی این دستگاه‌ها را در دوره‌های حساس (مانند تعطیلات) ثابت کنند. این سیستم یک بافر اجباری 60 روزه را پس از هر دوره یخ زدگی تعریف شده اعمال می کند تا از یخ زدن دستگاه به طور نامحدود جلوگیری کند.

در طول دوره یخ زدگی:

  • دستگاه‌ها هیچ اعلانی درباره به‌روزرسانی‌های OTA در انتظار دریافت نمی‌کنند.
  • دستگاه ها هیچ به روز رسانی OTA را در سیستم عامل نصب نمی کنند.
  • کاربران دستگاه نمی‌توانند به‌صورت دستی به‌روزرسانی‌های OTA را در تنظیمات بررسی کنند.

برای تنظیم دوره توقف، با SystemUpdatePolicy.setFreezePeriods() تماس بگیرید. از آنجایی که دوره انجماد سالانه تکرار می شود، تاریخ شروع و پایان دوره با اعداد صحیح نشان داده می شود که تعداد روزهای شروع سال را شمارش می کنند. روز شروع باید حداقل 60 روز پس از پایان هر دوره انجماد قبلی شروع شود. دارندگان دستگاه می توانند با SystemUpdatePolicy.getFreezePeriods() تماس بگیرند تا لیستی از دوره های انجماد را که قبلاً روی شیء خط مشی به روز رسانی سیستم تنظیم شده است دریافت کنند. DevicePolicyManager.getSystemUpdatePolicy() به‌روزرسانی شده است تا دوره‌های توقف تنظیم شده توسط مالک دستگاه را برگرداند.

اشتراک‌گذاری را در نمایه کاری محدود کنید

دارندگان نمایه می‌توانند با افزودن محدودیت کاربری DISALLOW_SHARE_INTO_MANAGED_PROFILE ، از اشتراک‌گذاری داده‌های شخصی کاربران در نمایه کاری در دستگاه جلوگیری کنند. این محدودیت از مدیریت و اشتراک گذاری قصد زیر جلوگیری می کند:

  • برنامه‌های نمایه شخصی داده‌ها و فایل‌ها را با برنامه‌های نمایه کاری به اشتراک می‌گذارند.
  • با برنامه‌های نمایه کار کنید که موارد را از نمایه شخصی انتخاب می‌کنند - به عنوان مثال، تصاویر یا فایل‌ها.

پس از تنظیم این محدودیت، DPC شما همچنان می‌تواند با فراخوانی addCrossProfileIntentFilter() هدف‌های فعالیت بین پروفایل را مجاز کند.

کلیدهای سخت افزاری و گواهی ماشین

Android 9 API هایی را اضافه می کند تا به شما کمک کند با کلیدها و گواهی هایی کار کنید که می توانید آنها را برای شناسایی ایمن دستگاه ها ترکیب کنید. یک DPC که در حالت‌های مالک نمایه یا مالک دستگاه اجرا می‌شود، یا نصب‌کننده گواهی تفویض‌شده ، می‌تواند کارهای زیر را انجام دهد:

  • کلیدها و گواهی‌ها را در سخت‌افزار امن (مانند یک محیط اجرای مطمئن (TEE) یا Secure Element (SE)) دستگاه Android ایجاد کنید. کلیدهای تولید شده هرگز سخت افزار امن را ترک نمی کنند و می توانند از KeyChain اندروید استفاده شوند. با DevicePolicyManager.generateKeyPair() تماس بگیرید که الگوریتم را تامین می کند (به KeyPairGenerator مراجعه کنید) و هر شناسه سخت افزاری که می خواهید تأیید شود، مانند شماره سریال یا IMEI. برای کسب اطلاعات بیشتر در مورد تغییرات سخت افزاری ایمن، به پیشرفت های امنیتی Android 9 مراجعه کنید.
  • یک گواهی را با یک کلید تولید شده توسط دستگاه موجود مرتبط کنید. DevicePolicyManager.setKeyPairCertificate() را فراخوانی کنید که نام مستعار کلید موجود و زنجیره گواهی را ارائه می‌کند - با گواهی برگ شروع می‌شود و زنجیره اعتماد را به ترتیب شامل می‌شود.
  • قبل از استفاده از کلید مطمئن شوید که سخت افزار ایمن از آن محافظت می کند. برای بررسی مکانیسم‌هایی که از کلید محافظت می‌کنند، مراحل موجود در تأیید کلید را دنبال کنید.
  • دارندگان دستگاه و نصب‌کنندگان گواهی تفویض شده می‌توانند بیانیه امضاشده شناسه‌های سخت‌افزار دستگاه‌ها را با نسخه‌های سیستم Android دریافت کنند. DevicePolicyManager.generateKeyPair() را با ارسال یک یا چند ID_TYPE_BASE_INFO ، ID_TYPE_SERIAL ، ID_TYPE_IMEI ، یا ID_TYPE_MEID در آرگومان idAttestationFlags فراخوانی کنید. گواهی برگشتی شامل شناسه های سخت افزاری در پرونده گواهی است. اگر نمی‌خواهید شناسه‌های سخت‌افزار گنجانده شود، 0 پاس کنید. مالکان نمایه فقط می‌توانند اطلاعات سازنده را دریافت کنند (با عبور از ID_TYPE_BASE_INFO ). برای بررسی اینکه آیا دستگاه می‌تواند شناسه‌ها را تأیید کند، با isDeviceIdAttestationSupported() تماس بگیرید.
  • با غیرقابل انتخاب کردن گواهی‌های کلید، از سوء استفاده کاربران دستگاه از کلیدهای سازمانی (در کارهای غیر سازمانی) جلوگیری کنید. این سیستم گواهی‌های غیرقابل انتخاب را در پانل انتخابگر شامل نمی‌شود. در روش بازخوانی DeviceAdminReceiver.onChoosePrivateKeyAlias() ، نام مستعار را به کلید سازمانی خود برگردانید تا سیستم به طور خودکار گواهی را از طرف کاربر انتخاب کند. برای غیرقابل انتخاب کردن یک کلید، متدهای DevicePolicyManager زیر را فراخوانی کنید:

با ترکیب این API ها، شرکت ها می توانند به طور ایمن دستگاه ها را شناسایی کرده و قبل از ارائه دسترسی، یکپارچگی آنها را تأیید کنند:

  1. دستگاه Android یک کلید خصوصی جدید در سخت افزار امن تولید می کند. از آنجا که کلید خصوصی هرگز سخت افزار امن را ترک نمی کند، مخفی باقی می ماند.
  2. دستگاه از کلید برای ایجاد و ارسال درخواست امضای گواهی (CSR) به سرور استفاده می کند. CSR شامل سوابق تصدیق حاوی شناسه‌های دستگاه است.
  3. سرور زنجیره گواهی را تأیید می کند (ریشه شده در گواهی Google) و فراداده دستگاه را از رکورد گواهی استخراج می کند.
  4. سرور تأیید می کند که سخت افزار ایمن از کلید خصوصی محافظت می کند و شناسه های دستگاه با سوابق شرکت مطابقت دارند. سرور همچنین می‌تواند بررسی کند که سیستم اندروید و نسخه‌های وصله‌ای هر الزامی را برآورده می‌کنند.
  5. سرور یک گواهی از CSR تولید می کند و گواهی را به دستگاه ارسال می کند.
  6. دستگاه گواهی را با کلید خصوصی (که در سخت افزار ایمن باقی مانده است) جفت می کند و برنامه ها را قادر می سازد به خدمات سازمانی متصل شوند.

API های امنیتی بیشتر، ویژگی ها و تغییرات

شناسه‌های گزارش‌های امنیتی و گزارش‌های شبکه

اندروید 9 شامل شناسه‌هایی در گزارش‌های امنیتی و فعالیت‌های شبکه است. شناسه عددی به‌طور یکنواخت برای هر رویداد افزایش می‌یابد، و باعث می‌شود مدیران فناوری اطلاعات به راحتی شکاف‌ها را در گزارش‌های خود پیدا کنند. از آنجا که گزارش های امنیتی و گزارش های شبکه مجموعه های جداگانه ای هستند، سیستم مقادیر ID جداگانه را حفظ می کند.

برای دریافت مقدار ID SecurityEvent.getId() ، DnsEvent.getId() یا ConnectEvent.getId() را فراخوانی کنید. هر زمان که یک DPC ورود به سیستم را فعال می کند یا هنگامی که دستگاه راه اندازی مجدد می شود، سیستم شناسه را بازنشانی می کند. گزارش‌های امنیتی که با فراخوانی DevicePolicyManager.retrievePreRebootSecurityLogs() واکشی می‌شوند، شامل این شناسه‌ها نیستند.

ثبت امنیت

گزارش امنیتی به هر SecurityEvent یک سطح گزارش اختصاص می دهد. برای دریافت سطح log، getLogLevel() را فراخوانی کنید. این روش یک مقدار سطح گزارش را برمی‌گرداند که می‌تواند یکی از این موارد باشد: LEVEL_INFO ، LEVEL_WARNING ، یا LEVEL_ERROR .

Android 9 رویدادهای فهرست شده در جدول زیر را در گزارش‌های امنیتی ثبت می‌کند. برای بررسی تگ یک رویداد، getTag() را فراخوانی کنید. برای بازیابی داده های رویداد، getData() را فراخوانی کنید.

برچسب بزنید شرح رویداد
TAG_CERT_AUTHORITY_INSTALLED تلاشی برای نصب یک گواهی ریشه جدید در فضای ذخیره‌سازی اعتبار سیستم.
TAG_CERT_AUTHORITY_REMOVED تلاش برای حذف یک گواهی ریشه از فضای ذخیره‌سازی اعتبار سیستم.
TAG_CERT_VALIDATION_FAILURE در حین اتصال، یک گواهی Wi-Fi در بررسی اعتبارسنجی ناموفق بود.
TAG_CRYPTO_SELF_TEST_COMPLETED سیستم خودآزمایی رمزنگاری را تکمیل کرد.
TAG_KEYGUARD_DISABLED_FEATURES_SET یک برنامه سرپرست ویژگی‌های یک دستگاه یا صفحه قفل نمایه کاری را غیرفعال کرد.
TAG_KEY_DESTRUCTION تلاش برای حذف یک کلید رمزنگاری
TAG_KEY_GENERATED تلاش برای تولید یک کلید رمزنگاری جدید.
TAG_KEY_IMPORT تلاش برای وارد کردن یک کلید رمزنگاری جدید.
TAG_KEY_INTEGRITY_VIOLATION اندروید یک رمزگذاری یا کلید احراز هویت آسیب دیده را شناسایی کرد.
TAG_LOGGING_STARTED ثبت گزارش امنیتی شروع به ضبط کرد.
TAG_LOGGING_STOPPED ثبت گزارش امنیتی ضبط را متوقف کرد.
TAG_LOG_BUFFER_SIZE_CRITICAL بافر گزارش امنیتی به 90 درصد ظرفیت خود رسیده است.
TAG_MAX_PASSWORD_ATTEMPTS_SET یک برنامه مدیریت تعداد تلاش‌های مجاز برای گذرواژه نادرست را تنظیم می‌کند.
TAG_MAX_SCREEN_LOCK_TIMEOUT_SET یک برنامه مدیریت حداکثر زمان قفل صفحه را تعیین می کند.
TAG_MEDIA_MOUNT دستگاه رسانه ذخیره سازی قابل جابجایی را نصب کرده است.
TAG_MEDIA_UNMOUNT دستگاه رسانه ذخیره سازی قابل جابجایی را از حالت نصب خارج کرد.
TAG_OS_SHUTDOWN سیستم اندروید خاموش شد
TAG_OS_STARTUP سیستم اندروید راه اندازی شد.
TAG_PASSWORD_COMPLEXITY_SET یک برنامه مدیریت الزامات پیچیدگی رمز عبور را تنظیم می کند.
TAG_PASSWORD_EXPIRATION_SET یک برنامه مدیریت مدت زمان انقضای رمز عبور را تعیین می کند.
TAG_PASSWORD_HISTORY_LENGTH_SET یک برنامه مدیریت طول تاریخچه رمز عبور را تعیین می کند و از استفاده مجدد از رمزهای عبور قدیمی جلوگیری می کند.
TAG_REMOTE_LOCK یک برنامه سرپرست دستگاه یا نمایه کاری را قفل کرد.
TAG_USER_RESTRICTION_ADDED یک برنامه مدیریت محدودیتی برای کاربر تعیین کرده است.
TAG_USER_RESTRICTION_REMOVED یک برنامه مدیریت محدودیت کاربر را حذف کرد.
TAG_WIPE_FAILURE تلاش برای پاک کردن یک دستگاه یا نمایه کاری ناموفق بود.

چالش صفحه قفل نمایه کاری

با شروع Android 9، صاحبان نمایه می‌توانند از کاربران بخواهند با استفاده از محدودیت کاربری DISALLOW_UNIFIED_PASSWORD یک چالش صفحه قفل جداگانه برای نمایه کاری خود تنظیم کنند. برای بررسی اینکه آیا کاربر همان چالش صفحه قفل را برای دستگاه و نمایه کاری خود تنظیم کرده است یا خیر، با DevicePolicyManager.isUsingUnifiedPassword() تماس بگیرید.

اگر دستگاهی دارای یک صفحه قفل نمایه کاری جداگانه باشد، DevicePolicyManager.setMaximumTimeToLock() فقط یک مهلت زمانی قفل صفحه را برای نمایه کاری به جای کل دستگاه تنظیم می کند.

دسترسی به ابزارهای توسعه دهنده

برای کمک به حفظ داده‌های کاری در نمایه کاری، ابزار Android Debug Bridge (adb) نمی‌تواند به فهرست‌ها و فایل‌های موجود در نمایه کاری دسترسی داشته باشد.

پشتیبانی از گزینه های بیومتریک بیشتر

اندروید 9 کنترل دقیقی بر احراز هویت سخت افزاری بیومتریک در صفحه قفل نمایه کاری اضافه می کند. متد DevicePolicyManager.setKeyguardDisabledFeatures() موجود را با KEYGUARD_DISABLE_FACE و KEYGUARD_DISABLE_IRIS فراخوانی کنید. برای غیرفعال کردن همه روش‌های احراز هویت بیومتریک ارائه شده توسط دستگاه، KEYGUARD_DISABLE_BIOMETRICS را اضافه کنید.

منسوخ شدن خط‌مشی‌های سرپرست دستگاه

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

برخی از برنامه ها از ادمین دستگاه برای مدیریت دستگاه مصرف کننده استفاده می کنند. به عنوان مثال، قفل کردن و پاک کردن دستگاه گم شده. خط‌مشی‌های زیر برای فعال کردن این امر همچنان در دسترس خواهند بود:

برای اطلاعات بیشتر درباره این تغییرات، منسوخ شدن سرپرست دستگاه را بخوانید.

ثبت نام با کد QR ساده

کتابخانه QR داخلی

Android 9 همراه با یک کتابخانه QR برای ساده کردن ارائه دستگاه با کد QR ارائه می شود. مدیران فناوری اطلاعات دیگر نیازی به وارد کردن دستی جزئیات Wi-Fi برای راه‌اندازی دستگاه ندارند. در عوض، با اندروید 9 می‌توان این جزئیات Wi-Fi را در یک کد QR گنجاند. وقتی یک سرپرست فناوری اطلاعات کد QR را با دستگاه متعلق به شرکت اسکن می‌کند، دستگاه به‌طور خودکار به Wi-Fi متصل می‌شود و بدون ورودی دستی اضافی وارد فرآیند تأمین می‌شود.

روش تهیه کد QR از امکانات اضافی زیر برای تعیین جزئیات Wi-Fi پشتیبانی می کند:

تاریخ و منطقه زمانی را با استفاده از امکانات اضافی تنظیم کنید

روش تهیه کد QR از ارائه موارد اضافی برای تنظیم زمان و منطقه زمانی در دستگاه پشتیبانی می کند:

پاک کردن گزینه های داده

سرپرستان دستگاه می‌توانند هنگام حذف نمایه کاری یا کاربر ثانویه، یک پیام شخصی‌سازی شده را به کاربران نشان دهند. این پیام به کاربران دستگاه کمک می‌کند بفهمند سرپرست فناوری اطلاعات آن‌ها نمایه کاری یا کاربر ثانویه را حذف کرده است. با wipeData(int, CharSequence) تماس بگیرید و یک پیام توضیحی کوتاه ارائه دهید. هنگامی که کاربر اصلی یا مالک دستگاه فراخوانی می‌کند، سیستم پیامی را نشان نمی‌دهد و بازنشانی کارخانه‌ای دستگاه را آغاز می‌کند.

برای حذف داده های اشتراک از سیم کارت eUICC جاسازی شده، با wipeData() تماس بگیرید و WIPE_EUICC در آرگومان flags قرار دهید.

روش‌هایی برای صاحبان پروفایل وابسته

روش‌های زیر برای صاحبان نمایه‌های وابسته در دسترس است: