SECURITY LABEL — Définir ou modifier une label de sécurité appliquée à un objet
SECURITY LABEL [ FOR fournisseur ] ON { TABLE nom_objet | COLUMN nom_table.nom_colonne | AGGREGATE nom_aggrégat (type_aggrégat [, ...] ) | DATABASE nom_objet | DOMAIN nom_objet | FOREIGN TABLE nom_objet FUNCTION nom_fonction ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] ) | LARGE OBJECT oid_large_object | [ PROCEDURAL ] LANGUAGE nom_objet | ROLE nom_objet | SCHEMA nom_objet | SEQUENCE nom_objet | TABLESPACE nom_objet | TYPE nom_objet | VIEW nom_objet } IS 'label'
SECURITY LABEL applique un label de sécurité à un objet de la base de données. Un nombre arbitraire de labels de sécurité, un par fournisseur d'labels, peut être associé à un objet donné de la base. Les fournisseurs de labels sont des modules dynamiques qui s'enregistrent eux-mêmes en utilisant la fonction register_label_provider.
register_label_provider n'est pas une fonction SQL ; elle ne peut être appelée que depuis du code C chargé et exécuté au sein du serveur.
Le fournisseur de labels détermine si un label donné est valide, et dans quelle mesure il est permis de l'appliquer à un objet donné. Le sens des labels est également laissé à la discrétion du fournisseur d'labels. PostgreSQL™ n'impose aucune restriction quant à l'interprétation que peut faire un fournisseur d'un label donné, se contentant simplement d'offrir un mécanisme de stockage de ces labels. En pratique, il s'agit de permettre l'intégration de systèmes de contrôles d'accès obligatoires (en anglais, mandatory access control ou MAC) tels que SE-Linux™. De tels systèmes fondent leurs autorisations d'accès sur des labels appliqués aux objets, contrairement aux systèmes traditionnels d'autorisations d'accès discrétionnaires (en anglais, discretionary access control ou DAC) généralement basés sur des concepts tels que les utilisateurs et les groupes.
Le nom de l'objet. Ce sont les noms des tables, aggrégats, domaines, tables distantes, fonctions, séquences, types et vues qui peuvent être qualifiés du nom de schéma.
Le nom du fournisseur auquel le label est associé. Le fournisseur désigné doit être chargé et accepter l'opération qui lui est proposée. Si un seul et unique fournisseur est chargé, le nom du fournisseur peut être omis par soucis de concision.
Le type de donnée en entrée sur lequel la fonction d'aggrégation doit opérer. Pour référencer une fonction d'aggrégation sans argument, il convient d'écrire * en guise de liste de types de données.
Le mode d'un argument de fonction : IN, OUT, INOUT ou VARIADIC. Si le mode est omis, le mode par défaut IN est alors appliqué. À noter que SECURITY LABEL ON FUNCTION ne porte actuellement pas sur les arguments de mode OUT dans la mesure où seuls les arguments fournis en entrée sont nécessaires à l'identification d'une fonction. Il suffit donc de lister les arguments IN, INOUT, et VARIADIC afin d'identifier sans ambiguïté une fonction.
Le nom d'un argument de fonction. À noter que SECURITY LABEL ON FUNCTION ne porte actuellement pas sur les nom des arguments fournis aux fonctions dans la mesure où seul le type des arguments est nécessaire à l'identification d'une fonction.
Le ou les types de données des arguments des fonctions, si elles en comportent, éventuellement qualifiés du nom de schéma.
L'OID de l'objet large.
Qualificatif optionnel du langage, peut être omis.
Le nom du label à affecter, fourni sous la forme d'une chaine littérale ou NULL pour supprimer un label de sécurité précédemment affecté.