FirebirdSQL logo

Cette section décrit comment créer, modifier et supprimer des comptes utilisateurs Firebird en utilisant des instructions SQL :

  • `SYSDBA' ;

  • Tout utilisateur qui a des droits sur le rôle RDB$ADMIN dans la base de données de l’utilisateur et des droits sur le même rôle pour la base de données dans la connexion active. L’utilisateur doit se connecter à la base de données avec le rôle RDB$ADMIN, ou obtenir ses droits si le rôle est attribué par défaut ;

  • Tout utilisateur ayant le rôle attribué au privilège système USER_MANAGEMENT dans la base de données de sécurité. L’utilisateur doit se connecter à la base de données avec ce rôle ou se voir accorder ses droits si le rôle est attribué comme rôle par défaut ;

  • Lorsque l’indicateur AUTO ADMIN MAPPING est activé dans la base de données utilisateur (security4.fdb ou celui défini pour votre base de données dans le fichier databases.conf). — tout administrateur Windows (tant que le serveur d’authentification de confiance est utilisé) sans spécifier de rôle. Il importe peu que l’indicateur "MAPPING ADMIN AUTO" soit activé ou désactivé dans la base de données elle-même.

Les utilisateurs non privilégiés ne peuvent utiliser l’opérateur ALTER USER que pour modifier leur propre compte.

CREATE USER

affectation

Création d’un compte utilisateur Firebird.

Disponible en

DSQL

Syntaxe
CREATE USER username
  PASSWORD 'password'
  [<user_option> [<user_option> ...]]
  [TAGS ( <tag> [, <tag>  ...] )]

<user_option> ::=
    FIRSTNAME 'firstname'
  | MIDDLENAME 'middlename'
  | LASTNAME 'lastname'
  | {ACTIVE | INACTIVE}
  | USING PLUGIN pluginname
  | GRANT ADMIN ROLE

<tag> ::=
  tagname = 'string_value'
Table 1. Paramètres de l’opérateur CREATE USER
Paramètre Description

username

Nom de l’utilisateur. Longueur maximale de 63 caractères.

password

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

firstname

Informations auxiliaires : nom de l’utilisateur, longueur maximale de 32 caractères.

middlename

Information auxiliaire : "second prénom" (deuxième prénom, "nom du père") de l’utilisateur. 32 caractères maximum.

lastname

Informations secondaires : nom de l’utilisateur, longueur maximale de 32 caractères.

pluginname

Le nom du plug-in de gestion des utilisateurs dans lequel vous voulez créer un nouvel utilisateur.

tagname

Nom de l’attribut personnalisé. Longueur maximale de 63 caractères. Le nom de l’attribut doit respecter les règles de dénomination des identifiants SQL.

string_value

Valeur d’attribut personnalisée. Longueur maximale de 255 caractères.

L’instruction CREATE USER crée un compte utilisateur Firebird. L’utilisateur ne doit pas exister dans la base de données de sécurité Firebird actuelle ou un message d’erreur approprié sera émis.

Important

Depuis Firebird 3.0, les noms d’utilisateurs sont soumis à la règle générale de nommage des identifiants d’objets de métadonnées. Ainsi, un utilisateur nommé "Alex" et un utilisateur nommé "ALEX" seront des utilisateurs différents.

CREATE USER ALEX PASSWORD 'bz23ds';

-- cet utilisateur est le même que le premier
CREATE USER Alex PASSWORD 'bz23ds';

-- cet utilisateur est le même que le premier
CREATE USER "ALEX" PASSWORD 'bz23ds';

-- et ceci est un utilisateur différent
CREATE USER "Alex" PASSWORD 'bz23ds';

La clause PASSWORD spécifie le mot de passe de l’utilisateur. La longueur maximale du mot de passe dépend du plugin de gestion des utilisateurs concerné (paramètre [paramètre] "UserManager"). Pour le plugin SRP, la longueur effective du mot de passe est limitée à 20 octets*. La longueur maximale du mot de passe du plugin Legacy_UserManager 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.

Les phrases facultatives FIRSTNAME, MIDDLENAME et LASTNAME spécifient des attributs supplémentaires de l’utilisateur tels que le nom d’utilisateur (prénom de la personne), le second prénom et le nom de famille respectivement.

Si l’attribut INACTIVE est spécifié lors de la création d’un compte, l’utilisateur sera créé dans un état inactif, c’est-à-dire qu’il ne sera pas possible de se connecter avec son compte. Si l’attribut ACTIVE est spécifié, l’utilisateur sera créé dans l’état actif. Par défaut, l’utilisateur est créé actif. Cette fonctionnalité n’est disponible que lorsque Srp est utilisé comme gestionnaire d’utilisateurs.

Si l’option GRANT ADMIN ROLE est spécifiée, un nouveau compte utilisateur est créé avec les droits du rôle RDB$ADMIN dans la base de données de sécurité actuelle. Cela permet à l’utilisateur nouvellement créé de gérer les comptes utilisateurs, mais ne lui donne pas de droits spéciaux dans les bases de données normales.

La clause optionnelle USING PLUGIN vous permet de spécifier explicitement quel plugin de gestion des utilisateurs sera utilisé. La valeur par défaut est le plugin listé en premier dans le paramètre UserManager du fichier de configuration firebird.conf. Seules les valeurs listées dans le paramètre UserManager sont valides.

Important
Important

Notez que les utilisateurs avec le même nom créés avec différents plugins de gestion des utilisateurs sont des utilisateurs différents, donc un utilisateur créé avec le même plugin de gestion des utilisateurs ne peut être supprimé ou modifié qu’en spécifiant le même plugin.

Vous pouvez également spécifier un nombre illimité d’attributs d’utilisateur en utilisant la suggestion optionnelle TAGS. Cette fonctionnalité n’est disponible que lorsque Srp est utilisé comme gestionnaire d’utilisateurs.

Qui peut créer un utilisateur

  • SYSDBA et les autres utilisateurs qui sont administrateurs dans la base de données de sécurité (avec le rôle RDB$ADMIN) ;

  • Les utilisateurs connectés avec le rôle ou ayant reçu ses privilèges (le rôle est attribué par défaut), qui se voit attribuer le privilège système USER_MANAGEMENT.

Exemples CREATE USER

Example 1. Créer un utilisateur
CREATE USER bigshot PASSWORD 'buckshot';
Example 2. Créer un utilisateur en utilisant le plug-in de gestion des utilisateurs `Legacy_UserManager'.
CREATE USER godzilla PASSWORD 'robot'
USING PLUGIN Legacy_UserManager;
Example 3. Créer un utilisateur avec des attributs d’utilisateur.
CREATE USER john PASSWORD 'fYe_3Ksw'
FIRSTNAME 'John'
LASTNAME 'Doe'
TAGS (BIRTHYEAR = '1970', CITY = 'New York');
Example 4. Création d’un utilisateur dans un état inactif.
CREATE USER john PASSWORD 'fYe_3Ksw'
FIRSTNAME 'John'
LASTNAME 'Doe'
INACTIVE;
Example 5. Créer un utilisateur avec des capacités de gestion des utilisateurs
CREATE USER superuser PASSWORD 'kMn8Kjh'
GRANT ADMIN ROLE;

