Partilhar via


Usar a linguagem de marcação de asserção de segurança para SSO do Power BI para fontes de dados locais

Ao habilitar o logon único (SSO), você pode facilitar a atualização de dados de fontes locais por relatórios e painéis do Power BI enquanto respeita as permissões de nível de usuário configuradas nessas fontes. Para habilitar a conectividade SSO perfeita, use o SAML (Security Assertion Markup Language).

Nota

Você pode se conectar a apenas uma fonte de dados usando o SAML de Logon Único com um gateway de dados local. Para se conectar a uma fonte de dados adicional usando o SAML de Logon Único, você deve usar um gateway de dados local diferente.

Fontes de dados suportadas para SAML

Atualmente, a Microsoft suporta SAP HANA com SAML. Para obter mais informações sobre como configurar o logon único para SAP HANA usando SAML, consulte SAML SSO for BI Platform to HANA.

Suportamos fontes de dados adicionais com Kerberos (incluindo SAP HANA).

Para o SAP HANA, recomendamos que você habilite a criptografia antes de estabelecer uma conexão SAML SSO. Para habilitar a criptografia, configure o servidor HANA para aceitar conexões criptografadas e, em seguida, configure o gateway para usar criptografia para se comunicar com o servidor HANA. Como o driver ODBC do HANA não criptografa asserções SAML por padrão, a asserção SAML assinada é enviada do gateway para o servidor HANA de forma clara e fica vulnerável à intercetação e reutilização por terceiros.

Importante

Como o SAP não suporta mais OpenSSL, a Microsoft também descontinuou seu suporte. Suas conexões existentes continuam funcionando, mas você não pode mais criar novas conexões. Em vez disso, use SAP Cryptographic Library (CommonCryptoLib) ou sapcrypto.

Configurar o gateway e a fonte de dados

Para usar o SAML, você deve estabelecer uma relação de confiança entre os servidores HANA para os quais deseja habilitar o SSO e o gateway. Nesse cenário, o gateway serve como o provedor de identidade SAML (IdP). Você pode estabelecer essa relação de várias maneiras. A SAP recomenda que você use CommonCryptoLib para concluir as etapas de configuração. Para obter mais informações, consulte a documentação oficial do SAP.

Criar os certificados

Você pode estabelecer uma relação de confiança entre um servidor HANA e o IdP do gateway assinando o certificado X509 do IdP do gateway com uma autoridade de certificação (CA) raiz confiável pelo servidor HANA.

