Usuários de bancos de dados independentes - Tornando seu banco de dados portátilContained Database Users - Making Your Database Portable

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Use usuários de banco de dados independentes para autenticar conexões SQL ServerSQL Server e Banco de Dados SQLSQL Database no nível do banco de dados.Use contained database users to authenticate SQL ServerSQL Server and Banco de Dados SQLSQL Database connections at the database level. Um banco de dados independente é um banco de dados isolado de outros bancos de dados e da instância do SQL ServerSQL Server/ Banco de Dados SQLSQL Database (e o banco de dados mestre) que hospeda o banco de dados.A contained database is a database that is isolated from other databases and from the instance of SQL ServerSQL Server/ Banco de Dados SQLSQL Database (and the master database) that hosts the database. SQL ServerSQL Server dá suporte a usuários de bancos de dados independentes para autenticação do SQL ServerSQL Server e Windows.supports contained database users for both Windows and SQL ServerSQL Server authentication. Ao usar Banco de Dados SQLSQL Database, combine usuários do banco de dados com regras de firewall de nível de banco de dados.When using Banco de Dados SQLSQL Database, combine contained database users with database level firewall rules. Este tópico revisa as diferenças e os benefícios de usar o modelo de banco de dados independente em comparação com o modelo de logon/usuário tradicional e Windows ou as regras de firewall em nível de servidor.This topic reviews the differences and benefits of using the contained database model compared to traditional login/user model and Windows or server-level firewall rules. Cenários específicos, lógica de negócios do aplicativo ou a capacidade de gerenciamento ainda podem exigir o uso do modelo tradicional de logon/usuário e regras de firewall em nível de servidor.Specific scenarios, manageability or application business logic may still require use of traditional login/user model and server-level firewall rules.

Observação

Conforme MicrosoftMicrosoft causa a evolução do serviço Banco de Dados SQLSQL Database e move-o para maiores SLAs garantidos, você talvez precise alternar para o modelo de usuário de banco de dados independente e regras de firewall no escopo do banco de dados para obter o SLA de disponibilidade superior, e taxas mais altas de logon máximo para um determinado banco de dados.As MicrosoftMicrosoft evolves the Banco de Dados SQLSQL Database service and moves towards higher guaranteed SLAs you may be required to switch to the contained database user model and database-scoped firewall rules to attain the higher availability SLA and higher max login rates for a given database. MicrosoftMicrosoft Incentivamos você a considerar essas alterações hoje mesmo.encourage you to consider such changes today.

Modelo de usuário e logon tradicionalTraditional Login and User Model

No modelo de conexão tradicional, usuários do Windows ou membros de grupos do Windows se conectem ao Mecanismo de Banco de DadosDatabase Engine fornecendo credenciais de usuário ou grupo autenticadas pelo Windows.In the traditional connection model, Windows users or members of Windows groups connect to the Mecanismo de Banco de DadosDatabase Engine by providing user or group credentials authenticated by Windows. Ou você pode fornecer um nome e uma senha e se conectar usando a autenticação do SQL ServerSQL Server .Or you can provide both a name and password and connects by using SQL ServerSQL Server authentication. Em ambos os casos, o banco de dados mestre deve ter um logon que corresponde às credenciais de conexão.In both cases, the master database must have a login that matches the connecting credentials. Depois que o Mecanismo de Banco de DadosDatabase Engine confirmar as credenciais de autenticação do Windows ou autenticar as credenciais de autenticação do SQL ServerSQL Server , a conexão normalmente tenta se conectar a um banco de dados do usuário.After the Mecanismo de Banco de DadosDatabase Engine confirms the Windows authentication credentials or authenticates the SQL ServerSQL Server authentication credentials, the connection typically attempts to connect to a user database. Para se conectar a um banco de dados do usuário, o logon deve ser capaz de ser mapeado para (ou seja, associado) um usuário de banco de dados no banco de dados do usuário.To connect to a user database, the login must be able to be mapped to (that is, associated with) a database user in the user database. A cadeia de conexão também pode especificar a conexão com um banco de dados específico que é opcional em SQL ServerSQL Server mas obrigatório em Banco de Dados SQLSQL Database.The connection string may also specify connecting to a specific database which is optional in SQL ServerSQL Server but required in Banco de Dados SQLSQL Database.

