PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 14.15 » Référence » Commandes SQL » SECURITY LABEL

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 |
  PROCEDURE nom_procédure [ ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] ) ] |
  PUBLICATION nom_objet |
  ROLE nom_objet |
  ROUTINE nom_routine [ ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] ) ] |
  SCHEMA nom_objet |
  SEQUENCE nom_objet |
  SUBSCRIPTION nom_objet |
  TABLESPACE nom_objet |
  TYPE nom_objet |
  VIEW nom_objet
} IS { texte | NULL }

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

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 SELinux. 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
nom_procédure
nom_routine

Le nom de l'objet à labelliser. Les noms d'objets résidant dans des schémas (tables, fonctions, etc.) 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, de procédure 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.

nom_arg

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

oid_large_objet

L'OID de l'objet large.

PROCEDURAL

Qualificatif optionnel du langage, peut être omis.

label

La nouvelle configuration du label de sécurité, fourni sous la forme d'une chaine littérale.

NULL

Écrire NULL pour supprimer le label de sécurité.

Exemples

L'exemple suivant montre comment le label de sécurité d'une table pourrait être configuré ou modifié.

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

Pour supprimer le label :

SECURITY LABEL FOR selinux ON TABLE matable IS NULL;

Compatibilité

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

Voir aussi

sepgsql, src/test/modules/dummy_seclabel