{"id":529,"date":"2017-06-23T01:36:50","date_gmt":"2017-06-23T01:36:50","guid":{"rendered":"http:\/\/www.manualsqlserver.com\/?p=529"},"modified":"2021-03-20T20:15:53","modified_gmt":"2021-03-20T20:15:53","slug":"funciones-de-servidor","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=529","title":{"rendered":"Funciones de Servidor en SQL Server"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"220\" height=\"196\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesServidorD.png\" alt=\"\" class=\"wp-image-1366\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Server Roles en SQL Server<\/strong><\/h1>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Funciones fijas de servidor<\/strong><\/h2>\n\n\n\n<p>La administraci\u00f3n de la seguridad con los elementos de una base de datos es una tarea que necesita de mucho cuidado, es necesario que los asegurables presentes en la base de datos tengan los permisos requeridos y asignados adecuadamente a las entidades de seguridad.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p style=\"font-size:24px\"><strong>Niveles de Seguridad en SQL Server<\/strong><\/p>\n\n\n\n<p>La seguridad se puede administrar para el servidor y tambi\u00e9n para una base de datos espec\u00edfica. Cada nivel tiene sus elementos asegurables y sus entidades de seguridad.<\/p>\n\n\n\n<p><strong>Los niveles de seguridad son:<\/strong><\/p>\n\n\n\n<p><strong>1. A nivel de Servidor<\/strong><\/p>\n\n\n\n<p>En el nivel de servidor podemos administrar las siguientes entidades de seguridad<\/p>\n\n\n\n<p>* Funciones de servidor<br>* Inicios de sesi\u00f3n<\/p>\n\n\n\n<p><strong>2. A nivel de Base de datos<\/strong><\/p>\n\n\n\n<p>En el nivel de base de datos podemos trabajar con las siguientes entidades de seguridad<\/p>\n\n\n\n<p>* Funciones de base de datos<br>* Usuarios de base de datos<br>* Funciones de aplicaci\u00f3n<\/p>\n\n\n\n<p>Se recomienda la revisi\u00f3n permanente de los cambios en los permisos.<\/p>\n\n\n\n<script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-2636008503986218\" data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Seguridad a nivel de Servidor<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Funciones Fijas de servidor (Roles de Servidor)<\/strong><\/h3>\n\n\n\n<p>Permiten administrar los permisos sobre los objetos del servidor. Desde SQL Server 2012 se pueden crear nuevas funciones de servidor y asignar permisos en los asegurables a nivel de servidor.<\/p>\n\n\n\n<p><strong>Las funciones fijas de servidor o roles de servidor son:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Rol fijo de servidor<\/strong><\/td><td><strong>Descripci\u00f3n<\/strong><\/td><\/tr><tr><td>bulkadmin<\/td><td>Pueden ejecutar las opciones de copia masiva de datos usando la instrucci\u00f3n BULK INSERT.<\/td><\/tr><tr><td>diskadmin<\/td><td>El rol fijo de servidor diskadmin se usa para administrar archivos de disco.<\/td><\/tr><tr><td>dbcreator<\/td><td>Pueden crear, modificar, quitar y restaurar cualquier base de datos.<\/td><\/tr><tr><td>public<\/td><td>Cada inicio de sesi\u00f3n de SQL Server pertenece al rol de servidor public.<\/td><\/tr><tr><td>sysadmin<\/td><td>Son los administradores del servidor y pueden realizar cualquier actividad sin restricciones.<\/td><\/tr><tr><td>processadmin<\/td><td>Pueden finalizar los procesos que se ejecuten en una instancia de SQL Server.<\/td><\/tr><tr><td>serveradmin<\/td><td>Pueden cambiar las opciones de configuraci\u00f3n del servidor y apagarlo.<\/td><\/tr><tr><td>securityadmin<\/td><td>Administran los inicios de sesi\u00f3n y sus propiedades.  \u00a0 <p>Pueden administrar los permisos de los asegurables a nivel de servidor usando GRANT, DENY y REVOKE.<\/p> Pueden administrar los permisos de los asegurables a nivel de base de datos usando GRANT, DENY y REVOKE siempre que tengan acceso a una base de datos. <p>A nivel de servidor pueden \u00a0restablecer contrase\u00f1as para \u00a0los inicios de sesi\u00f3n de SQL Server.<\/p><\/td><\/tr><tr><td>setupadmin<\/td><td>Pueden agregar y quitar servidores vinculados mediante instrucciones Transact-SQL.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Cada funci\u00f3n fija de servidor tiene una relaci\u00f3n de permisos asignados&nbsp;para cada inicio de sesi\u00f3n que pertenezca a estos roles.<\/p>\n\n\n\n<p>La imagen muestra las diferentes funciones fijas de servidor y los permisos. Son 9 funciones fijas.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesServidor01-1024x588.png\" alt=\"\" class=\"wp-image-1363\" width=\"880\" height=\"505\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesServidor01-1024x588.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesServidor01-300x172.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesServidor01-768x441.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesServidor01.png 1191w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Crear Roles o funciones fijas de servidor<\/strong><\/h3>\n\n\n\n<p>Desde SQL Server 2012 es posible crear nuevos roles de servidor.<\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Instrucci\u00f3n Create server role <\/strong><\/p>\n\n\n\n<p>Permite crear un rol de servidor.<\/p>\n\n\n\n<p><strong>Sintaxis<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Create server role NombreRol [Authorization InicioSesion]<\/strong><\/h3>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejemplos<\/strong><\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Ejercicio 1<\/strong><\/p>\n\n\n\n<p><strong>Crear un rol de servidor llamado Administradores autorizado a SecurityAdmin<\/strong><br>use master<br>Create server role Administradores authorization SecurityAdmin<br>go<\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Ejercicio 2<\/strong><\/p>\n\n\n\n<p><strong>Crear un rol de servidor llamado Vendedores autorizado a GerenteVentas<\/strong><br>use master<br>Create server role Vendedores authorization GerenteVentas<br>go<\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Ejercicio 3<\/strong><\/p>\n\n\n\n<p><strong>Listar los roles de servidor<\/strong><br>select name, type_desc from sys.server_principals where type = &#8216;R&#8217;<br>go<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesServidor02.png\" alt=\"\" class=\"wp-image-1364\" width=\"861\" height=\"444\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesServidor02.png 1000w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesServidor02-300x155.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesServidor02-768x396.png 768w\" sizes=\"auto, (max-width: 861px) 100vw, 861px\" \/><\/figure><\/div>\n\n\n\n<p><strong>Para listar los roles fijos, no incluye los creados por el usuario<\/strong><br>sp_helpsrvrole<br>go<\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Ejercicio 4<\/strong><\/p>\n\n\n\n<p><strong>Crear un rol de servidor llamado Logistica autorizado a ProcessAdmin<\/strong><br><strong>El Script debe comprobar que el rol no existe.<\/strong><\/p>\n\n\n\n<p>use master<br>if not exists (select name, type_desc from sys.server_principals where type = &#8216;R&#8217; and name =&#8217;Logistica&#8217;)<br>Begin<br>Create server role Logistica authorization ProcessAdmin<br>End<br>go<\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>Modificar roles de servidor<\/strong><\/p>\n\n\n\n<p>Instrucci\u00f3n: Alter server role<br>Permite agregar o quitar miembros al rol y cambiarle de nombre.<\/p>\n\n\n\n<p>Sintaxis<\/p>\n\n\n\n<p>Alter server role NombreRol<br>ADD MEMBER InicioSesion |<br>DROP MEMBER InicioSesion |<br>WITH NAME = NuevoNombre<\/p>\n\n\n\n<p><strong>Para agregar o quitar inicios de sesi\u00f3n a un rol se pueden usar los siguientes procedimientos almacenados del sistema.<\/strong><br><strong>Para agregar<\/strong><br>sp_addsrvrolemember    InicioSesi\u00f3n, Rol<br><strong>Para quitar<\/strong><br>sp_dropsrvrolemember   InicioSesi\u00f3n,  Rol <\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejemplos de modificaci\u00f3n de roles de servidor<\/strong><\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Ejercicio 1<\/strong><\/p>\n\n\n\n<p><strong>Crear un inicio de sesi\u00f3n llamado EmpresaDBA y hacerlo miembro de Sysadmin<\/strong><\/p>\n\n\n\n<p>use master<br>Create login EmpresaDBA with password = &#8216;Unodostres&#8217;<br>go<br>Alter server role sysadmin add member EmpresaDBA<br>go<\/p>\n\n\n\n<p><strong>Para visualizar los miembros del rol Sysadmin<\/strong><br>sp_helpsrvrolemember Sysadmin<br>go<\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Ejercicio 2<\/strong><\/p>\n\n\n\n<p><strong>Cambiar el nombre del rol Vendedores por FuerzaVentas<\/strong><\/p>\n\n\n\n<p>use master<br>Alter server role Vendedores with name= FuerzaVentas<br>go<\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Ejercicio 3<\/strong><\/p>\n\n\n\n<p><strong>Quitar el inicio de sesi\u00f3n EmpresaDBA de sysadmin y hacerlo miembro de SecurityAdmin<\/strong><\/p>\n\n\n\n<p>use master<br>Alter server role sysadmin drop member EmpresaDBA<br>Alter server role SecurityAdmin add member EmpresaDBA<br>go<\/p>\n\n\n\n<script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-2636008503986218\" data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h3 class=\"wp-block-heading\">Eliminaci\u00f3n de un rol de servidor<\/h3>\n\n\n\n<p>Instrucci\u00f3n: Drop server role<br>Permite eliminar un rol creado<\/p>\n\n\n\n<p>Sintaxis:<\/p>\n\n\n\n<p>Drop server role NombreRol<\/p>\n\n\n\n<p>Nota: El rol debe estar vac\u00edo, es decir, no debe tener miembros (Logins).<\/p>\n\n\n\n<p><strong>El listado de los roles de servidor y los inicios de sesi\u00f3n de cada uno<\/strong><\/p>\n\n\n\n<p>select<br>P.name As &#8216;Rol de Servidor&#8217;,<br>R.member_principal_id As &#8216;C\u00f3digo Inicio de Sesi\u00f3n&#8217;,<br>L.name As &#8216;Nombre Inicio de Sesi\u00f3n&#8217;<br>from sys.server_principals As P<br>join sys.server_role_members As R on P.principal_id = R.role_principal_id<br>join sys.sql_logins As L on R.member_principal_id = L.principal_id<br>where P.type = &#8216;R&#8217;<br>go<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesServidor03_.png\" alt=\"\" class=\"wp-image-1368\" width=\"878\" height=\"207\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesServidor03_.png 858w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesServidor03_-300x71.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesServidor03_-768x182.png 768w\" sizes=\"auto, (max-width: 878px) 100vw, 878px\" \/><\/figure><\/div>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejemplos de eliminaci\u00f3n de roles de servidor<\/strong><\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Ejercicio 1<\/strong><\/p>\n\n\n\n<p><strong>Eliminar el rol FuerzaVentas<\/strong><br>use master<br>Drop server role FuerzaVentas<br>go<\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Ejercicio 2<\/strong><\/p>\n\n\n\n<p><strong>Eliminar el rol Gerentes<\/strong><br>use master<br>Drop server role Gerentes<br>go<\/p>\n\n\n\n<p><strong>Note que aparece el mensaje: El rol tiene miembros. Debe estar vac\u00edo antes de quitarlo.<\/strong><\/p>\n\n\n\n<p>Para ver los miembros se utiliza la siguiente instrucci\u00f3n:<\/p>\n\n\n\n<p>select<br>P.name As &#8216;Rol de Servidor&#8217;,<br>R.member_principal_id As &#8216;C\u00f3digo Inicio de Sesi\u00f3n&#8217;,<br>L.name As &#8216;Nombre Inicio de Sesi\u00f3n&#8217;<br>from sys.server_principals As P<br>join sys.server_role_members As R on P.principal_id = R.role_principal_id<br>join sys.sql_logins As L on R.member_principal_id = L.principal_id<br>where P.type = &#8216;R&#8217;<br>go<\/p>\n\n\n\n<p>El miembro que debemos eliminar es: GerenteVentas<br>Alter server role Gerentes drop member GerenteVentas<br>go<br>Drop server role Gerentes<br>go<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Server Roles en SQL Server Funciones fijas de servidor La administraci\u00f3n de la seguridad con los elementos de una base de datos es una tarea que necesita de mucho cuidado, es necesario que los asegurables presentes en la base de datos tengan los permisos requeridos y asignados adecuadamente a las entidades de seguridad.<\/p><p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=529\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1366,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,8,10],"tags":[],"class_list":["post-529","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-funcionessql","category-programacion","category-seguridad","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=529"}],"version-history":[{"count":3,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/529\/revisions"}],"predecessor-version":[{"id":2537,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/529\/revisions\/2537"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/1366"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}