ALTER USER

affectation:

Changer le compte utilisateur de Firebird.

Disponible en:

DSQL.

Syntaxe:
ALTER {USER username | CURRENT USER}
  [SET] [<user_option> [<user_option> ...]]
  [USING PLUGIN pluginname]
  [{GRANT | REVOKE} ADMIN ROLE]
  [TAGS ( <tag> [, <tag>  ...] )]

<user_option> ::=
    PASSWORD 'password'
  | FIRSTNAME 'firstname'
  | MIDDLENAME 'middlename'
  | LASTNAME 'lastname'
  | {ACTIVE | INACTIVE}

<tag> ::=
    tagname = 'string_value'
  | DROP tagname

Pour une description des paramètres de l’opérateur, voir [fblangref-security-user-create].

L’instruction ALTER USER modifie les détails du compte utilisateur. L’instruction ALTER USER doit contenir au moins une des phrases optionnelles.

La phrase optionnelle PASSWORD définit un nouveau mot de passe pour l’utilisateur.

Les phrases facultatives FIRSTNAME, MIDDLENAME et LASTNAME vous permettent de modifier des attributs supplémentaires de l’utilisateur tels que le nom d’utilisateur (nom de personne), le second prénom et le nom de famille respectivement.

L’attribut INACTIVE vous permet de rendre un compte inactif. Ceci est utile lorsque vous souhaitez désactiver temporairement un compte sans le supprimer. L’attribut ACTIVE vous permet de remettre un compte inactif à l’état actif. Cette fonctionnalité n’est disponible que lorsque vous utilisez Srp comme gestionnaire d’utilisateurs.

