Partilhar via


Usar o logon único Kerberos para SSO para SAP BW usando CommonCryptoLib (sapcrypto.dll)

Este artigo descreve como configurar sua fonte de dados SAP BW para habilitar o logon único (SSO) do serviço Power BI usando CommonCryptoLib (sapcrypto.dll).

Nota

Antes de tentar atualizar um relatório baseado em SAP BW que usa SSO Kerberos, conclua as etapas neste artigo e as etapas em Configurar SSO baseado em Kerberos. O uso do CommonCryptoLib como sua biblioteca SNC (Secure Network Communications) permite conexões SSO com SAP BW Application Servers e SAP BW Message Servers.

Nota

Configurar ambas as bibliotecas (sapcrypto e gx64krb5) no mesmo servidor gateway é um cenário sem suporte. Não é recomendável configurar ambas as bibliotecas no mesmo servidor gateway, pois isso levará a uma combinação de bibliotecas. Se você quiser usar ambas as bibliotecas, separe totalmente o servidor gateway. Por exemplo, configure gx64krb5 para o servidor A e, em seguida, sapcrypto para o servidor B. Lembre-se de que qualquer falha no servidor A que usa gx64krb5 não é suportada, pois gx64krb5 não é mais suportado pela SAP e Microsoft.

Configurar o SAP BW para habilitar o SSO usando CommonCryptoLib

Nota

O gateway de dados local é um software de 64 bits e, portanto, requer a versão de 64 bits do CommonCryptoLib (sapcrypto.dll) para executar o SSO BW. Se você planeja testar a conexão SSO com seu servidor SAP BW no SAP GUI antes de tentar uma conexão SSO através do gateway (recomendado), você também precisará da versão de 32 bits do CommonCryptoLib, pois o SAP GUI é um software de 32 bits.

  1. Verifique se o servidor BW está configurado corretamente para Kerberos SSO usando CommonCryptoLib. Se estiver, você pode usar o SSO para acessar seu servidor BW (diretamente ou por meio de um servidor de mensagens SAP BW) com uma ferramenta SAP como SAP GUI que foi configurada para usar CommonCryptoLib.

    Para obter mais informações sobre as etapas de configuração, consulte SAP Single Sign-On: Authenticate with Kerberos/SPNEGO. Seu servidor BW deve usar CommonCryptoLib como sua biblioteca SNC e ter um nome SNC que começa com CN=, como CN=BW1. Para obter mais informações sobre os requisitos de nome SNC (especificamente, o parâmetro snc/identity/as), consulte Parâmetros SNC para configuração Kerberos.

  2. Se ainda não tiver feito isso, instale a versão x64 do SAP .NET Connector no computador em que o gateway foi instalado.

    Você pode verificar se o componente foi instalado tentando se conectar ao seu servidor BW no Power BI Desktop a partir do computador 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.

  3. Certifique-se de que o Secure Login Client (SLC) do SAP não está em execução no computador onde o gateway está instalado.

    O SLC coloca os pedidos do Kerberos em cache de uma forma que pode interferir com a capacidade do gateway utilizar o Kerberos para SSO.

  4. Se o SLC estiver instalado, desinstale-o ou certifique-se de sair do SAP Secure Login Client. Clique com o botão direito do mouse no ícone na bandeja do sistema e selecione Sair e Sair antes de tentar uma conexão SSO usando o gateway.

    SLC não é suportado para uso em máquinas Windows Server. Para obter mais informações, consulte SAP Note 2780475 (s-user required).

    Cliente SAP Secure Login

  5. Se você desinstalar o SLC ou selecionar Sair e Sair, abra uma janela cmd e entre klist purge para limpar todos os tíquetes Kerberos armazenados em cache antes de tentar uma conexão SSO através do gateway.

  6. Transfira o CommonCryptoLib (sapcrypto.dll) de 64 bits versão 8.5.25 ou superior a partir do SAP Launchpad e copie-o para uma pasta no seu computador gateway. No mesmo diretório onde 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 exigidas pelo CommonCryptoLib para habilitar o SSO no cenário de gateway.

    Nota

    Esses arquivos devem ser armazenados no mesmo local; Em outras palavras, /path/to/sapcrypto/ deve conter sapcrypto.ini e sapcrypto.dll.

    Tanto o utilizador do serviço de gateway como o utilizador do Active Directory (AD) que o utilizador de serviço representam precisam de permissões de leitura e execução para ambos os ficheiros. Recomendamos conceder permissões nos arquivos .ini e .dll ao grupo 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:

    Utilizadores autenticados

  7. Se você ainda não tiver uma fonte de dados 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 se quiser criar uma conexão SSO com um BW Application Server.
    • Selecione Sap Business Warehouse Message Server se quiser criar uma conexão SSO com um BW Message Server.
  8. Para Biblioteca SNC, selecione a variável de ambiente SNC_LIB ou SNC_LIB_64 ou Personalizada.

    • Se você selecionar SNC_LIB, deverá definir o valor da variável de ambiente SNC_LIB_64 na máquina de gateway para o caminho absoluto da cópia de 64 bits de sapcrypto.dll na máquina de gateway. Por exemplo, C:\Users\Test\Desktop\sapcrypto.dll.

    • Se você escolher Personalizado, cole o caminho absoluto para sapcrypto.dll no campo Caminho da Biblioteca SNC Personalizada que aparece na página Gerenciar gateways .

  9. Para SNC Partner Name, insira o SNC Name do servidor BW. Em Configurações avançadas, verifique se a opção Usar SSO via Kerberos para consultas DirectQuery está marcada. Preencha os outros campos como se estivesse a estabelecer uma ligação de Autenticação do Windows a partir do PBI Desktop.

  10. Crie uma variável de ambiente do sistema CCL_PROFILE e defina seu valor para o caminho a ser sapcrypto.ini.

    CCL_PROFILE variável de ambiente do sistema

    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.

  11. Reinicie o serviço de gateway.

    Reiniciar o serviço de gateway

  12. Executar um relatório do Power BI

