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:
No dispositivo que está executando o SAP HANA, crie uma pasta vazia para armazenar seus certificados e vá para essa pasta.
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.
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.
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:
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.
Selecione a opção SAP Cryptographic Library . Não use a opção OpenSSL Cryptographic Library, que foi preterida pelo SAP.
Para importar o certificado assinado IdP_Cert.pem, selecione o botão azul Importar , conforme mostrado na imagem a seguir:
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:
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----- '
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;
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:
No SAP HANA Studio, selecione a pasta Segurança .
Expanda Usuários e selecione o usuário para o qual você deseja mapear seu usuário do Power BI.
Marque a caixa de seleção SAML e, em seguida, selecione Configurar, conforme mostrado na imagem a seguir:
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.
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:
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
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.>
d. Selecione Avançar e, em seguida, selecione Concluir.
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).
b. No MMC, selecione Adicionar ou remover snap-in de arquivo>.
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>.
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.
Por fim, adicione a impressão digital do certificado à configuração do gateway:
Para listar os certificados em sua máquina, execute o seguinte comando do PowerShell:
Get-ChildItem -path cert:\LocalMachine\My
Copie a impressão digital do certificado que criou.
Vá para o diretório do gateway, que é C:\Arquivos de Programas\Gateway de dados local por padrão.
Abra PowerBI.DataMovement.Pipeline.GatewayCore.dll.config e procure a seção SapHanaSAMLCertThumbprint . Cole a impressão digital copiada na etapa 2.
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.
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:
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
Reproduza o problema.
No SAP HANA Studio, abra o console de administração e selecione a guia Arquivos de diagnóstico.
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
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:
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:
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:
Abra o SAP HANA Studio.
Abra o Console de Administração do locatário que você está usando.
Selecione a guia Configuração e use sslcryptoprovider como um filtro, conforme mostrado na imagem a seguir:
Em seguida, verifique se a biblioteca criptográfica está definida corretamente fazendo o seguinte:
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:
Implante suas alterações selecionando o botão Implantar no canto superior direito, conforme mostrado na imagem a seguir:
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:
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.
Conteúdos relacionados
Para obter mais informações sobre o gateway de dados local e o DirectQuery, consulte os seguintes recursos:
- What is an on-premises data gateway? (O que é um gateway de dados no local?)
- DirectQuery no Power BI
- Fontes de dados suportadas pelo DirectQuery
- DirectQuery e SAP Business Warehouse (BW)
- DirectQuery e SAP HANA