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 una herramienta cliente que sea compatible con SQL Server, ese 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 según el tipo de propietario:
- Para un acceso existente que no es
sa
: Cloud SQL mantiene ese propietario y crea un usuario llamadosqlserver
que se asigna al accesosqlserver
. Cloud SQL otorga los permisosCONTROL
yALTER ANY USER
a ese usuariosqlserver
. - 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'