Managing Database Security
Authentication and
authorization in a Vertica
database are based on SQL standard users and privileges except that each database has a
superuser who can bypass the authorization mechanism. The superuser has the same name as the Linux user that created the database (the
Database Administrator). Creating a database allows the DBA to specify the superuser password or an empty string (no password).
The database administrator (DBA) is the Linux user account that owns the database catalog and data storage on disk. The DBA can bypass all database authorization rules. However, the DBA must supply a password to connect to a running database and to use Administration Tools commands that affect a running database. The DBA can drop a stopped database without supplying a password.
The database superuser is the automatically-created database user who has the same name as the Linux database administrator account and who can bypass all GRANT/REVOKE authorization. Superuser status cannot be granted to another user. (The concept of a database superuser should not be confused with Linux superuser (root) privilege. In fact, a database superuser cannot have Linux superuser privilege.)
A database is a
cluster of nodes that, when active, can perform distributed data storage and SQL statement execution through administrative, interactive, and programmatic user interfaces.
A cluster generally refers a collection of hosts or a collection of nodes bound to a database. A cluster is not part of a database definition and thus does not have a name.
Authorization is the process of verifying that a user has permission to perform a certain operation, such as query a specific table.
Authentication is the process of attempting to verify the identity of a user attempting to connect to a database.
WARNING: If the DBA does not specify a superuser password at database creation time, the database authentication method is permanently set to "trust," which allows any user to log in without supply a password.
The superuser can:
- create normal database users but not other superusers
- drop normal database users
- grant privileges to normal database users
- revoke privileges granted to normal database users