Accorder l'accès à toutes les tables d'une base de données


13

J'ai récemment voulu partager des droits d'accès réguliers avec un utilisateur d'un serveur et j'ai réalisé qu'un simple CREATE USERet des GRANT ALL ON DATABASEcommandes ne lui permettaient pas d'exécuter un simple SELECTsur les données.

Je voudrais accorder des droits sur toutes les tables d'une base de données donnée à un utilisateur spécifié, mais je ne sais pas si c'est la meilleure idée de lui accorder l'accès à l'ensemble du schéma publiccar je ne sais pas si cela permettrait une sorte de privilège escalade. Est-ce qu'il y a un autre moyen?


Pourquoi tu ne peux pas juste GRANT SELECT ON TableName TO [Domain\User]? J'attribue généralement des utilisateurs au db_datareaderrôle si tout ce dont ils ont besoin est un accès en lecture à toutes les tables, mais je ne sais pas dans quelle mesure vous voulez être précis.
Kris Gruttemeyer

Je voudrais accorder tous les CRUD à toutes les tables de la base de données. De plus, DROPping et CREATEing à l'intérieur de cette base de données pourraient également s'avérer utiles.
d33tah

Réponses:


19

Le privilège sur DATABASEaccorde uniquement des droits de connexion généraux à la base de données et pas plus. Un utilisateur disposant uniquement de ce privilège ne peut voir que ce que le grand public est autorisé à voir.

Pour accorder un accès en lecture à toutes les tables , vous devez également disposer de privilèges sur tous les schémas et tables:

GRANT USAGE ON SCHEMA public TO myuser; -- more schemas?
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;

Vous pouvez également définir des privilèges par défaut pour les futurs schémas et tables. Exécutez pour chaque rôle qui crée des objets dans votre base de données

ALTER DEFAULT PRIVILEGES FOR ROLE mycreating_user IN SCHEMA public
GRANT SELECT ON TABLES TO myuser;

Mais vous devez d'abord comprendre tout le concept .
Et il est presque toujours préférable de regrouper les privilèges dans les rôles de groupe, puis d'accorder / révoquer le rôle de groupe vers / depuis les rôles d'utilisateur. En relation:


Est-ce myusrune faute de frappe? N'est-ce pas myuser?
attomos

1
@attomos: Il est censé être un utilisateur différent dans l'exemple. Clarifiai-je.
Erwin Brandstetter
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.