En esta página se describe cómo funciona Cloud SQL con los usuarios y los roles 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 información sobre cómo crear y gestionar usuarios de Cloud SQL, consulta el artículo Crear y gestionar usuarios.
Roles y usuarios de SQL Server
Los roles de SQL Server pueden ser un solo rol o funcionar como un grupo de roles.
Un usuario es un rol que puede iniciar sesión (el rol tiene el permiso LOGIN
). Todos los roles creados por Cloud SQL tienen el permiso LOGIN
, por lo que Cloud SQL usa los términos "rol" y "usuario" indistintamente. Sin embargo, si creas un rol con cualquier herramienta de cliente compatible con SQL Server, no es necesario que el rol reciba el permiso LOGIN
.
Cloud SQL para SQL Server restringe el acceso a determinados roles de 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. Por lo tanto, no puedes iniciar sesión con un usuario que no tenga contraseña.
Superusuarios y procedimientos almacenados del sistema
Cloud SQL para SQL Server es un servicio gestionado, por lo que restringe el acceso a ciertos procedimientos almacenados y tablas del sistema que requieren privilegios avanzados. En Cloud SQL, no puedes crear ni acceder a usuarios con permisos de superusuario.
Usuarios predeterminados de SQL Server
Cuando creas una instancia de Cloud SQL para SQL Server, se crea automáticamente el sqlserver
usuario predeterminado, aunque debes definir su contraseña.
El usuario sqlserver
forma parte del rol CustomerDbRootRole
y sus permisos (privilegios) incluyen lo siguiente:
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 añadir cloudsql enable linked servers
a tu instancia si quieres usarla con servidores vinculados. Este indicador concede a tu servidor los siguientes permisos:
ALTER ANY LINKED SERVER
Conceder permisos de servidor
Cuando concedas privilegios con cualquier GRANT
comando,
debes transferir 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 roles. Todos los usuarios que crees con Cloud SQL tendrán los mismos permisos de base de datos que el inicio de sesión sqlserver
. Sin embargo, si utilizas otro proceso para crear un usuario (en lugar de crearlo con Cloud SQL), el usuario no tendrá los mismos permisos que las cuentas de administrador de cliente o el usuario sqlserver
. Por ejemplo, si usas el proceso create
login y añades el inicio de sesión al rol de servidor CustomerDbRootRole
, el usuario no tendrá los mismos permisos que las cuentas de administrador del cliente o el usuario sqlserver
. Por lo tanto, puedes usar Cloud SQL para crear un usuario si quieres que tenga los mismos permisos de base de datos que el inicio de sesión sqlserver
.
Para validar la diferencia de permisos entre dos cuentas, puede usar la siguiente función:
sys.fn_my_permissions.
Importaciones de bases de datos: permisos de propietario
Cuando importa una base de datos, el tratamiento del propietario varía de la siguiente manera, en función del tipo de propietario:
- Si ya existe un inicio de sesión que no es
sa
: Cloud SQL conserva ese propietario y crea un usuario llamadosqlserver
que se asigna al inicio de sesiónsqlserver
. Cloud SQL concede los permisosCONTROL
yALTER ANY USER
a ese usuariosqlserver
. - En el caso de los inicios de sesión desconocidos o creados por el sistema, Cloud SQL transfiere la propiedad de la base de datos al inicio de sesión
sqlserver
.
Cambiar los permisos de los usuarios
El comando ALTER ROLE se puede usar para cambiar los permisos de los usuarios. Si crea un usuario con un cliente, puede asociarlo a otro rol o proporcionarle permisos diferentes.
Solución de problemas
Error al acceder a la base de datos
Al intentar acceder a una base de datos que has creado como usuario, aparece el siguiente error:
The server principal USERNAME is not able to access the database DATABASE_NAME under the current security context.
El problema puede deberse a lo siguiente:
El usuario no es miembro de la base de datos.
Cosas que puedes probar
Conéctate a la base de datos como usuario sqlserver
y añade el nuevo usuario.
A continuación,
asigna al nuevo usuario el rol db_owner
de la base de datos. Por ejemplo:
EXEC sp_adduser 'user'; EXEC sp_addrolemember 'db_owner', 'user'
Siguientes pasos
- Configura el usuario de tu instancia.
- Crear y administrar usuarios
- Crear y gestionar bases de datos.