Figma tasarım belgesinden oluşturulan güvenlik izleme çözümü sunmak için güvenlik tasarım araç zincirini kullanın. Bu araç serisini sırayla kullanın.
Güvenlik tasarım derleyicisi, güvenlik monitörünü oluşturmak için sonraki kod oluşturma işlemlerini yönlendirmek üzere güvenlik yapıları üretir. Tasarım derleme ile kod üreten model arasındaki ayrım, kod üreten modelin TCL-3 ISO-26262 derecesi almasını sağlar.
Şekil 1. Güvenlik tasarım araç zinciri.
Derleyici yapılar oluşturduktan sonra araç zinciri, bir rapor oluşturur. OEM güvenlik mühendisi, Figma tasarımından oluşturulan yapıları doğrulamak için bu raporu inceleyebilir.
Şekil 2. Güvenlik tasarımının araç zinciri iş akışı.
Tasarım derleyici girişleri
Serileştirilmiş tasarım belgesi, bir tasarım aracından içe aktarılan ve araç seti şemasıyla işlenen bir kullanıcı arayüzü tasarımını temsil eder. Dosya, tasarımdan ayrıştırılan şu bilgileri içerir:
- Bir tasarımın tam düğüm ağacı
- Görseller ve bileşenler
- Ad, sürüm ve son değiştirilme tarihi gibi meta veriler
Tasarımın kök düğümleri, düğüm listesinde tanımlanmalı ve tasarımda tanımlanan güvenlikle ilgili öğelerin kök düğümleri olmalıdır.
Bu dosya, gösterge panelini oluşturmak için Android Automotive OS ile entegre olur ve güvenlikle ilgili olmayan öğeleri, güvenlikle ilgili öğeleri kullanıcıya göstermek için SDV Media'da kaplama olarak çalışan yüksek kullanılabilirlik oluşturucu (HAR) ile görüntüler.
Tasarım derleyici, tasarımdaki güvenlikle ilgili kritik öğelerin görünürlüğünü değiştirmek için çıkış oluşturmak üzere DesignCompose özelleştirmelerini kullanır. Tasarım, Impeller ile gözetimsiz olarak oluşturulur. Özelleştirme değişiklikleri arasında sistem, görüntü yapıları oluşturmak için oluşturma arka ucuna ekran görüntüsü komutları gönderir.
Şekil 3. Güvenlik monitörü oluşturmak için örnek Figma tasarım dosyası.
Çıkış dizini
Bu, derleyicinin oluşturulan yapıları depoladığı yerel dosya sistemindeki konumdur.
JSON yapılandırma dosyası
Genellikle bir OEM güvenlik mühendisi, kullanıcı arayüzü tasarımında yakalanmayan araç güvenliğiyle ilgili bilgileri yakalayan meta verileri içeren JSON yapılandırma dosyasını oluşturur. Bu dosya şu verileri içerir:
Güvenlikle ilgili ekranın kökü olarak belirlenen tasarım öğesi. Bu tasarım öğesi, araç ekranına göre boyutlandırılır. Boyut, ekranla aynı çözünürlüğe sahip olmalıdır. Güvenlikle ilgili tüm öğeler bu öğenin alt öğeleri olmalıdır. Doğrudan alt öğeler olmaları gerekmez, ancak ara düğümlere yerleştirilmiş olmaları gerekir. Bu kök, kök düğüm nesnesidir ve adı, tasarım belgesindeki bir düğümle eşleşmelidir.
Tasarım için hedef ekran. Birden fazla ekranda öğeler içeren kullanıcı arayüzlerini desteklemek için yapılandırma dosyasında birden fazla tasarım belirtilebilir. Her tasarım, ayrı bir ekranda gösterilmek üzere hedeflenir.
Araç veri yolu sinyali adlarının ilişkili kullanıcı arayüzü öğeleri sözlüğü. Bu sözlüğün anahtarları ve değerleri şunlardır:
Anahtarlar: Anlam içerecek şekilde araç veri yolu sinyali adı. Bu sinyal etkin olduğunda ilişkili kullanıcı arayüzü öğesi gösterilir. Sinyal etkin olmadığında ilişkili kullanıcı arayüzü öğesi gösterilmez.
Değerler: Araç veri yolu sinyali tarafından yönetilen güvenlikle ilgili öğenin Figma düğümü kimliği.
Şu örnek JSON yapılandırma dosyasına bakın:
{
"documents" : [
{
"rootnode" : "#Stage",
"display_id" : 1,
"document_id": "GLJJrR1JI4HVEjL1qB40zq",
"states" : {
"abs": "#cluster/telltale/abs",
"airbag": "#cluster/telltale/airbag",
"low_tire_pressure": "#cluster/telltale/low-tire-pressure",
"brake": "#cluster/telltale/brake",
"traction": "#cluster/telltale/traction",
"lowbeam": "#cluster/telltale/lowbeam",
"hibeam": "#cluster/telltale/hibeam",
"park_lights": "#cluster/telltale/park-lights",
"fog_lights": "#cluster/telltale/fog-lights",
"seatbelts" : "#cluster/telltale/no-seatbelt"
}
}
]
,
"displays": [
{
"id": 1,
"width": 1920,
"height": 720
}
]
}
Tasarım derleyiciyi çalıştırma
Tasarım derleyicisini çalıştırmak için:
/path/to/safety-design-compiler -c path/to/<input-file>.json
-o path/to/output_directory
Tasarım derleyici girişleri bu tabloda açıklanmıştır:
| Giriş | Kısa | Tür | Açıklama |
|---|---|---|---|
| Yapılandırma | -c |
dize | Güvenlik yapılandırması JSON dosyasının kaydedileceği yol. |
| Çıkış | -o |
dize | Oluşturulan yapıların kaydedileceği yol. |
Tasarım derleyici çıkışı
Tasarım derleyicisi, derleyici aracını çağırdığınızda belirtilen çıkış dizinine çıkış oluşturur ve kaydeder. Bu çıkış, güvenlik monitöründe çalışma zamanı piksel testlerini tanımlamak ve okunabilir rapor oluşturmak için kullanılan başlık dosyalarını oluşturur. Tasarım derleyici çıkışı, aşağıdakileri içeren bir ZIP dosyasında sağlanır:
Dışa aktarılan tasarımın yapısını açıklamak için dışa aktarılan öğelerin kök dizininde
data.jsondosya meta veri dosyası. Dosyadaki tüm yollar bu dosyaya göre belirlenir.Sonraki kod oluşturma sırasında kullanılan, etkin durumdaki güvenlikle ilgili kullanıcı arayüzü öğelerini göstermek için bir dizi izole kullanıcı arayüzü öğesi resmi. Bu resimlerdeki alfa kanalı, güvenliği etkilemeyen piksel bilgileri içerir.
Oluşturulan kodu test ederken kullanılmak üzere, etkin ve devre dışı durumlardaki güvenlikle ilgili kullanıcı arayüzü öğelerini gösteren bir dizi tam kullanıcı arayüzü resmi.
Derleyici tarafından giriş olarak kullanılan, serileştirilmiş Figma belgesinin güncellenmiş sürümü. HAR,
Config.jsoniçinde belirtilen, bilgi veren düğümleri işaretler ve günceller. Bunu, araç seti şemasındaRenderOptions::PixelPerfectişaretini ayarlayarak yapar. Böylece düğümler daha fazla işlenir.
Bu şekilde bir Figma tasarım dosyası gösterilmektedir.
Şekil 4. Zip dosyasının içeriği.
Giriş dosyasını oluşturma
Güvenlik monitörü oluşturucu için data.json giriş dosyası oluşturun. Çıkış, boyut verilerini ve güvenlikle ilgili her bir görüntüleme öğesi için bir resim bağlantısını içeren bir dizi olarak yapılandırılır. Bu çıkış dosyasının yapısı aşağıdaki tabloda açıklanmıştır:
| Öğe | Tür | Birimler | Açıklama |
|---|---|---|---|
static_ui_elements |
Sözlük | Yok | Figma dokümanından çıkarılan, güvenlikle ilgili tüm kullanıcı arayüzü öğelerinin meta verilerini içeren yapı. |
x |
int | piksel | Güvenlikle ilgili öğenin yatay koordinatı. |
y |
int | piksel | Güvenlikle ilgili öğenin dikey koordinatı. |
width |
int | piksel | Güvenlikle ilgili öğenin genişliği |
height |
int | piksel | Güvenlikle ilgili öğenin yüksekliği. |
name |
dize | Yok | Figma belgesinden çıkarılan, güvenlikle ilgili kullanıcı arayüzü öğesinin adı. Bu öğeyle oluşturulan resimlerin göreli yolunu gösterir. |
screen |
Kullanıcı arayüzünün hedeflediği ekranı açıklayan sözlük. | ||
width |
int | piksel | Figma dokümanı kullanıcı arayüzünün genişliği. |
height |
int | piksel | Figma dokümanı kullanıcı arayüzünün yüksekliği. |
build |
Tasarım derleyicisinin bu çağrılması için derleme bilgilerini içeren sözlük. | ||
figma_document_id |
dize | Yok | Bir dizi yapay nesne oluşturmak için kullanılan Figma dokümanının kimliği. |
design_compiler_version |
dize | Yok | Bir grup yapıyı oluşturmak için kullanılan Design Compiler sürümü. |
Bu bölümde, oluşturulan bir data.json dosyasının örneği verilmektedir:
{
"static_ui_elements": [
{
"x": 71,
"y": 663,
"width": 38,
"height": 47,
"name": "cluster/telltale/no-seatbelt"
},
{
"x": 149,
"y": 667,
"width": 40,
"height": 39,
"name": "cluster/telltale/low-tire-pressure"
},
{
"x": 1727,
"y": 676,
"width": 43,
"height": 27,
"name": "cluster/telltale/hibeam"
},
{
"x": 1810,
"y": 675,
"width": 43,
"height": 30,
"name": "cluster/telltale/lowbeam"
},
...
...
],
"screen": {
"width": 1920,
"height": 720
},
"build": {
"figma_document_id": "taQnsdPS96wZY8dB1TbzOH",
"design_compiler_version": "0.1.0"
}
}
Dışa aktarılan tasarım resimleri
Sistem, güvenlik açısından önemli düğümlerin resimlerini, seri hale getirilmiş tasarım dokümanındaki adlarına göre iç içe geçmiş bir dizin yapısında oluşturur ve kaydeder.
Şekil 5. Doğrulama resimleri.
Sistem, belirtilen her gösterge için güvenlikle ilgili öğe bilgisi resimleri oluşturur. Bu resimler, ekranda göründüğünde güvenlikle ilgili kritik öğenin beklenen piksellerini içerir. Güvenlik monitörü, çalışma zamanı piksel testleri için bu resimlerdeki şeffaf pikselleri yoksayabilir.
Sistem, kullanıcı arayüzü testi ve doğrulama görüntüleri de oluşturur. Her bir belirtiyle birlikte kullanıcı arayüzünün tamamının ekran görüntülerini oluşturur ve bunları, güvenlik mühendislerinin güvenlik yapılandırmasını inceleyip onaylayabilmesi için okunabilir bir rapor oluşturmak üzere sağlar.
Bu resimleri, güvenlik monitörünün sonraki testlerinde de kullanabilirsiniz. Sistem, Açık ve Kapalı durumlarındaki tüm göstergeler için doğrulama resimleri oluşturur.
Bu resimlerde, tasarımla ilgili tüm güvenlik öğeleri etkin ve devre dışı olarak gösterilmektedir.
Şekil 6 ve Şekil 7. Etkin ve etkin olmayan güvenlikle ilgili öğeler.
Şekil 8'de, emniyet kemeri takılı değil uyarı ışığıyla ilgili güvenlikle alakalı bilgiler gösterilmektedir:
Şekil 8. Emniyet kemeri takılı değil uyarı ışığı.
Şekil 9'da, gösterge için kullanıcı arayüzü testi ve doğrulama resmi gösterilmektedir.
Şekil 9. Gösterge için kullanıcı arayüzü testi ve doğrulama.
Sistem, derlenmiş yapı klasöründeki her öğe için doğrulama resimleri oluşturur. Sistem, bu görüntüleri kod oluşturma adımında işler ve güvenlik monitöründe çalışma zamanı piksel testlerinde kullanılmak üzere bir üstbilgi dosyasına ekler.
Kullanıcıların okuyabileceği rapor oluşturucu
Bir Figma dokümanından yapay nesneler oluşturduktan sonra, okunabilir bir rapor oluşturabilirsiniz. Rapor oluşturucu, utils/human-readable-report-generator bölümünde bulunur.
Sistem, Design Compiler tarafından oluşturulan güvenlikle ilgili düğümlerin yapıtlarını bir HTML dosyasında özetler. Bu özet, düğümün etkin olduğu kullanıcı arayüzünün ekran görüntüsünü de içerir. Güvenlik monitörünü oluşturmadan önce derlenen yapıları inceleyebilirsiniz.
Rapor oluşturucuyu komut satırından çalıştırın:
cargo run --bin human-readable-report-generator -- -d /path/to/data.json
-o /path/to/output_folder
Bu tabloda, kullanıcıların okuyabileceği rapor oluşturucu girişleri açıklanmaktadır.
| Giriş | Kısa | Tür | Açıklama |
|---|---|---|---|
data_folder |
-d |
dize | Güvenlik derleyicisi tarafından oluşturulan data.json konumu. |
output_path |
-o |
dize | Oluşturulan raporun kaydedileceği yol. |
Güvenlik onayı aracı
Onay jetonu oluşturmak için güvenlik mühendisi, okunabilir raporu inceledikten sonra output.json üzerinde güvenlik onayı komut dosyasını çalıştırabilir.
Bu aracı utils/human-readable-report-generator bölümünde de bulabilirsiniz.
Örneğin:
cargo run --bin approve-hrr -- -f /path/to/compiler_inspection_output.html -n
"Your Name" -e youremail@domain.com -o output/path
Şekil 10. Örnek HTML raporu.
Bu bölümde, güvenlik onayı aracı girişleri açıklanmaktadır.
| Giriş | Kısa | Tür | Açıklama |
|---|---|---|---|
file_path |
-f |
dize | Kullanıcıların okuyabileceği raporun dosya yolu. |
approver_name |
-n |
dize | Onaylayan mühendisin adı. |
approver_email |
-e |
dize | Onaylayan mühendisin e-posta adresi. |
output_path |
-o |
dize | Oluşturulan çıktının hedefi. |
Bu bölümde approval_file.json örneği gösterilmektedir.
{
"approver_name": //Name of the approver
"approver_email": //Email of the approver
"file_hash": //SHA-256 hash generated against the human readable report.
}
Referans güvenlik monitörü
Referans güvenlik monitörü, reference/safety-monitor konumunda bulunan Rust tabanlı bir hizmettir. Monitör, Design Compiler tarafından oluşturulan yapay nesneleri kullanarak sistemin durumunu izler ve ekran güvenliği uygunluğunu sağlar.
İzleyici, bağımsız bir ikili dosya (har_safety_monitor) olarak çalışır ve data.json dosyasının yolunu ve yapıların temel yolunu bağımsız değişken olarak alır.
/path/to/har_safety_monitor --data-json-path /path/to/data.json
--artifact-base-path /path/to/artifacts
Monitör aşağıdaki görevleri yerine getirir:
- Öğe yükleme: Güvenlikle ilgili kullanıcı arayüzü öğelerini ve bunların beklenen konumlarını ve boyutlarını belirlemek için
data.jsonyükler. - Referans görüntü karşılaştırması: Mevcut ekran içeriğini, derleyici tarafından oluşturulan güvenlikle ilgili kritik öğelerin referans görüntüleriyle karşılaştırır.
- Araç verisi entegrasyonu: Her uyarı ışığının beklenen durumunu belirlemek için araç verisi kaynaklarına bağlanır.
- Uyuşmazlık algılama: Araç verilerine göre beklenenlerle ekranda görünenler arasında uyuşmazlık varsa hata günlüğe kaydedilir.
Güvenlik monitörü, genellikle özel bir APEX içinde olmak üzere sistem görüntüsünün bir parçası olarak oluşturulup dağıtılacak şekilde tasarlanmıştır.