מדיניות הרשאות ברמת מכונה וירטואלית

הרשאות ברמת המכונה הווירטואלית מגדירות מדיניות הרשאות לתקשורת בין מכונות וירטואליות שונות ברשת אריג של כלי רכב מוגדרים בתוכנה (SDV). הם מספקים אבטחה מקיפה למקרה של פגיעה במכונה וירטואלית אחת.

כדי לאפשר תקשורת בין מכונות וירטואליות, צריך להעניק הרשאות ברמת השירות וברמת המכונה הווירטואלית.

סכימת Proto

ההרשאות ברמת המכונה הוירטואלית מוגדרות באמצעות הודעה אחת בפורמט VmAuthzPolicytextproto.

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;
}

החלטה לגבי הרשאה

ההערכה מתבצעת לפי סדר קדימות קפדני, שבו דחייה מבטלת אישור באותה רמת פירוט. כברירת מחדל, כל התקשורת בין מכונות וירטואליות נדחית.

סדר ההערכה של העדיפות

הלוגיקה של ההחלטה בודקת את ההרשאות בסדר הבא:

  1. דחייה גרנולרית: אם מופע ספציפי (Message+Topic או Service+Channel) תואם לכלל deny_, הוא נדחה באופן מפורש.
  2. הרשאה מפורטת: אם מופע ספציפי תואם לכלל allow_, הוא מותר.
  3. סוג Deny: אם סוג של הודעה או ממשק שירות שלם תואמים לכלל deny_ (topic: "*" או channel: "*"), הגישה אליהם נחסמת באופן מפורש.
  4. הסוג Allow: אם סוג של הודעה או ממשק שירות תואמים לכלל 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"
}

הקלדה של deny overrides blanket allow

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