Table des matières
Qu'est-ce qu'un contexte d'exécution?
Comment utiliser EXECUTE AS?
Paramètres lors de la création d'un objet
Changer manuellement contexte
Utilisations et précautions courantes
1. Implémentez l'emballage sécurisé
2. Évitez les autorisations excessives
3. Cela fonctionne mieux en combinaison avec les signatures du module
4. Faites attention aux appels et portées imbriquées
Conseils: quelques points faciles à ignorer
Maison base de données SQL Contexte d'exécution de SQL Server: exécuter comme

Contexte d'exécution de SQL Server: exécuter comme

Aug 02, 2025 am 10:55 AM

Exécutez comme c'est une fonctionnalité dans SQL Server utilisée pour changer de contexte d'exécution, permettant d'exécuter le code en tant qu'utilisateur ou nom de connexion spécifié, permettant un contrôle de sécurité plus granulaire. Il peut être défini lors de la création de procédures, de fonctions ou de déclencheurs stockés, tels que la procédure de création ... avec exécuter en `` appuseur '', ou commuté manuellement au moment de l'exécution via Execute en tant qu'utilisateur = 'SomeUser' et est revenu au contexte d'origine avec REVERT. Ses utilisations courantes incluent une encapsulation sécurisée, d'éviter les autorisations excessives et de l'utiliser en combinaison avec des signatures de module; Dans le même temps, il est nécessaire de prêter attention à la portée des appels imbriqués, à l'existence de l'utilisateur cible et certaines fonctions sont encore limitées par les autorisations de connexion réelles.

Contexte d'exécution de SQL Server: exécuter comme

Dans SQL Server, EXECUTE AS c'est une fonctionnalité très pratique qui vous permet de passer à un autre contexte (comme un utilisateur ou une connexion) lors de l'exécution de certains code, émulant ainsi les autorisations de cet utilisateur. Ceci est très utile pour la mise en œuvre de contrôles de sécurité à grains plus fins, les signatures de modules et d'éviter les problèmes d'autorisation excessifs.

Contexte d'exécution de SQL Server: exécuter comme

Qu'est-ce qu'un contexte d'exécution?

Le contexte d'exécution fait référence au contexte de sécurité dans lequel se trouve SQL Server lors de l'exécution d'un morceau de code, c'est-à-dire "l'identité" du code en cours d'exécution. Par défaut, SQL Server utilise le contexte de l'appelant pour exécuter des objets de base de données tels que les procédures ou fonctions stockées.

Mais parfois, vous voudrez peut-être effectuer certaines opérations en tant qu'un autre utilisateur, comme permettant à un utilisateur à faible privilé d'accéder aux données restreintes via des procédures stockées, puis vous pouvez utiliser EXECUTE AS pour changer temporairement le contexte d'exécution.

Contexte d'exécution de SQL Server: exécuter comme

Comment utiliser EXECUTE AS?

Vous pouvez spécifier la clause EXECUTE AS lors de la création de procédures, de fonctions ou de déclencheurs stockées, ou vous pouvez changer manuellement des contextes à l'exécution.

Paramètres lors de la création d'un objet

 Créer une procédure dbo.getCustomerData
Avec exécuter comme 'Appuseur'
COMME
COMMENCER
    Sélectionner * parmi les clients;
FIN;

Dans cet exemple, peu importe qui appelle GetCustomerData , elle s'exécutera en tant AppUser .

Contexte d'exécution de SQL Server: exécuter comme

Changer manuellement contexte

