Acerca dos utilizadores do SQL Server

Esta página descreve como o Cloud SQL funciona com utilizadores e funções do SQL Server. As funções do SQL Server permitem-lhe controlar o acesso e as capacidades dos utilizadores que acedem a uma instância do SQL Server.

Para obter informações sobre como criar e gerir utilizadores do Cloud SQL, consulte o artigo Criar e gerir utilizadores.

Funções e utilizadores do SQL Server

As funções do SQL Server podem ser uma única função ou podem funcionar como um grupo de funções.

Um utilizador é uma função com a capacidade de iniciar sessão (a função tem a autorização LOGIN ). Todas as funções criadas pelo Cloud SQL têm a autorização LOGIN, pelo que o Cloud SQL usa os termos "função" e "utilizador" de forma intercambiável. No entanto, se criar uma função com qualquer ferramenta de cliente compatível com o SQL Server, a função não recebe necessariamente a autorização LOGIN.

O Cloud SQL para SQL Server restringe o acesso a determinadas funções do servidor que oferecem privilégios avançados. Exemplos destas funções: DbRootRole, serveradmin, securityadmin, setupadmin, diskadmin e dbcreator.

Todos os utilizadores do SQL Server têm de ter uma palavra-passe. Assim, não pode iniciar sessão com um utilizador que não tenha uma palavra-passe.

Superutilizadores e procedimentos armazenados no sistema

O Cloud SQL para SQL Server é um serviço gerido, pelo que restringe o acesso a determinadas tabelas e procedimentos armazenados do sistema que exigem privilégios avançados. No Cloud SQL, não pode criar nem ter acesso a utilizadores com autorizações de superutilizador.

Utilizadores predefinidos do SQL Server

Quando cria uma nova instância do Cloud SQL para SQL Server, o utilizador sqlserver predefinido já é criado automaticamente, embora tenha de definir a respetiva palavra-passe.

O utilizador sqlserver faz parte da função CustomerDbRootRole e as respetivas autorizações (privilégios) incluem o seguinte:

  • 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

Também pode adicionar cloudsql enable linked servers à sua instância se quiser usá-la com servidores associados. Esta flag concede a seguinte autorização ao seu servidor:

  • ALTER ANY LINKED SERVER

Conceder autorizações do servidor

Quando concede privilégios através de qualquer GRANT comando, tem de transmitir CustomerDbRootRole como, por exemplo, o valor de grantor_principal.

O seguinte exemplo de GRANT ALTER ANY LOGIN é válido:

GRANT ALTER ANY LOGIN TO [Account] AS CustomerDbRootRole

O seguinte exemplo de GRANT ALTER ANY LOGIN é inválido:

GRANT ALTER ANY LOGIN TO [Account]

Outros utilizadores do SQL Server

Pode criar outros utilizadores do SQL Server ou funções. Todos os utilizadores que criar através do Cloud SQL recebem as mesmas autorizações de base de dados que o início de sessão sqlserver. No entanto, se usar um processo diferente para criar um utilizador (em vez de o criar através do Cloud SQL), o utilizador não tem as mesmas autorizações que as contas de administrador do cliente ou o utilizador sqlserver. Por exemplo, se usar o processo create login e adicionar o início de sessão à função de servidor CustomerDbRootRole, o utilizador não tem as mesmas autorizações que as contas de administrador do cliente ou o utilizador sqlserver. Por conseguinte, pode usar o Cloud SQL para criar um utilizador se pretender que o utilizador tenha as mesmas autorizações da base de dados que o início de sessão sqlserver. Para validar a diferença nas autorizações entre duas contas, pode usar a seguinte função: sys.fn_my_permissions.

Importações de bases de dados: autorizações de proprietário

Quando importa uma base de dados, o tratamento do proprietário varia da seguinte forma, com base no tipo de proprietário:

  • Para um início de sessão existente que não seja sa: o Cloud SQL mantém esse proprietário e cria um utilizador denominado sqlserver que é mapeado para o início de sessão sqlserver. O Cloud SQL concede as autorizações CONTROL e ALTER ANY USER a esse utilizador sqlserver.
  • Para inícios de sessão desconhecidos ou inícios de sessão criados pelo sistema: o Cloud SQL transfere a propriedade da base de dados para o início de sessão sqlserver.

Alterar autorizações dos utilizadores

O comando ALTER ROLE está disponível para alterar as autorizações dos utilizadores. Se criar um novo utilizador com um cliente, pode associá-lo a uma função diferente ou fornecer autorizações diferentes.

Resolução de problemas

Erro ao aceder à base de dados

Quando tenta aceder a uma base de dados que criou como utilizador que criou, recebe o seguinte erro:

The server principal USERNAME is not able to access the
database DATABASE_NAME under the current security context.

O problema pode ser

O utilizador não é membro da base de dados.

Coisas a experimentar

Estabeleça ligação à base de dados como o utilizador sqlserver e adicione o novo utilizador. Em seguida, atribua ao novo utilizador a função db_owner para a base de dados. Por exemplo:

EXEC sp_adduser 'user';
EXEC sp_addrolemember 'db_owner', 'user'

O que se segue?