สิทธิ์ระดับ VM จะกำหนดนโยบายการให้สิทธิ์สำหรับการสื่อสารระหว่าง VM ต่างๆ ในเครือข่ายที่ทำงานร่วมกันของยานพาหนะที่กำหนดโดยซอฟต์แวร์ (SDV) ซึ่งจะช่วยรักษาความปลอดภัยแบบหลายชั้นในกรณีที่ VM ใด VM หนึ่งถูกบุกรุก
คุณต้องให้สิทธิ์ทั้งระดับบริการและระดับ VM เพื่ออนุญาตการสื่อสารระหว่าง VM
สคีมา Proto
สิทธิ์ระดับ VM จะกำหนดโดยใช้ข้อความ 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;
}
การตัดสินใจให้สิทธิ์
การประเมินจะเป็นไปตามลำดับความสำคัญที่เข้มงวด โดยปฏิเสธจะลบล้างอนุญาตที่ระดับความละเอียดเดียวกัน โดยค่าเริ่มต้น ระบบจะปฏิเสธการสื่อสารระหว่าง VM ทั้งหมด
ลำดับการประเมินความสำคัญ
ตรรกะการตัดสินใจจะตรวจสอบสิทธิ์ตามลำดับต่อไปนี้
- ปฏิเสธแบบละเอียด: หากอินสแตนซ์ที่เฉพาะเจาะจง (ข้อความ + หัวข้อ หรือบริการ + ช่อง)
ตรงกับกฎ
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: "*"
}