Chính sách uỷ quyền ở cấp máy ảo

Quyền ở cấp máy ảo xác định các chính sách uỷ quyền để giao tiếp giữa các máy ảo khác nhau trong mạng lưới dạng mắt lưới của Xe được xác định bằng phần mềm (SDV). Chúng cung cấp khả năng bảo mật chuyên sâu trong trường hợp một máy ảo bị xâm nhập.

Bạn phải cấp cả quyền ở cấp dịch vụ và cấp máy ảo để cho phép giao tiếp giữa các máy ảo.

Giản đồ Proto

Quyền ở cấp máy ảo được xác định bằng một thông báo VmAuthzPolicy duy nhất ở định dạng 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;
}

Quyết định uỷ quyền

Việc đánh giá tuân theo một thứ tự ưu tiên nghiêm ngặt, trong đó Từ chối sẽ ghi đè Cho phép ở cùng mức độ chi tiết. Theo mặc định, mọi hoạt động giao tiếp giữa các VM đều bị từ chối.

Thứ tự đánh giá mức độ ưu tiên

Logic quyết định sẽ kiểm tra các quyền theo thứ tự sau:

  1. Từ chối chi tiết: Nếu một phiên bản cụ thể (Message+Topic hoặc Service+Channel) trùng khớp với một quy tắc deny_, thì phiên bản đó sẽ bị Từ chối rõ ràng.
  2. Cho phép chi tiết: Nếu một phiên bản cụ thể khớp với quy tắc allow_, thì phiên bản đó sẽ được Cho phép.
  3. Loại Từ chối: Nếu toàn bộ loại Thông báo hoặc Giao diện dịch vụ khớp với một quy tắc deny_ (topic: "*" hoặc channel: "*"), thì loại đó sẽ bị Từ chối rõ ràng.
  4. Loại Cho phép: Nếu toàn bộ loại Thông báo hoặc Giao diện dịch vụ khớp với quy tắc allow_ (topic: "*" hoặc channel: "*"), thì loại đó sẽ được Cho phép.
  5. Từ chối toàn bộ: Nếu tất cả các loại thông báo hoặc dịch vụ đều bị từ chối (message: "*" hoặc service: "*"), thì đó là Từ chối rõ ràng.
  6. Cho phép chung: Nếu tất cả các loại thông báo hoặc dịch vụ đều được phép (message: "*" hoặc service: "*"), thì đó là Được phép.
  7. Mặc định ngầm: Nếu không có quy tắc nào trùng khớp, thì yêu cầu sẽ Bị từ chối ngầm. Theo mặc định, hệ thống sẽ từ chối tất cả.

Ví dụ

Các ví dụ sau đây minh hoạ cách đánh giá chính sách uỷ quyền.

Loại từ chối ghi đè cho phép chi tiết

# 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"
}

Loại từ chối ghi đè cho phép chung

# 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: "*"
}