Configurar o acesso isolado a uma réplica nomeada do Hyperscale
Aplica-se a:Banco de Dados SQL do Azure
Este artigo descreve o procedimento para conceder acesso a uma réplica nomeada do Azure SQL Hyperscale 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 será executada usando seu próprio nó de computação - e é útil sempre que o acesso isolado somente leitura a um banco de dados SQL Hyperscale do Azure é necessário. Isolado, neste 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 da réplica primária ou de quaisquer outras réplicas e as entidades que acessam a réplica nomeada não podem acessar outras réplicas, incluindo a primária.
Nota
Microsoft Entra ID é o novo nome para o Azure Ative Directory (Azure AD). Estamos atualizando a documentação neste momento.
Criar um logon no banco de dados mestre no servidor primário
master
No banco de dados no servidor lógico que hospeda o banco de dados primário, execute o seguinte para criar um novo login.
Use sua própria senha forte e exclusiva.
create login [third-party-login] with password = 'Just4STRONG_PAZzW0rd!';
Recupere o valor hexadecimal SID para o login criado na visualização do sys.sql_logins
sistema:
select sid from sys.sql_logins where name = 'third-party-login';
Desative o login. Isso impedirá que esse login 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 primário de leitura/gravação
Depois que o logon for criado, conecte-se à réplica primária de leitura-gravação do seu banco de dados, por exemplo, WideWorldImporters (você pode encontrar um script de exemplo para restaurá-lo aqui: Restaurar Banco de Dados no Azure SQL) e crie um usuário de banco de dados para esse logon:
create user [third-party-user] from login [third-party-login];
Como etapa opcional, uma vez que o usuário do banco de dados tenha sido criado, você pode descartar o login do servidor criado na etapa anterior se houver preocupações sobre o login ser reativado de alguma forma. Conecte-se ao master
banco de dados no servidor lógico que hospeda o banco de dados primário e execute o seguinte:
drop login [third-party-login];
Criar 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 e bancos de dados únicos 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.
Usando, por exemplo, AZ CLI:
az sql server create -g MyResourceGroup -n MyNamedReplicaServer -l MyLocation --admin-user MyAdminUser --admin-password MyStrongADM1NPassw0rd!
Em seguida, crie uma réplica nomeada para o banco de dados primário neste servidor. Por exemplo, usando AZ CLI:
az sql db replica create -g MyResourceGroup -n WideWorldImporters -s MyPrimaryServer --secondary-type Named --partner-database WideWorldImporters_NR --partner-server MyNamedReplicaServer
Criar um logon no banco de dados mestre no servidor de réplica nomeado
Conecte-se ao master
banco de dados no servidor lógico que hospeda a réplica nomeada, criada na etapa anterior. Adicione o login usando o SID recuperado da réplica primária:
create login [third-party-login] with password = 'Just4STRONG_PAZzW0rd!', sid = 0x0...1234;
Neste ponto, os usuários e aplicativos que usam third-party-login
ou bob@contoso.com
podem se conectar à 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 login conforme descrito, você pode usar instruções DENY
regulares e REVOKE
, para gerenciar permissões de autorização ou de nível de objeto no banco de GRANT
dados. Nessas instruções, faça referência ao nome do usuário criado no banco de dados ou a uma função de banco de dados que inclua esse usuário como membro. Lembre-se de executar esses comandos na réplica primária. As alterações serão propagadas para todas as réplicas secundárias, no entanto, elas só serão efetivas na réplica nomeada onde o login 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 quiser permitir third-party-user
ou bob@contoso.com
ler dados em uma tabela, você precisa conceder explicitamente a SELECT
permissão:
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 pode usar esquemas para permitir o acesso a todas as tabelas novas e existentes em um esquema.
Acesso ao teste
Você pode testar essa configuração usando qualquer ferramenta de cliente e tentar se conectar à réplica primária e nomeada. Por exemplo, usando o , você pode tentar se conectar à réplica primária usando sqlcmd
o third-party-login
usuário:
sqlcmd -S MyPrimaryServer.database.windows.net -U third-party-login -P Just4STRONG_PAZzW0rd! -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:
sqlcmd -S MyNamedReplicaServer.database.windows.net -U third-party-login -P Just4STRONG_PAZzW0rd! -d WideWorldImporters_NR
Nenhum erro é retornado e as consultas podem ser executadas na réplica nomeada, conforme permitido pelas permissões concedidas no nível do objeto.
Para mais informações:
- Servidores lógicos SQL do Azure, consulte O que é um servidor no Banco de Dados SQL do Azure
- Gerenciando o acesso ao banco de dados e logons, consulte Segurança do Banco de dados SQL: Gerenciar o acesso ao banco de dados e a segurança de logon
- Permissões do mecanismo de banco de dados, consulte Permissões
- Concedendo permissões de objeto, consulte GRANT Object Permissions