Usar o logon único Kerberos de SSO para SAP BW usando CommonCryptoLib (sapcrypto.dll)
Este artigo descreve como configurar sua fonte de dados do SAP BW para habilitar o SSO (logon único) do serviço do Power BI usando CommonCryptoLib (sapcrypto.dll).
Observação
Antes de tentar atualizar um relatório baseado no SAP BW que usa o SSO Kerberos, conclua as etapas neste artigo e as etapas em Configurar o SSO baseado em Kerberos. O uso do CommonCryptoLib como sua biblioteca SNC (Secure Network Communications) permite conexões SSO com servidores de aplicativos SAP BW e servidores de mensagens SAP BW.
Observação
A configuração de ambas as bibliotecas (sapcrypto e gx64krb5) no mesmo servidor de gateway é um cenário sem suporte. Não é recomendável configurar ambas as bibliotecas no mesmo servidor de gateway, pois isso levará a uma mistura de bibliotecas. Se quiser usar as duas bibliotecas, separe totalmente o servidor de gateway. Por exemplo, configure gx64krb5 para o servidor A e sapcrypto para o servidor B. Lembre-se de que não há suporte para falhas no servidor A que usa gx64krb5, pois gx64krb5 não tem mais suporte do SAP e da Microsoft.
Configurar o SAP BW para habilitar o SSO usando a CommonCryptoLib
Observação
O gateway de dados local é um software de 64 bits e, portanto, exige a versão de 64 bits da CommonCryptoLib (sapcrypto.dll) para realizar o SSO do BW. Se planeja testar a conexão do SSO com o servidor SAP BW na GUI do SAP antes de tentar uma conexão SSO por meio do gateway (recomendado), também precisará da versão de 32 bits da CommonCryptoLib, pois a GUI do SAP é um software de 32 bits.
Verifique se o servidor BW está configurado corretamente para o SSO do Kerberos usando CommonCryptoLib. Se estiver, você poderá usar o SSO para acessar o servidor BW (seja diretamente ou por meio de um Servidor de Mensagens do SAP BW) com uma ferramenta do SAP como a GUI do SAP que tenha sido configurada para usar CommonCryptoLib.
Confira mais informações sobre as etapas de configuração em Logon único do SAP: autenticar com Kerberos/SPNEGO. O servidor BW deve usar CommonCryptoLib como biblioteca SNC e ter um nome SNC que comece com CN=, como em CN=BW1. Para obter mais informações sobre os requisitos de nome do SNC (especificamente com o parâmetro snc/identity/as), confira Parâmetros do SNC para configuração do Kerberos.
Se ainda não tiver feito isso, instale a versão x64 do SAP .NET Connector no computador em que o gateway foi instalado.
Verifique se o componente foi instalado tentando se conectar ao servidor do BW no Power BI Desktop por meio do computador do gateway. Se você não puder se conectar usando a implementação 2.0, o .NET Connector não está instalado ou não foi instalado no cache de assembly global.
Verifique se o SLC (Cliente de Logon Seguro) do SAP não está em execução no computador em que o gateway está instalado.
O SLC armazena em cache os tíquetes do Kerberos de um modo que pode interferir na capacidade do gateway de usar o Kerberos para SSO.
Se o SLC estiver instalado, desinstale-o ou saia do cliente de logon seguro do SAP. Clique com o botão direito do mouse sobre o ícone na bandeja do sistema e selecione Fazer logoff e Sair antes de tentar uma conexão com o SSO usando o gateway.
O SLC não é compatível para uso em computadores que operam com o Windows Server. Para saber mais, confira Nota SAP 2780475 (usuário s necessário).
Se você desinstalar o SLC ou selecionar Fazer logoff e Sair, abra uma janela de comando e insira
klist purge
para limpar eventuais tíquetes do Kerberos armazenados em cache antes de tentar uma conexão com o SSO por meio do gateway.Baixe o CommonCryptoLib (sapcrypto.dll) na versão 8.5.25 ou posterior de 64 bits do SAP Launchpad e copie-o em uma pasta do computador do gateway. No mesmo diretório em que você copiou sapcrypto.dll, crie um arquivo chamado sapcrypto.ini, com o seguinte conteúdo:
ccl/snc/enable_kerberos_in_client_role = 1
O arquivo .ini contém informações de configuração necessárias do CommonCryptoLib para habilitar o SSO no cenário de gateway.
Observação
Esses arquivos devem ser armazenados no mesmo local; em outras palavras, /path/to/sapcrypto/ precisa conter sapcrypto.ini e sapcrypto.dll.
O usuário de serviço do gateway e o usuário do AD (Active Directory) que o usuário do serviço representa precisam de permissões de leitura e execução para ambos os arquivos. É recomendável conceder permissões para os arquivos .ini e .dll ao Grupo de usuários autenticados. Para fins de teste, você também pode conceder explicitamente essas permissões ao usuário do serviço de gateway e ao usuário do AD que você usa para teste. Na captura de tela a seguir, concedemos ao grupo Usuários Autenticados permissões de Leitura e execução para sapcrypto.dll:
Se você ainda não tiver uma fonte de dados do SAP BW associada ao gateway pelo qual deseja que a conexão SSO flua, adicione uma na página Gerenciar Conexões e Gateways no serviço do Power BI. Se você já tiver essa fonte de dados, edite-a:
- Escolha SAP Business Warehouse como o Tipo de Fonte de Dados caso você queira criar uma conexão SSO para um servidor de aplicativos BW.
- Escolha o Servidor de mensagens do SAP Business Warehouse caso você queira criar uma conexão SSO para um servidor de aplicativos do BW.
Na Biblioteca SNC, selecione a variável de ambiente SNC_LIB ou SNC_LIB_64, ou Personalizado.
Se você selecionar SNC_LIB, precisará definir o valor da variável de ambiente SNC_LIB_64 no computador do gateway como o caminho absoluto da cópia de 64 bits de sapcrypto.dll no computador do gateway. Por exemplo, C:\Users\Test\Desktop\sapcrypto.dll.
Se você escolher Personalizado, cole o caminho absoluto em sapcrypto.dll, no campo Caminho da Biblioteca SNC Personalizada, exibido na página Gerenciar gateways.
Como o Nome do Parceiro SNC, insira o nome da SNC do servidor BW. Em Configurações avançadas, verifique se a opção Usar SSO via Kerberos para consultas do DirectQuery está marcada. Preencha os outros campos como se estivesse estabelecendo uma conexão de autenticação do Windows do PBI desktop.
Crie uma variável de ambiente do sistema CCL_PROFILE e defina o valor como o caminho para sapcrypto.ini.
Os arquivos sapcrypto.dll e .ini devem existir no mesmo local. No exemplo acima, sapcrypto.ini e sapcrypto.dll estão localizados na área de trabalho.
Reinicie o serviço do gateway.
Solução de problemas
Se não for possível atualizar o relatório no serviço do Power BI, use o rastreamento de gateway, CPIC e CommonCryptoLib para diagnosticar o problema. Como o rastreamento CPIC e o CommonCryptoLib são produtos do SAP, a Microsoft não pode oferecer suporte para eles.
Logs do gateway
Reproduza o problema.
Abra o aplicativo do gateway e selecione Exportar logs na guia Diagnóstico.
Rastreamento CPIC
Para habilitar o rastreamento CPIC, defina duas variáveis de ambiente: CPIC_TRACE e CPIC_TRACE_DIR.
A primeira variável define o nível de rastreamento e a segunda define o diretório do arquivo de rastreamento. O diretório deve ser um local onde os membros do grupo Usuários Autenticados possam gravar.
Defina CPIC_TRACE como 3 e CPIC_TRACE_DIR como qualquer diretório em que você deseja gravar os arquivos de rastreamento. Por exemplo:
Reproduza o problema e verifique se CPIC_TRACE_DIR contém arquivos de rastreamento.
O rastreamento de CPIC pode diagnosticar problemas de nível superior, como uma falha ao carregar a biblioteca sapcrypto.dll. Por exemplo, aqui está um trecho de um arquivo de rastreamento CPIC em que ocorreu um erro de carregamento .dll:
[Thr 7228] *** ERROR => DlLoadLib()==DLENOACCESS - LoadLibrary("C:\Users\test\Desktop\sapcrypto.dll") Error 5 = "Access is denied." [dlnt.c 255]
Se você encontrar essa falha, mas tiver definido as permissões Ler e Executar em sapcrypto.dll e sapcrypto.ini, conforme descrito na seção acima, tente definir as mesmas permissões Ler e Executar na pasta que contém os arquivos.
Se, mesmo assim, não conseguir carregar o arquivo .dll, tente ativar a auditoria para o arquivo. Examine os logs de auditoria resultantes no Visualizador de Eventos do Windows para ajudar a determinar porque o upload do arquivo está falhando. Procure uma entrada de falha iniciada pelo usuário do AD representado. Por exemplo, para o usuário representado
MYDOMAIN\mytestuser
, uma falha no log de auditoria seria semelhante a esta:A handle to an object was requested. Subject: Security ID: MYDOMAIN\mytestuser Account Name: mytestuser Account Domain: MYDOMAIN Logon ID: 0xCF23A8 Object: Object Server: Security Object Type: File Object Name: <path information>\sapcrypto.dll Handle ID: 0x0 Resource Attributes: - Process Information: Process ID: 0x2b4c Process Name: C:\Program Files\On-premises data gateway\Microsoft.Mashup.Container.NetFX45.exe Access Request Information: Transaction ID: {00000000-0000-0000-0000-000000000000} Accesses: ReadAttributes Access Reasons: ReadAttributes: Not granted Access Mask: 0x80 Privileges Used for Access Check: - Restricted SID Count: 0
Rastreamento de CommonCryptoLib
Ative o rastreamento de CommonCryptoLib adicionando essas linhas ao arquivo sapcrypto.ini criado anteriormente:
ccl/trace/level=5 ccl/trace/directory=<drive>:\logs\sectrace
Altere a opção
ccl/trace/directory
para um local em que os membros do grupo de Usuários Autenticados possam gravar.Como alternativa, crie um arquivo .ini para alterar esse comportamento. No mesmo diretório que sapcrypto.ini e sapcrypto.dll, crie um arquivo chamado sectrace.ini com o conteúdo a seguir. Substitua a opção
DIRECTORY
por um local no computador em que os membros do grupo Usuários Autenticados possam gravar:LEVEL = 5 DIRECTORY = <drive>:\logs\sectrace
Reproduza o problema e verifique se a localização apontada por DIRECTORY contém arquivos de rastreamento.
Ao terminar, desative o rastreamento CPIC e CCL.
Para obter mais informações sobre o rastreamento de CommonCryptoLib, confira Nota SAP 2491573 (usuário s SAP necessário).
Representação
Esta seção descreve os sintomas de solução de problemas e as etapas de resolução para problemas de representação.
Sintoma: ao examinar o GatewayInfo[date].log, você encontrará uma entrada semelhante à seguinte: Prestes a representar DOMÍNIO\Usuário (IsAuthenticated: True, ImpersonationLevel: Impersonation) . Se o valor de ImpersonationLevel for diferente de Impersonation, a representação não está acontecendo corretamente.
Resolução: siga as etapas do artigo Conceder à conta de serviço do gateway direitos de política local no computador do gateway. Reinicie o serviço de gateway depois de alterar a configuração.
Validação: atualize ou crie o relatório e colete o GatewayInfo[date].log. Abra o arquivo de log GatewayInfo mais recente e verifique novamente a cadeia de caracteres Prestes a representar o usuário DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation) para garantir que o valor de ImpersonationLevel corresponda a Impersonation.
Delegação
Os problemas de delegação geralmente aparecem no serviço do Power BI como erros genéricos. Para determinar se a delegação é o problema, é útil coletar os rastreamentos do Wireshark e usar o Kerberos como filtro. Para referência de erros Kerberos, consulte esta postagem no blog. O restante desta seção descreve os sintomas de solução de problemas e as etapas de resolução para problemas de delegação.
Sintoma: no serviço do Power BI, você pode encontrar um erro inesperado semelhante ao da captura de tela a seguir. Em GatewayInfo[date].log você verá [DM.GatewayCore] ingerindo uma exceção durante a tentativa de execução da consulta do ADO para clientPipelineId e a importação [0D_NW_CHANN] não corresponde a nenhuma exportação.
No Mashup[date].log, você vê o erro genérico GSS-API(maj): nenhuma credencial foi fornecida.
Examinando os rastreamentos CPIC (sec-Microsoft.Mashup.trc*), você verá algo semelhante ao seguinte:
[Thr 4896] *** ERROR => SncPEstablishContext() failed for target='p:CN=BW5' [sncxxall.c 3638]
[Thr 4896] *** ERROR => SncPEstablishContext()==SNCERR_GSSAPI [sncxxall.c 3604]
[Thr 4896] GSS-API(maj): No credentials were supplied
[Thr 4896] Unable to establish the security context
[Thr 4896] target="p:CN=BW5"
[Thr 4896] <<- SncProcessOutput()==SNCERR_GSSAPI
[Thr 4896]
[Thr 4896] LOCATION CPIC (TCP/IP) on local host HNCL2 with Unicode
[Thr 4896] ERROR GSS-API(maj): No credentials were supplied
[Thr 4896] Unable to establish the security context
[Thr 4896] target="p:CN=BW5"
[Thr 4896] TIME Thu Oct 15 20:49:31 2020
[Thr 4896] RELEASE 721
[Thr 4896] COMPONENT SNC (Secure Network Communication)
[Thr 4896] VERSION 6
[Thr 4896] RC -4
[Thr 4896] MODULE sncxxall.c
[Thr 4896] LINE 3604
[Thr 4896] DETAIL SncPEstablishContext
[Thr 4896] SYSTEM CALL gss_init_sec_context
[Thr 4896] COUNTER 3
[Thr 4896]
[Thr 4896] *** ERROR => STISEND:STISncOut failed 20 [r3cpic.c 9834]
[Thr 4896] STISearchConv: found conv without search
O erro fica mais claro nas seções da máquina gateway sec-Microsoft.Mashup.Con-[].trc:
[2020.10.15 20:31:38.396000][4][Microsoft.Mashup.Con][Kerberos ][ 3616] AcquireCredentialsHandleA called successfully.
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] InitializeSecurityContextA returned -2146893053 (0x80090303). Preparation for kerberos failed!
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Getting kerberos ticket for 'SAP/BW5' failed (user name is affonso_v@HANABQ.COM)
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Error for requested algorithm 18: 0/C000018B The security database on the server does not have a computer account for this workstation trust relationship.
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Error for requested algorithm 17: 0/C000018B The security database on the server does not have a computer account for this workstation trust relationship.
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Error for requested algorithm 23: 0/C000018B The security database on the server does not have a computer account for this workstation trust relationship.
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Error for requested algorithm 3: 0/C000018B The security database on the server does not have a computer account for this workstation trust relationship.
Você também poderá ver o problema se examinar os rastreamentos de WireShark.
Observação
Os outros erros KRB5KDC_ERR_PREAUTH_REQUIRED podem ser ignorados com segurança.
Resolução: adicione um SPN SAP/BW5 a uma conta de serviço. Informações e etapas detalhadas estão disponíveis na documentação do SAP.
Você pode encontrar um erro semelhante, mas não idêntico, que se manifesta nos rastreamentos do WireShark como o seguinte erro KRB5KDC_ERR_BADOPTION:
Esse erro indica que o SPN SAP/BW5 pode ser encontrado, mas não está em Serviços para os quais essa conta pode apresentar credenciais delegadas na guia Delegação da conta de serviço do gateway. Para corrigir esse problema, siga as etapas em Configurar a conta de serviço do gateway para delegação restrita de Kerberos padrão.
Validação: A configuração adequada evitará que erros genéricos ou inesperados sejam apresentados pelo gateway. Se você ainda vir erros, verifique a configuração do próprio gateway ou a configuração do servidor BW.
Erros de credenciais
Esta seção descreve os sintomas de solução de problemas e as etapas de resolução para problemas de erros de credenciais. Você também pode ver erros genéricos do serviço do Power BI, conforme descrito na seção anterior sobre delegação.
Há diferentes soluções com base nos sintomas que você observar na fonte de dados (SAP BW), portanto, revisaremos ambos.
Sintoma 1: No arquivo sectraces sec-disp+work[].trc do BW Server, você vê traços semelhantes aos seguintes:
[2020.05.26 14:21:28.668325][4][disp+work ][SAPCRYPTOLIB][435584] { gss_display_name [2020.05.26 14:21:28.668338][4][disp+work ][GSS ][435584] gss_display_name output buffer (41 bytes) [2020.05.26 14:21:28.668338][4][disp+work ][GSS ][435584] CN=DAVID@XS.CONTOSO.COM@CONTOSO.COM
Resolução: conclua as etapas de configuração para definir parâmetros de configuração de mapeamento de usuário no computador do gateway, se necessário. Você precisará concluir essas etapas mesmo que já tenha o Microsoft Entra Connect configurado.
Validação: você poderá carregar o relatório com êxito no serviço do Power BI. Se você não conseguir carregar o relatório, consulte as etapas no Sintoma 2.
Sintoma 2: No arquivo sectraces sec-disp+work[].trc do BW Server, você vê traços semelhantes aos seguintes:
[2020.10.19 23:10:15.469000][4][disp+work.EXE ][SAPCRYPTOLIB][ 4460] { gss_display_name
[2020.10.19 23:10:15.469000][4][disp+work.EXE ][GSS ][ 4460] gss_display_name output buffer (23 bytes)
[2020.10.19 23:10:15.469000][4][disp+work.EXE ][GSS ][ 4460] CN=DAVID@CONTOSO.COM
Resolução: verifique se a ID externa do Kerberos para o Usuário corresponde ao que os sectraces estão mostrando.
- Abra o Logon do SAP.
- Use a transação SU01.
- Edite o usuário.
- Navegue até a guia SNC e verifique se o nome do SNC corresponde ao que é mostrado em seus logs.
Validação: quando concluída corretamente, você poderá criar e atualizar relatórios no serviço do Power BI.
Conteúdo relacionado
Para saber mais sobre o gateway de dados local e o DirectQuery, confira estes recursos: