Dupla Custódia de senhas é algo comum em ambientes de produção. A manutenção de dupla custódia de senhas sempre irá envolver ambos os possuidores de suas respectivas metades. Obviamente num caso de troca de senhas o possuidor da metade esquerda não pode tomar conhecimento do conteúdo da metade direita e vice-versa.
Hoje tive que enfrentar um problema interessante: Como trocar uma senha de dupla custódia se a aplicação somente executa a troca de senha numa janela CMD?
Este problema aconteceu para a troca de senhas do usuário do Reporting Services. O Reporting Services possui o utilitário rsconfig para a manutenção do usuário e senha do serviço do Reporting Services. O rsconfig deve ser executado numa janela CMD que em caso de senha de dupla custódia permitiria a plena visualização da senha.
Como solução fiz um Wscript para a troca de senha onde é possível digitar cada metade da senha sem ninguem tomar conhecimento da metade do outro.
Segue o código do Wscript para os interessados:
'Script para fazer a troca de usuário e senha do Reporting Services caso
'a senha esteja em dupla custódia
'Criado por: Carlos Eduardo Selonke de Souza
'http://carlos.geekbunker.org
Wscript.StdOut.Write "Digite 1 para Teste e 2 para Executar o comando: "
strTest = Wscript.StdIn.ReadLine
If strTest <> 1 and strTest <> 2 Then
wscript.Echo "VocÊ digitou uma opção inválida: " &strTest
Wscript.Quit
End If
WSCRIPT.ECHO vbcrlf
Wscript.StdOut.Write "Digite o nome do servidor do Reporting Services: "
strServer = Wscript.StdIn.ReadLine
WSCRIPT.ECHO vbcrlf
Wscript.StdOut.Write "Digite o nome do banco de dados do Reporting Services: "
strDatabase = Wscript.StdIn.ReadLine
WSCRIPT.ECHO vbcrlf
Wscript.StdOut.Write "Digite o nome do usuário Windows: "
strUser = Wscript.StdIn.ReadLine
WSCRIPT.ECHO vbcrlf
Set objPasswordLeft = CreateObject("ScriptPW.Password")
WScript.StdOut.Write "Digite a senha da Esquerda:"
strPasswordLeft = objPasswordLeft.GetPassword()
WSCRIPT.ECHO vbcrlf
Set objPasswordRight = CreateObject("ScriptPW.Password")
WScript.StdOut.Write "Digite a senha da Direita:"
strPasswordRight = objPasswordRight.GetPassword()
WSCRIPT.ECHO vbcrlf
cmd = "rsconfig -c -s " & strServer & " -d " & strDatabase & " -a windows -u " &strUser &" -p " & strPasswordLeft&strPasswordRight
If strTest = "1" Then
WSCRIPT.ECHO vbcrlf
Wscript.Echo
Wscript.Echo "Senha da Esquerda : " & strPasswordLeft
Wscript.Echo "Senha da Direita : " & strPasswordRight
Wscript.Echo "Senha Completa : " & strPasswordLeft&strPasswordRight
WSCRIPT.ECHO vbcrlf
Wscript.Echo "Comando que será executado:"
Wscript.Echo cmd
Wscript.Quit
End If
If strTest = "2" Then
set oshell = CreateObject("wscript.shell")
oShell.Run("%comspec% /c " &cmd), 0, True
Wscript.Quit
End If
'Fim do Script
Esperar...Esperar...sem desesperar!

A configuração do Trusted Delegation nos SQL Servers permite que os servidores SQL Servers "passem" o ticket de autenticação de uma conta de Domínio.
A configuração do Trusted Delegation também é uma solução para os erros "Cannot Generate SSPI Context".
Uma das maiores vantagens de configurar o Trusted Delegation entre os SQL Servers é a possibilidade de utilizar contas de Domínio em Linked Servers.
Para configurar um servidor SQL Server para utilizar o Trusted Delegation você deve seguir os passos abaixo:
1) O serviço do SQL Server deve ser executado com uma conta do Domínio. Leio o link How to change service accounts on a SQL virtual server
2) Configurar no Active Directory a conta utilizada para a execução do serviço do SQL Server com as opções:
a. Account is sensitive and cannot be delegated - não deve estar selecionada.
b. Account is trusted for delegation - deve estar selecionada.
3) Configurar no Active Directory a propriedade do computador que executa o serviço do SQL Server.
a. Computer is trusted for delegation - deve estar selecionado.
4) Executar o comando setspn.exe no servidor Controlador de Domínio. O comando setspn.exe pode ser obtido no link http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/setspn-o.asp
Execute o comando setspn.exe colocando o nome do servidor completo (FQDN) e a conta que executa o serviço do SQL Server.
setspn -A MSSQLSvc/ SERVIDOR.DOMINIO.COM.BR:1433 DOMINIO\Conta_Executa_SQL
Pronto! O SQL Server está configurado para "passar" o ticket de autenticação de contas de Domínio.
Informações detalhadas e explicações técnicas podem ser encontradas nos links abaixo:
1) Como solucionar a mensagem de erro "Não é possível gerar contexto SSPI"
2) Security Account Delegation
Meu SQL 2000 SP4 Beta em Cluster já está rodando. Devo iniciar os testes com o SP4 Beta na semana que vem.

Atenção na imagem para o @@version do SQL ;)
Consegui instalar o Virtual Server 2005 e criar um Cluster do Windows 2003.
Vou salvar as Virtual Machines para poder usar este cluster nos testes do SQL SP4 Beta e no SQL 2005 Beta 2.
Eu me basei na documentação do link abaixo para instalar e configurar um cluster com dois nós no Virtual Server 2005.
Using Microsoft Virtual Server 2005 to Create and Configure a Two-Node Microsoft Windows Server 2003 Cluster
Se o tempo permitir pretendo fazer um documento em portugues explicando como criar o cluster e instalar o SQL 2000 em cluster.