0

Je veux refuser un accès à certains objets dans une base de données pour un utilisateur particulier; mais tout ce qui n'est pas spécifiquement refusé je veux, par défaut, être accordé.SQL Server: Comment implicitement avoir tous les accès, et en refuser explicitement?

Normalement, je mets un utilisateur dans le rôle db_owner, afin de lui donner tous les accès (parce que le fichier public n'a pas tous les droits par défaut). Mais si je puis spécifiquement refuser l'autorisation select, sur une table spécifique, pour cet utilisateur spécifique, ils ont toujours l'autorisation select.

Comment un utilisateur peut implicitement ont tous les accès, à moins que explicitement nié?

Répondre

0

Peu importe, le problème n'est pas tel que je l'ai décrit.

  • l'utilisateur est membre du db_owner rôle fixe
  • l'utilisateur est refuséselect accès à une table
  • utilisateur peut encore accéder à des données de table

Ceci est parce que l'utilisateur est d'abord en passant par une vue, une procédure stockée ou une fonction. Apparemment, vous êtes autorisé à contourner la sécurité si vous alias la table.

SQL Server: How to implicitly have all access, and explicitly deny some?

1

Placez tout le monde dans un rôle qui n'est pas un propriétaire comme db_datareader. Je pense que votre problème était d'essayer de refuser select sur un membre db_owner. Idem pour les administrateurs.

+0

Est-ce que la question des subventions '' db_owner' autorisations select' - qui ne peut être niée, tandis que la permission select' 'des subventions db_datareader' de ** qui peuvent se voir refuser **? Les autorisations accordées par les rôles de base de données par défaut peuvent-elles être refusées - à l'exception de 'db_owner'? Existe-t-il une combinaison de rôles qui accorde tout ce que 'db_owner' fait, mais je suis autorisé à refuser? –

+0

Les rôles intégrés offrent plus de commodité que de flexibilité. Un membre de db_datareader peut être refusé individuellement Sélectionnez sur un objet. – JeffO