वीएम-लेवल की अनुमतियों से, सॉफ़्टवेयर-डिफ़ाइंड वीइकल (एसडीवी) मेश नेटवर्क में मौजूद अलग-अलग वीएम के बीच होने वाले कम्यूनिकेशन के लिए, अनुमति से जुड़ी नीतियां तय की जाती हैं. अगर कोई वीएम हैक हो जाता है, तो ये नीतियां सुरक्षा की एक और लेयर उपलब्ध कराती हैं.
अलग-अलग वीएम के बीच कम्यूनिकेशन की अनुमति देने के लिए, आपको सेवा-लेवल और वीएम-लेवल, दोनों तरह की अनुमतियां देनी होंगी.
प्रोटो स्कीमा
वीएम-लेवल की अनुमतियां, textproto फ़ॉर्मैट में मौजूद 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_नियम से मैच करता है, तो उसे अनुमति दी जाती है. - टाइप लेवल पर 'अनुमति न दें' वाली सेटिंग: अगर मैसेज का कोई टाइप या सेवा इंटरफ़ेस,
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: "*"
}