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 USER
et des GRANT ALL ON DATABASE
commandes ne lui permettaient pas d'exécuter un simple SELECT
sur 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 public
car je ne sais pas si cela permettrait une sorte de privilège escalade. Est-ce qu'il y a un autre moyen?
GRANT SELECT ON TableName TO [Domain\User]
? J'attribue généralement des utilisateurs audb_datareader
rô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.Réponses:
Le privilège sur
DATABASE
accorde 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:
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
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:
la source
myusr
une faute de frappe? N'est-ce pasmyuser
?