Autorización del acceso de base de datos a SQL Database, Instancia administrada de SQL y Azure Synapse AnalyticsAuthorize database access to SQL Database, SQL Managed Instance, and Azure Synapse Analytics

SE APLICA A: síAzure SQL Database síAzure SQL Managed Instancesí Azure Synapse Analytics (SQL DW) APPLIES TO: yesAzure SQL Database yesAzure SQL Managed Instance yes Azure Synapse Analytics (SQL DW)

En este artículo, aprenderá lo siguiente:In this article, you learn about:

  • Las opciones para configurar Azure SQL Database, Instancia administrada de SQL y Azure Synapse Analytics (antes, Azure SQL Data Warehouse) para permitir a los usuarios realizar tareas administrativas y acceder a los datos almacenados en esas bases de datos.Options for configuring Azure SQL Database, Azure SQL Managed Instance, and Azure Synapse Analytics (formerly Azure SQL Data Warehouse) to enable users to perform administrative tasks and to access the data stored in these databases.
  • El acceso y autorización después de crear inicialmente un servidor.The access and authorization configuration after initially creating a new server.
  • Cómo agregar inicios de sesión y cuentas de usuario a la base de datos maestra y a las cuentas de usuario y, tras ello, conceder permisos administrativos a esas cuentas.How to add logins and user accounts in the master database and user accounts and then grant these accounts administrative permissions.
  • Cómo agregar cuentas de usuario a las bases de datos de usuario, estén asociadas a inicios de sesión o sean cuentas de usuario independientes.How to add user accounts in user databases, either associated with logins or as contained user accounts.
  • Configurar cuentas de usuario con permisos en bases de datos de usuario usando roles de base de datos y permisos explícitos.Configure user accounts with permissions in user databases by using database roles and explicit permissions.

Importante

A las bases de datos de Azure SQL Database, Instancia administrada de SQL y Azure Synapse se les conocen colectivamente en el resto de este artículo como "bases de datos", y el servidor hace referencia al servidor que administra las bases de datos de Azure SQL Database y Azure Synapse.Databases in Azure SQL Database, Azure SQL Managed Instance, and Azure Synapse are referred to collectively in the remainder of this article as databases, and the server is referring to the server that manages databases for Azure SQL Database and Azure Synapse.

Autenticación y autorizaciónAuthentication and authorization

Por autenticación se entiende el proceso según el cual se demuestra que el usuario es quien dice ser.Authentication is the process of proving the user is who they claim to be. Un usuario se conecta a una base de datos a través de una cuenta de usuario.A user connects to a database using a user account. Cuando un usuario intenta conectarse a una base de datos, proporciona una cuenta de usuario y la información de autenticación.When a user attempts to connect to a database, they provide a user account and authentication information. El usuario se autentica con uno de los dos métodos de autenticación siguientes:The user is authenticated using one of the following two authentication methods:

  • Autenticación SQL.SQL authentication.

    Con este método de autenticación, el usuario envía un nombre de cuenta de usuario y una contraseña asociada para establecer una conexión.With this authentication method, the user submits a user account name and associated password to establish a connection. Esta contraseña se almacena en la base de datos maestra de cuentas de usuario vinculadas a un inicio de sesión, o bien en la base de datos que contiene las cuentas de usuario no vinculadas a un inicio de sesión.This password is stored in the master database for user accounts linked to a login or stored in the database containing the user accounts not linked to a login.

  • Autenticación con Azure Active DirectoryAzure Active Directory Authentication

    Con este método de autenticación, el usuario envía un nombre de cuenta de usuario y solicita que el servicio use la información de credenciales que hay almacenada en Azure Active Directory (Azure AD).With this authentication method, the user submits a user account name and requests that the service use the credential information stored in Azure Active Directory (Azure AD).

Inicios de sesión y usuarios: una cuenta de usuario en una base de datos puede estar asociada a un inicio de sesión que está almacenado en la base de datos maestra, o bien puede ser un nombre de usuario que está almacenado en una base de datos individual.Logins and users: A user account in a database can be associated with a login that is stored in the master database or can be a user name that is stored in an individual database.

  • Un inicio de sesión es una cuenta individual en la base de datos maestra que se puede vincular a una cuenta de usuario en una o más bases de datos.A login is an individual account in the master database, to which a user account in one or more databases can be linked. Con un inicio de sesión, la información de credenciales de la cuenta de usuario se almacena en el propio inicio de sesión.With a login, the credential information for the user account is stored with the login.
  • Una cuenta de usuario es una cuenta individual en una base de datos que puede estar vinculada a un inicio de sesión, si bien esto no es obligatorio.A user account is an individual account in any database that may be, but does not have to be, linked to a login. En el caso de una cuenta de usuario que no está vinculada a un inicio de sesión, la información de las credenciales se almacena con la cuenta de usuario.With a user account that is not linked to a login, the credential information is stored with the user account.

La autorización para acceder a los datos y realizar diversas acciones se administran con roles de base de datos y permisos explícitos.Authorization to access data and perform various actions are managed using database roles and explicit permissions. El término autorización hace referencia a los permisos asignados a un usuario, y determina qué puede hacer ese usuario.Authorization refers to the permissions assigned to a user, and determines what that user is allowed to do. La autorización se controla por medio de las pertenencias a roles y los permisos de nivel de objeto de la base de datos de cada cuenta de usuario.Authorization is controlled by your user account's database role memberships and object-level permissions. Como procedimiento recomendado, debe conceder a los usuarios los privilegios mínimos necesarios.As a best practice, you should grant users the least privileges necessary.

Inicios de sesión y cuentas de usuario existentes después de crear una base de datosExisting logins and user accounts after creating a new database

Al crear la primera implementación de Azure SQL, hay que especificar un inicio de sesión de administrador y una contraseña asociada a ese inicio de sesión.When you first deploy Azure SQL, you specify an admin login and an associated password for that login. Esta cuenta administrativa se denomina administrador del servidor. Durante la implementación, se configuran los siguientes inicios de sesión y usuarios en las bases de datos maestra y de usuarios:This administrative account is called Server admin. The following configuration of logins and users in the master and user databases occurs during deployment:

  • Se crea un inicio de sesión de SQL con privilegios administrativos usando el nombre de inicio de sesión especificado.A SQL login with administrative privileges is created using the login name you specified. Un inicio de sesión es una cuenta de usuario individual para iniciar sesión en SQL Database, Instancia administrada de SQL y Azure Synapse.A login is an individual user account for logging in to SQL Database, SQL Managed Instance, and Azure Synapse.
  • A este inicio de sesión se le conceden permisos administrativos completos en todas las bases de datos, como una entidad de seguridad de nivel de servidor.This login is granted full administrative permissions on all databases as a server-level principal. El inicio de sesión tiene todos los permisos disponibles y no puede ser limitado.The login has all available permissions and can't be limited. En una instancia administrada de SQL, este inicio de sesión se agrega al rol fijo de servidor sysadmin (este rol no existe en Azure SQL Database).In a SQL Managed Instance, this login is added to the sysadmin fixed server role (this role does not exist in Azure SQL Database).
  • Se crea una cuenta de usuario denominada dbo para este inicio de sesión en cada base de datos de usuarios.A user account called dbo is created for this login in each user database. El usuario dbo posee todos los permisos de base de datos en la base de datos y tiene asignado el rol fijo de base de datos db_owner.The dbo user has all database permissions in the database and is mapped to the db_owner fixed database role. Más adelante en este artículo hablaremos de otros roles fijos de base de datos.Additional fixed database roles are discussed later in this article.

Para saber cuáles son las cuentas de administrador de una base de datos, abra Azure Portal y vaya a la pestaña Propiedades de su servidor o instancia administrada.To identify the administrator accounts for a database, open the Azure portal, and navigate to the Properties tab of your server or managed instance.

Administradores de SQL Server

Administradores de SQL Server

Importante

Una vez creado, el nombre de inicio de sesión de administrador no se puede cambiar.The admin login name can't be changed after it has been created. Para restablecer la contraseña del administrador del servidor, vaya a Azure Portal, haga clic en Servidores SQL Server, seleccione el servidor en la lista y luego haga clic en Restablecer contraseña.To reset the password for the server admin, go to the Azure portal, click SQL Servers, select the server from the list, and then click Reset Password. Para restablecer la contraseña de la instancia administrada de SQL, vaya a Azure Portal, haga clic en la instancia y, después, en Restablecer contraseña.To reset the password for the SQL Managed Instance, go to the Azure portal, click the instance, and click Reset password. También puede usar PowerShell o la CLI de Azure.You can also use PowerShell or the Azure CLI.

Creación de inicios de sesión y usuarios adicionales con permisos administrativosCreate additional logins and users having administrative permissions

En este momento, el servidor o la instancia administrada está configurada para el acceso a través de un único inicio de sesión de SQL y una cuenta de usuario.At this point, your server or managed instance is only configured for access using a single SQL login and user account. Si quiere crear más inicios de sesión con permisos administrativos completos o parciales, dispone de las siguientes opciones (en función del modo de implementación):To create additional logins with full or partial administrative permissions, you have the following options (depending on your deployment mode):

  • Crear una cuenta de administrador de Azure Active Directory que tenga permisos administrativos completosCreate an Azure Active Directory administrator account with full administrative permissions

    Habilite la autenticación de Azure Active Directory y cree un inicio de sesión de administrador de Azure AD.Enable Azure Active Directory authentication and create an Azure AD administrator login. Una cuenta de Azure Active Directory se puede configurar como administrador de la implementación de SQL de Azure con permisos administrativos completos.One Azure Active Directory account can be configured as an administrator of the Azure SQL deployment with full administrative permissions. Puede tratarse de una cuenta individual o una cuenta de un grupo de seguridad.This account can be either an individual or security group account. Si quiere usar cuentas de Azure AD para conectarse a SQL Database, Instancia administrada de SQL o Azure Synapse, debe haber un administrador de Azure AD configurado.An Azure AD administrator must be configured if you want to use Azure AD accounts to connect to SQL Database, SQL Managed Instance, or Azure Synapse. Para obtener más información sobre cómo habilitar la autenticación de Azure AD de todos los tipos de implementación de SQL de Azure, vea los siguientes artículos:For detailed information on enabling Azure AD authentication for all Azure SQL deployment types, see the following articles:

  • En Instancia administrada de SQL, cree inicios de sesión de SQL con permisos administrativos completos.In SQL Managed Instance, create SQL logins with full administrative permissions

  • En SQL Database, cree inicios de sesión de SQL con permisos administrativos limitados.In SQL Database, create SQL logins with limited administrative permissions

    • Cree un inicio de sesión de SQL adicional en la base de datos maestra.Create an additional SQL login in the master database.
    • Cree una cuenta de usuario en la base de datos maestra asociada a ese nuevo inicio de sesión.Create a user account in the master database associated with this new login.
    • Agregue la cuenta de usuario al rol dbmanager, al rol loginmanager o a ambos en la base de datos master mediante la instrucción ALTER ROLE (en Azure Synapse, use la instrucción sp_addrolemember).Add the user account to the dbmanager, the loginmanager role, or both in the master database using the ALTER ROLE statement (for Azure Synapse, use the sp_addrolemember statement).

    Nota

    Los roles dbmanager y loginmanager no pertenecen a las implementaciones de Instancia administrada de SQL.dbmanager and loginmanager roles do not pertain to SQL Managed Instance deployments.

    Los miembros de estos roles especiales de base de datos maestra de Azure SQL Database confieren autoridad a los usuarios para crear y administrar bases de datos, o para crear y administrar inicios de sesión.Members of these special master database roles for Azure SQL Database have authority to create and manage databases or to create and manage logins. En el caso de las bases de datos creadas por un usuario que es miembro del rol dbmanager, el miembro se asigna al rol fijo de base de datos db_owner, y puede iniciar sesión en la base de datos y administrarla usando la cuenta de usuario dbo.In databases created by a user that is a member of the dbmanager role, the member is mapped to the db_owner fixed database role and can log into and manage that database using the dbo user account. Estos roles no tienen permisos explícitos fuera de la base de datos maestra.These roles have no explicit permissions outside of the master database.

    Importante

    No se pueden crear inicios de sesión de SQL adicionales con permisos administrativos completos en SQL Database.You can't create an additional SQL login with full administrative permissions in SQL Database.

Creación de cuentas para usuarios que no son administradoresCreate accounts for non-administrator users

