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 / 180064
Accepted
BradC
BradC
Asked: 2017-07-18 13:42:01 +0800 CST2017-07-18 13:42:01 +0800 CST 2017-07-18 13:42:01 +0800 CST

Como devem ser minhas entradas SPN para cada instância SQL?

  • 772

Estou encontrando informações contraditórias sobre como exatamente formatar SPNs (Nomes de Princípios de Serviço) para obter as conexões Kerberos adequadas e quantas preciso para cada instância SQL.

Este documento MS de 2017 contém o seguinte:

A partir do SQL Server 2008, o formato SPN é alterado para oferecer suporte à autenticação Kerberos em TCP/IP, pipes nomeados e memória compartilhada. Os formatos SPN suportados para instâncias nomeadas e padrão são os seguintes.

  • Instância nomeada:MSSQLSvc/FQDN:[port|instancename]
  • Instância padrão:MSSQLSvc/FQDN:port|MSSQLSvc/FQDN

O novo formato SPN não requer um número de porta . Isso significa que um servidor de várias portas ou um protocolo que não usa números de porta pode usar a autenticação Kerberos.

Eu entendi este último parágrafo para significar que eu só preciso de uma única entrada, uma das seguintes:

  • Instância nomeada:MSSQLSvc/sqlbox1.mydomain.org/instance2
  • Instância padrão:MSSQLSvc/sqlbox1.mydomain.org

Isso parece contradizer este documento MS mais antigo (2011) , não apenas sobre o número da porta, mas também sobre qual nome usar:

Para criar o SPN, você pode usar o nome NetBIOS ou o nome de domínio totalmente qualificado (FQDN) do SQL Server. No entanto, você deve criar um SPN para o nome NetBIOS e o FQDN .

Quando olho os SPNs que já existem no meu ambiente, vejo uma grande variedade de combinações, alguns servidores possuem até 4 entradas:

  • MSSQLSvc/sqlbox1
  • MSSQLSvc/sqlbox1:1433
  • MSSQLSvc/sqlbox1.mydomain.org
  • MSSQLSvc/sqlbox1.mydomain.org:1433

Até o próprio gerenciador de configuração Kerberos da MS parece querer gerar as duas últimas versões (com ofuscação apropriada):

insira a descrição da imagem aqui

Da mesma forma, para instâncias nomeadas existentes, vejo uma mistura estranha, algumas delas quase certamente inválidas:

  • MSSQLSvc/sqlbox1:1522
  • MSSQLSvc/sqlbox1:instance2
  • MSSQLSvc/sqlbox1.mydomain.org:1522
  • MSSQLSvc/sqlbox1.mydomain.org:instance2
  • MSSQLSvc/sqlbox1.mydomain.org/instance2
  • MSSQLSvc/sqlbox1.mydomain.org:1522:instance2

Então, como devem ser meus DSNs, para instâncias padrão e nomeadas, se eu usar apenas TCP em meu ambiente?

Devo incluir a porta, ou não? Ou incluir um com a porta e outro sem?

Use apenas o FQDN ou preciso das entradas apenas com o nome Netbios? Ou isso seria apenas se estivéssemos usando pipes nomeados (o que não estamos)?

(Para contextualizar, executamos o SQL 2005 a 2014, alguns em cluster, outros autônomos. A conectividade é apenas via TCP, os pipes nomeados estão desabilitados no gerenciador de configuração. Estaremos corrigindo/criando esses manualmente em vez de permitir que a conta de serviço SQL os crie após início do servidor.)

sql-server kerberos
  • 2 2 respostas
  • 19401 Views

