Configurar o acesso isolado a réplicas nomeadas em Hiperescala
Aplica-se a: Banco de Dados SQL do Azure
Este artigo descreve o procedimento para conceder acesso a uma réplica nomeada Hiperescala do Banco de Dados SQL do Azure sem conceder acesso à réplica primária ou a outras réplicas nomeadas. Esse cenário permite o isolamento de recursos e segurança de uma réplica nomeada, pois a réplica nomeada estará em execução usando seu próprio nó de computação, o que é útil sempre que o acesso somente leitura isolado a um banco de dados de Hiperescala do SQL do Azure for necessário. Isolado, nesse contexto, significa que a CPU e a memória não são compartilhadas entre a réplica primária e a réplica nomeada, as consultas em execução na réplica nomeada não usam recursos de computação do primário ou de qualquer outra réplica e as entidades que acessam a réplica nomeada não podem acessar outras réplicas, incluindo a primária.
Observação
O Microsoft Entra ID era conhecido anteriormente como Azure Active Directory (Azure AD).
Crie um logon no servidor primário
No banco de dados master
no servidor lógico que hospeda o banco de dados primário, execute os passos a seguir para criar um novo logon.
Use sua própria senha forte e exclusiva, substituindo strong_password_here
por sua senha forte.
CREATE LOGIN [third-party-login] WITH PASSWORD = 'strong_password_here';
Recupere o valor hexadecimal do SID para o logon criado na exibição do sistema sys.sql_logins
:
SELECT SID FROM sys.sql_logins WHERE name = 'third-party-login';
Desabilite o logon. Isso prevenirá que esse logon acesse qualquer banco de dados no servidor que hospeda a réplica primária.
ALTER LOGIN [third-party-login] DISABLE;
Criar um usuário no banco de dados de leitura/gravação primário
Depois que o logon tiver sido criado, conecte-se à réplica de leitura/gravação primária do banco de dados, por exemplo WideWorldImporters (você pode encontrar um script de exemplo para restaurá-lo aqui: Restaurar Banco de Dados no SQL do Azure) e criar um usuário de banco de dados para esse logon:
CREATE USER [third-party-user] FROM LOGIN [third-party-login];
Como uma etapa opcional, depois que o usuário do banco de dados tiver sido criado, você poderá soltar o logon do servidor criado na etapa anterior se houver preocupações sobre o logon ser habilitado novamente de alguma forma. Conecte-se ao banco de dados master
no servidor lógico que hospeda o banco de dados primário e execute os seguintes scripts de amostra:
DROP LOGIN [third-party-login];
Crie uma réplica nomeada em um servidor lógico diferente
Crie um novo servidor lógico SQL do Azure que será usado para isolar o acesso à réplica nomeada. Siga as instruções disponíveis em Criar e gerenciar servidores lógicos e bancos de dados individuais no Banco de Dados SQL do Azure. Para criar uma réplica nomeada, esse servidor deve estar na mesma região do Azure que o servidor que hospeda a réplica primária.
Na amostra a seguir, substitua strong_password_here
por uma senha forte. Por exemplo, usando a CLI do Azure:
az sql server create -g MyResourceGroup -n MyNamedReplicaServer -l MyLocation --admin-user MyAdminUser --admin-password strong_password_here
Em seguida, crie uma réplica nomeada para o banco de dados primário neste servidor. Por exemplo, usando a CLI do Azure:
az sql db replica create -g MyResourceGroup -n WideWorldImporters -s MyPrimaryServer --secondary-type Named --partner-database WideWorldImporters_NR --partner-server MyNamedReplicaServer
Crie um logon no servidor de réplica nomeado
Conexão ao banco de dados master
no servidor lógico que hospeda a réplica nomeada, criada na etapa anterior. Substitua strong_password_here
pela sua senha forte. Adicione o logon usando o SID recuperado da réplica primária:
CREATE LOGIN [third-party-login] WITH PASSWORD = 'strong_password_here', sid = 0x0...1234;
Neste ponto, os usuários e aplicativos que usam third-party-login
ou bob@contoso.com
podem conectar-se à réplica nomeada, mas não à réplica primária.
Conceder permissões no nível do objeto no banco de dados
Depois de configurar a autenticação de logon conforme descrito, você poderá usar as instruções regulares GRANT
, DENY
e REVOKE
para gerenciar autorizações ou permissões de nível de objeto no banco de dados. Nessas instruções, confira o nome do usuário que você criou no banco de dados ou uma função de banco de dados que inclui esse usuário como membro. Lembre-se de executar esses comandos na réplica primária. As alterações são propagadas para todas as réplicas secundárias, no entanto, elas só entrarão em vigor na réplica nomeada em que o logon no nível do servidor foi criado.
Lembre-se de que, por padrão, um usuário recém-criado tem um conjunto mínimo de permissões concedidas (por exemplo, ele não pode acessar nenhuma tabela de usuário). Se você quiser permitir que o third-party-user
ou bob@contoso.com
leia os dados em uma tabela, precisará conceder explicitamente a permissão SELECT
:
GRANT SELECT ON [Application].[Cities] to [third-party-user];
Como alternativa à concessão de permissões individualmente em cada tabela, você pode adicionar o usuário à db_datareaders
função de banco de dados para permitir acesso de leitura a todas as tabelas ou você pode usar esquemas para permitir acesso a todas as tabelas novas e existentes em um esquema.
Testar o acesso
Você pode testar essa configuração usando qualquer ferramenta de cliente e tentar se conectar à réplica primária e nomeada. Por exemplo, usando sqlcmd
, você pode tentar se conectar à réplica primária usando o usuário third-party-login
. Substitua strong_password_here
pela sua senha forte.
sqlcmd -S MyPrimaryServer.database.windows.net -U third-party-login -P strong_password_here -d WideWorldImporters
Isso resultará em um erro, pois o usuário não tem permissão para se conectar ao servidor:
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login failed for user 'third-party-login'. Reason: The account is disabled.
A tentativa de se conectar à réplica nomeada é bem-sucedida. Substitua strong_password_here
pela sua senha forte.
sqlcmd -S MyNamedReplicaServer.database.windows.net -U third-party-login -P strong_password_here -d WideWorldImporters_NR
Nenhum erro é retornado e as consultas podem ser executadas na réplica nomeada conforme permitido por permissões de nível de objeto concedidas.
Conteúdo relacionado
- Servidores lógicos do SQL do Azure, confira O que é um servidor no Banco de Dados SQL do Azure?
- Para gerenciar o acesso a bancos de dados e logons, confira Segurança do Banco de dados SQL: gerenciar acesso a banco de dados e segurança de logon.
- Permissões do mecanismo de banco de dados, confira Permissões.
- Para conceder permissões de objeto, confira CONCEDER Permissões de Objeto.