| Goal | To enforce the principle of least privilege, you must explicitly grant SELECT privileges on views only to the specific users or roles that correspond to your applications. Instead of allowing broad access, ensuring that data exposed through views is restricted to dedicated service accounts helps maintain a secure and isolated database architecture. |
|---|---|
| Notes | The query returns a row if there are less than three views that usage right is granted to some non-superuser. It could be that the user, which corresponds to an application, has some but not all the necessary privileges in the database. In this case the query will give false negative answer. The number in the condition (3) is an example and could be changed. The condition in the query ensures that if the requirement is not fulfilled, then the query returns one row, otherwise it does not return a row. The result is achieved by using a PostgreSQL feature that permits SELECT statements without the FROM clause. |
| Type | Problem detection Each row in the result could represent a flaw in the design |
| Reliability | Medium Medium number of false-positive results |
| License | MIT (opens in new tab) |
| Data Source | INFORMATION_SCHEMA+system catalog |
| SQL Query |
|
Fixing Suggestion
Identify the roles mapping to your applications and explicitly provide them read access using the GRANT SELECT ON [view_name] TO [application_role]; command.
Collections
This query belongs to the following collections:
Find problems automatically
Queries, that results point to problems in the database. Each query in the collection produces an initial assessment. However, a human reviewer has the final say as to whether there is a problem or not .
| Name | Description |
|---|---|
| Find problems automatically | Queries, that results point to problems in the database. Each query in the collection produces an initial assessment. However, a human reviewer has the final say as to whether there is a problem or not . |
Categories
This query is classified under the following categories:
Derived tables
Queries of this category provide information about the derived tables (views, materialized views), which are used to implement virtual data layer.
Security
Queries of this category provide information about the security measures.
| Name | Description |
|---|---|
| Derived tables | Queries of this category provide information about the derived tables (views, materialized views), which are used to implement virtual data layer. |
| Security | Queries of this category provide information about the security measures. |
Further reading and related materials: