Security Labels
This document examples how to configure Security Labels and related Access Control Decision Function for message stanzas in Metronome. Following is a comprehensive configuration example.
VirtualHost “alice.org”security_catalog_name = “Alice’s Catalog”
security_catalog_desc = “Capuleti’s CORP Labels”
security_labels = {{name = “Unclassified”,
label = true,
default = true,
restrict = “none”},
Classified = {SECRET = {color = “white”, bgcolor = “blue”, label = “Confidential”,restrict = { type = “chat” }},
CONTACTS = {color = “black”, bgcolor = “cadetblue”, label = “Just for contacts”,restrict = “roster”},PUBLIC = {
color = “black”, bgcolor = “aqua”, label = “Public”,
restrict = “none”},
FORUM = {color = “black”, bgcolor = “cornsilk”, label = “Only for groupchats”,restrict = { type = “groupchat” }},
LOCAL = {color = “black”, bgcolor = “aliceblue”, label = “Only for Alice and Bob”,restrict = { host = { “alice.org”, “bob.org” }, include_muc_subdomains = true }}}}
List of configuration directives explained:
- Generally the configuration table (in Lua format) is composed as follow unnamed between brackets ({ … }) entries for labels without a selector, and named entries for selector grouped labels (Classified = { … })
- name: the name of a label
- label: the data of a label, currently Metronome supports only stringie descriptions (TODO X.500, ESS)
- default: boolean to specify if this is the default selector (only one default selector is supported, and must be unnamed)
- ess_mime: contains the Base64 digest of the MIME signature for the ESS label, currently Metronome performs no validation on the MIME signature
- restrict: specifies the ACDF policies to enforce
- none – enforce no policy, just fancy label
- host – restrict communication to one or two host entities and eventual first level muc subdomains. e.g. restrict = { host = { “alice.org”, “bob.org” }, include_muc_subdomains = true }
- muc_affiliation – restricts messages in MUC basing on the occupants affiliation e.g. you can make a certain label to be restricted to all members only by adding restrict = { muc_affiliation = true, { “owner”, “admin”, “member” } }
- roster – allow sending message stanzas with this label only to roster contacts
- type – restrict messages sent with this label to the specified type. e.g. restrict = { type = “chat” }
- whitelist – restrict messages to a jid whitelist e.g. restrict = { whitelist = { “bob@capuleti.org”, “alice@capuleti.org” } }
- bgcolor: specify the background color for the label (using HTML codes)
- color: specify the text color for the label (using HTML codes)