Si vous souhaitez simplement changer temporairement, vous pouvez utiliser l'énoncé suivant:

  • Passez à un utilisateur spécifique:

     Exécuter comme user = 'someUser';
  • Passez au contexte d'origine:

     REVENIR;

    Remarque: Utilisation EXECUTE AS nécessite des autorisations correspondantes, et l'utilisateur cible doit également exister et ne peut pas être un compte système.


    Utilisations et précautions courantes

    1. Implémentez l'emballage sécurisé

    Avec EXECUTE AS , vous pouvez masquer l'accès aux objets sous-jacents et exposer uniquement les interfaces de procédure stockées. De cette façon, même si l'appelant n'a pas la permission d'accéder directement au tableau, les données peuvent être exploitées indirectement via le processus.

    2. Évitez les autorisations excessives

    Parfois, les développeurs offriront aux utilisateurs des autorisations db_owner ou sysadmin directement, ce qui est dangereux. L'utilisation EXECUTE AS permet aux programmes d'exécuter des opérations critiques avec des comptes de haut niveau que les utilisateurs eux-mêmes n'ont pas.

    3. Cela fonctionne mieux en combinaison avec les signatures du module

    Si vous ne souhaitez pas compter sur EXECUTE AS pour changer de contexte de façon permanente, vous pouvez envisager de faire correspondre les signatures du module. Cette méthode est plus flexible et plus sûre, en particulier adaptée aux environnements de production.

    4. Faites attention aux appels et portées imbriquées

    Si la procédure A appelle la procédure B et que les deux procédures ont EXECUTE AS paramètres, le comportement peut se compliquer. Il est recommandé de clarifier l'intention de contexte de chaque module pendant la conception pour éviter la confusion de l'autorisation.


    Conseils: quelques points faciles à ignorer

    • Si vous définissez EXECUTE AS CALLER , il équivaut à ne pas changer de contexte.
    • L'utilisateur cible doit exister dans la base de données actuelle (si USER ) ou au niveau du serveur (si LOGIN ).
    • Les déclencheurs de connexion dans l'audit ne sont pas activés lors de l'utilisation EXECUTE AS .
    • Certaines fonctionnalités (telles que les vues de gestion dynamique) peuvent toujours être restreintes par les autorisations réelles de l'utilisateur de connexion.

    Fondamentalement, c'est tout. La maîtrise EXECUTE AS peut vous aider à aller plus loin dans la sécurité du serveur SQL et le contrôle de l'autorisation. Bien qu'il semble simple, il est facilement négligé ou mal utilisé dans les applications réelles.

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1535
276
Edge Computing et SQL: traitement des données au bord Edge Computing et SQL: traitement des données au bord Jul 21, 2025 am 01:15 AM

L'utilisation de SQL pour traiter les données dans les scénarios de calcul des bords devient importante car elle réduit la pression de transmission et accélère la réponse. Les raisons principales incluent la dispersion des données, la sensibilité à la latence et les ressources limitées. Les défis incluent les contraintes de ressources, les divers formats de données, les exigences élevées en temps réel et le déploiement et la maintenance complexes. Le processus de déploiement comprend la sélection d'un moteur SQL adapté au bord, l'accès aux sources de données, la rédaction de scripts SQL et la sortie des résultats. Des conseils utiles incluent l'utilisation des fonctions de fenêtre, le filtrage et l'échantillonnage, la simplification des requêtes imbriquées, l'utilisation de tables de mémoire et la connexion des sources de données externes.

Principes de conception de la base de données relationnels pour les développeurs SQL Principes de conception de la base de données relationnels pour les développeurs SQL Jul 21, 2025 am 01:56 AM

Lors de la conception d'une base de données relationnelle, quatre principes clés doivent être suivis. Tout d'abord, utilisez correctement les contraintes de clés primaires et étrangères pour assurer l'intégrité des données et la précision d'association; Deuxièmement, effectuez une conception standardisée raisonnablement, atteignant généralement la troisième forme normale (3NF), éliminant la redondance et garantissant la cohérence des données; Troisièmement, établir des index appropriés pour les requêtes communes afin d'améliorer les performances de la requête mais éviter le sur-index; Enfin, en utilisant des spécifications de dénomination cohérentes et des styles structurels pour améliorer la lisibilité et la maintenabilité. La maîtrise de ces principes peut aider à construire une structure de base de données claire, efficace et robuste.

Options informatiques sans serveur SQL Server Options informatiques sans serveur SQL Server Jul 27, 2025 am 03:07 AM

