Acerca de los usuarios de SQL Server

En esta página, se describe cómo funciona Cloud SQL con los usuarios y las funciones de SQL Server. Los roles de SQL Server te permiten controlar el acceso y las funciones de los usuarios que acceden a una instancia de SQL Server.

Para obtener más información sobre la creación y la administración de usuarios de Cloud SQL, consulta la sección sobre cómo crear y administrar usuarios de SQL Server.

Funciones y usuarios de SQL Server

Las funciones de SQL Server pueden ser una sola función o pueden consistir en un grupo de funciones.

Un usuario es una función con la capacidad de acceder (la función tiene el permiso LOGIN). Todos los roles que crea Cloud SQL tienen el permiso LOGIN, por lo que Cloud SQL usa los términos “rol” y “usuario” de forma indistinta. Sin embargo, si creas un rol con cualquier herramienta cliente que sea compatible con SQL Server, el rol no siempre recibe el permiso LOGIN.

Cloud SQL para SQL Server restringe el acceso a ciertos roles del servidor que proporcionan privilegios avanzados. Algunos ejemplos de estos roles son DbRootRole, serveradmin, securityadmin, setupadmin, diskadmin y dbcreator.

Todos los usuarios de SQL Server deben tener una contraseña. No puedes acceder con un usuario que no tiene una contraseña.

Superusuarios y procedimientos almacenados en el sistema

Debido a que Cloud SQL para SQL Server es un servicio administrado, restringe el acceso a ciertas tablas y procedimientos del sistema que requieren privilegios avanzados. En Cloud SQL, no puedes crear ni tener acceso a usuarios con permisos de superusuario.

Usuarios predeterminados de SQL Server

Cuando creas una instancia nueva de Cloud SQL para SQL Server, el usuario sqlserver predeterminado se crea por ti, pero debes establecer su contraseña.

El usuario sqlserver es parte de la función CustomerDbRootRole y, dentro de sus permisos (privilegios), se incluyen los siguientes:

  • ALTER ANY CONNECTION
  • ALTER ANY LOGIN
  • ALTER ANY SERVER ROLE
  • ALTER SERVER STATE
  • ALTER TRACE
  • CONNECT SQL
  • CREATE ANY DATABASE
  • CREATE SERVER ROLE
  • VIEW ANY DATABASE
  • VIEW ANY DEFINITION
  • VIEW SERVER STATE

También puedes agregar cloudsql enable linked servers a tu instancia si deseas usarla con servidores vinculados. Esta marca otorga el siguiente permiso a tu servidor:

  • ALTER ANY LINKED SERVER

Otorga permisos de servidor

Cuando otorgas privilegios con cualquier comando GRANT, debes pasar CustomerDbRootRole como, por ejemplo, el valor de grantor_principal.

El siguiente ejemplo de GRANT ALTER ANY LOGIN es válido:

GRANT ALTER ANY LOGIN TO [Account] AS CustomerDbRootRole

El siguiente ejemplo de GRANT ALTER ANY LOGIN no es válido:

GRANT ALTER ANY LOGIN TO [Account]

Otros usuarios de SQL Server

Puedes crear otros usuarios de SQL Server o funciones. Todos los usuarios que creas mediante Cloud SQL reciben los mismos permisos de base de datos que el acceso sqlserver. Sin embargo, si usas un proceso diferente para crear un usuario (en lugar de crearlo mediante Cloud SQL), el usuario no tendrá los mismos permisos que las cuentas de administrador del cliente o el usuario sqlserver. Por ejemplo, si usas el proceso de creación de accesos y agregas el acceso al rol de servidor CustomerDbRootRole, el usuario no tendrá los mismos permisos que tienen las cuentas de administrador del cliente o el usuario sqlserver. Por lo tanto, puedes usar Cloud SQL para crear un usuario si deseas que tenga los mismos permisos de base de datos que el acceso sqlserver. Para validar la diferencia en los permisos entre dos cuentas, puedes usar la siguiente función: sys.fn_my_permissions.

Importaciones de bases de datos: permisos de propietario

Cuando importas una base de datos, el tratamiento del propietario varía de la siguiente manera, según el tipo de propietario:

  • Para un acceso existente que no es sa: Cloud SQL mantiene ese propietario y crea un usuario llamado sqlserver que se asigna al acceso sqlserver. Cloud SQL otorga los permisos CONTROL y ALTER ANY USER a ese usuario sqlserver.
  • Para accesos desconocidos o accesos que creó el sistema: Cloud SQL transfiere la propiedad de la base de datos al acceso sqlserver.

Cambia los permisos de los usuarios

El comando ALTER ROLE está disponible para cambiar los permisos de los usuarios. Si creas un usuario nuevo con un cliente, puedes asociarlo con un rol diferente o proporcionar permisos diferentes.

Soluciona problemas

Se produjo un error mientras se intentaba acceder a la base de datos

Cuando intentes acceder a una base de datos que creaste, como un usuario que creaste, verás el siguiente error:

The server principal USERNAME is not able to access the
database DATABASE_NAME under the current security context.

Posible problema

El usuario no es miembro de la base de datos.

Solución

Conéctate a la base de datos como el usuario sqlserver y agrega el usuario nuevo. Luego, otorga al usuario nuevo el rol db_owner para la base de datos. Por ejemplo:

EXEC sp_adduser 'user';
EXEC sp_addrolemember 'db_owner', 'user'

¿Qué sigue?