Se pueden crear cuentas para los usuarios no administrativos recurriendo a uno de estos dos métodos:You can create accounts for non-administrative users using one of two methods:

  • Crear un inicio de sesiónCreate a login

    Cree un inicio de sesión de SQL en la base de datos maestra.Create a SQL login in the master database. Luego, cree una cuenta de usuario en cada base de datos a la que el usuario necesite tener acceso y asocie la cuenta de usuario a ese inicio de sesión.Then create a user account in each database to which that user needs access and associate the user account with that login. Este método es preferible cuando el usuario debe acceder a varias bases de datos y se quieren mantener todas las contraseñas sincronizadas,This approach is preferred when the user must access multiple databases and you wish to keep the passwords synchronized. pero plantea algunas dificultades cuando se usa con la replicación geográfica, ya que hay que crear el inicio de sesión tanto en el servidor principal como en los secundarios.However, this approach has complexities when used with geo-replication as the login must be created on both the primary server and the secondary server(s). Para más información, vea Configuración y administración de la seguridad de Azure SQL Database para la restauración geográfica o la conmutación por error.For more information, see Configure and manage Azure SQL Database security for geo-restore or failover.

  • Crear una cuenta de usuarioCreate a user account

    Cree una cuenta de usuario en la base de datos a la que un usuario necesite tener acceso (esto se conoce también como usuario independiente).Create a user account in the database to which a user needs access (also called a contained user).

    • Con SQL Database, siempre se puede crear este tipo de cuentas de usuario.With SQL Database, you can always create this type of user account.
    • Con una instancia administrada de SQL que admite entidades de seguridad de Azure AD Server, se pueden crear cuentas de usuario para autenticarse en esa instancia administrada de SQL sin necesidad de que los usuarios de la base de datos deban crearse como usuarios de base de datos independientes.With SQL Managed Instance supporting Azure AD server principals, you can create user accounts to authenticate to the SQL Managed Instance without requiring database users to be created as a contained database user.

    Con este método, la información de autenticación del usuario se almacena en cada base de datos y se replica automáticamente en las bases de datos con replicación geográfica,With this approach, the user authentication information is stored in each database, and replicated to geo-replicated databases automatically. pero si la misma cuenta existe en varias bases de datos y se usa la autenticación de SQL de Azure, deberá sincronizar las contraseñas manualmente.However, if the same account exists in multiple databases and you are using Azure SQL Authentication, you must keep the passwords synchronized manually. Además, si un usuario tiene una cuenta en varias bases de datos con distintas contraseñas, recordarlas puede suponer un problema.Additionally, if a user has an account in different databases with different passwords, remembering those passwords can become a problem.

Importante

Para crear usuarios independientes asignados a identidades de Azure AD, debe iniciar sesión con una cuenta de Azure AD que sea administrador en la base de datos de SQL Database.To create contained users mapped to Azure AD identities, you must be logged in using an Azure AD account that is an administrator in the database in Azure SQL Database. En una instancia administrada de SQL, un inicio de sesión de SQL con permisos sysadmin también puede crear un usuario o inicio de sesión de Azure AD.In SQL Managed Instance, a SQL login with sysadmin permissions can also create an Azure AD login or user.

Para obtener ejemplos que reflejan cómo crear inicios de sesión y usuarios, vea:For examples showing how to create logins and users, see:

Sugerencia

Para ver un tutorial de seguridad que incluye la creación de usuarios en Azure SQL Database, consulte Tutorial: Seguridad de Azure SQL Database.For a security tutorial that includes creating users in Azure SQL Database, see Tutorial: Secure Azure SQL Database.

Uso de roles de base de datos fijos y personalizadosUsing fixed and custom database roles