SQLServer lui-même ne prend pas en charge l'architecture sans serveur, mais la plate-forme cloud fournit une solution similaire. 1. Le pool de serveur Azure peut interroger directement les fichiers de données et les charges en fonction de la consommation de ressources; 2. AzureFunctions combinées avec COSMOSDB ou Blobstorage peut réaliser un traitement SQL léger; 3. Awsathena prend en charge les requêtes SQL standard pour les données S3 et les charges basées sur des données numérisées; 4. GooglebigQuery s'approche du concept sans serveur via FederatedQuery; 5. Si vous devez utiliser la fonction SQLServer, vous pouvez choisir sans serveur d'Azuresqldatabase sans service

Comment calculez-vous la différence entre deux dates dans SQL? Comment calculez-vous la différence entre deux dates dans SQL? Aug 02, 2025 pm 01:29 PM

Pour calculer la différence entre deux dates, vous devez sélectionner la fonction correspondante en fonction du type de base de données: 1. Utilisez DADAFIF () pour calculer la différence de jour dans MySQL, ou spécifiez les unités telles que l'heure et la minute dans TimeStampDiff (); 2. Utilisez DADAIFF (DATE_PART, START_DATE, END_DATE) dans SQLServer et spécifiez les unités; 3. Utilisez la soustraction directe dans PostgreSQL pour obtenir la différence de jour, ou utilisez l'extrait (dayFromage (...)) pour obtenir des intervalles plus précis; 4. Utilisez la fonction Julianday () pour soustraire la différence de jour dans SQLite; Faites toujours attention à la commande de date

Master SQL pour l'analyse des affaires de l'intelligence d'affaires Master SQL pour l'analyse des affaires de l'intelligence d'affaires Jul 26, 2025 am 07:53 AM

Tomastersqlforbianalytics, startByUnderstandingBidatastructures likefactanddimensionTables, thesUsTrategicaggregations withGroupBbyandhaving, levariagedatefunctionsformes-basysysis, andwriteClean, se maintientablequeries.

Niveaux d'isolement dans SQL Server: Lire engagée, instantané, sérialisable Niveaux d'isolement dans SQL Server: Lire engagée, instantané, sérialisable Jul 21, 2025 am 12:35 AM

TheThreemainsqlServerisolationLevels - Readcommitted, Snapshot et Sérialisable - DifférinconCurrencyAndConsistence.1.ReadcommittedPreventsDirtyReadsButallowsNon-RepeatableAndHantomreads, offre la formulation et la canalisation et le canalisation

Comment renommer une table dans SQL? Comment renommer une table dans SQL? Jul 21, 2025 am 02:19 AM

Le changement de nom de table est généralement implémenté dans SQL à l'aide de la commande renommée ou altertable. 1.MySQL, MARIADB ET D'AUTRES BASES DE DONNÉES Utilisent Renametableold_Table_NameToneW_Table_Name; Syntaxe, prend en charge les opérations par lots; 2. SqlServer nécessite une procédure stockée SP_RENAME, et la syntaxe est execsp_rename'old_table_name ',' new_table_name '; 3.PostgreSQL Utilise Alterableold_Table_NameRenametOnew_Table_Name

Cube SQL et rouleau pour l'agrégation multidimensionnelle Cube SQL et rouleau pour l'agrégation multidimensionnelle Jul 29, 2025 am 12:28 AM

Le cube est utilisé pour générer une agrégation de toutes les combinaisons de dimensions, adaptées à une analyse croisée; Rollup est progressivement résumé aux niveaux hiérarchiques, adapté aux données avec des relations hiérarchiques. Cube génère un total de 8 combinaisons selon la région, le produit et le trimestre, tandis que Rollup génère un résumé de l'année, du mois, du jour et d'autres niveaux selon l'année, le mois et le jour. Cube convient à la visualisation de tous les résultats transversaux, Rollup convient à l'affichage des hiérarchies. Notez que Cube peut faire exploser l'ensemble de résultats et Rollup dépend de l'ordre sur le terrain. La ligne récapitulative peut être identifiée via la fonction de groupement (), et la ligne totale est nommée avec coalesce pour améliorer la lisibilité.

See all articles