A entidade de segurança importante é que o logon (no banco de dados mestre) e o usuário (no banco de dados do usuário) devem existir e estar relacionados entre si.The important principal is that both the login (in the master database) and the user (in the user database) must exist and be related to each other. Isso significa que a conexão com o banco de dados do usuário tem uma dependência no momento do logon no banco de dados mestre, e isso limita a capacidade do banco de dados de ser movido para um host SQL ServerSQL Server diferente ou servidor Banco de Dados SQL do AzureAzure SQL Database .This means that the connection to the user database has a dependency upon the login in the master database, and this limits the ability of the database to be moved to a different hosting SQL ServerSQL Server or Banco de Dados SQL do AzureAzure SQL Database server. E se, por algum motivo, uma conexão com o banco de dados mestre não estiver disponível (por exemplo, um failover estiver em andamento), o tempo geral de conexão aumenta ou a conexão pode atingir o tempo limite. Consequentemente, isso pode reduzir escalabilidade da conexão.And if, for any reason, a connection to the master database is not available (for example, a failover is in progress), the overall connection time will be increased or connection might time out. Consequently this may reduce connection scalability.

Modelo de usuário de banco de dados independenteContained Database User Model

O logon no banco de dados mestre não está presente no modelo de usuário de banco de dados independente.In the contained database user model, the login in the master database is not present. Em vez disso, o processo de autenticação ocorre no banco de dados do usuário e o usuário no banco de dados não tem um logon associado no banco de dados mestre.Instead, the authentication process occurs at the user database, and the database user in the user database does not have an associated login in the master database. O modelo de usuário de banco de dados independente dá suporte à autenticação do Windows e à autenticação SQL ServerSQL Server (e pode ser usada no SQL ServerSQL Server e no Banco de Dados SQLSQL Database).The contained database user model supports both Windows authentication and SQL ServerSQL Server authentication, and can be used in both SQL ServerSQL Server and Banco de Dados SQLSQL Database. Para se conectar como um usuário de banco de dados independente, a cadeia de conexão sempre deve conter um parâmetro para o banco de dados do usuário para que o Mecanismo de Banco de DadosDatabase Engine saiba qual banco de dados é responsável por gerenciar o processo de autenticação.To connect as a contained database user, the connection string must always contain a parameter for the user database so that the Mecanismo de Banco de DadosDatabase Engine knows which database is responsible for managing the authentication process. A atividade do usuário de banco de dados independente está limitada ao banco de dados responsável pela autenticação. Portanto, ao se conectar como um usuário de banco de dados independente, a conta de usuário do banco de dados deve ser criada independentemente em cada banco de dados de que o usuário precisará.The activity of the contained database user is limited to the authenticating database, so when connecting as a contained database user, the database user account must be independently created in each database that the user will need. Para alterar os bancos de dados, os usuários Banco de Dados SQLSQL Database devem criar uma nova conexão.To change databases, Banco de Dados SQLSQL Database users must create a new connection. Os usuários de bancos de dados independentes no SQL ServerSQL Server poderão alterar bancos de dados se um usuário idêntico estiver presente em outro banco de dados.Contained database users in SQL ServerSQL Server can change databases if an identical user is present in another database.

