FirebirdSQL logo
 SécuritéGestion des utilisateurs 

La sécurité de l’ensemble de la base de données dépend de l’authentification de l’ID utilisateur. L’authentification de l’utilisateur peut être effectuée de plusieurs façons, en fonction de la configuration du paramètre [paramètre] AuthServer. dans le fichier de configuration firebird.conf. Ce paramètre contient une liste des plugins d’authentification disponibles. Si l’authentification avec le premier plugin échoue, le serveur passe au plugin suivant, et ainsi de suite. Si aucun plugin ne s’est authentifié, l’utilisateur reçoit un message d’erreur.

Les informations sur les utilisateurs enregistrés pour un serveur Firebird particulier sont stockées dans une base de données de sécurité spéciale — security4.fdb. Pour chaque base de données, la base de données de sécurité peut être remplacée dans le fichier databases.conf (paramètre SecurityDatabase ). Toute base de données peut être une base de données de sécurité pour elle-même.

Le nom d’utilisateur peut comporter un maximum de 63 caractères. La longueur maximale du mot de passe dépend du plugin d’authentification et du plugin de gestion des utilisateurs (paramètre UserManager), sensible à la casse. Par défaut, le premier plugin de la liste des plugins de gestion des utilisateurs sera sélectionné. Ce plugin peut être modifié dans les commandes SQL de gestion des utilisateurs. Pour le plugin SRP, la longueur effective du mot de passe est limitée à 20 octets*. Pour le plugin Legacy_UserManager, la longueur maximale du mot de passe est de 8 octets.

Pourquoi la longueur effective du mot de passe est-elle limitée à 20 caractères ?

Note

La longueur d’un mot de passe n’est pas limitée à 20 octets et il peut être utilisé. Les hachages de différents mots de passe, qui sont plus longs que 20 octets, sont également différents. La limite d’efficacité vient du fait que la longueur de hachage de SHA1 est limitée à 20 octets ou 160 bits. Tôt ou tard, un mot de passe plus court avec le même hachage sera trouvé en utilisant une attaque par force brute, c’est pourquoi on dit souvent que la longueur efficace du mot de passe pour l’algorithme SHA1 est de 20 octets.

La version embarquée du serveur n’utilise pas l’authentification. Cependant, le nom de l’utilisateur, et si nécessaire le rôle, doivent être spécifiés dans les paramètres de connexion, car ils sont utilisés pour contrôler l’accès aux objets de la base de données.

L’utilisateur SYSDBA ou l’utilisateur connecté avec le rôle RDB$ADMIN a un accès illimité à la base de données. Si l’utilisateur est le propriétaire de la base de données, alors sans spécifier le rôle RDB$ADMIN il a un accès illimité à tous les objets appartenant à cette base de données.

Comptes spéciaux

SYSDBA

Dans Firebird il y a un compte spécial `SYSDBA' qui existe en dehors de toutes les restrictions de sécurité et qui a un accès complet à toutes les bases de données du serveur.

Caractéristiques de POSIX

Sur les systèmes POSIX, y compris MacOSX, le nom d’utilisateur POSIX sera interprété comme le nom d’utilisateur de Firebird Embedded à moins que le nom d’utilisateur ne soit explicitement spécifié.

Utilisateur SYSDBA dans POSIX

Sur les systèmes POSIX autres que MacOSX, l’utilisateur SYSDBA n’a pas de mot de passe par défaut. Si une installation complète est effectuée en utilisant les scripts standards, un mot de passe à usage unique sera créé et enregistré dans un fichier texte dans le même répertoire que security4.fdb, généralement /opt/firebird/. Le fichier de mot de passe est nommé SYSDBA.password.

Note

Lors d’une installation à l’aide d’un programme d’installation distribué spécifique, l’emplacement du fichier de la base de données de sécurité et du fichier des mots de passe peut être différent de celui par défaut.

Utilisateur root dans POSIX

Sur les systèmes POSIX, l’utilisateur root peut agir comme SYSDBA. Firebird Embedded traitera alors le nom d’utilisateur root comme SYSDBA et vous aurez accès à toutes les bases de données du serveur.

Caractéristiques de Windows

Sur les systèmes d’exploitation de la famille Windows NT, vous pouvez également utiliser les informations d’identification du système d’exploitation. Pour cela, le fournisseur Win_Sspi doit être présent dans la liste des plugins du fichier de configuration firebird.conf (paramètre AuthServer). De plus, ce plugin doit également être présent dans la liste des plugins côté client (paramètre AuthClient).

Les administrateurs Windows n’ont pas automatiquement les permissions SYSDBA lorsqu’ils se connectent à la base de données (à condition, bien sûr, que l’autorisation de confiance soit autorisée). Le fait que les administrateurs aient ou non des permissions automatiques SYSDBA dépend de la valeur de l’indicateur AUTO ADMIN MAPPING.

Note

Avant Firebird 3.0, lorsque l’authentification fiable était activée, les utilisateurs authentifiés par défaut étaient automatiquement mappés à `CURRENT_USER'. Dans Firebird 3 et plus, le mappage doit être fait explicitement pour les systèmes avec plusieurs bases de données de sécurité et l’authentification fiable activée. CREATE MAPPING.