Después de crear una cuenta de usuario en una base de datos, ya sea basada en un inicio de sesión o para un usuario independiente, puede autorizar a ese usuario para realizar diversas acciones y acceder a los datos de una base de datos determinada.After creating a user account in a database, either based on a login or as a contained user, you can authorize that user to perform various actions and to access data in a particular database. Se pueden usar los siguientes métodos para autorizar el acceso:You can use the following methods to authorize access:

  • Roles fijos de base de datosFixed database roles

    Agregue la cuenta de usuario a un rol fijo de base de datos.Add the user account to a fixed database role. Existen nueve roles fijos de base de datos, cada uno con un conjunto definido de permisos.There are 9 fixed database roles, each with a defined set of permissions. Los roles fijos de base de datos más comunes son: db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter y db_denydatareader.The most common fixed database roles are: db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter, and db_denydatareader. db_owner se usa habitualmente para conceder permiso completo solo a algunos usuarios.db_owner is commonly used to grant full permission to only a few users. Los restantes roles fijos de base de datos son útiles para obtener rápidamente una base de datos simple en la fase de desarrollo, pero no se recomiendan para la mayoría de las bases de datos de producción.The other fixed database roles are useful for getting a simple database in development quickly, but are not recommended for most production databases. Por ejemplo, el rol fijo de base de datos db_datareader concede acceso de lectura a todas las tablas de la base de datos, lo que es más de lo estrictamente necesario.For example, the db_datareader fixed database role grants read access to every table in the database, which is more than is strictly necessary.

  • Rol de base de datos personalizadoCustom database role

    Cree un rol de base de datos personalizado usando la instrucción CREATE ROLE.Create a custom database role using the CREATE ROLE statement. Un rol personalizado permite crear sus propios roles de base de datos definidos por el usuario y otorgar minuciosamente a cada rol los permisos mínimos necesarios para la necesidad empresarial.A custom role enables you to create your own user-defined database roles and carefully grant each role the least permissions necessary for the business need. Después, puede agregar usuarios a ese rol personalizado.You can then add users to the custom role. Cuando un usuario es miembro de varios roles, realiza la agregación de los permisos de todos ellos.When a user is a member of multiple roles, they aggregate the permissions of them all.

  • Conceder permisos directamenteGrant permissions directly

    Conceda permisos directamente a la cuenta de usuario.Grant the user account permissions directly. En SQL Database, hay más de 100 permisos que pueden conceder o denegar individualmente.There are over 100 permissions that can be individually granted or denied in SQL Database. Muchos de estos permisos están anidados.Many of these permissions are nested. Por ejemplo, el permiso UPDATE de un esquema incluye el permiso UPDATE en cada tabla dentro de dicho esquema.For example, the UPDATE permission on a schema includes the UPDATE permission on each table within that schema. Al igual que en la mayoría de los sistemas de permisos, la denegación de un permiso anula su concesión.As in most permission systems, the denial of a permission overrides a grant. Dada la naturaleza anidada y el número de permisos, es preciso realizar un estudio meticuloso para diseñar un sistema de permisos apropiado para proteger adecuadamente la base de datos.Because of the nested nature and the number of permissions, it can take careful study to design an appropriate permission system to properly protect your database. Empiece con la lista de permisos de Permisos (motor de base de datos) y revise el gráfico a tamaño de póster de los permisos.Start with the list of permissions at Permissions (Database Engine) and review the poster size graphic of the permissions.

Uso de gruposUsing groups

En una administración eficaz del acceso, en vez de los permisos asignados a usuarios individuales, se usan los permisos asignados a grupos de seguridad de Active Directory, así como roles fijos o personalizados.Efficient access management uses permissions assigned to Active Directory security groups and fixed or custom roles instead of to individual users.

  • Si se usa la autenticación de Azure Active Directory, incluya a los usuarios de Azure Active Directory en un grupo de seguridad de Azure Active Directory.When using Azure Active Directory authentication, put Azure Active Directory users into an Azure Active Directory security group. Cree un usuario de base de datos independiente para el grupo.Create a contained database user for the group. Agregue uno o varios usuarios de base de datos como miembros a un rol de base de datos integrado o personalizado con permisos específicos adecuados para ese grupo de usuarios.Add one or more database users as a member to custom or builtin database roles with the specific permissions appropriate to that group of users.

  • Si se usa la autenticación de SQL, cree usuarios de base de datos independientes en la base de datos.When using SQL authentication, create contained database users in the database. Asigne a uno o varios usuarios de base de datos un rol de base de datos personalizado con permisos específicos adecuados para ese grupo de usuarios.Place one or more database users into a custom database role with specific permissions appropriate to that group of users.

    Nota

    También se pueden usar grupos para usuarios de bases de datos no independientes.You can also use groups for non-contained database users.

Debe familiarizarse con las siguientes características que pueden utilizarse para limitar o elevar los permisos:You should familiarize yourself with the following features that can be used to limit or elevate permissions:

Pasos siguientesNext steps

Para obtener información general sobre todas las características de seguridad de Azure SQL Database e Instancia administrada de SQL, vea Información general sobre seguridad.For an overview of all Azure SQL Database and SQL Managed Instance security features, see Security overview.