ডিবাগ অনুমতি লঙ্ঘন

যখন কোনো পরিষেবা এমন কোনো কাজ করার চেষ্টা করে যা করার অনুমতি তার নেই, তখন অনুমোদন লঙ্ঘন ঘটে। স্ট্যান্ডার্ড permissionsOnly এনফোর্সমেন্ট মোডে, সফটওয়্যার-ডিফাইন্ড ভেহিকেল (SDV) ফ্রেমওয়ার্ক পরীক্ষা করে দেখে যে সাবজেক্ট বা তার ভার্চুয়াল মেশিনের (VM) পলিসিতে ঘোষিত প্রয়োজনীয় অনুমতি আছে কি না।

আপনাকে অবশ্যই লঙ্ঘনের বার্তাগুলো তাদের নিরাপত্তা প্রেক্ষাপটের আলোকে মূল্যায়ন করতে হবে। প্রতিটি লঙ্ঘনই কোনো ত্রুটি বা অননুমোদিত প্রবেশের প্রচেষ্টা নির্দেশ করে না।

সমস্ত অনুমোদন সিদ্ধান্ত লগ করা হয়। সেগুলি দেখতে, লগক্যাট আউটপুটে অডিট বার্তাগুলি অনুসন্ধান করুন:

adb -s $SERIAL logcat | grep 'audit message'

সফল অনুমোদন

সফল চেকগুলো debug লেভেলে লগ করা হয়।

এটি নির্দেশ করে যে, সংশ্লিষ্ট ব্যক্তির প্রয়োজনীয় অনুমতি ঘোষিত হয়েছে:

D SdvServiceManagerServer: instance2:com.sdv.google.sample.bar.ServiceBundleBar/instance declares permission to access com.sdv.google.sample.foo.ServiceBundleFoo#foo-rpc, audit message: ...

লঙ্ঘন এবং অনুমতি অনুপস্থিত

অনুমতি না থাকলে লঙ্ঘন ঘটে।

এটি তখন ঘটে যখন সাবজেক্টের অথরাইজেশন পলিসিতে client , server , publisher বা subscriber মতো প্রয়োজনীয় অনুমতি থাকে না, অথবা সাবজেক্টের ভিএম-এর ভিএম-লেভেল পলিসিতে সেই অনুমতিটি থাকে না।

এটি error স্তরে লগ করা হয়:

E SdvServiceManagerServer: Authz violation. instance2:com.sdv.google.sample.bar.ServiceBundleBar/instance does not declare permission to access com.sdv.google.sample.foo.ServiceBundleFoo#foo-rpc, audit message: Subject lacks 'client' permission...

প্রতিকার

লগের audit message প্রায়শই একটি লঙ্ঘন সমাধান করার জন্য কী যোগ করতে হবে সে সম্পর্কে একটি দরকারি পরামর্শ থাকে।

উদাহরণস্বরূপ, আপনি এই ধরনের একটি অনুমতি ত্রুটি দেখতে পারেন:

Subject 'vm:com.client.Bundle/default' lacks 'client' permission for service 'com.server.TargetType' with channel 'my-unit'. Add 'client { service: "com.server.TargetType" channel: "my-unit" }' to the subject's Authz policy

সাবজেক্টের অথরাইজেশন পলিসি টেক্সটপ্রোটোতে নিয়মটি যোগ করে এর প্রতিকার করুন:

client {
    service: "com.server.TargetType"
    channel: "my-unit"
}

যদি ত্রুটির বার্তায় সাবজেক্টের ভিএম-এ কোনো অনুমতির অভাব নির্দেশ করা হয়, তাহলে আপনাকে অবশ্যই সেটি ভিএম-লেভেল পলিসিতে যোগ করতে হবে, যেমন com.oem.sdv.authz APEX-এর মধ্যে থাকা <vm_name>.textproto বা .default.textproto

allow_server {
    service: "com.server.TargetType"
    channel: "my-unit"
}

ACL থেকে স্থানান্তরিত করুন

পূর্ববর্তী সংস্করণের সাথে সামঞ্জস্যতা এবং মাইগ্রেশনের জন্য, ফ্রেমওয়ার্কটি ACLs only , Lenient এবং Strict মোড সমর্থন করে, যেগুলো আগের অ্যাক্সেস কন্ট্রোল লিস্ট (ACL)-গুলোকেও বিবেচনা করে।

শুধুমাত্র ACL মোড

ACLs only মোডে, অ্যাক্সেস কেবল তখনই অনুমোদিত হয় যখন ACL-গুলি অনুমতি দেয়। অনুমতিগুলি উপেক্ষা করা হয়। যদি ACL-গুলি অ্যাক্সেস অস্বীকার করে, তাহলে একটি ত্রুটি লগ করা হয়:

E SdvServiceManagerServer: Authz violation. com.sdv.google.sample.foo.ServiceBundleFoo#foo-rpc denies access to instance2:com.sdv.google.sample.bar.ServiceBundleBar/instance, audit message: ...

নমনীয় মোড

Lenient মোডে, ACL বা পারমিশন অনুমতি দিলেই অ্যাক্সেস দেওয়া হয়। যদি ACL ব্যবহার করে অ্যাক্সেস দেওয়া হয় কিন্তু পারমিশন না থাকে, তবে সিস্টেমকে সচল রেখে অনুপস্থিত পারমিশন শনাক্ত করতে সাহায্য করার জন্য এটিকে debug লেভেলে একটি সফট ভায়োলেশন হিসেবে লগ করা হয়।

D SdvServiceManagerServer: Permissions Authz violation (access granted by ACLs): instance2:com.sdv.google.sample.bar.ServiceBundleBar/instance does not declare permission to access com.sdv.google.sample.foo.ServiceBundleFoo#foo-rpc, audit message: ...

যদি ACL এবং পারমিশন উভয়ই ব্যর্থ হয়, তবে উভয়ের জন্যই এটি একটি ত্রুটি হিসাবে লগ করা হয়:

E SdvServiceManagerServer: Authz violation. com.sdv.google.sample.foo.ServiceBundleFoo#foo-rpc denies access to instance2:com.sdv.google.sample.bar.ServiceBundleBar/instance, audit message: ...
E SdvServiceManagerServer: Authz violation. instance2:com.sdv.google.sample.bar.ServiceBundleBar/instance does not declare permission to access com.sdv.google.sample.foo.ServiceBundleFoo#foo-rpc, audit message: ...

কঠোর মোড

Strict মোডে, ACL এবং পারমিশন উভয়কেই অ্যাক্সেসের অনুমতি দিতে হবে। যদি ACL বা পারমিশন কোনো একটিতে ত্রুটি দেখা দেয়, তাহলে অ্যাক্সেস প্রত্যাখ্যান করা হয় এবং একটি ত্রুটি লগ করা হয়।