AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 233934
Accepted
Tom_W
Tom_W
Asked: 2019-04-05 02:52:34 +0800 CST2019-04-05 02:52:34 +0800 CST 2019-04-05 02:52:34 +0800 CST

Permissões recomendadas para a conta SQL que criará novas contas SQL

  • 772

Buscando algumas recomendações sobre como lidar com uma conta SQL, que criará contas SQL adicionais no futuro...

Cenário:

Nosso aplicativo de produção Admin se conecta ao SQL usando uma conta chamada: Admin_Main , conforme indicado na string de conexão. Quando alguém cria um novo usuário no aplicativo Admin e atribui a ele uma licença de relatórios, uma nova conta SQL é criada na instância para o novo usuário. A conta Admin_Main é usada para criar esta conta.

Eu, é claro, não quero adicionar mais permissões à conta Admin_Main do que o necessário, então minha pergunta é;

Quais são as permissões que devo adicionar a essa conta, para que ela possa criar novas contas do SQL Server, mas não tenha permissões de administrador na instância?

Desde já, obrigado!

sql-server
  • 1 1 respostas
  • 645 Views

1 respostas

  • Voted
  1. Best Answer
    John K. N.
    2019-04-05T04:25:16+08:002019-04-05T04:25:16+08:00

    Você pode atribuir a função securityadminde servidor à conta Admin_Main .

    A securityadminfunção de servidor é documentada como:

    Os membros da função de servidor fixa securityadmin gerenciam logons e suas propriedades. Eles podem GRANT, DENY, e REVOKEpermissões de nível de servidor. Eles também podem GRANT, DENYe REVOKEpermissões em nível de banco de dados se tiverem acesso a um banco de dados. Além disso, eles podem redefinir senhas para logons do SQL Server.

    IMPORTANTE: A capacidade de conceder acesso ao Mecanismo de Banco de Dados e configurar permissões de usuário permite que o administrador de segurança atribua a maioria das permissões do servidor. A função securityadmin deve ser tratada como equivalente à função sysadmin .

    Referência: funções no nível do servidor (Microsoft | Docs)

    Vamos tentar e ver até onde podemos chegar...

    Criando o login do SQL Server Admin_Main

    Criaremos um novo logon do SQL Server e atribuiremos a esse usuário a securityadminfunção de servidor:

    USE [master]
    GO
    CREATE LOGIN [Admin_Main] WITH PASSWORD=N'MyShineyNewP@sswerd', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
    GO
    ALTER SERVER ROLE [securityadmin] ADD MEMBER [Admin_Main]
    GO
    

    Isso tudo é feito com uma conta que tem a sysadminfunção de servidor e o resultado é:

    Command(s) completed successfully.
    

    Entrar com Admin_Main

    Você pode então abrir uma nova janela de consulta de banco de dados usando Admin_Main SQL Serer Login e a senha correspondente. Depois de ter feito isso...

    Atribuindo privilégios mais altos

    ...seu novo usuário certamente tentará aumentar seus privilégios adicionando-se à sysadminfunção de servidor:

    ALTER SERVER ROLE [sysadmin] ADD member [Admin_Main]
    

    Isso resulta no seguinte:

    Msg 15151, Level 16, State 1, Line 3
    Cannot alter the server role 'sysadmin', because it does not exist or you do not have permission.
    

    Portanto, o logon do SQL Server não pode atribuir a si mesmo privilégios mais altos.

    Criando um novo usuário (ou: até onde posso chegar?)

    Visto que Admin_Main agora tem permissão para criar novos logins do SQL Server, vamos criar um novo usuário enquanto ainda estiver logado como Admin_Main e adicionar algumas funções de nível de servidor. Faremos isso em várias etapas para descobrir quando a atribuição de funções do SQL Server falhará:

    Criar login

    Entrada

    USE [master]
    GO
    CREATE LOGIN [New_User] WITH PASSWORD=N'MyShineyNewP@sswerd', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
    GO
    

    Resultado

    Command(s) completed successfully.
    

    Atribuir função de administrador de segurança

    Entrada

    ALTER SERVER ROLE [securityadmin] ADD MEMBER [New_User]
    GO
    

    Resultado

    Command(s) completed successfully.
    

    Atribuir função sysadmin SQL Server

    Entrada

    ALTER SERVER ROLE [sysadmin] ADD MEMBER [New_User]
    GO
    

    Resultado

    Msg 15151, Level 16, State 1, Line 13
    Cannot alter the server role 'sysadmin', because it does not exist or you do not have permission.
    

    Conclusão

    Você terá que atribuir a função do SQL Server securityadminao login do SQL Server Admin_Main para permitir que essa conta crie novos logins do SQL Server e/ou logins do SQL Server autenticados pelo Windows.

    ...e você não pode atribuir permissões/privilégios a outras contas que suas contas iniciais ainda não possuem.

    • 3

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve