Liste des connexions et des utilisateurs SQL Server existants

  • Je sais que nous pouvons vérifier les connexions et les utilisateurs définis à l'aide de l'interface graphique de SQL Server, mais je me demande comment nous pouvons faire cette vérification à l'aide d'un script.

    J'ai exécuté la requête ci-dessous mais elle montre Principal_id que je ne sais pas comment mapper pour obtenir le niveau d'autorisation.

    SELECT * FROM Sys.login_token 
    

    Alors, y a-t-il un processus stocké intégré qui peut lister les connexions et les utilisateurs avec leur niveau d'autorisation?

    Merci.

    Définissez le "niveau d'autorisation". Droits d'objet, appartenance au rôle de base de données, appartenance au rôle serveur?

    En cas de doute, activez Profiler par rapport à Management Studio et voyez ce qu'il fait.

  • Je ne sais pas s'il existe un moyen intégré, mais essayez cette requête pour les principaux de serveur:

    ;with ServerPermsAndRoles as
    (
        select
            spr.name as principal_name,
            spr.type_desc as principal_type,
            spm.permission_name collate SQL_Latin1_General_CP1_CI_AS as security_entity,
            'permission' as security_type,
            spm.state_desc
        from sys.server_principals spr
        inner join sys.server_permissions spm
        on spr.principal_id = spm.grantee_principal_id
        where spr.type in ('s', 'u')
    
        union all
    
        select
            sp.name as principal_name,
            sp.type_desc as principal_type,
            spr.name as security_entity,
            'role membership' as security_type,
            null as state_desc
        from sys.server_principals sp
        inner join sys.server_role_members srm
        on sp.principal_id = srm.member_principal_id
        inner join sys.server_principals spr
        on srm.role_principal_id = spr.principal_id
        where sp.type in ('s', 'u')
    )
    select *
    from ServerPermsAndRoles
    order by principal_name
    

    En gros, ce qu'il fait, il obtient les autorisations accordées et refusées, et les unit avec l'appartenance au rôle. Il devrait vous donner un bref aperçu de la sécurité des connexions au serveur. Faites-moi savoir si c'est ce que vous recherchez.

    C'était très utile! J'ai ajouté une concaténation de chaîne pour "me montrer une commande pour accorder / révoquer les autorisations pour chaque connexion répertoriée", comme ceci - `CAST ([srvperm]. [State_desc] AS VARCHAR (MAX)) + '' + CAST ( srvperm. [nom_autorisation] AS VARCHAR (MAX)) + 'TO [' + CAST (srvprin.name AS VARCHAR (MAX)) + '];' comme GrantQuery` qui permet de répliquer ces autorisations si vous migrez un serveur :)

Licence sous CC-BY-SA avec attribution


Contenu daté avant 26/06/2020 09:53