Expand description
Builtin DataTagging-Plugin (OMG DDS-Security 1.2 §12).
Implementiert das zerodds_security::DataTaggingPlugin-SPI als
produktiven Builtin. Tags sind Application-Level-Labels
(Classification-Marker, Sensitivity, etc.), die per Endpoint-GUID
verwaltet, ueber SEDP via PID_PROPERTY_LIST propagiert und
Subscriber-seitig auf Match geprueft werden.
§Wire-Pfad
Tags werden als WireProperty-Eintraege mit Namespace-Prefix
dds.sec.data_tags. in die existierende WirePropertyList
eingebettet — d.h. wir reuten den bereits in SPDP/SEDP propagierten
PID_PROPERTY_LIST-Parameter, anstatt einen neuen PID einzufuehren.
Das passt zu Cyclones/RTI-Verhalten, das Tags ebenfalls via
PID_PROPERTY_LIST traegt (Cyclone DDS Security §8 doc).
§Match-Predicate
Default-Predicate ist Subset-Match:
- Subscriber ohne Tags → akzeptiert jeden Publisher (Wildcard).
- Subscriber mit Tags → jeder Tag (name+value) muss exakt im Publisher-Tag-Set vorkommen.
- Unknown Tag-Name auf Subscriber-Seite, der nicht beim Publisher existiert → Reject.
Spec-konform und einfach genug fuer NGVA/FACE-Pilot-Setups; komplexe
Predicates (range/regex) werden via Custom-DataTaggingPlugin
abgedeckt.
§Beispiel
use zerodds_security::data_tagging::{DataTag, DataTaggingPlugin};
use zerodds_security_runtime::data_tagging::BuiltinDataTaggingPlugin;
let mut plugin = BuiltinDataTaggingPlugin::new();
let pub_guid = [0xAA; 16];
plugin.set_tags(
pub_guid,
vec![DataTag { name: "classification".into(), value: "secret".into() }],
);
let sub_tags = vec![DataTag { name: "classification".into(), value: "secret".into() }];
assert!(BuiltinDataTaggingPlugin::tags_match(&plugin.get_tags(pub_guid), &sub_tags));zerodds-lint: allow no_dyn_in_safe
(Plugin-Trait-Object via Box<dyn DataTaggingPlugin>.)
Structs§
- Builtin
Data Tagging Plugin - Builtin DataTagging-Plugin fuer Spec §12.
Constants§
- TAG_
PROPERTY_ PREFIX - Property-Namespace fuer Tag-Wire-Encoding. Jeder Tag erscheint als
ein
WirePropertymitname = TAG_PROPERTY_PREFIX + tag.name,value = tag.value. Andere Properties (auth-class, suite-list, …) bleiben unangetastet.