The security of the entire database depends on identifying a user and verifying its authority, a procedure known as authentication.User authentication can be performed in several ways, depending on the setting of the AuthServer
parameter in the firebird.conf
configuration file.This parameter contains the list of authentication plugins that can be used when connecting to the server.If the first plugin fails when authenticating, then the client can proceed with the next plugin, etc.When no plugin could authenticate the user, the user receives an error message.
The information about users authorised to access a specific Firebird server is stored in a special security database named {secdb}
.Each record in {secdb}
is a user account for one user.For each database, the security database can be overridden in the databases.conf
file (parameter SecurityDatabase
).Any database can be a security database, even for that database itself.
A username, with a maximum length of 63 characters, is an identifier, following the normal rules for identifiers (unquoted case-insensitive, double-quoted case-sensitive).For backwards compatibility, some statements (e.g. isqls CONNECT
) accept usernames enclosed in single quotes, which will behave as normal, unquoted identifiers.
The maximum password length depends on the user manager plugin (parameter UserManager
, in firebird.conf
or databases.conf
).Passwords are case-sensitive.The default user manager is the first plugin in the UserManager
list, but this can be overridden in the SQL user management statements.For the Srp
plugin, the maximum password length is 255 characters, for an effective length of 20 bytes (see also [fblangref50-security-auth-effective-20-bytes]).For the Legacy_UserManager
plugin only the first eight bytes of a password are significant;whilst it is valid to enter a password longer than eight bytes for Legacy_UserManager
, any subsequent characters are ignored.
The embedded version of the server does not use authentication;for embedded, the filesystem permissions to open the database file are used as authorization to access the database.However, the username, and — if necessary — the role, must be specified in the connection parameters, as they control access to database objects.
SYSDBA or the owner of the database have unrestricted access to all objects of the database.Users with the RDB$ADMIN
role have similar unrestricted access if they specify that role when connecting or with SET ROLE
.