Para criar os certificados, faça o seguinte:

  1. No dispositivo que está executando o SAP HANA, crie uma pasta vazia para armazenar seus certificados e vá para essa pasta.

  2. Crie os certificados raiz executando o seguinte comando:

    openssl req -new -x509 -newkey rsa:2048 -days 3650 -sha256 -keyout CA_Key.pem -out CA_Cert.pem -extensions v3_ca'''
    

    Certifique-se de copiar e salvar a senha para usar esse certificado para assinar outros certificados. Você deve ver os arquivos CA_Cert.pem e CA_Key.pem sendo criados.

  3. Crie os certificados IdP executando o seguinte comando:

    openssl req -newkey rsa:2048 -days 365 -sha256 -keyout IdP_Key.pem -out IdP_Req.pem -nodes
    

    Você deve ver os arquivos IdP_Key.pem e IdP_Req.pem sendo criados.

  4. Assine os certificados IdP com os certificados raiz:

    openssl x509 -req -days 365 -in IdP_Req.pem -sha256 -extensions usr_cert -CA CA_Cert.pem -CAkey CA_Key.pem -CAcreateserial -out IdP_Cert.pem
    

    Você deve ver os arquivos CA_Cert.srl e IdP_Cert.pem sendo criados. No momento, você está preocupado apenas com o arquivo IdP_Cert.pem .

Criar mapeamento para o certificado do provedor de identidade SAML

Para criar mapeamento para o certificado do Provedor de Identidade SAML, faça o seguinte:

  1. No SAP HANA Studio, clique com o botão direito do mouse no nome do servidor SAP HANA e selecione Security Open Security>Console>SAML Identity Provider.

  2. Selecione a opção SAP Cryptographic Library . Não use a opção OpenSSL Cryptographic Library, que foi preterida pelo SAP.

    Screenshot of the

  3. Para importar o certificado assinado IdP_Cert.pem, selecione o botão azul Importar , conforme mostrado na imagem a seguir:

    Screenshot of the

  4. Lembre-se de atribuir um nome para seu provedor de identidade.

Importar e criar os certificados assinados no HANA

Para importar e criar os certificados assinados no HANA, faça o seguinte:

  1. No SAP HANA Studio, execute a seguinte consulta:

    CREATE CERTIFICATE FROM '<idp_cert_pem_certificate_content>'
    

    Eis um exemplo:

    CREATE CERTIFICATE FROM
    '-----BEGIN CERTIFICATE-----
    MIIDyDCCArCgA...veryLongString...0WkC5deeawTyMje6
    -----END CERTIFICATE-----
    '
    
  2. Se não houver um ambiente de segurança pessoal (PSE) com SAML de finalidade, crie um executando a seguinte consulta no SAP HANA Studio:

    CREATE PSE SAMLCOLLECTION;
    set pse SAMLCOLLECTION purpose SAML;
    
  3. Adicione o certificado assinado recém-criado ao PSE executando o seguinte comando:

    alter pse SAMLCOLLECTION add CERTIFICATE <certificate_id>;
    

    Por exemplo:

    alter pse SAMLCOLLECTION add CERTIFICATE 1978320;
    

    Você pode verificar a lista de certificados criados executando a seguinte consulta:

    select * from PUBLIC"."CERTIFICATES"
    

    O certificado agora está instalado corretamente. Para confirmar a instalação, você pode executar a seguinte consulta:

    select * from "PUBLIC"."PSE_CERTIFICATES"
    

Mapeie o usuário

Para mapear o usuário, faça o seguinte:

  1. No SAP HANA Studio, selecione a pasta Segurança .

    Screenshot of the Security folder structure on the left pane.

  2. Expanda Usuários e selecione o usuário para o qual você deseja mapear seu usuário do Power BI.

  3. Marque a caixa de seleção SAML e, em seguida, selecione Configurar, conforme mostrado na imagem a seguir:

    Screenshot of the

  4. Selecione o provedor de identidade que você criou na seção Criar mapeamento para o certificado do provedor de identidade SAML. Para Identidade Externa, insira o UPN do usuário do Power BI (normalmente, o endereço de email que o usuário usa para entrar no Power BI) e selecione Adicionar.

    Screenshot of the

    Se você configurou seu gateway para usar a opção de configuração ADUserNameReplacementProperty , insira o valor que substituirá o UPN original do usuário do Power BI. Por exemplo, se você definir ADUserNameReplacementProperty como SAMAccountName, insira SAMAccountName do usuário.

Configurar o gateway

Agora que você configurou o certificado e a identidade do gateway, converta o certificado em um formato de arquivo PFX e, em seguida, configure o gateway para usar o certificado fazendo o seguinte:

  1. Converta o certificado para o formato PFX executando o seguinte comando. Este comando nomeia o arquivo resultante samlcert.pfx e define root como sua senha, conforme mostrado aqui:

    openssl pkcs12 -export -out samltest.pfx -in IdP_Cert.pem -inkey IdP_Key.pem -passin pass:root -passout pass:root
    
  2. Copie o arquivo PFX para a máquina do gateway:

    a. Clique duas vezes em samltest.pfx e selecione Avançar com máquina>local.

    b. Introduza a palavra-passe e, em seguida, selecione Seguinte.

    c. Selecione Colocar todos os certificados no armazenamento a seguir e, em seguida, selecione Procurar>OK pessoal.>

    Screenshot of the

    d. Selecione Avançar e, em seguida, selecione Concluir.

  3. Para conceder à conta de serviço do gateway acesso à chave privada do certificado, faça o seguinte:

    a. Na máquina do gateway, execute o MMC (Console de Gerenciamento Microsoft).

    Screenshot of the gateway machine

    b. No MMC, selecione Adicionar ou remover snap-in de arquivo>.

    Screenshot of the

    c. Selecione Adicionar certificados> e, em seguida, selecione Conta de>computador Seguinte.

    d. Selecione Concluir>OK do Computador>Local.

    e. Expanda Certificados>Pessoais>e procure o certificado.

    f. Clique com o botão direito do rato no certificado e, em seguida, selecione Todas as Tarefas Gerir Chaves Privadas>.

    Screenshot of the

    g. Adicione a conta de serviço de gateway à lista. Por padrão, a conta é NT SERVICE\PBIEgwService. Você pode descobrir qual conta está executando o serviço de gateway executando services.msc e, em seguida, procurando o serviço de gateway de dados local.

    Screenshot of the

Por fim, adicione a impressão digital do certificado à configuração do gateway:

  1. Para listar os certificados em sua máquina, execute o seguinte comando do PowerShell:

    Get-ChildItem -path cert:\LocalMachine\My
    
  2. Copie a impressão digital do certificado que criou.

  3. Vá para o diretório do gateway, que é C:\Arquivos de Programas\Gateway de dados local por padrão.

  4. Abra PowerBI.DataMovement.Pipeline.GatewayCore.dll.config e procure a seção SapHanaSAMLCertThumbprint . Cole a impressão digital copiada na etapa 2.

  5. Reinicie o serviço de gateway.

Executar um relatório do Power BI

Agora você pode usar a página Gerenciar Gateway no Power BI para configurar a fonte de dados do SAP HANA. Em Configurações avançadas, habilite o SSO via SAML. Ao fazer isso, você pode publicar relatórios e conjuntos de dados vinculando a essa fonte de dados.

 Screenshot of advanced settings with single sign-on for SAML.

Nota

O SSO usa a Autenticação do Windows, portanto, certifique-se de que a conta do Windows possa acessar a máquina do gateway. Se não tiver certeza, certifique-se de adicionar NT-AUTHORITY\Usuários autenticados (S-1-5-11) ao grupo "Usuários" da máquina local.

Solução de problemas de uso do SAML para logon único no SAP HANA

Esta seção fornece etapas abrangentes para solucionar problemas de uso do SAML para logon único no SAP HANA. Utilizar estes passos pode ajudá-lo a autodiagnosticar e corrigir quaisquer problemas que possa enfrentar.

Credenciais rejeitadas

Depois de configurar o SSO baseado em SAML, poderá ver o seguinte erro no portal do Power BI: "As credenciais fornecidas não podem ser utilizadas para a origem SapHana." Esse erro indica que as credenciais SAML foram rejeitadas pelo SAP HANA.

Os rastreamentos de autenticação do lado do servidor fornecem informações detalhadas para solucionar problemas de credenciais no SAP HANA. Para configurar o rastreamento para seu servidor SAP HANA, faça o seguinte:

  1. No servidor SAP HANA, ative o rastreamento de autenticação executando a seguinte consulta:

    ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') set ('trace', 'authentication') = 'debug' with reconfigure 
    
  2. Reproduza o problema.

  3. No SAP HANA Studio, abra o console de administração e selecione a guia Arquivos de diagnóstico.

  4. Abra o rastreamento de servidor de indexação mais recente e procure SAMLAuthenticator.cpp.

    Você deve encontrar uma mensagem de erro detalhada que indica a causa raiz, conforme mostrado no exemplo a seguir:

    [3957]{-1}[-1/-1] 2018-09-11 21:40:23.815797 d Authentication   SAMLAuthenticator.cpp(00091) : Element '{urn:oasis:names:tc:SAML:2.0:assertion}Assertion', attribute 'ID': '123123123123123' is not a valid value of the atomic type 'xs:ID'.
    [3957]{-1}[-1/-1] 2018-09-11 21:40:23.815914 i Authentication   SAMLAuthenticator.cpp(00403) : No valid SAML Assertion or SAML Protocol detected
    
  5. Depois de concluir a solução de problemas, desative o rastreamento de autenticação executando a seguinte consulta:

    ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') UNSET ('trace', 'authentication');
    

Verificar e solucionar erros de gateway

Para seguir os procedimentos desta seção, você precisa coletar logs de gateway.

Erro SSL (certificado)

Sintomas de erro

Este problema tem vários sintomas. Quando tenta adicionar uma nova origem de dados, poderá ver uma mensagem de erro como a seguinte:

Unable to connect: We encountered an error while trying to connect to . Details: "We could not register this data source for any gateway instances within this cluster. Please find more details below about specific errors for each gateway instance."

Quando tenta criar ou atualizar um relatório, poderá ver uma mensagem de erro como a da imagem seguinte:

Screenshot of a 'Cannot load model' troubleshooting SSL error window.

Quando você investigar o Mashup[date]*.log, você verá a seguinte mensagem de erro:

A connection was successfully established with the server, but then an error occurred during the login process and the certificate chain was issued by an authority that is not trusted

Resolução

Para resolver esse erro SSL, vá para a conexão da fonte de dados e, em seguida, na lista suspensa Validar Certificado do Servidor, selecione Não, conforme mostrado na imagem a seguir:

Screenshot showing the S S L error being resolved on the 'Data Source Settings' pane.

Depois de selecionar essa configuração, a mensagem de erro não será mais exibida.

Erro Gateway SignXML

O erro SignXML do gateway pode ser o resultado de configurações incorretas do SapHanaSAMLCertThumbprint ou pode ser um problema com o servidor HANA. As entradas nos logs do gateway ajudam a identificar onde o problema reside e como resolvê-lo.

Sintomas de erro

Entradas de log para SignXML: Found the cert...: Se o arquivo GatewayInfo[date].log contiver esse erro, o certificado SignXML foi encontrado e seus esforços de solução de problemas devem se concentrar nas etapas encontradas na seção "Verificar e solucionar problemas do lado do servidor HANA".

Entradas de log para Couldn't find saml cert: Se o arquivo GatewayInfo[date].log contiver esse erro, SapHanaSAMLCertThumbprint está definido incorretamente. A seção de resolução a seguir descreve como resolver o problema.

Resolução

Para definir corretamente o SapHanaSAMLCertThumbprint, siga as instruções na seção "Configurar o gateway ". As instruções começam com Finalmente, adicione a impressão digital do certificado à configuração do gateway.

Depois de alterar o arquivo de configuração, você precisa reiniciar o serviço de gateway para que a alteração entre em vigor.

Validação

Quando o SapHanaSAMLCertThumbprint estiver definido corretamente, os logs do gateway terão entradas que incluem SignXML: Found the cert.... Neste ponto, você deve ser capaz de prosseguir para a seção "Verificar e solucionar problemas do lado do servidor HANA".

Se o gateway não conseguir usar o certificado para assinar a asserção SAML, você poderá ver um erro nos logs semelhante ao seguinte:

GatewayPipelineErrorCode=DM_GWPipeline_UnknownError GatewayVersion= InnerType=CryptographicException InnerMessage=<pi>Signing key is not loaded.</pi> InnerToString=<pi>System.Security.Cryptography.CryptographicException: Signing key is not loaded.

Para resolver esse erro, siga as instruções que começam com a etapa 3 na seção "Configurar o gateway ".

Depois de alterar a configuração, reinicie o serviço de gateway para que a alteração entre em vigor.

Verificar e solucionar problemas do lado do servidor HANA

Use as soluções nesta seção se o gateway puder encontrar o certificado e assinar a asserção SAML, mas você ainda estiver enfrentando erros. Você precisará coletar rastreamentos de autenticação HANA, conforme descrito anteriormente na seção "Credenciais rejeitadas".

O provedor de identidade SAML

A presença da cadeia de caracteres nos rastreamentos de autenticação HANA indica que o provedor de Found SAML provider identidade SAML está configurado corretamente. Se a cadeia de caracteres não estiver presente, a configuração está incorreta.

Resolução

Primeiro, determine se sua organização está usando OpenSSL ou commoncrypto como o sslcryptoprovider. Para determinar qual provedor está sendo usado, faça o seguinte:

  1. Abra o SAP HANA Studio.

  2. Abra o Console de Administração do locatário que você está usando.

  3. Selecione a guia Configuração e use sslcryptoprovider como um filtro, conforme mostrado na imagem a seguir:

    Screenshot of the sslcryptoprovider information in SAP HANA Studio.

Em seguida, verifique se a biblioteca criptográfica está definida corretamente fazendo o seguinte:

  1. Vá para Console de segurança no SAP HANA Studio selecionando a guia Provedores de identidade SAML e siga um destes procedimentos:

    • Se o sslcryptoprovider for OpenSSL, selecione Biblioteca criptográfica OpenSSL.
    • Se o sslcryptoprovider for commonCrypto, selecione SAP Cryptographic Library.

    Na imagem a seguir, a SAP Cryptographic Library está selecionada:

    Screenshot of SAP HANA Studio with 'SAP Cryptographic Library' selected as the sslcryptoprovider.

  2. Implante suas alterações selecionando o botão Implantar no canto superior direito, conforme mostrado na imagem a seguir:

    Screenshot of the 'Deploy' button for deploying your solution changes.

Validação

Quando os rastreamentos estiverem configurados corretamente, eles relatarão Found SAML provider e não relatarão SAML Provider not found. Você pode prosseguir para a próxima seção, "Solucionar problemas da assinatura de asserção SAML".

Se o provedor de criptografia estiver definido, mas SAML Provider not found ainda estiver sendo relatado, procure uma cadeia de caracteres no rastreamento que comece com o seguinte texto:

Search SAML provider for certificate with subject =

Nessa cadeia de caracteres, verifique se o assunto e o emissor são exatamente os mesmos exibidos na guia Provedor de identidade SAML no Console de Segurança. Uma diferença de até mesmo um único caractere pode causar o problema. Se você encontrar uma diferença, poderá corrigir o problema na Biblioteca criptográfica SAP para que as entradas correspondam exatamente.

Se a alteração da Biblioteca Criptográfica SAP não corrigir o problema, você poderá editar manualmente os campos Emitido para e Emitido por simplesmente clicando duas vezes neles.

Solucionar problemas da assinatura de asserção SAML

Você pode encontrar rastreamentos de autenticação HANA que contêm entradas semelhantes à seguinte:

[48163]{-1}[-1/-1] 2020-09-11 21:15:18.896165 i Authentication SAMLAuthenticator.cpp(00398) : Unable to verify XML signature [48163]{-1}[-1/-1] 2020-09-11 21:15:18.896168 i Authentication MethodSAML.cpp(00103) : unsuccessful login attempt with SAML ticket!

A presença de tais entradas significa que a assinatura não é confiável.

Resolução

Se você estiver usando OpenSSL como seu sslcryptoprovider, verifique se os arquivos trust.pem e key.pem estão no diretório SSL. Para obter mais informações, consulte o blog SAP Securing the communication between SAP HANA Studio and SAP HANA Server through SSL.

Se você estiver usando commoncrypto como seu sslcryptoprovider, verifique se há uma coleção com seu certificado no locatário.

Validação

Quando os rastreamentos estiverem configurados corretamente, eles relatarão Found valid XML signature.

Solucionar problemas do mapeamento UPN

Você pode encontrar rastreamentos HANA que contêm entradas semelhantes à seguinte:

SAMLAuthenticator.cpp(00886) : Assertion Subject NameID: `johnny@contoso.com` SAMLAuthenticator.cpp(00398) : Database user does not exist

O erro indica que nameId johnny@contoso.com foi encontrado nas asserções SAML, mas não existe ou não está mapeado corretamente no HANA Server.

Resolução

Vá para o usuário do banco de dados HANA e, na caixa de seleção SAML selecionada, selecione o link Configurar . É apresentada a seguinte janela:

Screenshot showing that the incorrect user name is displayed.

Como a mensagem de erro descreve, HANA estava tentando encontrar johnny@contoso.com, mas a identidade externa é exibida apenas como johnny. Estes dois valores devem corresponder. Para resolver o problema, em Identidade Externa, altere o valor para johnny@contoso.com. Observe que esse valor diferencia maiúsculas de minúsculas.

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