Resolução de Problemas

Se não conseguir atualizar o relatório no serviço do Power BI, pode utilizar o rastreio de gateway, o rastreio CPIC e o rastreio CommonCryptoLib para diagnosticar o problema. Como o rastreamento CPIC e o CommonCryptoLib são produtos SAP, a Microsoft não pode fornecer suporte para eles.

Logs de gateway

  1. Reproduza o problema.

  2. Abra o aplicativo de gateway e selecione Exportar logs na guia Diagnóstico .

    Exportar logs de gateway

Rastreio CPIC

  1. 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 variável define o diretório do arquivo de rastreamento. O diretório deve ser um local no qual os membros do grupo Usuários Autenticados possam gravar.

  2. Defina CPIC_TRACE como 3 e CPIC_TRACE_DIR para qualquer diretório no qual você deseja que os arquivos de rastreamento sejam gravados. Por exemplo:

    Rastreio CPIC

  3. Reproduza o problema e verifique se CPIC_TRACE_DIR contém arquivos de rastreamento.

    O rastreamento CPIC pode diagnosticar problemas de nível superior, como uma falha ao carregar a biblioteca de sapcrypto.dll. Por exemplo, aqui está um trecho de um arquivo de rastreamento CPIC onde ocorreu um erro de carregamento de .dll:

    [Thr 7228] *** ERROR => DlLoadLib()==DLENOACCESS - LoadLibrary("C:\Users\test\Desktop\sapcrypto.dll")
    Error 5 = "Access is denied." [dlnt.c       255]
    

    Se você encontrar tal falha, mas tiver definido as permissões Ler & Executar em sapcrypto.dll e sapcrypto.ini conforme descrito na seção acima, tente definir as mesmas permissões Ler & Executar na pasta que contém os arquivos.

    Se ainda não conseguir carregar o .dll, tente ativar a auditoria para o arquivo. Examinar os logs de auditoria resultantes no Visualizador de Eventos do Windows pode ajudá-lo a determinar por que o arquivo está falhando ao carregar. Procure uma entrada de falha iniciada pelo usuário do AD representado. Por exemplo, para o usuário MYDOMAIN\mytestuser representado, uma falha no log de auditoria seria mais ou menos assim:

    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 CommonCryptoLib

  1. Ative o rastreamento CommonCryptoLib adicionando estas linhas ao arquivo sapcrypto.ini criado anteriormente:

    ccl/trace/level=5
    ccl/trace/directory=<drive>:\logs\sectrace
    
  2. Altere a ccl/trace/directory opção para um local no qual os membros do grupo Usuários Autenticados possam gravar.

  3. Como alternativa, crie um novo arquivo de .ini para alterar esse comportamento. No mesmo diretório que sapcrypto.ini e sapcrypto.dll, crie um arquivo chamado sectrace.ini com o seguinte conteúdo. Substitua a DIRECTORY opção por um local na sua máquina no qual os membros do grupo Usuários Autenticados possam gravar:

    LEVEL = 5
    DIRECTORY = <drive>:\logs\sectrace
    
  4. Reproduza o problema e verifique se o local apontado pelo DIRECTORY contém arquivos de rastreamento.

  5. Quando terminar, desative o rastreamento CPIC e CCL.

    Para obter mais informações sobre o rastreamento CommonCryptoLib, consulte SAP Note 2491573 (SAP s-user required).

