ভিএম-স্তরের অনুমোদন নীতি

সফটওয়্যার-ডিফাইন্ড ভেহিকেল (SDV) মেশ নেটওয়ার্কে বিভিন্ন ভিএম-এর মধ্যে যোগাযোগের জন্য অনুমোদন নীতি নির্ধারণ করে ভিএম-স্তরের অনুমতিসমূহ। কোনো একটি ভিএম অরক্ষিত হয়ে পড়লে, এগুলি গভীরতর প্রতিরক্ষা ব্যবস্থা প্রদান করে।

বিভিন্ন ভিএম-এর মধ্যে যোগাযোগের অনুমতি দিতে হলে আপনাকে অবশ্যই সার্ভিস-লেভেল এবং ভিএম-লেভেল উভয় পারমিশন প্রদান করতে হবে।

প্রোটো স্কিমা

টেক্সটপ্রোটো ফরম্যাটে একটিমাত্র VmAuthzPolicy মেসেজ ব্যবহার করে ভিএম-স্তরের অনুমতিগুলো সংজ্ঞায়িত করা হয়।

message VmAuthzPolicy {
  repeated Publisher allow_publisher = 1;
  repeated Publisher deny_publisher = 2;
  repeated Subscriber allow_subscriber = 3;
  repeated Subscriber deny_subscriber = 4;
  repeated Server allow_server = 5;
  repeated Server deny_server = 6;
  repeated Client allow_client = 7;
  repeated Client deny_client = 8;
}

// Reuses the same Publisher message from AuthzPolicy, but uses "*" for
// wildcards.
message Publisher {
  string message = 1;
  repeated string topic = 2;
}

// Reuses the same Subscriber message from AuthzPolicy, but uses "*" for
// wildcards.
message Subscriber {
  string message = 1;
  repeated string topic = 2;
}

// Reuses the same Server message from AuthzPolicy, but uses "*" for
// wildcards.
message Server {
  string service = 1;
  repeated string channel = 2;
}

// Reuses the same Client message from AuthzPolicy, but uses "*" for
// wildcards.
message Client {
  string service = 1;
  repeated string channel = 2;
}

অনুমোদন সিদ্ধান্ত

মূল্যায়ন একটি কঠোর অগ্রাধিকার ক্রম অনুসরণ করে, যেখানে একই স্তরে 'অস্বীকার' (Deny) 'অনুমতি'কে (Allow) অগ্রাহ্য করে। ডিফল্টরূপে, সমস্ত ক্রস-ভিএম যোগাযোগ অস্বীকার করা হয়।

অগ্রাধিকার মূল্যায়ন ক্রম

সিদ্ধান্ত যুক্তিটি নিম্নলিখিত ক্রমে অনুমতিগুলি যাচাই করে:

  1. সুনির্দিষ্ট অস্বীকৃতি : যদি কোনো নির্দিষ্ট ইনস্ট্যান্স (মেসেজ+টপিক অথবা সার্ভিস+চ্যানেল) একটি deny_ রুলের সাথে মিলে যায়, তবে সেটিকে সুস্পষ্টভাবে অস্বীকার করা হয়।
  2. সুনির্দিষ্ট অনুমতি : যদি কোনো নির্দিষ্ট দৃষ্টান্ত একটি allow_ নিয়মের সাথে মিলে যায়, তবে সেটি অনুমোদিত হয়।
  3. টাইপ ডিনাই : যদি কোনো সম্পূর্ণ মেসেজ টাইপ বা সার্ভিস ইন্টারফেস কোনো deny_ রুলের ( topic: "*" বা channel: "*" ) সাথে মিলে যায়, তাহলে সেটিকে সুস্পষ্টভাবে প্রত্যাখ্যান করা হয়।
  4. টাইপ Allow : যদি একটি সম্পূর্ণ Message টাইপ বা Service ইন্টারফেস কোনো allow_ রুলের ( topic: "*" বা channel: "*" ) সাথে মিলে যায়, তাহলে সেটি Permitted (অনুমোদিত ) বলে গণ্য হবে।
  5. সার্বিকভাবে প্রত্যাখ্যান : যদি সব ধরনের বার্তা বা পরিষেবা প্রত্যাখ্যান করা হয় ( message: "*" অথবা service: "*" ), তাহলে এটি স্পষ্টভাবে প্রত্যাখ্যান করা হয়
  6. নির্বিচার অনুমতি : যদি সকল বার্তার ধরন বা পরিষেবা অনুমোদিত হয় ( message: "*" অথবা service: "*" ), তবে এটি অনুমোদিত
  7. অন্তর্নিহিত ডিফল্ট : যদি কোনো নিয়ম না মেলে, তবে এটি অন্তর্নিহিতভাবে প্রত্যাখ্যাত হয় । সিস্টেমের ডিফল্ট হলো সবগুলোকে প্রত্যাখ্যান করা।

উদাহরণ

নিম্নলিখিত উদাহরণগুলো দেখায় যে অনুমোদন নীতিটি কীভাবে মূল্যায়ন করা হয়।

গ্র্যানুলার অ্যালাউ ওভাররাইড টাইপ ডিনাই

# Deny door unlock publications by default...
deny_publisher {
  message: "com.sdv.security.UnlockDoors"
  topic: "*"
}

# ...but allow it for the driver door.
allow_publisher {
  message: "com.sdv.security.UnlockDoors"
  topic: "driver_door"
}

টাইপ ডিনাই ব্ল্যাঙ্কেট অ্যালাউকে ওভাররাইড করে।

# Allow all client calls globally (blanket allow)...
allow_client {
  service: "*"
  channel: "*"
}

# ...except for the firmware update service (system-wide deny).
deny_client {
  service: "com.sdv.diagnostic.FirmwareUpdate"
  channel: "*"
}