Documentation PostgreSQL 14.22 » Référence » Commandes SQL » SECURITY LABEL

Précédent | Niveau supérieur | Suivant
SAVEPOINT | Sommaire | SELECT

## 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 }

    où 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.

Vous devez être le propriétaire des objets visés par une commande `SECURITY LABEL`.

## 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`