PostgreSQLLa base de données la plus sophistiquée au monde.

Version anglaise

SECURITY LABEL

SECURITY LABEL — Définir ou modifier un label de sécurité appliqué à un objet

Synopsis

SECURITY LABEL [ FOR fournisseur ] ON
{
  TABLE nom_objet |
  COLUMN nom_table.nom_colonne |
  AGGREGATE nom_agrégat ( signature_agrégat ) |
  DATABASE nom_objet |
  DOMAIN nom_objet |
  EVENT TRIGGER nom_objet |
  FOREIGN TABLE nom_objet
  FUNCTION nom_fonction [ ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] ) ] |
  LARGE OBJECT oid_large_object |
  MATERIALIZED VIEW nom_objet |
  [ PROCEDURAL ] LANGUAGE nom_objet |
  PUBLICATION nom_objet |
  ROLE nom_objet |
  SCHEMA nom_objet |
  SEQUENCE nom_objet |
  SUBSCRIPTION nom_objet |
  TABLESPACE nom_objet |
  TYPE nom_objet |
  VIEW nom_objet
} IS 'label'

signature_agrégat est :

* |
[ mode_arg ] [ nom_arg ] type_arg [ , ... ] |
[ [ mode_arg ] [ nom_arg ] type_arg [ , ... ] ] ORDER BY [ mode_arg ] [ nom_arg ] type_arg [ , ... ]
  

Description

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.

[Note]

Note

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.

Paramètres

nom_objet, nom_table.nom_colonne, nom_agrégat, nom_fonction

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.

fournisseur

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.

mode_arg

Le mode d'un argument de fonction ou d'agrégat : IN, OUT, INOUT ou VARIADIC. Si le mode est omis, le mode par défaut IN est alors appliqué. À noter que SECURITY LABEL 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.

nom_arg

Le nom d'un argument de fonction ou d'agrégat. À 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.

type_arg

Le type de données d'un argument de fonction ou d'agrégat.

oid_large_objet

L'OID de l'objet large.

PROCEDURAL

Qualificatif optionnel du langage, peut être omis.

label

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é.

Exemples

L'exemple suivant montre comment modifier le label de sécurité d'une table.

SECURITY LABEL FOR selinux ON TABLE matable IS 'system_u:object_r:sepgsql_table_t:s0';
   

Compatibilité

La commande SECURITY LABEL n'existe pas dans le standard SQL.

Voir aussi

sepgsql, src/test/modules/dummy_seclabel