นโยบายการให้สิทธิ์ระดับ VM

สิทธิ์ระดับ 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 ทั้งหมด

ลำดับการประเมินความสำคัญ

ตรรกะการตัดสินใจจะตรวจสอบสิทธิ์ตามลำดับต่อไปนี้

  1. ปฏิเสธแบบละเอียด: หากอินสแตนซ์ที่เฉพาะเจาะจง (ข้อความ + หัวข้อ หรือบริการ + ช่อง) ตรงกับกฎ deny_ ระบบจะปฏิเสธอย่างชัดแจ้ง
  2. อนุญาตแบบละเอียด: หากอินสแตนซ์ที่เฉพาะเจาะจงตรงกับกฎ allow_ ระบบจะ อนุญาต
  3. ปฏิเสธประเภท: หากประเภทข้อความหรืออินเทอร์เฟซบริการทั้งหมดตรงกับกฎ deny_ (topic: "*" หรือ channel: "*") ระบบจะปฏิเสธอย่างชัดแจ้ง
  4. อนุญาตประเภท: หากประเภทข้อความหรืออินเทอร์เฟซบริการทั้งหมดตรงกับกฎ allow_ (topic: "*" หรือ channel: "*") ระบบจะอนุญาต
  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: "*"
}