La phrase optionnelle TAGS vous permet de spécifier, modifier ou supprimer les attributs de l’utilisateur. S’il n’y a pas d’attribut avec le nom donné dans la liste des attributs, il sera ajouté, sinon sa valeur sera modifiée. Les attributs non spécifiés dans la liste ne seront pas modifiés. Pour supprimer un attribut de l’utilisateur, le mot clé DROP doit être spécifié avant son nom dans la liste des attributs. Cette fonctionnalité n’est disponible que si vous utilisez Srp comme gestionnaire d’utilisateurs.

L’offre GRANT ADMIN ROLE accorde à l’utilisateur spécifié les privilèges du rôle RDB$ADMIN dans la base de données de sécurité actuelle. Cela permet à l’utilisateur spécifié de gérer les comptes utilisateurs, mais ne lui donne pas d’autorité spéciale dans les bases de données normales.

La phrase REVOKE ADMIN ROLE retire à l’utilisateur spécifié les privilèges du rôle RDB$ADMIN dans la base de données de sécurité actuelle, ce qui l’empêche de gérer les comptes utilisateurs.

La clause optionnelle USING PLUGIN vous permet de spécifier explicitement quel plugin de gestion des utilisateurs sera utilisé. La valeur par défaut est le plugin listé en premier dans le paramètre UserManager du fichier de configuration firebird.conf. Seules les valeurs listées dans le paramètre UserManager sont valides.

Important
Il est important de:

Notez que les utilisateurs avec le même nom créés avec différents plugins de gestion des utilisateurs sont des utilisateurs différents, donc un utilisateur créé avec le même plugin de gestion des utilisateurs ne peut être supprimé ou modifié qu’en spécifiant le même plugin.

Si vous voulez changer de compte, vous pouvez utiliser le mot clé CURRENT USER au lieu de spécifier le nom de l’utilisateur actuel.

Qui peut modifier un compte utilisateur ?

Les autres utilisateurs peuvent modifier le compte de quelqu’un d’autre :

  • SYSDBA et les autres utilisateurs qui sont administrateurs dans la base de données de sécurité (avec le rôle de RDB$ADMIN) ;

  • Les utilisateurs connectés avec le rôle (rôle attribué par défaut) ou ayant reçu des privilèges à ce rôle, auquel est attribué le privilège système USER_MANAGEMENT.

Tous les utilisateurs peuvent modifier leurs propres comptes, mais cela ne s’applique pas aux options {GRANT | REVOKE} ADMIN ROLE et à l’attribut ACTIVE/INACTIVE qui nécessitent des privilèges administratifs pour être modifiés.

Exemples ALTER USER

Example 1. Changer l’utilisateur et lui accorder des privilèges de gestion des utilisateurs.
ALTER USER bobby PASSWORD '67-UiT_G8'
GRANT ADMIN ROLE;
Example 2. Changez le mot de passe d’un utilisateur créé en utilisant le plugin de gestion des utilisateurs Legacy_UserManager.
ALTER USER godzilla PASSWORD 'robot12'
USING PLUGIN Legacy_UserManager;
Example 3. Modifier les attributs supplémentaires de votre compte.
ALTER CURRENT USER
FIRSTNAME 'No_Jack'
LASTNAME 'Kennedy';
Example 4. Désactiver un compte utilisateur.
ALTER USER dan INACTIVE;
Example 5. Retirer à l’utilisateur le privilège de gestion de l’utilisateur.
ALTER USER dumbbell
REVOKE ADMIN ROLE;
Example 6. Modifiez les attributs de l’utilisateur de votre compte.
ALTER CURRENT USER
TAGS (BIRTHYEAR = '1971', DROP CITY);

L’attribut BIRTHDAY sera mis à une nouvelle valeur et l’attribut CITY sera supprimé.

CREATE OR ALTER USER

affectation

Créer ou modifier un compte utilisateur Firebird.

Disponible en

DSQL

Syntaxe
ALTER USER _username_
  [SET] [<user_option> [<user_option> ...]]
  [USING PLUGIN _pluginname_]
  [{GRANT | REVOKE} ADMIN ROLE]
  [TAGS ( <tag> [, <tag>  ...] )]

<user_option> ::=
    PASSWORD '_password_'
  | FIRSTNAME '_firstname_'
  | MIDDLENAME '_middlename_'
  | LASTNAME '_lastname_'
  | {ACTIVE | INACTIVE}

<tag> ::=
    _tagname_ = '_string_value_'
  | DROP _tagname_

Voir [fblangref-security-user-create] pour une description des paramètres de l’opérateur.

L’instruction CREATE OR ALTER USER crée un nouveau compte ou modifie un compte. Si l’utilisateur n’existe pas, il sera créé à l’aide de l’instruction CREATE USER. S’il existe déjà, il sera modifié et les privilèges existants seront conservés.

Exemples CREATE OR ALTER USER

Example 1. Créer ou modifier un utilisateur.
CREATE OR ALTER USER john
PASSWORD 'fYe_3Ksw'
FIRSTNAME 'John'
LASTNAME 'Doe'
INACTIVE;

DROP USER

affectation

Suppression d’un compte utilisateur Firebird

Disponible en

DSQL

Syntaxe
DROP USER username
  [USING PLUGIN pluginname]
Table 1. Paramètres de l’opérateur DROP USER
Paramètre Description

username

Nom d’utilisateur.

pluginname

Le nom du plugin de gestion des utilisateurs dans lequel cet utilisateur a été créé.

L’instruction DROP USER supprime le compte utilisateur Firebird.

La clause optionnelle USING PLUGIN vous permet de spécifier explicitement quel plugin de gestion des utilisateurs sera utilisé. La valeur par défaut est le plugin listé en premier dans le paramètre UserManager du fichier de configuration firebird.conf. Seules les valeurs listées dans le paramètre UserManager sont valides.

Important

Notez que les utilisateurs avec le même nom créés avec différents plugins de gestion des utilisateurs sont des utilisateurs différents, donc un utilisateur créé avec le même plugin de gestion des utilisateurs ne peut être supprimé ou modifié qu’en spécifiant le même plugin.

Qui peut supprimer un compte d’utilisateur ?

  • SYSDBA et les autres utilisateurs qui sont administrateurs dans la base de données de sécurité (avec le rôle RDB$ADMIN) ;

  • Les utilisateurs connectés avec le rôle ou ayant reçu ses privilèges (le rôle est attribué par défaut), qui se voit attribuer le privilège système USER_MANAGEMENT.

Exemples DROP USER

Example 1. Suppression d’un utilisateur.
DROP USER bobby;
Example 2. Suppression d’un utilisateur créé en utilisant le plugin de gestion des utilisateurs `Legacy_UserManager'.
DROP USER Godzilla USING PLUGIN Legacy_UserManager;

RECREATE USER

affectation

Créez un nouveau compte utilisateur Firebird ou recréez un compte existant.

Disponible en

DSQL

Syntaxe
RECREATE USER username
  PASSWORD 'password'
  [<user_option> [<user_option> ...]]
  [TAGS ( <tag> [, <tag>  ...] )]

<user_option> ::=
    FIRSTNAME 'firstname'
  | MIDDLENAME 'middlename'
  | LASTNAME 'lastname'
  | {ACTIVE | INACTIVE}
  | USING PLUGIN pluginname
  | GRANT ADMIN ROLE

<tag> ::=
  tagname = 'string_value'

Pour une description des paramètres de l’opérateur, voir [fblangref-security-user-create].

L’instruction RECREATE USER crée un nouvel utilisateur ou recrée un utilisateur existant. Si un utilisateur portant ce nom existe déjà, l’instruction RECREATE TABLE le supprimera et en créera un nouveau. Les privilèges existants seront conservés.

Exemples RECREATE USER

Example 1. Créer ou recréer un utilisateur.
RECREATE USER john PASSWORD 'fYe_3Ksw'
FIRSTNAME 'John'
LASTNAME 'Doe'
INACTIVE;

Obtention d’une liste d’utilisateurs

Vous pouvez utiliser les tables virtuelles SEC$USERS et SEC$USER_ATTRIBUTES pour obtenir une liste des utilisateurs et de leurs attributs.

Example 1. Affichage d’une liste d’utilisateurs et de leurs attributs
SELECT
  CAST(U.SEC$USER_NAME AS CHAR(20)) AS LOGIN,
  CAST(A.SEC$KEY AS CHAR(10)) AS TAG,
  CAST(A.SEC$VALUE AS CHAR(20)) AS "VALUE",
  U.SEC$PLUGIN AS "PLUGIN"
FROM SEC$USERS U
  LEFT JOIN SEC$USER_ATTRIBUTES A
         ON U.SEC$USER_NAME = A.SEC$USER_NAME
        AND U.SEC$PLUGIN = A.SEC$PLUGIN;
   LOGIN                TAG        VALUE                PLUGIN
   ==================== ========== ==================== ==========================
   SYSDBA               <null>     <null>               Srp
   ALEX                 B          x                    Srp
   ALEX                 C          sample               Srp
   SYSDBA               <null>     <null>               Legacy_UserManager
Pour une description détaillée des tableaux de sécurité virtuels, voir :

SEC$USERS, SEC$USER_ATTRIBUTES.