এই পৃষ্ঠায় অ্যান্ড্রয়েড ১০-এ প্রবর্তিত নতুন এন্টারপ্রাইজ এপিআই, ফিচার এবং আচরণগত পরিবর্তনগুলোর একটি সংক্ষিপ্ত বিবরণ দেওয়া হয়েছে।
কোম্পানির মালিকানাধীন ডিভাইসগুলির জন্য কাজের প্রোফাইল
অ্যান্ড্রয়েড ১০-এ কোম্পানির মালিকানাধীন ডিভাইসগুলোর জন্য নতুন প্রভিশনিং ও অ্যাটেস্টেশন ফিচার চালু করা হয়েছে, যেগুলোর জন্য শুধু একটি ওয়ার্ক প্রোফাইল প্রয়োজন।
কাজের প্রোফাইলের জন্য উন্নত সংস্থান সরঞ্জাম
আপনি কিউআর কোড বা জিরো টাচ ব্যবহার করে এনরোল করা অ্যান্ড্রয়েড ১০ এবং তার পরবর্তী ডিভাইসগুলিতে ওয়ার্ক প্রোফাইল প্রোভিশন করতে পারেন। কোম্পানির মালিকানাধীন কোনো ডিভাইস প্রোভিশন করার সময়, একটি নতুন ইন্টেন্ট এক্সট্রা ডিভাইস পলিসি কন্ট্রোলার অ্যাপগুলিকে (ডিপিসি) ওয়ার্ক প্রোফাইল বা সম্পূর্ণ পরিচালিত সেটআপ শুরু করার অনুমতি দেয়। একটি ওয়ার্ক প্রোফাইল তৈরি বা সম্পূর্ণ ব্যবস্থাপনা প্রতিষ্ঠিত হওয়ার পরে, যেকোনো প্রাথমিক পলিসি প্রয়োগ করার জন্য ডিপিসিগুলিকে অবশ্যই পলিসি কমপ্লায়েন্স স্ক্রিন চালু করতে হবে।
আপনার DPC-এর ম্যানিফেস্ট ফাইলে, একটি অ্যাক্টিভিটির জন্য GET_PROVISIONING_MODE এর একটি নতুন ইন্টেন্ট ফিল্টার ডিক্লেয়ার করুন এবং যথেচ্ছ অ্যাপ যাতে অ্যাক্টিভিটিটি চালু করতে না পারে, সেজন্য BIND_DEVICE_ADMIN পারমিশনটি যোগ করুন। উদাহরণস্বরূপ:
<activity
android:name=".GetProvisioningModeActivity"
android:label="@string/app_name"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<intent-filter>
<action
android:name="android.app.action.GET_PROVISIONING_MODE" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
প্রোভিশনিংয়ের সময়, সিস্টেমটি ইন্টেন্ট ফিল্টারের সাথে যুক্ত অ্যাক্টিভিটিটি চালু করে। এই অ্যাক্টিভিটির উদ্দেশ্য হলো একটি ম্যানেজমেন্ট মোড (ওয়ার্ক প্রোফাইল বা ফুললি ম্যানেজড) নির্দিষ্ট করা।
ডিভাইসটির জন্য উপযুক্ত ম্যানেজমেন্ট মোড নির্ধারণ করার আগে প্রোভিশনিং এক্সট্রাগুলো পুনরুদ্ধার করা সহায়ক হতে পারে। অ্যাক্টিভিটিটি নিম্নলিখিতগুলো পুনরুদ্ধার করার জন্য getIntent() কল করতে পারে:
DPC-রা একটি নতুন রেজাল্ট ইন্টেন্ট তৈরি করতে পারে এবং এতে নিম্নলিখিত অতিরিক্ত বিষয়গুলো যোগ করতে পারে:
-
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE: বিদ্যমান বান্ডেলে যোগ করুন অথবা একটি নতুন বান্ডেল তৈরি করুন। আপনার DPC যখন তার পলিসি কমপ্লায়েন্স স্ক্রিনগুলো চালু করে, তখন এই বান্ডেলটি একটি ইন্টেন্ট এক্সট্রা হিসেবে পাঠানো হয়। -
EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE: শুধুমাত্র তখনই মাইগ্রেট করার জন্য একটি অ্যাকাউন্ট নির্দিষ্ট করুন, যদি ওয়ার্ক প্রোফাইল প্রভিশনিং-এর অংশ হিসেবে কোনো ওয়ার্ক অ্যাকাউন্ট যোগ করা হয়। -
EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS
ডিভাইসে ম্যানেজমেন্ট মোড সেট করতে, putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode) কল করুন, যেখানে desiredProvisioningMode হলো:
- কাজের প্রোফাইল:
PROVISIONING_MODE_MANAGED_PROFILE - সম্পূর্ণরূপে পরিচালিত:
PROVISIONING_MODE_FULLY_MANAGED_DEVICE
setResult(RESULT_OK, Intent) এর মাধ্যমে সেটআপ-এ প্রোভিজনিং-এর বিবরণ ফেরত পাঠিয়ে ওয়ার্ক প্রোফাইল বা সম্পূর্ণরূপে পরিচালিত প্রোভিজনিং সম্পূর্ণ করুন এবং finish() দিয়ে সমস্ত সক্রিয় স্ক্রিন বন্ধ করুন।
প্রোভিশনিং সম্পন্ন হওয়ার পর, DPC-গুলোর জন্য তাদের কমপ্লায়েন্স স্ক্রিন চালু করতে এবং প্রাথমিক পলিসি সেটিংস প্রয়োগ করার জন্য একটি নতুন ইন্টেন্ট উপলব্ধ হয়। ওয়ার্ক প্রোফাইল ডিভাইসগুলিতে, কমপ্লায়েন্স স্ক্রিনগুলি ওয়ার্ক প্রোফাইলে প্রদর্শিত হয়। আপনার DPC-কে অবশ্যই নিশ্চিত করতে হবে যে, কোনো ব্যবহারকারী সেটআপ ফ্লো থেকে বেরিয়ে গেলেও তার কমপ্লায়েন্স স্ক্রিনগুলো যেন তাকে দেখানো হয়।
আপনার DPC-এর ম্যানিফেস্ট ফাইলে, একটি অ্যাক্টিভিটিতে ADMIN_POLICY_COMPLIANCE এর জন্য একটি নতুন ইন্টেন্ট ফিল্টার ডিক্লেয়ার করুন এবং যথেচ্ছ অ্যাপকে অ্যাক্টিভিটিটি চালু করা থেকে বিরত রাখতে BIND_DEVICE_ADMIN পারমিশনটি যোগ করুন। উদাহরণস্বরূপ:
<activity
android:name=".PolicyComplianceActivity"
android:label="@string/app_name"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<intent-filter>
<action android:name="android.app.action.ADMIN_POLICY_COMPLIANCE" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
আপনার DPC-কে অবশ্যই ACTION_PROFILE_PROVISIONING_COMPLETE ব্রডকাস্টটি শোনার পরিবর্তে এই নতুন Intent-টি ব্যবহার করতে হবে।
ইনটেন্ট ফিল্টারের সাথে যুক্ত অ্যাক্টিভিটি EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE পুনরুদ্ধার করার জন্য getIntent() কল করতে পারে। পলিসি কমপ্লায়েন্স সম্পাদন করার পর, ADMIN_POLICY_COMPLIANCE অবশ্যই setResult(RESULT_OK, Intent) রিটার্ন করতে হবে এবং finish() দিয়ে সমস্ত সক্রিয় স্ক্রিন বন্ধ করতে হবে।
সম্পূর্ণরূপে পরিচালিত ডিভাইসগুলো ব্যবহারকারীদের হোমস্ক্রিনে ফিরিয়ে দেয়। ওয়ার্ক প্রোফাইল ডিভাইসগুলো ব্যবহারকারীদের হোমস্ক্রিনে ফিরিয়ে দেওয়ার আগে তাদের ব্যক্তিগত অ্যাকাউন্ট যোগ করতে অনুরোধ করে।
কর্ম-প্রোফাইল ডিভাইস-আইডি প্রত্যয়ন
জিরো-টাচ এনরোলমেন্ট ব্যবহার করে প্রোভিশন করা একটি ওয়ার্ক প্রোফাইলের অ্যাডমিন হিসেবে সেট করা ডিপিসি-রা সিকিওর-হার্ডওয়্যার-অ্যাটেস্টেড ডিভাইস আইডি, যেমন IMEI বা প্রস্তুতকারকের সিরিয়াল নম্বর পেতে পারে। ডিভাইসটিতে অবশ্যই সিকিওর হার্ডওয়্যার (যেমন একটি ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্ট (TEE) বা সিকিওর এলিমেন্ট (SE)) অন্তর্ভুক্ত থাকতে হবে এবং ডিভাইস-আইডি অ্যাটেস্টেশন ও জিরো-টাচ এনরোলমেন্ট সমর্থন করতে হবে।
একটি ওয়ার্ক প্রোফাইলের অ্যাডমিন কম্পোনেন্ট, idAttestationFlags আর্গুমেন্টের জন্য ID_TYPE_SERIAL , ID_TYPE_IMEI , বা ID_TYPE_MEID এর মধ্যে এক বা একাধিক পাস করে DevicePolicyManager.generateKeyPair() কল করতে পারে।
ডিভাইস আইডি নিষ্কাশন এবং যাচাইকরণ সম্পর্কে আরও জানতে, "কী অ্যাটেস্টেশন ব্যবহার করে হার্ডওয়্যার-সমর্থিত কী পেয়ার যাচাইকরণ" দেখুন।
কাজের প্রোফাইলের উন্নতি
একাধিক প্রোফাইলে ক্যালেন্ডার দেখার সুবিধা এবং অজানা উৎস থেকে ডিভাইস জুড়ে অ্যাপ ইনস্টলেশন ব্লক করার জন্য নতুন এপিআই উপলব্ধ হয়েছে।
কাজের প্রোফাইল, ডিভাইস-ব্যাপী অজানা উৎস
গুগল প্লে (বা অন্যান্য বিশ্বস্ত অ্যাপ স্টোর) ছাড়া অন্য কোনো উৎস থেকে ডাউনলোড করা অ্যাপগুলোকে অজানা উৎসের অ্যাপ বলা হয়। অ্যান্ড্রয়েড ১০-এ, ওয়ার্ক প্রোফাইলের অ্যাডমিনরা DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY নামক নতুন ইউজার রেস্ট্রিকশনটি যোগ করে ডিভাইসের যেকোনো জায়গায় কোনো ব্যবহারকারী বা প্রোফাইলকে অজানা উৎস থেকে অ্যাপ ইনস্টল করা থেকে বিরত রাখতে পারেন। তবে, এই রেস্ট্রিকশনটি যোগ করার পরেও, ডিভাইসটি ব্যবহারকারী কোনো ব্যক্তি adb ব্যবহার করে অ্যাপ ইনস্টল করতে পারেন।
ব্যবহারকারীরা যাতে ভুলবশত অজানা উৎস থেকে অ্যাপ ইনস্টল না করে, সেজন্য আমরা এই ব্যবহারকারী সীমাবদ্ধতাটি যোগ করার পরামর্শ দিই, কারণ এর জন্য গুগল প্লে পরিষেবা ইনস্টল করার প্রয়োজন হয় না। আপনি যদি পুরোনো অ্যান্ড্রয়েড সংস্করণগুলো সমর্থন করতে চান, তাহলে গুগল প্লে-এর জন্য একটি পরিচালিত কনফিগারেশন মান সেট করতে পারেন।
কাজের প্রোফাইলে অনুমোদিত ইনপুট ডিভাইস সীমিত করুন।
যখন ওয়ার্ক প্রোফাইলের অ্যাডমিনরা DevicePolicyManager.setPermittedInputMethods() কল করেন, তখন ব্যবহারকারীরা পুরো ডিভাইসের পরিবর্তে শুধুমাত্র তাদের ওয়ার্ক প্রোফাইলের ভেতরের অনুমোদিত ইনপুট মেথডগুলোতে সীমাবদ্ধ থাকেন, যা ব্যবহারকারীদের তাদের ডিভাইসের ব্যক্তিগত দিকের ইনপুট মেথডগুলোর উপর সম্পূর্ণ নিয়ন্ত্রণ দেয়।
নীরবে কাজের প্রোফাইল মুছে ফেলুন
DevicePolicyManager.wipeData() -তে WIPE_SILENTLY ফ্ল্যাগ যোগ করা হয়েছে। ফ্ল্যাগটি সেট করা থাকলে, wipeData() ব্যবহার করে ব্যবহারকারীদের ওয়ার্ক প্রোফাইল মুছে ফেলার পর তাদেরকে জানানো হবে না।
সম্পূর্ণরূপে পরিচালিত ডিভাইসগুলির জন্য নতুন বৈশিষ্ট্য
অ্যান্ড্রয়েড ১০ সম্পূর্ণভাবে পরিচালিত ডিভাইসগুলোর জন্য নতুন ফিচার ও এপিআই নিয়ে এসেছে, যার মধ্যে রয়েছে ম্যানুয়াল সিস্টেম আপডেট, একটি EAP ওয়াই-ফাই নেটওয়ার্কের ক্রেডেনশিয়াল অন্তর্ভুক্ত করার জন্য QR-কোড ও NFC প্রভিশনিংয়ের সম্প্রসারণ, এবং DNS over TLS-এর জন্য সমর্থন।
ম্যানুয়াল সিস্টেম আপডেট ইনস্টলেশন
অ্যান্ড্রয়েড ১০-এ, সম্পূর্ণভাবে পরিচালিত ডিভাইসগুলোর অ্যাডমিনরা একটি সিস্টেম আপডেট ফাইলের মাধ্যমে সিস্টেম আপডেট ইনস্টল করতে পারেন। ম্যানুয়াল সিস্টেম আপডেটের মাধ্যমে আইটি অ্যাডমিনরা নিম্নলিখিত কাজগুলো করতে পারেন:
- ব্যাপকভাবে ইনস্টল করার আগে অল্প সংখ্যক ডিভাইসে আপডেটটি পরীক্ষা করে দেখুন।
- সীমিত ব্যান্ডউইথের নেটওয়ার্কে একই ফাইল একাধিকবার ডাউনলোড করা থেকে বিরত থাকুন।
- ধাপে ধাপে ইনস্টলেশন করুন, অথবা ডিভাইসগুলো শুধু তখনই আপডেট করুন যখন সেগুলো ব্যবহার করা হচ্ছে না।
প্রথমে, একজন আইটি অ্যাডমিন স্বয়ংক্রিয় ইনস্টলেশন বিলম্বিত করার জন্য (প্রয়োজন হলে) একটি স্থগিত সিস্টেম-আপডেট নীতি সেট করেন। এরপর, একটি ডিভাইসের ডিপিসি (DPC) ডিভাইস প্রস্তুতকারকের সিস্টেম আপডেট ফাইলের পাথ সহ installSystemUpdate() কল করে। একটি InstallSystemUpdateCallback অবজেক্ট পাস করুন, যা ডিভাইসটি পুনরায় চালু হওয়ার আগে ঘটা ত্রুটি রিপোর্ট করার জন্য সিস্টেম ব্যবহার করতে পারে। যদি কিছু ভুল হয়, সিস্টেমটি ত্রুটি কোড সহ onInstallUpdateError() ফাংশনটি কল করে।
ডিভাইসটি পুনরায় চালু হওয়ার পর, আপনার DPC-কে Build.FINGERPRINT এর মতো একটি ভার্সন API ব্যবহার করে সফল ইনস্টলেশন নিশ্চিত করতে হবে। যদি আপডেটটি ব্যর্থ হয়, তবে একজন আইটি অ্যাডমিনকে ব্যর্থতার বিষয়টি জানান।
EAP ওয়াই-ফাই প্রোভিশনিং
অ্যান্ড্রয়েড ১০-এ, ডিভাইস প্রভিশনিং-এর জন্য ব্যবহৃত কিউআর কোড এবং এনএফসি ডেটাতে ইএপি কনফিগারেশন ও ক্রেডেনশিয়াল—সার্টিফিকেটসহ—থাকতে পারে। যখন কোনো ব্যক্তি একটি কিউআর কোড স্ক্যান করেন বা একটি এনএফসি ট্যাগ ট্যাপ করেন, তখন ডিভাইসটি ইএপি ব্যবহার করে স্বয়ংক্রিয়ভাবে একটি স্থানীয় ওয়াই-ফাই নেটওয়ার্কে অথেন্টিকেট করে এবং কোনো অতিরিক্ত ম্যানুয়াল ইনপুট ছাড়াই প্রভিশনিং প্রক্রিয়া শুরু করে।
EAP ব্যবহার করে Wi-Fi প্রমাণীকরণ করতে, "EAP" ভ্যালু সহ একটি EXTRA_PROVISIONING_WIFI_SECURITY_TYPE এক্সট্রা যোগ করুন। EAP প্রমাণীকরণ নির্দিষ্ট করতে, আপনি আপনার ইন্টেন্টে নিম্নলিখিত প্রোভিশনিং এক্সট্রাগুলো যোগ করতে পারেন:
-
EXTRA_PROVISIONING_WIFI_EAP_METHOD -
EXTRA_PROVISIONING_WIFI_IDENTITY -
EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY -
EXTRA_PROVISIONING_WIFI_DOMAIN -
EXTRA_PROVISIONING_WIFI_PHASE2_AUTH -
EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE -
EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE
ব্যক্তিগত ডিএনএস সমর্থন
অভ্যন্তরীণ হোস্টনেম সহ ডিএনএস কোয়েরি ফাঁস হওয়া এড়াতে প্রতিষ্ঠানগুলো ডিএনএস ওভার টিএলএস (অ্যান্ড্রয়েড ডিভাইসে যা প্রাইভেট ডিএনএস নামে পরিচিত) ব্যবহার করতে পারে। সম্পূর্ণরূপে পরিচালিত ডিভাইসগুলোর অ্যাডমিন কম্পোনেন্ট ডিভাইসের প্রাইভেট ডিএনএস সেটিংস নিয়ন্ত্রণ করতে পারে। প্রাইভেট ডিএনএস মোড সেট করতে, কল করুন:
- সিস্টেম যখন কোনো সহায়ক নেম সার্ভার খুঁজে পায়, তখন ডিভাইসটিকে প্রাইভেট ডিএনএস ব্যবহার করার জন্য
setGlobalPrivateDnsModeOpportunistic()ব্যবহার করা, অথবা -
privateDnsHostআর্গুমেন্টে RFC7858 সমর্থনকারী একটি নেম সার্ভারের হোস্টনেম নির্দিষ্ট করতেsetGlobalPrivateDnsModeSpecifiedHost()ব্যবহার করা হয়।
যখন আপনার DPC এই পদ্ধতিগুলোর কোনো একটিকে কল করে, তখন কলটি সফল হলে সিস্টেম PRIVATE_DNS_SET_NO_ERROR রিটার্ন করে। অন্যথায় এটি একটি ত্রুটি রিটার্ন করে।
কোনো ডিভাইসে সেট করা প্রাইভেট ডিএনএস মোড এবং হোস্ট জানতে, getGlobalPrivateDnsMode() এবং getGlobalPrivateDnsHost() কল করুন। DISALLOW_CONFIG_PRIVATE_DNS ইউজার রেস্ট্রিকশন যোগ করে আপনি ব্যবহারকারীদের প্রাইভেট ডিএনএস সেটিংস পরিবর্তন করা থেকে বিরত রাখতে পারেন।
ভিপিএন লকডাউন মোড থেকে অব্যাহতি
ভিপিএন লকডাউন মোড একটি ডিপিসি-কে (DPC) এমন যেকোনো নেটওয়ার্ক ট্র্যাফিক ব্লক করার সুযোগ দেয় যা ভিপিএন ব্যবহার করে না। সম্পূর্ণ পরিচালিত ডিভাইস এবং ওয়ার্ক প্রোফাইলের অ্যাডমিনরা অ্যাপগুলোকে লকডাউন মোড থেকে অব্যাহতি দিতে পারেন। অব্যাহতিপ্রাপ্ত অ্যাপগুলো ডিফল্টরূপে একটি ভিপিএন ব্যবহার করে, কিন্তু ভিপিএন উপলব্ধ না থাকলে স্বয়ংক্রিয়ভাবে অন্য নেটওয়ার্কে সংযুক্ত হয়। অব্যাহতিপ্রাপ্ত অ্যাপগুলোকে যদি ভিপিএন-এ প্রবেশাধিকার স্পষ্টভাবে অস্বীকার করা হয়, তবে সেগুলো শুধুমাত্র অন্য নেটওয়ার্কগুলোই ব্যবহার করবে।
লকডাউন মোড থেকে কোনো অ্যাপকে অব্যাহতি দিতে, নতুন DevicePolicyManager মেথড setAlwaysOnVpnPackage() কল করুন, যা অব্যাহতিপ্রাপ্ত অ্যাপ প্যাকেজগুলোর একটি তালিকা গ্রহণ করে। মেথডটি কল করার সময় DPC দ্বারা যোগ করা যেকোনো অ্যাপ প্যাকেজ অবশ্যই ডিভাইসে ইনস্টল করা থাকতে হবে। যদি কোনো অ্যাপ আনইনস্টল করে আবার ইনস্টল করা হয়, তবে অ্যাপটিকে পুনরায় অব্যাহতি দিতে হবে। পূর্বে লকডাউন মোড থেকে অব্যাহতিপ্রাপ্ত অ্যাপগুলো পেতে, getAlwaysOnVpnLockdownWhitelist() কল করুন।
সম্পূর্ণভাবে পরিচালিত ডিভাইস এবং ওয়ার্ক প্রোফাইলের অ্যাডমিনদের লকডাউন মোডের স্ট্যাটাস জানতে সাহায্য করার জন্য, অ্যান্ড্রয়েড ১০-এ isAlwaysOnVpnLockdownEnabled() মেথডটি যুক্ত করা হয়েছে।
নতুন প্রতিনিধিদলের পরিধি
অ্যান্ড্রয়েড ১০ একটি ডিপিসি (DPC) কর্তৃক অন্যান্য, আরও বিশেষায়িত অ্যাপে অর্পণ করা যায় এমন ফাংশনের তালিকা প্রসারিত করেছে। অ্যান্ড্রয়েড একটি কাজের জন্য প্রয়োজনীয় এপিআই (API) মেথডগুলোকে স্কোপের (scope) মধ্যে ভাগ করে। একটি স্কোপ অর্পণ করতে, setDelegatedScopes() কল করুন এবং নিম্নলিখিত স্কোপগুলোর মধ্যে এক বা একাধিক পাস করুন:
- নেটওয়ার্ক কার্যকলাপের লগিং অর্পণ করতে
DELEGATION_NETWORK_LOGGINGব্যবহার করুন - ডেলিগেট সার্টিফিকেট নির্বাচনের জন্য
DELEGATION_CERT_SELECTION
অ্যান্ড্রয়েড ১০ ডেলিগেট অ্যাপের জন্য DelegatedAdminReceiver নামক নতুন ক্লাসটি চালু করেছে। সিস্টেম এই ব্রডকাস্ট রিসিভারটি ব্যবহার করে ডেলিগেট অ্যাপগুলিতে DPC-এর মতো কলব্যাক পাঠায়। যেসব অ্যাপকে নেটওয়ার্ক অ্যাক্টিভিটি লগিং এবং সার্টিফিকেট নির্বাচনের দায়িত্ব দেওয়া হয়েছে, তাদের এই ক্লাসটি ইমপ্লিমেন্ট করা উচিত। একটি ডেলিগেট অ্যাপে এই কম্পোনেন্টটি যোগ করতে, এই ধাপগুলো অনুসরণ করুন:
- ডেলিগেট অ্যাপে
DelegatedAdminReceiverএর একটি সাবক্লাস যোগ করুন। - অ্যাপ ম্যানিফেস্টে
<receiver>ডিক্লেয়ার করুন এবং প্রতিটি কলব্যাকের জন্য একটি ইন্টেন্ট-ফিল্টার অ্যাকশন যোগ করুন। উদাহরণস্বরূপ,ACTION_NETWORK_LOGS_AVAILABLEঅথবাACTION_CHOOSE_PRIVATE_KEY_ALIAS। -
BIND_DEVICE_ADMINপারমিশন দিয়ে ব্রডকাস্ট রিসিভারটিকে সুরক্ষিত করুন।
নিম্নলিখিত কোড স্নিপেটটি একটি একক ডেলিগেট অ্যাপের অ্যাপ ম্যানিফেস্ট দেখাচ্ছে, যা নেটওয়ার্ক লগিং এবং সার্টিফিকেট নির্বাচন উভয়ই পরিচালনা করে:
<receiver android:name=".app.DelegatedAdminReceiver"
android:permission="android.permission.BIND_DELEGATED_ADMIN">
<intent-filter>
<action android:name="android.app.admin.action.NETWORK_LOGS_AVAILABLE">
<action android:name="android.app.action.CHOOSE_PRIVATE_KEY_ALIAS">
</intent-filter>
</receiver>
নেটওয়ার্ক কার্যকলাপ লগিং
সংস্থাগুলোকে ম্যালওয়্যার শনাক্ত ও ট্র্যাক করতে সাহায্য করার জন্য, ডিপিসি (DPC) সিস্টেম দ্বারা সংঘটিত টিসিপি (TCP) সংযোগ এবং ডিএনএস (DNS) লুকআপ লগ করতে পারে। অ্যান্ড্রয়েড ১০-এ, সম্পূর্ণভাবে পরিচালিত ডিভাইসগুলোর অ্যাডমিনরা একটি বিশেষায়িত অ্যাপের কাছে নেটওয়ার্ক লগিংয়ের দায়িত্ব অর্পণ করতে পারেন।
সিস্টেম একটি ব্যাচ উপলব্ধ করার পরে নেটওয়ার্ক লগ পুনরুদ্ধার করতে, ডেলিগেট অ্যাপগুলিকে প্রথমে DelegatedAdminReceiver (পূর্বে বর্ণিত) সাবক্লাস তৈরি করতে হবে। আপনার সাবক্লাসে, " লগ পুনরুদ্ধার করুন" অংশে দেওয়া নির্দেশিকা অনুসরণ করে onNetworkLogsAvailable() কলব্যাকটি ইমপ্লিমেন্ট করুন।
ডেলিগেট অ্যাপগুলি নিম্নলিখিত DevicePolicyManager মেথডগুলি কল করতে পারে ( admin আর্গুমেন্টের জন্য null পাস করে):
লগ হারিয়ে যাওয়া এড়াতে, অন্য কোনো অ্যাপকে দায়িত্ব অর্পণ করার পরিকল্পনা থাকলে DPC-গুলোর নেটওয়ার্ক লগিং চালু করা উচিত নয়। দায়িত্ব অর্পণকারী অ্যাপটির উচিত নেটওয়ার্ক লগ চালু করা এবং সংগ্রহ করা। একটি DPC নেটওয়ার্ক লগিং অর্পণ করার পর, এটি আর কোনো onNetworkLogsAvailable() কলব্যাক পাবে না।
একটি ডেলিগেট অ্যাপ থেকে কীভাবে নেটওয়ার্ক অ্যাক্টিভিটি লগিং রিপোর্ট করতে হয় তা জানতে, ডেভেলপার গাইড "নেটওয়ার্ক অ্যাক্টিভিটি লগিং" পড়ুন।
সার্টিফিকেট নির্বাচন
অ্যান্ড্রয়েড ১০-এ, সম্পূর্ণভাবে পরিচালিত ডিভাইস, ওয়ার্ক প্রোফাইল এবং সেকেন্ডারি ব্যবহারকারীদের অ্যাডমিনরা একটি বিশেষায়িত অ্যাপের মাধ্যমে সার্টিফিকেট নির্বাচনের দায়িত্ব অর্পণ করতে পারেন।
একটি সার্টিফিকেট অ্যালিয়াস নির্বাচন করার জন্য, ডেলিগেট অ্যাপগুলিকে প্রথমে DelegatedAdminReceiver (যা পূর্বে বর্ণিত) সাবক্লাস তৈরি করতে হবে। আপনার সাবক্লাসে, onChoosePrivateKeyAlias() কলব্যাকটি ইমপ্লিমেন্ট করুন এবং পছন্দের সার্টিফিকেটের জন্য একটি অ্যালিয়াস রিটার্ন করুন অথবা, ব্যবহারকারীকে সার্টিফিকেট নির্বাচন করতে বলার জন্য, null রিটার্ন করুন।
ডিভাইস অ্যাডমিন নীতিমালার অবলুপ্তি
অ্যান্ড্রয়েড ১০ অ্যাপ এবং ডিপিসি-কে পুরোনো ডিভাইস অ্যাডমিন পলিসি প্রয়োগ করা থেকে বিরত রাখে। আমরা গ্রাহক এবং অংশীদারদের সম্পূর্ণ পরিচালিত ডিভাইস বা ওয়ার্ক প্রোফাইলে স্থানান্তরিত হওয়ার পরামর্শ দিই। অ্যান্ড্রয়েড ১০-কে লক্ষ্য করে কোনো ডিভাইস অ্যাডমিন দ্বারা নিম্নলিখিত পলিসিগুলো চালু করা হলে একটি SecurityException থ্রো করে:
-
USES_POLICY_DISABLE_CAMERA -
USES_POLICY_DISABLE_KEYGUARD_FEATURES -
USES_POLICY_EXPIRE_PASSWORD -
USES_POLICY_LIMIT_PASSWORD
কিছু অ্যাপ্লিকেশন গ্রাহকের ডিভাইস পরিচালনার জন্য ডিভাইস অ্যাডমিন ব্যবহার করে। উদাহরণস্বরূপ, হারিয়ে যাওয়া ডিভাইস লক করা এবং তার ডেটা মুছে ফেলা। এটি সক্রিয় করার জন্য, নিম্নলিখিত পলিসিগুলো আগের মতোই উপলব্ধ থাকবে:
এই পরিবর্তনগুলো সম্পর্কে আরও তথ্যের জন্য, ডিভাইস অ্যাডমিন অবচয় পড়ুন।
অ্যাপের জন্য নতুন ফিচার
অ্যান্ড্রয়েড ১০-এর জন্য তৈরি অ্যাপগুলো গোপনীয় তথ্য প্রদর্শন করার বা গুরুত্বপূর্ণ ফিচার চালু করার আগে ডিভাইসে সেট করা স্ক্রিন লকের জটিলতা সম্পর্কে জানতে পারে। KeyChain API) ব্যবহারকারী অ্যাপগুলো উন্নত আচরণগত সুবিধা পায়, পাশাপাশি ভিপিএন (VPN) অ্যাপগুলোর জন্যও নতুন ফিচার উপলব্ধ হয়েছে।
স্ক্রিন লকের মান যাচাই
অ্যান্ড্রয়েড ১০ থেকে, যেসব অ্যাপের গুরুত্বপূর্ণ ফিচারের জন্য স্ক্রিন লক প্রয়োজন, সেগুলো ডিভাইস বা ওয়ার্ক প্রোফাইলের স্ক্রিন লকের জটিলতা সম্পর্কে জানতে চাইতে পারে। যেসব অ্যাপের আরও শক্তিশালী স্ক্রিন লক প্রয়োজন, সেগুলো ব্যবহারকারীকে সিস্টেম স্ক্রিন লক সেটিংসে নিয়ে যেতে পারে, যার ফলে তারা তাদের নিরাপত্তা সেটিংস আপডেট করতে পারেন।
স্ক্রিন লকের মান পরীক্ষা করতে:
- আপনার অ্যাপের ম্যানিফেস্টে নতুন
REQUEST_PASSWORD_COMPLEXITYপারমিশনটি যোগ করুন। -
DevicePolicyManager.getPasswordComplexity()কল করুন। জটিলতাকে চারটি শ্রেণীতে ভাগ করা হয়েছে:
সিস্টেম স্ক্রিন লক সেটিংস চালু করতে, এক্সট্রা EXTRA_PASSWORD_COMPLEXITY সহ ACTION_SET_NEW_PASSWORD ব্যবহার করুন — যে অপশনগুলো ইন্টেন্ট এক্সট্রাতে নির্দিষ্ট করা জটিলতার মান পূরণ করে না, সেগুলো ধূসর হয়ে থাকবে। ব্যবহারকারীরা উপলব্ধ স্ক্রিন লক অপশনগুলো থেকে বেছে নিতে পারেন অথবা স্ক্রিন থেকে বেরিয়ে যেতে পারেন।
সর্বোত্তম পন্থা: সিস্টেম স্ক্রিন লক পেজ চালু করার আগে আপনার অ্যাপে একটি বার্তা প্রদর্শন করুন। আপনার অ্যাপ পুনরায় চালু হলে, DevicePolicyManager.getPasswordComplexity() আবার কল করুন। যদি আরও শক্তিশালী স্ক্রিন লকের প্রয়োজন হয়, তবে ব্যবহারকারীদের বারবার তাদের নিরাপত্তা সেটিংস আপডেট করতে বলার পরিবর্তে অ্যাক্সেস সীমাবদ্ধ করুন।
ভিপিএন অ্যাপে HTTP প্রক্সি সমর্থন
অ্যান্ড্রয়েড ১০-এ, ভিপিএন অ্যাপগুলো তাদের ভিপিএন সংযোগের জন্য একটি HTTP প্রক্সি সেট করতে পারে। একটি HTTP প্রক্সি যোগ করতে, VpnService.Builder.setHttpProxy() কল করার আগে একটি ভিপিএন অ্যাপকে অবশ্যই একটি হোস্ট এবং পোর্ট দিয়ে ProxyInfo ইনস্ট্যান্স কনফিগার করতে হবে। সিস্টেম এবং অনেক নেটওয়ার্কিং লাইব্রেরি এই প্রক্সি সেটিং ব্যবহার করে, কিন্তু সিস্টেম অ্যাপগুলোকে HTTP অনুরোধ প্রক্সি করতে বাধ্য করে না।
HTTP প্রক্সি কীভাবে সেট করতে হয়, তা দেখানোর জন্য নমুনা কোডের জন্য ToyVPN স্যাম্পল অ্যাপটি দেখুন।
ভিপিএন পরিষেবা মোড
অলওয়েজ-অন ভিপিএন- এর কারণে সার্ভিসটি চালু আছে কিনা এবং লকডাউন মোড সক্রিয় আছে কিনা, তা ভিপিএন অ্যাপগুলো জানতে পারে। অ্যান্ড্রয়েড ১০-এ যোগ করা নতুন পদ্ধতিগুলো আপনাকে আপনার ইউজার ইন্টারফেস সামঞ্জস্য করতে সাহায্য করতে পারে। উদাহরণস্বরূপ, যখন অলওয়েজ-অন ভিপিএন আপনার সার্ভিসের জীবনচক্র নিয়ন্ত্রণ করে, তখন আপনি আপনার ডিসকানেক্ট বাটনটি নিষ্ক্রিয় করে দিতে পারেন।
সার্ভিসের সাথে সংযোগ স্থাপন এবং লোকাল ইন্টারফেস প্রতিষ্ঠা করার পর VPN অ্যাপগুলো নিম্নলিখিত VpnService মেথডগুলো কল করতে পারে:
- অলওয়েজ-অন ভিপিএন-এর কারণে সিস্টেমটি সার্ভিসটি চালু করেছে কিনা তা জানতে
isAlwaysOn()হয়। - সিস্টেমটি VPN ব্যবহার করে না এমন সংযোগগুলিকে ব্লক করছে কিনা তা জানতে
isLockdownEnabled()করুন।
আপনার পরিষেবা চালু থাকা অবস্থায় অলওয়েজ-অন স্ট্যাটাস একই থাকে, কিন্তু লকডাউন-মোড স্ট্যাটাস পরিবর্তিত হতে পারে।
কীচেইনের উন্নতি
অ্যান্ড্রয়েড ১০-এ KeyChain এপিআই সম্পর্কিত বেশ কিছু উন্নতি আনা হয়েছে।
যখন কোনো অ্যাপ KeyChain.choosePrivateKeyAlias() কল করে, তখন Android 10 এবং এর পরবর্তী ডিভাইসগুলো কলে নির্দিষ্ট করা ইস্যুকারী এবং কী অ্যালগরিদমের উপর ভিত্তি করে ব্যবহারকারীর বেছে নেওয়ার জন্য সার্টিফিকেটের তালিকাটি ফিল্টার করে।
উদাহরণস্বরূপ, যখন একটি TLS সার্ভার TLS হ্যান্ডশেকের অংশ হিসেবে একটি সার্টিফিকেট রিকোয়েস্ট মেসেজ পাঠায় এবং ব্রাউজার KeyChain.choosePrivateKeyAlias() কল করে, তখন সার্টিফিকেট নির্বাচনের প্রম্পটে শুধুমাত্র সেই অপশনগুলোই অন্তর্ভুক্ত থাকে যা issuers প্যারামিটারের সাথে মেলে। যদি কোনো মিলযুক্ত অপশন উপলব্ধ না থাকে অথবা ডিভাইসে কোনো সার্টিফিকেট ইনস্টল করা না থাকে, তাহলে নির্বাচনের প্রম্পটটি ব্যবহারকারীকে দেখানো হবে না।
এছাড়াও, KeyChain থেকে কী বা সিএ সার্টিফিকেট ইম্পোর্ট করার জন্য ডিভাইসে স্ক্রিন লক থাকার প্রয়োজন নেই।