تحدّد الأذونات على مستوى الجهاز الافتراضي سياسات التفويض للاتصال بين الأجهزة الافتراضية المختلفة في شبكة Software-Defined Vehicle (SDV) mesh. وتوفّر هذه الأذونات أمانًا متعدد الطبقات في حال تعرّض أحد الأجهزة الافتراضية للخطر.
يجب منح الأذونات على مستوى الخدمة وعلى مستوى الجهاز الافتراضي للسماح بالاتصال بين الأجهزة الافتراضية.
مخطط Proto
يتم تحديد الأذونات على مستوى الجهاز الافتراضي باستخدام رسالة VmAuthzPolicy واحدة بتنسيق textproto.
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_، يتم السماح بها. - رفض النوع: إذا تطابق نوع رسالة أو واجهة خدمة بالكامل مع قاعدة
deny_(topic: "*"أوchannel: "*")، يتم رفضها صراحةً. - السماح بالنوع: إذا تطابق نوع رسالة أو واجهة خدمة بالكامل مع قاعدة
allow_(topic: "*"أوchannel: "*")، يتم السماح بها. - الرفض الشامل: إذا تم رفض جميع أنواع الرسائل أو الخدمات
(
message: "*"أوservice: "*")، يتم رفضها صراحةً. - السماح الشامل: إذا تم السماح بجميع أنواع الرسائل أو الخدمات
(
message: "*"أوservice: "*")، يتم السماح بها. - الإعداد التلقائي الضمني: إذا لم تتطابق أي قاعدة، يتم رفضها ضمنيًا. الإعداد التلقائي للنظام هو رفض كل شيء.
أمثلة
توضّح الأمثلة التالية كيفية تقييم سياسة التفويض.
تلغي قاعدة السماح الدقيق قاعدة رفض النوع
# 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: "*"
}