Propriétaire de la base de données

Le propriétaire de la base de données est soit l’utilisateur actuel (CURRENT_USER) au moment de la création, soit l’utilisateur qui a été spécifié dans les paramètres USER de l’instruction CREATE DATABASE.

Le propriétaire de la base de données est l’administrateur de la base de données et a un accès complet à tous les objets de la base de données, même ceux créés par d’autres utilisateurs.

Rôle RDB$ADMIN

Le rôle système RDB$ADMIN, est présent dans chaque base de données. Accorder à un utilisateur le rôle RDB$ADMIN dans une base de données lui donne les privilèges SYSDBA, mais seulement dans la base de données courante.

Les privilèges prennent effet immédiatement après la connexion à la base de données normale avec le rôle RDB$ADMIN spécifié, après quoi l’utilisateur a un contrôle total sur tous les objets de la base de données.

Le rôle RDB$ADMIN peut être accordé en utilisant le mot-clé DEFAULT. Dans ce cas, l’utilisateur se verra automatiquement accorder des privilèges administratifs même s’il n’a pas spécifié le rôle RDB$ADMIN lors de la connexion.

Le provisionnement dans la base de données de sécurité donne la possibilité de créer, modifier et supprimer des comptes d’utilisateurs.

Dans les deux cas, un utilisateur ayant les droits du rôle RDB$ADMIN peut toujours transférer ce rôle à d’autres. En d’autres termes, "`WITH ADMIN OPTION'" est déjà intégré dans ce rôle et cette option peut être omise.

Fournir le rôle RDB$ADMIN dans une base de données conventionnelle

Les opérateurs GRANT et REVOKE sont utilisés pour attribuer et supprimer le rôle RDB$ADMIN dans une base de données normale, tout comme les autres rôles.

Syntaxe
GRANT [DEFAULT] [ROLE] RDB$ADMIN TO username

REVOKE [DEFAULT] [ROLE] RDB$ADMIN FROM username
Table 1. Paramètres pour les opérateurs de création et d’annulation du rôle RDB$ADMIN.
Paramètre Description

username

Le nom de l’utilisateur à qui le rôle RDB$ADMIN est attribué ou sélectionné.

Si le mot-clé DEFAULT est présent dans l’instruction GRANT, l’utilisateur recevra automatiquement des privilèges d’administration même s’il n’a pas spécifié le rôle RDB$ADMIN lors de la connexion. Seuls les administrateurs peuvent donner des privilèges au rôle RDB$ADMIN.

Voir aussi :

GRANT, REVOKE.

Utilisation du rôle RDB$ADMIN dans une base de données conventionnelle

Pour utiliser les permissions du rôle RDB$ADMIN, l’utilisateur doit simplement le spécifier lorsqu’il se connecte à la base de données, ou bien le rôle RDB$ADMIN lui est donné à l’aide du mot-clé DEFAULT. Il peut également le spécifier ultérieurement à l’aide de l’instruction SET ROLE.

Accorder le rôle RDB$ADMIN dans la base de données des utilisateurs.

Comme personne ne peut se connecter à la base de données des utilisateurs, les instructions GRANT et REVOKE ne peuvent pas être utilisées ici. Au lieu de cela, le rôle RDB$ADMIN est accordé et retiré par les commandes de gestion des utilisateurs SQL : CREATE USER et ALTER USER, qui spécifient les options spéciales GRANT ADMIN ROLE et REVOKE ADMIN ROLE.

Syntaxe (incomplet)
CREATE USER newuser
PASSWORD 'password'
...
GRANT ADMIN ROLE
...

ALTER USER existinguser
GRANT ADMIN ROLE