Falsificação de identidade

Esta seção descreve os sintomas de solução de problemas e as etapas de resolução de problemas de representação.

Sintoma: Ao olhar para o GatewayInfo[date].log você encontra uma entrada semelhante à seguinte: Prestes a representar o usuário DOMAIN\User (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 encontradas no artigo Conceder direitos de política local à conta de serviço de gateway no artigo da máquina de 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 About to impersonate user 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 Kerberos como filtro. Para referência de erros Kerberos, consulte esta postagem de blog. O restante desta seção descreve os sintomas de solução de problemas e as etapas de resolução de 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 ADO para clientPipelineId e a importação [0D_NW_CHANN] não corresponde a nenhuma exportação.

Captura de ecrã de erro inútil

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 torna-se mais claro nos sectraces da máquina de 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 pode ver o problema se olhar para os vestígios do WireShark.

Captura de ecrã do programa de rastreio a mostrar um erro

Nota

Os outros erros KRB5KDC_ERR_PREAUTH_REQUIRED podem ser ignorados com segurança.

Resolução: você deve adicionar um SPN SAP/BW5 a uma conta de serviço. Informações detalhadas e etapas estão disponíveis na documentação do SAP.

Você pode encontrar um erro semelhante, mas não idêntico que se manifesta em rastreamentos WireShark como o seguinte erro KRB5KDC_ERR_BADOPTION:

Screenshot do programa WireShark mostrando um erro diferente

Esse erro indica que o SPN SAP/BW5 pode ser encontrado, mas não é em Serviços para o qual essa conta pode apresentar credenciais delegadas na guia Delegação da conta de serviço de gateway. Para corrigir esse problema, siga as etapas para configurar a conta de serviço de 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 erro 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.

Existem diferentes resoluções, com base nos sintomas que você vê na fonte de dados (SAP BW), por isso analisaremos ambas.

Sintoma 1: No arquivo sectraces sec-disp+work[].trc do BW Server, você vê rastreamentos 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 os parâmetros de configuração de mapeamento do usuário na máquina do gateway, se necessário. Você precisará concluir essas etapas mesmo que já tenha o Microsoft Entra Connect configurado.

Validação: você poderá carregar com êxito o relatório no serviço do Power BI. Se não conseguir carregar o relatório, consulte os passos em Sintoma 2.

Sintoma 2: No arquivo sectraces sec-disp+work[].trc do BW Server, você vê rastreamentos 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 o ID externo Kerberos para o usuário corresponde ao que os sectraces estão mostrando.

  1. Abra o SAP Logon.
  2. Use a transação SU01.
  3. Edite o usuário.
  4. Navegue até a guia SNC e verifique se o nome 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.

Para obter mais informações sobre o gateway de dados local e o DirectQuery, consulte os seguintes recursos: