অ্যান্ড্রয়েড পারমিশন এমন নিয়ন্ত্রণ ব্যবস্থা প্রদান করে যা ব্যবহারকারীর সচেতনতা বাড়ায় এবং সংবেদনশীল ডেটাতে কোনো অ্যাপের অ্যাক্সেস সীমিত করে। অ্যান্ড্রয়েড ৮.০ এবং এর নিচের সংস্করণগুলিতে পারমিশন কনফিগার করার মধ্যে allowlisting অন্তর্ভুক্ত, যা ছাড়া প্রিভিলেজড অ্যাপগুলি নিষ্ক্রিয় থাকে, এমনকি যদি সেগুলি priv-app পাথে থাকেও। অ্যান্ড্রয়েড ৯ এবং এর উপরের সংস্করণগুলিতে, যে ডিভাইস সঠিকভাবে allowlisted নয় এমন অ্যাপ ব্যবহার করার চেষ্টা করে, সেটি বুট হবে না।
অ্যান্ড্রয়েড ১০-এ ‘ রোল’ (role) ধারণাটি চালু করা হয়েছে, যা সিস্টেমের মধ্যে একটি অনন্য নাম এবং এর সাথে নির্দিষ্ট কিছু প্রয়োজনীয়তা ও বিশেষাধিকার যুক্ত থাকে। কোনো নির্দিষ্ট উদ্দেশ্যে অ্যাপগুলোকে অনুমতি দেওয়ার জন্য সেগুলোতে রোল নির্ধারণ করুন এবং প্ল্যাটফর্ম কনফিগ রিসোর্স ব্যবহার করে ডিফল্ট রোলগুলো কনফিগার করুন।
সম্ভাব্য ক্ষতিকারক অ্যাপ (পিএইচএ)-এর বিরুদ্ধে বর্ধিত সুরক্ষা নিম্নলিখিত বিষয়গুলোর উন্নতি ঘটায়:
- অ্যাপের সম্ভাব্য ক্ষতিকর কার্যকলাপ সম্পর্কে স্বচ্ছতা।
- অ্যাপের আচরণের উপর ব্যবহারকারীর নিয়ন্ত্রণ।
- অনুমতি দ্বারা সুরক্ষিত ব্যক্তিগত তথ্য ব্যবহারের ক্ষেত্রে অ্যাপ ডেভেলপারদের নিজস্ব বিবেচনার স্বাধীনতা রয়েছে।
প্যাকেজ ইনস্টল এবং অনুমতি
অ্যান্ড্রয়েড ৯ এবং এর নিচের সংস্করণগুলোতে, প্যাকেজ ইনস্টল এবং অনুমতি নিয়ন্ত্রণের কার্যকারিতা PackageInstaller প্যাকেজের ( //packages/apps/PackageInstaller ) অন্তর্ভুক্ত ছিল। অ্যান্ড্রয়েড ১০ এবং এর উপরের সংস্করণগুলোতে, অনুমতি নিয়ন্ত্রণের কার্যকারিতা PermissionController ( //packages/apps/PermissionController ) নামক একটি পৃথক প্যাকেজে থাকে। চিত্র ১-এ দেখানো হয়েছে অ্যান্ড্রয়েড ১০-এ এই দুটি প্যাকেজ কোথায় অবস্থিত।

চিত্র ১. অ্যান্ড্রয়েড ১০-এ প্যাকেজ ইনস্টল এবং অনুমতি-নিয়ন্ত্রণ কার্যকারিতা
অনুমতি তালিকা এবং অ্যাক্সেস
অ্যান্ড্রয়েড ৬.০ এবং এর পরবর্তী সংস্করণগুলোতে, অ্যাপগুলো রানটাইমে বিপজ্জনক পারমিশনের জন্য অনুরোধ করে। অ্যান্ড্রয়েড ১০-এ অ্যাক্টিভিটি রিকগনিশন (AR) রানটাইম পারমিশন যুক্ত করা হয়েছে, যা ব্যবহারকারীকে বিপজ্জনক পারমিশনগুলো পরিবর্তন বা অনুমোদন করার জন্য অনুরোধ জানায়।
অ্যান্ড্রয়েড ৮.০-তে, /etc/permissions ডিরেক্টরিতে থাকা সিস্টেম কনফিগারেশন XML ফাইলগুলিতে প্রিভিলেজড অ্যাপগুলিকে স্পষ্টভাবে allowlist করতে হতো। অ্যান্ড্রয়েড ৯ এবং এর পরবর্তী সংস্করণগুলিতে, প্রিভিলেজড পারমিশনগুলিকে অবশ্যই allowlist করতে হয়, নতুবা ডিভাইসটি বুট করতে পারে না।
অভ্যন্তরীণ এপিআই-এর দৃশ্যমানতা সীমিত করতে এবং অ্যাপগুলোকে ভুলবশত প্ল্যাটফর্ম লাইব্রেরি অ্যাক্সেস করা থেকে বিরত রাখতে, অ্যান্ড্রয়েড ৭.০ নেটিভ লাইব্রেরির জন্য নেমস্পেস চালু করেছে। এটি সিস্টেম লাইব্রেরিগুলোকে অ্যাপ লাইব্রেরি থেকে আলাদা করে, এবং ডিভাইস নির্মাতারা তাদের নিজস্ব নেটিভ লাইব্রেরি যোগ করতে পারেন।
অ্যান্ড্রয়েড ১০ থেকে , কোনো ডিভাইসের স্ক্রিনের বিষয়বস্তু অ্যাক্সেস করার জন্য অ্যাপগুলোর সিগনেচার পারমিশন এবং ব্যবহারকারীর সম্মতি উভয়ই থাকা আবশ্যক। স্ক্রিনশট নেওয়ার মতো সাইলেন্ট ক্যাপচার কার্যকারিতার উপর নির্ভরশীল বিশেষাধিকারপ্রাপ্ত অ্যাপগুলোর পরিবর্তে MediaProjection ক্লাস ব্যবহার করা উচিত।
অ্যান্ড্রয়েড ১৫ অনুযায়ী, /etc/permissions ডিরেক্টরিতে থাকা সিস্টেম কনফিগারেশন XML ফাইলগুলোতে, নন-সিস্টেম অ্যাপের অনুরোধ করা অথবা সিস্টেম অ্যাপের আপডেটের কারণে নতুনভাবে অনুরোধ করা প্ল্যাটফর্ম সিগনেচার পারমিশনগুলোকে আপনাকে সুস্পষ্টভাবে allowlist করতে হবে।
স্বচ্ছতা এবং গোপনীয়তা
অ্যান্ড্রয়েড ৬.০ এবং তার পরবর্তী সংস্করণগুলোতে, ডিভাইসের ফ্যাক্টরি ম্যাক অ্যাড্রেস ওয়াই-ফাই পরিষেবা প্রদানকারী এবং প্যাকেট অ্যানালাইজারদের অ্যাক্সেস থেকে সুরক্ষিত থাকে। অ্যান্ড্রয়েড ১০ থেকে অতিরিক্ত বিধিনিষেধের ফলে অ্যাপগুলো অপরিবর্তনীয় ডিভাইস আইডেন্টিফায়ার (আইডি) অ্যাক্সেস করতে পারে না, যদি না সেগুলোকে বিশেষাধিকারপ্রাপ্ত অনুমতির জন্য অনুমোদিত করা হয় । ( কানেক্টিভিটি বিভাগে ডিভাইস আইডেন্টিফায়ার সম্পর্কে একটি প্রাসঙ্গিক আলোচনা রয়েছে, কারণ এটি ক্যারিয়ারদের প্রভাবিত করে।)
অ্যান্ড্রয়েড ৯ এবং এর নিচের সংস্করণগুলোতে, অ্যাপগুলোকে লোকেশন অ্যাক্সেস দেওয়ার সময় ব্যবহারকারীরা স্থায়ী সিদ্ধান্ত নিতেন। অ্যান্ড্রয়েড ১০ থেকে, একটি ট্রাইস্টেট লোকেশন পারমিশন ফিচার ব্যবহারকারীদের ডিভাইসের লোকেশনে অ্যাপ অ্যাক্সেসের অনুমতি দেওয়ার জন্য তিনটি বিকল্প দেয়। অ্যান্ড্রয়েড ১০-এ এই অনুমতির শর্তগুলো টার্গেট SDK নির্বিশেষে অ্যাপগুলোর ক্ষেত্রে প্রযোজ্য হয়।
অ্যান্ড্রয়েড ১০ থেকে শুরু হওয়া অন্যান্য স্বচ্ছতা ও গোপনীয়তা বৈশিষ্ট্যগুলির জন্য অনুমতি কনফিগার করুন।
- ব্যাকগ্রাউন্ড অ্যাক্সেস লোকেশন রিমাইন্ডারটি ব্যবহারকারীদের দেখায় যখন কোনো অ্যাপ ব্যাকগ্রাউন্ডে
ACCESS_FINE_LOCATIONপারমিশন ব্যবহার করে তাদের ডিভাইসের লোকেশন অ্যাক্সেস করে। - কন্টাক্টস প্রোভাইডার কম্পোনেন্ট দ্বারা পরিচালিত কন্টাক্টস-অ্যাফিনিটি সম্পর্কিত ডেটা ভিন্নভাবে অ্যাক্সেস করা হয়: অ্যাপগুলো ডাটাবেসে থাকা কন্টাক্ট অ্যাফিনিটি ডেটাতে লিখতে বা তা থেকে পড়তে পারে না। এটি কলার-সম্পর্কিত API-গুলোকে প্রভাবিত করে।
সুবিন্যস্ত কনফিগারেশন
অ্যান্ড্রয়েড ৬.০ এবং তার পরবর্তী সংস্করণগুলোর জন্য অনুমতি কনফিগারেশন আরও সরল করা হয়েছে।
-
initদ্বারা চালু করা সার্ভিসগুলোর জন্য অ্যাম্বিয়েন্ট ক্যাপাবিলিটিজ সার্ভিসের কনফিগারেশনের সমস্ত দিক একটিমাত্র.rcফাইলে রাখে।initদ্বারা চালু করা হয়নি এমন সার্ভিসগুলোর জন্য ক্যাপাবিলিটিজ সেট করার সময়, এর পরিবর্তেfs_config.cব্যবহার করে ফাইল সিস্টেম ক্যাপাবিলিটিজ কনফিগার করুন। - অ্যান্ড্রয়েড ৭.x এবং এর পূর্ববর্তী সংস্করণগুলো অ্যান্ড্রয়েড আইডি (AID) প্রক্রিয়াকে আরও প্রসারিত করে। এর জন্য, ফাইলসিস্টেমের সক্ষমতা এবং/অথবা ডিভাইস প্রস্তুতকারকের নিজস্ব অ্যান্ড্রয়েড আইডি (AID) নির্দিষ্ট করার জন্য একটি ডিভাইস-নির্দিষ্ট
android_filesystem_config.hফাইল ব্যবহার করা হয়। অ্যান্ড্রয়েড ৮.০ এবং এর পরবর্তী সংস্করণগুলো ফাইলসিস্টেমের সক্ষমতা প্রসারিত করার জন্য একটি নতুন পদ্ধতি সমর্থন করে। - অ্যান্ড্রয়েড ৮.০-তে, ইউএসবি কমান্ড পরিচালনার কাজটি ডিভাইস-নির্দিষ্ট
initস্ক্রিপ্ট (যা HAL লেয়ারের একটি বিকল্প) থেকে সরিয়ে একটি নেটিভ ইউএসবি ডেমন-এর অধীনে আনা হয়েছে। অ্যান্ড্রয়েড ৮.০ এবং এর পরবর্তী সংস্করণে চালু হওয়া প্রতিটি ডিভাইসে ইউএসবি HAL ইন্টারফেসটি অবশ্যই প্রয়োগ করতে হবে।