Você pode usar a autenticação Kerberos com o Microsoft SQL Server 2000. SQL Server 2000 oferece suporte a essa funcionalidade como parte de uma instalação típica de domínio de Microsoft Windows 2000 ou do Active Directory do Microsoft Windows Server 2003. Com o Microsoft Windows 2000 Service Pack 3 (SP3) e Windows Server 2003, é possível ativar a autenticação Kerberos em clusters de servidor.
Para obter mais informações sobre essa funcionalidade adicionada, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
235529
(http://support.microsoft.com/kb/235529/
)
Suporte para Kerberos em clusters de servidor baseado no Windows 2000
Observação Você só pode usar essa funcionalidade se você estiver executando o Windows 2000 SP3 ou Windows Server 2003.
SQL Server 2000 também cluster de failover usa essa funcionalidade. Quando o nome de rede recurso depende do SQL Server está em um cluster baseado no Windows 2000, você pode usar a autenticação Kerberos no recurso após atualizar o computador para o Windows 2000 SP3 ou para o Windows Server 2003. Para instalar o SQL Server failover de cluster, você deve ter o Microsoft SQL Server 2000 Enterprise Edition ou Developer instalado.
Observação Os conceitos e discussões neste artigo que se aplicam ao SQL Server 2000 também são aplicáveis para o SQL Server 2005. Para obter mais informações sobre esse assunto no SQL Server 2005, consulte os seguintes tópicos nos manuais online do SQL Server 2005:
- Como: Ativar autenticação Kerberos incluindo servidores virtuais em clusters de servidor do SQL Server
- Registro de nome principal de serviço
Para obter mais informações sobre como certificar-se que você está usando a autenticação Kerberos no SQL Server 2005, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
909801
(http://support.microsoft.com/kb/909801/
)
Como se certificar de que você está usando a autenticação Kerberos ao criar uma conexão remota com uma instância do SQL Server 2005
O SQL Server pode usar a autenticação Kerberos para clusters de servidor. Você pode usar a autenticação Kerberos com computadores autônomos que estão executando o SQL Server ou com instâncias do SQL Server em execução em um servidor virtual.
Se conectar a um servidor que está executando o Microsoft Internet Information Services e fazer uma conexão Kerberos para o SQL Server 2000
Esta seção descreve como conectar-se a um servidor que está executando o Microsoft (IIS) para fazer uma conexão Kerberos para um servidor que está executando o SQL Server.
Observação antes de executar o procedimento de instalação, baixe o Kerbtray e os utilitários SetSPN.
Para baixar o utilitário Kerbtray, visite o seguinte site:
Com KERBTRAY.exe, você pode facilmente verificar ou remover (ou ambos) tíquetes Kerberos de quaisquer computadores associados que estão sendo usados.
Para baixar o utilitário SetSPN, visite o seguinte site:
O procedimento a seguir fornece um exemplo de uma seqüência de instalação onde você usar a autenticação Kerberos por meio de uma página do IIS para acessar um servidor que está executando o SQL Server.
Etapa 1: Configurar o controlador de domínio
Em um controlador de domínio, no Active Directory Users and Computers:
- Clique com o botão direito do mouse o computador que você deseja configurar para delegação (servidor de serviços do IIS) e, em seguida, clique para selecionar Confiar no computador para delegação . Se o computador que está executando o SQL Server é o que parece ser o último computador contatado mas que o computador tem um servidor vinculado, ele deve também conceder permissões de delegação. Se não for o último computador na cadeia, todos os computadores que são intermediários devem ser confiáveis para delegação.
- Conceder permissão de delegação para a conta de usuário do SQL Server serviço conta de domínio. Você deve ter uma conta de usuário de domínio para instalações em cluster do SQL Server (essa etapa não é necessária para computadores que estão executando o SQL Server que estão usando uma conta de sistema local):
- Na pasta usuários , clique com o botão direito do mouse na conta de usuário e, em seguida, clique em Propriedades .
- Na caixa de diálogo de propriedades do conta de usuário, clique na guia conta .
- Em Opções de conta , clique em para selecionar o conta é confiável para delegação caixa de seleção. Verifique se a caixa de seleção conta é sigilosa e não pode ser delegada é desmarcada para esta conta.
Observação O direito 'Conta é confiável para delegação' é necessário para a conta de serviço do SQL Server somente quando você delega as credenciais do servidor SQL destino a um SQL server remoto, como em um cenário de salto duplo como consultas distribuídas (servidor vinculado consultas) usar a autenticação do Windows.
Observação Estas etapas se aplicam somente ao Windows 2000 Server. Se você estiver usando o Windows Server 2003, visite a seguinte site da Microsoft Developer Network (MSDN): - Use o utilitário Kerbtray.exe para verificar que Kerberos tíquetes recebidos do controlador de domínio e do host:
- Clique com o botão direito do ícone de Kerbtray na área de notificação e clique em remover permissões .
- Aguarde até que o ícone Kerbtray verde alterar de verde para amarelo. Assim que isso ocorrer, abra uma janela de prompt de comando e execute este comando:
net session * /d
Isso será soltar as sessões existentes e forçar uma nova sessão seja estabelecida e um tíquete Kerberos recebida.
Etapa 2: Configurar o servidor de serviços do IIS
- Substitua os arquivos de site Wwwroot padrão com os arquivos ASP de exemplo. Para criar os arquivos ASP de exemplo, use o código que é fornecido na seção "Teste de ASP script para recuperação de dados SQL Server".
- Adicione o arquivo para a pasta Wwwroot. Para fazer isso, use o código de exemplo na seção "ASP Test scripts para SQL Server recuperação de dados". Salve o arquivo como default.ASP.
- Reconfigurar o servidor Web para usar integrada do Windows somente autenticação:
- Clique com o botão direito do mouse o servidor Web padrão e clique em pasta Security.
- Na pasta segurança, faça as alterações corretas e, em seguida, clique para desmarcar acesso anônimo .
- Em um prompt de comando, execute este comando:
cscript C:\Inetpub\Adminscripts\adsutil.vbs obter w3svc/NTAuthenticationProviders
Se Negotiate for habilitada, será retornado o seguinte: NTAuthenticationProviders : (STRING) Negotiate,NTLM
Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft: 215383
(http://support.microsoft.com/kb/215383/
)
Como configurar o IIS para oferecer suporte ao protocolo Kerberos e o protocolo NTLM para autenticação de rede
anotações - Você deve instalar Microsoft Data Access (MDAC) 2.6 ou posterior, no servidor de serviços do IIS. Para fazer isso (e para disponibilizar as ferramentas para teste), instalar as ferramentas de cliente SQL Server 2000 para o servidor Web. Instalar apenas o MDAC 2.6 ou posterior (sem instalar as ferramentas de cliente), visite o seguinte site:
- O IIS é um sistema de camada intermediária comum. No entanto, o IIS não é o sistema camada intermediária somente. Se o IIS não estiver o sistema de camada intermediária em seu ambiente, execute as etapas apropriadas para seu sistema de camada intermediária.
- Verifique se o
HKLM\SW\MS\MSSQLSERVER\Client\DSQUERY
valor estiver presente no registro. Se o valor não for exibido, adicione-o como DSQUERY:Reg_SZ:DBNETLIB
. - Use o utilitário Kerbtray.exe para verificar que Kerberos tíquetes recebidos do controlador de domínio e do host:
- Clique com o botão direito do ícone de Kerbtray na área de notificação e clique em remover permissões .
- Aguarde até que o ícone Kerbtray verde alterar de verde para amarelo. Assim que isso ocorrer, abra uma janela de prompt de comando e execute este comando:
net session * /d
Isso será soltar as sessões existentes e forçar uma nova sessão seja estabelecida e um tíquete Kerberos recebida.
Etapa 3: Configurar o serviço SQL Server para criar dinamicamente SPNs
Para fazer isso, você deve conceder as seguintes configurações de controle de acesso para a conta de serviço do SQL Server no serviço de diretório do Active Directory:
- Ler servicePrincipalName
- Gravar servicePrincipalName
avisos - Se você usar o snap-in Active Directory Service Interfaces (ADSI) Edit, o utilitário LDP ou os clientes LDAP 3 e modificar incorretamente os atributos de objetos do Active Directory, ocorrer sérios problemas. Para resolver esses problemas, talvez seja necessário reinstalar o Microsoft Exchange 2000 Server ou Microsoft Exchange Server 2003. Em alguns casos, talvez você precise reinstalar o Microsoft Windows 2000 Server ou Microsoft Windows Server 2003 e reinstalar o Exchange 2000 Server ou Exchange Server 2003. Não garantimos que esses problemas possam ser resolvidos. Modificar estes atributos de sua responsabilidade.
- Você deve fazer logon como um administrador de domínio. Como alternativa, você deve peça ao administrador do domínio para conceder as permissões apropriadas e os direitos de usuário apropriado para a conta de inicialização do SQL Server.
Para configurar o serviço SQL Server para criar SPNs dinamicamente quando o serviço SQL Server é iniciado, execute essas etapas:
- Clique em Iniciar , clique em Executar , digite ADSIEdit.msc e, em seguida, clique em OK .
Observação O ADSIEdit ferramenta está incluída nas ferramentas de suporte do Windows. Para obter ferramentas de suporte do Windows, visite o seguinte site: - No snap-in ADSI Edit, expanda domínio [DomainName] , expanda DC = RootDomainName, expanda CN = usuários , clique com o botão direito do mouse CN = AccountName e em seguida, clique em Propriedades .
anotações - DomainNameé um espaço reservado para o nome do domínio.
- RootDomainNameé um espaço reservado para o nome do domínio raiz.
- AccountNameé um espaço reservado para a conta que você especificar para iniciar o serviço do SQL Server.
- Se você especificar a conta sistema local para iniciar o serviço SQL Server, o AccountName é um espaço reservado para a conta que você usa para fazer logon no Microsoft Windows.
- Se você especificar uma conta de usuário de domínio para iniciar o serviço do SQL Server, o AccountName é um espaço reservado para a conta de usuário de domínio.
- No CN = AccountName propriedades diálogo, clique na guia segurança .
- Na guia segurança , clique em Avançado .
- Na caixa de diálogo Configurações de segurança avançadas , verifique se que SELF está listado em entradas de permissão .
Se própria não estiver listado, clique em Adicionar e, em seguida, adicione própria . - Em entradas de permissão , clique em própria e, em seguida, clique em Editar .
- Na caixa de diálogo Entrada de permissão , clique na guia Propriedades .
- Na guia Propriedades , clique em somente este objeto na lista Aplicar em e clique para selecionar as caixas de seleção para as seguintes permissões em permissões :
- leitura servicePrincipalName
- gravar servicePrincipalName
- Clique duas vezes em OK .
Observação Para obter ajuda com esse processo, contate o suporte de produto do Active Directory e mencione neste artigo.
Observação Para usar a ferramenta dsacls para determinar se a conta auto tem a permissão de gravação ServicePrincipalName, use o comando dsacls . A seguir está a sintaxe: dsacls dsacls <distinguished_Name_of_service_account>
se a conta self tiver a permissão de gravação ServicePrincipalName, você verá a seguinte saída: nome Allow NT Authority\SELF SPECIAL ACCESS for Validated Write to Service principal name
WRITE PROPERTY
a ferramenta dsacls faz parte das ferramentas de suporte. - No CN = AccountName propriedades diálogo, clique em Editor de atributos .
- Em atributos , clique em servicePrincipalName na coluna atributos e, em seguida, clique em Editar .
- Na caixa de diálogo Editor de seqüência Multi-valued , remova os nomes de princípio de serviço (SPNs) para as instâncias do SQL Server que usam essa conta de serviço do SQL Server.
Aviso Você só deve excluir os SPNs para as instâncias do SQL Server você está trabalhando atualmente. Outras instâncias do SQL Server que usam essa conta de serviço poderão remover os SPNs estão relacionados a essas instâncias na próxima vez que você inicia essas instâncias. - Feche o snap-in ADSI Edit.
Após seguir essas etapas, SPN problemas também são eliminados se você alterar a porta TCP/IP ou o nome de domínio para novas instalações do SQL Server 2005 ou para as instâncias existentes do SQL Server 2005.
Etapa 4: Configurar os computadores cliente
- Para cada cliente que irão se conectar, verifique se Microsoft Internet Explorer está configurado para usar a autenticação do Windows:
- No Internet Explorer, nas Ferramentas do menu, clique em Opções da Internet .
- Clique na guia Avançado .
- Em segurança , clique para selecionar Ativar autenticação integrada do Windows (requer reinicialização) e, em seguida, clique em OK .
Etapa 5: Testar a configuração
Para cada computador que está envolvido:
- Faça logon computador e use KERBTRAY.exe para verificar que o computador pode obter um tíquete Kerberos válido do controlador de domínio.
- Use KERBTRAY.exe para remover todas as permissões no computador.
- Criar e conectar a página da Web que retorna o SQL Server dados.
Observação Substitua SQLSERVERNAME pelo nome do computador que está executando o SQL Server: - Se os dados são retornados, esta página exibe o tipo de autenticação de negociação e os dados do SQL Server para o resultado de sp_helpdb procedimento armazenado que deve retornar uma lista dos bancos de dados no servidor que está sendo conectem através da página .ASP.
- Se você tiver auditoria ativada no SQL Server, no log do aplicativo você verá que a conexão é "confiável".
Script de teste do ASP para recuperação de dados SQL Server
Aqui está um script de teste do ASP para dados do SQL Server. Se você usar este exemplo de código, certifique-se que você substitua
SQLSERVERNAME pelo nome do computador que está executando o SQL Server.
<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%="'auth_user' is" & request.servervariables("auth_user")%>
<P>
<%="'auth_type' is" & request.servervariables("auth_type")%>
<P>
Connections string is <B>" Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=pubs;Data Source=SQLSERVERNAME </B>
<P>
<%
set rs = Server.CreateObject("ADODB.Recordset")
set cn = Server.CreateObject("ADODB.Connection")
cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=pubs;Data Source=SQLSERVERNAME"
rs.open "MASTER..sp_helpdb",cn
Response.Write cstr(rs.Fields.Count) +"<BR>"
while not rs.EOF
Response.Write cstr(rs(0))+"<BR>"
rs.MoveNext
wend
rs.Close
cn.Close
set rs = nothing ' Frees memory reserved by the recordset.
set cn = nothing ' Frees memory reserved by the connection.
%>
</BODY>
</HTML>
Como obter uma lista de informações de nome de princípio de servidor do Active Directory
Para obter uma lista de informações de nome principal (SPN) do servidor do Active Directory, digite o comando a seguir em um dos controladores de domínio, onde
betaland é o nome de domínio NetBIOS e
NewoutputUsers.txt é o nome do arquivo de saída que você usará a porta os resultados. Se você não usar um caminho completo, o arquivo é colocado na pasta atual em que você executar a linha de comando. Este comando de exemplo consulta o domínio inteiro:
Ldifde -d "CN = Users, DC = betaland" servicePrincipalName -l -F NewoutputUsers .txt
essa sintaxe cria um arquivo chamado NewoutputUsers.txt contém informações que é semelhantes à saída na seção "Domínio saída nível de NewouputUsers.txt" deste artigo.
Essa saída pode ser difícil quando você reunir para um domínio inteiro. Portanto, para limitar as informações coletadas para um nome de usuário específico, use a seguinte sintaxe, onde
User Name é o nome de usuário e
betaland é o domínio que você está consultando:
ldifde -d "CN = User Name, DC = betaland" servicePrincipalName -l -F NewoutputUsers .txt
Obter as informações para um usuário específico bastante reduz os dados que você deve pesquisar. Se você coletar as informações para um domínio inteiro, procure o nome de usuário específico do servidor em questão. No exemplo de saída, você verá:
- Entradas para servidores que não existem, mas que não foram completamente removidos do Active Directory.
- O usuário "User Name" possui informações de SPN válidas sobre dez servidores diferentes.
Além disso, você pode usar o serviço do Active Directory ferramenta interfaces (ADSI) para corrigir as entradas do Active Directory que não são válidas.
Aviso Se você usar o snap-in ADSI Edit, o utilitário LDP, ou qualquer outro cliente LDAP versão 3 e modificar incorretamente os atributos de objetos do Active Directory, você pode causar problemas sérios. Esses problemas podem exigir que você reinstalar o Microsoft Windows 2000 Server, Microsoft Windows Server 2003, Microsoft Exchange 2000 Server, Microsoft Exchange Server 2003, ou o Windows e Exchange. A Microsoft não garante que os problemas que ocorrem se você modificar incorretamente atributos de objeto do Active Directory possam ser solucionados. Modificar estes atributos de sua responsabilidade.
Saída de nível de domínio de NewouputUsers.txt
dn: CN=User Name,CN=Users,DC=betaland
changetype: add
servicePrincipalName: MSSQLSvc/CLUSTERDEFAULT.betaland:1257
servicePrincipalName: MSSQLSvc/INST3.betaland:3616
servicePrincipalName: MSSQLSvc/INST2.betaland:3490
servicePrincipalName: MSSQLSvc/SQLMAN.betaland:1433
servicePrincipalName: MSSQLSvc/VSS1.betaland:1433
servicePrincipalName: MSSQLSvc/INST1.betaland:2536
servicePrincipalName: MSSQLSvc/INST4.betaland:3967
servicePrincipalName: MSSQLSvc/SQLVIRTUAL1.betaland:1434
servicePrincipalName: MSSQLSvc/SQLVIRTUAL.betaland:1433
servicePrincipalName: MSSQLSvc/SQLBUSTER.betaland:1315
Para obter mais informações sobre delegação de conta de segurança, consulte o tópico "Delegação de conta de segurança" nos manuais online do SQL Server.
Para obter mais informações, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
262177
(http://support.microsoft.com/kb/262177/
)
Como habilitar o log de evento Kerberos
321708
(http://support.microsoft.com/kb/321708/
)
Como usar a ferramenta de diagnóstico de rede (Netdiag.exe) no Windows 2000
326985
(http://support.microsoft.com/kb/326985/
)
Como solucionar problemas relacionados ao Kerberos no IIS
244474
(http://support.microsoft.com/kb/244474/
)
Como forçar o Kerberos para usar TCP em vez de UDP no Windows Server 2003, no Windows XP e no Windows 2000