Esta página descreve como o Cloud SQL funciona com usuários e papéis do SQL Server. Os papéis do SQL Server permitem controlar o acesso e os recursos dos usuários que acessam uma instância do SQL Server.
Para informações sobre a criação e o gerenciamento de usuários do Cloud SQL, consulte Criar e gerenciar usuários.
Papéis e usuários do SQL Server
Os papéis do SQL Server podem ser um único papel ou podem funcionar como um grupo de papéis.
Um usuário é um papel com a capacidade de fazer login (o papel tem a permissão LOGIN
). Todos os papéis criados pelo Cloud SQL têm a permissão LOGIN
.
Portanto, o Cloud SQL usa os termos "papel" e "usuário" de forma intercambiável. No entanto, se
você criar um papel com qualquer ferramenta de cliente compatível com o SQL Server, ele não receberá necessariamente a permissão LOGIN
.
O Cloud SQL para SQL Server restringe o acesso a determinadas funções de servidor que
fornecem privilégios avançados. DbRootRole
, serveradmin
, securityadmin
, setupadmin
, diskadmin
e dbcreator
são exemplos desses papéis.
Todos os usuários do SQL Server precisam ter uma senha. Portanto, não é possível fazer login com um usuário sem uma senha.
Superusuários e procedimentos armazenados no sistema
O Cloud SQL para SQL Server é um serviço gerenciado, por isso ele restringe o acesso a determinados procedimentos e tabelas armazenados no sistema que exigem que exigem privilégios avançados. No Cloud SQL, não é possível criar ou ter acesso a usuários com permissões de superusuário.
Usuários padrão do SQL Server
Quando você cria uma nova instância do Cloud SQL para SQL Server, o usuário sqlserver
padrão já é criado para você, embora seja necessário definir a senha.
O usuário sqlserver
faz parte do papel CustomerDbRootRole
e as permissõ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 é possível adicionar cloudsql enable linked servers
à instância para usá-la com servidores vinculados. Essa sinalização concede a
seguinte permissão ao seu servidor:
ALTER ANY LINKED SERVER
Como conceder as permissões de servidor
Ao conceder privilégios usando qualquer
comando GRANT
,
você precisa passar CustomerDbRootRole
como, por exemplo, o valor de
grantor_principal
.
O exemplo GRANT ALTER ANY LOGIN
a seguir é válido:
GRANT ALTER ANY LOGIN TO [Account] AS CustomerDbRootRole
O exemplo GRANT ALTER ANY LOGIN
a seguir é inválido:
GRANT ALTER ANY LOGIN TO [Account]
Outros usuários do SQL Server
Você pode criar outros usuários do SQL Server ou papéis. Todos os usuários
criados com o Cloud SQL recebem as mesmas permissões de banco de dados que o
login sqlserver
. No entanto, se você usar um processo diferente para criar um usuário
(em vez de criá-lo usando o Cloud SQL), o usuário não terá
as mesmas permissões das contas de administrador do cliente ou do usuário sqlserver
. Por
exemplo, se você usar o processo de
criar login
e adicionar o login ao papel de servidor CustomerDbRootRole
, o usuário
não terá as mesmas permissões das contas de administrador do cliente ou do
usuário sqlserver
. Portanto, você pode usar o Cloud SQL para criar um usuário se quiser que ele tenha as mesmas permissões de banco de dados que o
login sqlserver
.
Para validar a diferença nas permissões entre duas contas, é possível usar
a seguinte função:
sys.fn_my_permissions.
Importações de banco de dados: permissões de proprietário
Quando você importa um banco de dados, o tratamento do proprietário varia da seguinte maneira, com base no tipo do proprietário:
- Para um login existente que não seja
sa
: o Cloud SQL mantém esse proprietário e cria um usuário chamadosqlserver
que é mapeado para o loginsqlserver
. O Cloud SQL concede as permissõesCONTROL
eALTER ANY USER
ao usuáriosqlserver
. - Para logins desconhecidos ou que foram criados pelo sistema: o Cloud SQL
transfere a propriedade do banco de dados para o login
sqlserver
.
Alterar permissões para usuários
O comando ALTER ROLE está disponível para alterar as permissões de usuários. Se você criar um novo usuário com um cliente, poderá associá-lo a um papel diferente ou conceder permissões diferentes.
Solução de problemas
Erro ao acessar o banco de dados
Ao tentar acessar um banco de dados criado por você, como um usuário criado, você recebe o erro:
The server principal USERNAME is not able to access the database DATABASE_NAME under the current security context.
O problema pode ser
O usuário não é membro do banco de dados.
O que você pode tentar
Conecte-se ao banco de dados como o usuário sqlserver
e adicione o novo usuário.
Em seguida,
conceda ao novo usuário o papel db_owner
para o banco de dados. Por
exemplo:
EXEC sp_adduser 'user'; EXEC sp_addrolemember 'db_owner', 'user'
A seguir
- Configure o usuário para sua instância.
- Crie e gerencie usuários/0}.
- Crie e gerencie bancos de dados.