ALTER USER existinguser
REVOKE ADMIN ROLE
Table 1. Paramètres pour les opérateurs de création et d’annulation du rôle RDB$ADMIN.
Paramètre Description

newuser

Le nom de l’utilisateur nouvellement créé. Longueur maximale de 63 caractères.

existinguser

Le nom d’un utilisateur existant.

password

Mot de passe de l’utilisateur, sensible à la casse.

Important

N’oubliez pas que GRANT ADMIN ROLE et REVOKE ADMIN ROLE ne sont pas des opérateurs GRANT et REVOKE mais des paramètres pour CREATE USER et ALTER USER.

Seuls les administrateurs peuvent donner des privilèges au rôle RDB$ADMIN.

Effectuer la même tâche en utilisant l’utilitaire gsec.

On peut faire de même avec l’utilitaire gsec en spécifiant le paramètre -admin pour sauvegarder l’attribut RDB$ADMIN` du compte utilisateur :

....
gsec -add new_user -pw password -admin yes
gsec -mo existing_user -admin yes
gsec -mo existing_user -admin no
....
Note

Selon le statut administratif de l’utilisateur actuel, l’utilitaire gsec peut exiger plus de paramètres tels que -user et -pass, ou -trusted.

Utilisation du rôle RDB$ADMIN dans la base de données des utilisateurs

Pour gérer les comptes utilisateurs via SQL, un utilisateur qui a des droits sur le rôle RDB$ADMIN doit se connecter à une base de données avec ce rôle. Comme personne n’a le droit de se connecter à la base de données des utilisateurs, l’utilisateur doit se connecter à une base de données normale où il a également des droits sur le rôle RDB$ADMIN. Il définit le rôle lors de la connexion à la base de données normale et peut exécuter n’importe quelle requête SQL sur celle-ci. Ce n’est pas la solution la plus élégante, mais c’est la seule façon de gérer les utilisateurs via des requêtes SQL.

A moins qu’il n’y ait une base de données normale où l’utilisateur a des droits sur le rôle RDB$ADMIN, la gestion des comptes via des requêtes SQL n’est pas disponible.

Utiliser le rôle RDB$ADMIN dans gsec

Pour gérer les utilisateurs via l’utilitaire gsec, le rôle RDB$ADMIN doit être spécifié dans le commutateur -role.

AUTO ADMIN MAPPING

Système d’exploitation

Windows uniquement.

Les administrateurs du système d’exploitation Windows n’obtiennent pas automatiquement les permissions SYSDBA lorsqu’ils se connectent à une base de données (à moins, bien sûr, qu’une autorisation de confiance soit autorisée). Le fait que les administrateurs aient des droits SYSDBA automatiques dépend de la valeur de l’indicateur AUTO ADMIN MAPPING. C’est un indicateur dans chacune des bases de données qui est désactivé par défaut. Si l’indicateur AUTO ADMIN MAPPING est activé, il est effectif lorsqu’un administrateur Windows :

  1. se connecte en utilisant l’authentification de confiance .

  2. ne définit aucun rôle lors de la connexion.

Après une connexion “auto admin” réussie, le rôle actuel sera RDB$ADMIN

Activer ou désactiver AUTO ADMIN MAPPING dans une base de données conventionnelle

L’activation et la désactivation de l’indicateur AUTO ADMIN MAPPING dans une base de données conventionnelle s’effectue comme suit

ALTER ROLE RDB$ADMIN SET AUTO ADMIN MAPPING -- Mise en marche

ALTER ROLE RDB$ADMIN DROP AUTO ADMIN MAPPING -- Mise hors tension

Ces opérateurs peuvent être exécutés par des utilisateurs disposant de droits suffisants, à savoir

Note

Opérateur

ALTER ROLE RDB$ADMIN SET AUTO ADMIN MAPPING

est un type d’instruction simplifié pour créer une correspondance entre le groupe prédéfini DOMAIN_ANY_RID_ADMINS et le rôle RDB$ADMIN.

CREATE MAPPING WIN_ADMINS
USING PLUGIN WIN_SSPI
FROM Predefined_Group
DOMAIN_ANY_RID_ADMINS
TO ROLE RDB$ADMIN;

En conséquence, l’opérateur

ALTER ROLE RDB$ADMIN DROP AUTO ADMIN MAPPING

est équivalent à l’opérateur

DROP MAPPING WIN_ADMINS;

Pour plus d’informations, voir Security object mapping.

Dans les bases de données normales, l’état de AUTO ADMIN MAPPING n’est vérifié que pendant la connexion. Si Administrator a le rôle RDB$ADMIN parce que le mappage automatique s’est produit pendant la connexion, il conservera ce rôle pendant toute la session, même si lui ou quelqu’un d’autre désactive le mappage automatique au même moment.

De même, l’activation de AUTO ADMIN MAPPING ne changera pas le rôle actuel dans RDB$ADMIN pour les Administrateurs qui sont déjà connectés.

Activez ou désactivez AUTO ADMIN MAPPING dans la base de données de sécurité.

Vous ne pouvez pas activer ou désactiver l’indicateur AUTO ADMIN MAPPING dans la base de données utilisateur avec l’instruction ALTER ROLE RDB$ADMIN. Cependant, vous pouvez créer un mappage global du groupe prédéfini DOMAIN_ANY_RID_ADMINS au rôle RDB$ADMIN comme suit :

CREATE GLOBAL MAPPING WIN_ADMINS
USING PLUGIN WIN_SSPI
FROM Predefined_Group
DOMAIN_ANY_RID_ADMINS
TO ROLE RDB$ADMIN;

Alternativement, pour activer AUTO ADMIN MAPPING dans la base de données utilisateur, vous pouvez utiliser l’utilitaire de ligne de commande gsec :

gsec -mapping set

gsec -mapping drop
Note

Selon le statut administratif de l’utilisateur actuel, l’utilitaire gsec peut exiger plus de paramètres tels que -user et -pass, ou -trusted.

Seul SYSDBA peut activer AUTO ADMIN MAPPING s’il est désactivé, mais tout administrateur peut le désactiver.

Désactiver AUTO ADMIN MAPPING désactive le mécanisme même qui lui donnait accès et donc il ne peut pas réactiver AUTO ADMIN MAPPING. Même dans une session interactive de gsec, le nouveau paramètre du drapeau prendra effet immédiatement.

Administrateurs

Un administrateur est un utilisateur qui a des droits suffisants pour lire et écrire, créer, modifier et supprimer tout objet dans la base de données. Le tableau montre comment les privilèges `Superuser' sont activés dans divers contextes de sécurité Firebird.

Table 1. Administrateurs
Utilisateur Rôle RDB$ADMIN Note

SYSDBA

Automatiquement

Existe automatiquement au niveau du serveur. Possède une pour tous les objets de toutes les bases de données. Can Créer, modifier et supprimer des utilisateurs, mais n’a pas d’accès direct à l’information. l’accès à la base de données de sécurité.

Utilisateur root dans POSIX

Automatiquement

Similaire à SYSDBA. Seulement dans Firebird Embedded.

Superuser dans POSIX

Automatiquement

Similaire à SYSDBA. Seulement dans Firebird Embedded.

Propriétaire de la base de données

Automatiquement

Identique à SYSDBA, mais seulement dans cette base de données.

Administrateurs Windows

En cas de réussite de la connexion, la valeur est fixée à CURRENT_ROLE.

Similaire à SYSDBA si les conditions suivantes sont remplies :

  • Dans le fichier de configuration firebird.conf (paramètre AuthServer) le fournisseur Win_Sspi était présent dans la liste des plugins. En outre, ce plugin doit également être présent dans la liste des plugins côté client (paramètre AuthClient).

  • Dans toutes les bases de données où l’autorité du super-utilisateur est requise, la fonction AUTO ADMIN MAPPING doit être activée ou un mappage du groupe prédéfini DOMAIN_ANY_RID_ADMINS au rôle RDB$ADMIN doit être créé.

  • Aucun rôle n’est spécifié lors de la connexion.

Utilisateur ordinaire

Doit être pré-émis et doit être spécifié à la connexion

Même chose que SYSDBA, mais seulement dans les bases de données où ce rôle a été accordé.

Utilisateur POSIX

Doit être pré-émis et doit être spécifié à la connexion

Identique à SYSDBA, mais seulement dans les bases de données où ce rôle est accordé. Seulement dans Firebird Embedded.

Utilisateur Windows

Doit être pré-émis et doit être spécifié à la connexion

Identique à SYSDBA, mais seulement dans les bases de données où ce rôle a été accordé. Disponible uniquement si le fichier de configuration firebird.conf. (paramètre AuthServer) dans la liste des plugins Le fournisseur Win_Sspi était présent dans la liste des plugins. En outre, ce plugin doit également dans la liste des plugins côté client (paramètre AuthClient).