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 denominadosqlserver
que é mapeado para o início de sessãosqlserver
. O Cloud SQL concede as autorizaçõesCONTROL
eALTER ANY USER
a esse utilizadorsqlserver
. - 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?
- Configure o utilizador para a sua instância.
- Crie e faça a gestão de utilizadores.
- Crie e faça a gestão de bases de dados.