2 respostas

  • Voted
  1. Best Answer
    John Eisbrener
    2017-07-19T07:34:27+08:002017-07-19T07:34:27+08:00

    Se você estiver usando apenas TCP/IP para se conectar às suas instâncias, precisará apenas das portas especificadas. Os nomes de instância são usados ​​ao conectar-se às instâncias SQL por meio dos protocolos de pipes nomeados. Infelizmente, o artigo do MS não diz exatamente qual formato é necessário para qual protocolo, mas é derivado de (muitos testes no meu ambiente) e da seguinte frase do artigo do MS :

    Para pipes nomeados e conexões de memória compartilhada, um SPN no formato MSSQLSvc/FQDN:instancename é usado para uma instância nomeada e MSSQLSvc/FQDN é usado para a instância padrão.

    Em relação aos nomes FQDNs vs NETBIOS, recomendo FQDNs, pois eles não são tão propensos a problemas se você enfrentar problemas aleatórios do servidor DNS.

    Retirados da minha postagem no blog sobre o assunto, os formatos devem ter a seguinte aparência:

    insira a descrição da imagem aqui

    A referência da fonte do MS pode ser encontrada aqui .

    Agora para fazer o seu Network Admin's Day (por exemplo, configuração de OU que permite SPNs de auto-registro)

    Seu administrador de rede pode criar uma UO no domínio que contém todas as suas contas de serviço do SQL Server que podem ser configuradas de forma que a conta de serviço possa criar um SPN para si mesma e sozinha. O método segue principalmente o blog de Ryan Reis , mas tem alguns pequenos ajustes para que as concessões excessivas não sejam executadas.

    Este processo descreve a criação de uma UO no domínio que permite que as contas dentro dela registrem seus próprios SPNs:

    1. Como uma conta com direitos elevados no domínio, abra o ADSI Edit (adsiedit no prompt de comando)
    2. Clique com o botão direito do mouse em ADSI Edit -> Connect to...
    3. Conectar ao contexto de nomenclatura padrão
    4. Navegue até/crie o contêiner da UO que contém as contas de serviço às quais você deseja conceder direitos de SPN
    5. Clique com o botão direito do mouse na UO -> Propriedades
    6. Clique na guia Segurança
    7. Clique no botão Avançado
    8. Realce SELF e clique em Editar... ou se o usuário especial SELF não aparecer na lista de nomes de Grupo ou Usuário, clique em Adicionar... e digite SELF para o nome do objeto
    9. Clique na guia Propriedades
    10. Selecione os objetos Usuário Descendente na lista suspensa ao lado de Aplicar a: Observação: Este é o pequeno ajuste nas etapas descritas na postagem do blog de Ryan pelos motivos melhor descritos por esta postagem ServerFault/StackExchange .
    11. Marque a caixa Permitir ao lado do seguinte:
      • Leia o serviçoPrincipalName
      • Escrever servicePrincipalName
    12. Clique em Ok (na janela de entrada de permissões)
    13. Clique em Ok (na janela Configurações de segurança avançadas)
    14. Clique em Ok (na janela de propriedades da UO)
    15. Adicionar contas de serviço que executam serviços do SQL Server à UO
    16. (Opcionalmente) Reinicie o SQL Server Services em execução nas referidas contas
    17. Desfrute de guloseimas

    Após seguir as etapas acima, o contêiner da UO em questão agora está configurado de forma que qualquer conta adicionada a ele poderá registrar e excluir SPNs para si e para si mesmo. Essa é exatamente a quantidade certa de permissões, pois essas contas não poderão atropelar SPNs registrados por outras contas.

    A finalidade de reiniciar o SQL Server na etapa 16 é garantir que os SPNs sejam registrados conforme o esperado. O SQL tentará remover todos os SPNs registrados no desligamento e adicioná-los na inicialização, portanto, a reinicialização só será realmente necessária se não existir nenhum SPNs atualmente para o referido serviço SQL Server.

    A observação final sobre essa abordagem é que, se você estiver executando o SQL Server em uma configuração tradicional de Failover Clustered Instance (FCI), NÃO é recomendado adicionar a conta de serviço desta instância a esta UO, por KB 2443457 .

    Eu realmente preciso postar a parte 2 da minha série Kerberos...

    • 8
  2. Bob Klimes
    2017-07-19T06:19:44+08:002017-07-19T06:19:44+08:00

    Quando o serviço SQL Server cria SPN, ele cria dois para cada instância. Este é o formato que ele usa.

    Instância padrão:

    MSSQLSvc/servername.domain.com
    MSSQLSvc/servername.domain.com:1433
    

    Instância nomeada:

    MSSQLSvc/servername.domain.com:54321
    MSSQLSvc/servername.domain.com:instancename
    

    Para suas instâncias nomeadas, se estiver criando SPNs manualmente, você precisará ter uma porta estática em vez da porta dinâmica padrão.

    • 2

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