Azure: o Banco de Dados SQLSQL Database e o SQL Data WarehouseSQL Data Warehouse dão suporte a identidades do Azure Active Directory como usuários de banco de dados independente.Azure: Banco de Dados SQLSQL Database and SQL Data WarehouseSQL Data Warehouse support Azure Active Directory identities as contained database users. Banco de Dados SQLSQL Database dá suporte a usuários de bancos de dados independentes por meio da autenticação do SQL ServerSQL Server , ao contrário do SQL Data WarehouseSQL Data Warehouse .supports contained database users using SQL ServerSQL Server authentication, but SQL Data WarehouseSQL Data Warehouse does not. Para saber mais, confira Connecting to SQL Database By Using Azure Active Directory Authentication (Conectando-se ao Banco de Dados SQL usando a Autenticação do Azure Active Directory).For more information, see Connecting to SQL Database By Using Azure Active Directory Authentication. Ao usar a autenticação do Azure Active Directory, pode-se estabelecer conexões do SSMS por meio da Autenticação Universal do Active Directory.When using Azure Active Directory authentication, connections from SSMS can be made using Active Directory Universal Authentication. Os administradores podem configurar a Autenticação Universal para exigir a Autenticação Multifator, que verifica a identidade usando uma chamada telefônica, mensagem de texto, cartão inteligente com PIN ou notificação de aplicativo móvel.Administrators can configure Universal Authentication to require Multi-Factor Authentication, which verifies identity by using a phone call, text message, smart card with pin, or mobile app notification. Para saber mais, confira Suporte do SSMS para MFA do Azure AD com o Banco de Dados SQL e o SQL Data Warehouse.For more information, see SSMS support for Azure AD MFA with SQL Database and SQL Data Warehouse.

Para o Banco de Dados SQLSQL Database e SQL Data WarehouseSQL Data Warehouse, como o nome de banco de dados sempre é obrigatório na cadeia de conexão, nenhuma alteração é necessária à cadeia de conexão ao mudar do modelo tradicional para o modelo de usuário de banco de dados independente.For Banco de Dados SQLSQL Database and SQL Data WarehouseSQL Data Warehouse, since the database name is always required in the connection string, no changes are required to the connection string when switching from the traditional model to the contained database user model. Para conexões do SQL ServerSQL Server , o nome do banco de dados deve ser adicionado à cadeia de conexão se não ainda estiver presente.For SQL ServerSQL Server connections, the name of the database must be added to the connection string, if it is not already present.

Importante

Ao usar o modelo tradicional, as funções de nível de servidor e permissões de nível de servidor podem limitar o acesso a todos os bancos de dados.When using the traditional model, the server level roles and server level permissions can limit access to all databases. Ao usar o modelo de banco de dados independente, os proprietários e os usuários do banco de dados a permissão ALTER ANY USER podem conceder acesso ao banco de dados.When using the contained database model, database owners and database users with the ALTER ANY USER permission can grant access to the database. Isso reduz o controle de acesso dos logons do servidor com privilégios altos e expande o controle de acesso para incluir os usuários do banco de dados com privilégios altos.This reduces the access control of high privileged server logins and expands the access control to include high privileged database users.

FirewallsFirewalls

SQL ServerSQL Server

Regras de firewall do Windows se aplicam a todas as conexões e têm os mesmos efeitos sobre logons (conexões de modelo tradicional) e usuários de bancos de dados independentes.Windows firewall rules apply to all connections and have the same effects on logins (traditional model connections) and contained database users. Para obter mais informações sobre o firewall do Windows, veja Configurar um Firewall do Windows para acesso ao Mecanismo de Banco de Dados.For more information about the Windows firewall, see Configure a Windows Firewall for Database Engine Access.

Banco de Dados SQLSQL Database FirewallsFirewalls

Banco de Dados SQLSQL Database permite regras de firewall separadas para conexões (logons) em nível de servidor e para conexões de nível de banco de dados (usuários de bancos de dados independentes).allows separate firewall rules for server level connections (logins) and for database level connections (contained database users). Ao se conectar a um banco de dados do usuário, primeiramente as regras de firewall do banco de dados são verificadas.When connecting to a user database, first database firewall rules are checked. Se não houver nenhuma regra que permita o acesso ao banco de dados, as regras de firewall em nível de servidor serão verificadas, o que requer acesso ao banco de dados mestre do servidor do Banco de Dados SQL.If there is no rule that allows access to the database, the server level firewall rules are checked, which requires access to the SQL Database server master database. Regras de firewall em nível de banco de dados combinadas a usuários de banco de dados independente podem eliminar a necessidade de acessar o banco de dados mestre do servidor durante a conexão, resultando assim em uma melhor escalabilidade de conexão.Database level firewall rules combined with contained database users can eliminate necessity to access master database of the server during connection providing improved connection scalability.

Para obter mais informações sobre as regras de firewall do Banco de Dados SQLSQL Database , veja os seguintes tópicos:For more information about Banco de Dados SQLSQL Database firewall rules, see the following topics:

Diferenças de sintaxeSyntax Differences

Modelo tradicionalTraditional model Modelo de usuário de banco de dados independenteContained database user model
Quando conectado ao banco de dados mestre:When connected to the master database:

CREATE LOGIN login_name WITH PASSWORD = 'strong_password';

Em seguida, quando conectado a um banco de dados do usuário:Then when connected to a user database:

CREATE USER 'user_name' FOR LOGIN 'login_name';
Quando conectado a um banco de dados do usuário:When connected to a user database:

CREATE USER user_name WITH PASSWORD = 'strong_password';
Modelo tradicionalTraditional model Modelo de usuário de banco de dados independenteContained database user model
Para alterar a senha no contexto do banco de dados mestre:To change password, in context of master DB:

ALTER LOGIN login_name WITH PASSWORD = 'strong_password';
Para alterar a senha no contexto do banco de dados do usuário:To change password, in context of user DB:

ALTER USER user_name WITH PASSWORD = 'strong_password';

ComentáriosRemarks

  • No SQL ServerSQL Server, usuários de bancos de dados independentes devem estar habilitados para a instância do SQL ServerSQL Server.In SQL ServerSQL Server, contained database users must be enabled for the instance of SQL ServerSQL Server. Para obter mais informações, veja Opção contained database authentication de configuração de servidor.For more information, see contained database authentication Server Configuration Option.
  • Os usuários do banco de dados independente e logons com nomes não sobrepostas podem coexistir em seus aplicativos.Contained database users and logins with non-overlapping names can co-exist in your applications.
  • Se houver um logon no banco de dados mestre com nome name1 e você criar um usuário de banco de dados independente denominado name1, quando um nome de banco de dados for fornecido para a cadeia de conexão, o contexto do usuário de banco de dados será escolhido de acordo com o contexto de logon ao se conectar ao banco de dados.If there is a login in master database with the name name1 and you create a contained database user named name1, when a database name is provided in the connection string, the context of the database user will be picked over login context when connecting to the database. Ou seja, os usuários do banco de dados independente têm precedência sobre logons com o mesmo nome.That is, contained database user will take precedence over logins with the same name.
  • No Banco de Dados SQLSQL Database , o nome de usuário de banco de dados independente não pode ser igual ao nome da conta de administrador de servidor.In Banco de Dados SQLSQL Database the name of contained database user cannot be the same as the name of the server admin account.
  • A conta de administrador do servidor Banco de Dados SQLSQL Database nunca pode ser um usuário de banco de dados independente.The Banco de Dados SQLSQL Database server admin account can never be a contained database user. O administrador do servidor tem permissões suficientes para criar e gerenciar usuários de banco de dados independente.The server admin has sufficient permissions to create and manage contained database users. O administrador do servidor pode conceder permissões a usuários de banco de dados independente em bancos de dados do usuário.The server admin can grant permissions to contained database users on user databases.
  • Uma vez que os usuários de banco de dados independente são entidades de nível de banco de dados, você precisa criar usuários de banco de dados independente em todos os bancos de dados em que eles forem ser usados.Since contained database users are database level principals, you need to create contained database users in every database that you would use them. A identidade está restrita ao banco de dados e é independente, em todos os aspectos, de um usuário com o mesmo nome e a mesma senha em outro banco de dados, no mesmo servidor.The identity is confined to the database and is independent in all aspects from a user with same name and same password in another database in the same server.
  • Use senhas com a mesma força que normalmente usaria para logons.Use the same strength passwords that you would normally use for logins.

Consulte TambémSee Also

Bancos de dados independentes Contained Databases
Práticas recomendadas de segurança com bancos de dados independentes Security Best Practices with Contained Databases
CREATE USER (Transact-SQL) CREATE USER (Transact-SQL)
Conectar-se ao Banco de Dados SQL usando a autenticação do Azure Active DirectoryConnecting to SQL Database By Using Azure Active Directory Authentication