Normalement, lorsque je crée une procédure stockée, j'utilise ce qui suit comme modèle de tri
Create procedure <procedurename>
<@param1 <type>, @param2 <type>, etc..>
as begin
<procedure>
end
Existe-t-il un moyen d'inclure l'octroi d'une autorisation d'exécution sur cette procédure stockée uniquement lorsque je suis au courant?
Par exemple, comme ...
Grant execute [User_Execute]
... mais uniquement pour cette procédure stockée?
J'ai vu d'autres questions similaires, mais elles semblent toutes faire référence à TOUTES les procédures stockées et non à une seule. Je n'en ai pas vu non plus où vous pouvez spécifier des autorisations à l'intérieur du create procedure
script. Même des réponses sur la manière dont je peux définir des autorisations sans l'interface graphique pour des procédures stockées spécifiques seraient les bienvenues.
Modifier La réponse du haut m’a certainement orientée dans la bonne direction, c’est essentiellement ce que je cherchais, je ne pensais pas à la mise en lots des commandes, c’est ce que j’ai fini par faire: mettre en lots la commande avec ma procédure stockée. Quoi qu'il en soit, je pense que c'est assez lisse.
Create procedure <procedurename>
<@param1 <type>, @param2 <type>, etc..>
as begin
<procedure>
end
GO
GRANT EXECUTE ON <procedurename> to <username>
GO
la source
Réponses:
la source
truncate table La définition de permissions sur des objets tels que les procédures stockées peut être réalisée avec:
Toutefois, vous pouvez également vouloir accorder des droits de sécurité au niveau de la connexion et de l'utilisateur. Vous voudrez déterminer et accorder UNIQUEMENT les droits nécessaires pour les objets nécessitant un accès (tels que l'exécution). Envisagez d'utiliser la
EXECUTE AS
fonctionnalité qui permet l'emprunt d'identité d'un autre utilisateur pour valider les autorisations nécessaires à l'exécution du code SANS octroyer tous les droits nécessaires à tous les objets sous-jacents (par exemple, les tables).EXECUTE AS
peut être ajouté aux procédures stockées, fonctions, déclencheurs, etc.Ajoutez le code comme suit directement dans la procédure stockée:
Dans ce cas, vous personnifiez le propriétaire du module appelé. Vous pouvez également emprunter l'identité de SELF, OU l'utilisateur qui crée ou modifie le module OU ... un appelant impeccable, ce qui permettra à ce module de prendre les autorisations de l'utilisateur actuel, OU ... d'usurper l'identité du propriétaire, qui obtiendra l'autorisation du le propriétaire de la procédure appelée OU ... emprunte l'identité de "nom_utilisateur", qui empruntera l'identité d'un utilisateur spécifique OU ... empruntant l'identité de "nom_utilisateur" avec l'identité d'un identifiant spécifique.
La plupart du temps, il vous suffira d'octroyer des
EXECUTE
droits aux procédures stockées, puis des droits seront accordés à tous les objets référencés dans la procédure stockée.De cette façon, vous n'avez PAS besoin de donner des droits implicites (exemple: mettre à jour des données ou appeler des procs supplémentaires). Le chaînage des propriétés s’occupe de cela pour vous. Ceci est particulièrement utile pour SQL dynamique ou si vous devez créer des tâches de sécurité élevées telles que
CREATE TABLE
.EXECUTE AS
est un outil pratique à considérer pour ceux-ci.Cet exemple peut aider à clarifier tout cela:
Créez un utilisateur appelé NoPrivUser avec un accès public à une base de données (par exemple, dbadb):
REMARQUE: LE CRÉATEUR OU LE PROPRIÉTAIRE DE CETTE PROCÉDURE EXIGE DES DROITS DE CRÉATION DE TABLE dans la base de données cible.
Avec la
EXECUTE AS
clause, la procédure stockée est exécutée dans le contexte du propriétaire de l'objet. Ce code crée avec succèsdbo.MyTable
et les lignes sont insérées avec succès. Dans cet exemple, l'utilisateur neNoPrivUser
dispose d'aucun droit absolu de modifier la table, de lire ou de modifier les données de cette table.Il ne prend que les droits nécessaires pour mener à bien cette tâche spécifique, codée DANS LE contexte de cette procédure.
Cette méthode de création de procédures stockées pouvant effectuer des tâches nécessitant des droits de sécurité élevés sans affecter ces droits de manière permanente est très utile.
la source
sélectionnez la connexion à la base de données -> Allez à Sécurisable et cliquez sur le bouton Rechercher comme dans l'image précédente. En cliquant sur le bouton Rechercher, vous verrez la fenêtre suivante pour ajouter le type d'objet.
Cliquez sur le bouton Types d'objet et vous obtiendrez la fenêtre «Sélectionner les types d'objet» avec divers objets. Si vous voyez maintenant, la procédure stockée est répertoriée dans la zone des types d'objet. Nous allons maintenant sélectionner notre procédure stockée spécifique sur laquelle nous souhaitons fournir une autorisation.
la source