Izin tingkat VM menentukan kebijakan otorisasi untuk komunikasi antar-VM yang berbeda dalam jaringan mesh Software-Defined Vehicle (SDV). VM ini memberikan keamanan pertahanan mendalam jika salah satu VM disusupi.
Anda harus memberikan izin tingkat layanan dan tingkat VM untuk mengizinkan komunikasi antar-VM.
Skema proto
Izin tingkat VM ditentukan menggunakan satu pesan VmAuthzPolicy dalam
format 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;
}
Keputusan otorisasi
Evaluasi mengikuti urutan prioritas yang ketat, dengan Tolak menggantikan Izinkan pada granularitas yang sama. Secara default, semua komunikasi lintas-VM ditolak.
Urutan evaluasi prioritas
Logika keputusan memeriksa izin dalam urutan berikut:
- Penolakan Terperinci: Jika instance tertentu (Message+Topic atau Service+Channel)
cocok dengan aturan
deny_, instance tersebut akan Ditolak secara eksplisit. - Izinkan Terperinci: Jika instance tertentu cocok dengan aturan
allow_, instance tersebut Diizinkan. - Jenis Tolak: Jika seluruh jenis Pesan atau antarmuka Layanan cocok dengan aturan
deny_(topic: "*"atauchannel: "*"), maka Ditolak secara eksplisit. - Jenis Izinkan: Jika seluruh Jenis pesan atau Antarmuka layanan cocok dengan aturan
allow_(topic: "*"atauchannel: "*"), maka Diizinkan. - Penolakan Menyeluruh: Jika semua jenis pesan atau layanan ditolak
(
message: "*"atauservice: "*"), maka akan Ditolak secara eksplisit. - Izinkan Secara Umum: Jika semua jenis pesan atau layanan diizinkan
(
message: "*"atauservice: "*"), maka Diizinkan. - Default Implisit: Jika tidak ada aturan yang cocok, maka ditolak secara implisit. Default sistem adalah menolak semua.
Contoh
Contoh berikut menunjukkan cara kebijakan otorisasi dievaluasi.
Izin terperinci menggantikan penolakan
# 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"
}
Jenis penolakan menggantikan izin menyeluruh
# 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: "*"
}