Power BI에서 온-프레미스 데이터 원본으로 SSO에 Security Assertion Markup Language 사용

Single Sign-On(SSO)을 사용 설정하면 해당 원본에 구성된 사용자 수준 사용 권한을 고려하면서 Power BI 보고서 및 대시보드에서 온-프레미스 원본의 데이터를 손쉽게 새로 고칠 수 있습니다. 원활한 SSO 연결을 위해 Security Assertion Markup Language(SAML)를 사용합니다.

참고 항목

온-프레미스 데이터 게이트웨이에서 Single Sign-On SAML을 사용하여 하나의 데이터 원본에만 연결할 수 있습니다. Single Sign-On SAML을 사용하여 추가 데이터 원본에 연결하려면 다른 온-프레미스 데이터 게이트웨이를 사용해야 합니다.

SAML에 대해 지원되는 데이터 원본

Microsoft는 현재 SAML로 SAP HANA를 지원합니다. SAML을 사용하여 SAP HANA에 대해 Single Sign-On을 설정하고 구성하는 방법에 대한 자세한 내용은 BI 플랫폼-HANA 연결에 대한 SAML SSO를 참조하세요.

Kerberos(SAP HANA 포함)를 사용하여 추가 데이터 원본이 지원됩니다.

SAP HANA의 경우 SAML SSO 연결을 만들기 전에 암호화를 사용하도록 설정하는 것이 좋습니다. 암호화를 사용하도록 설정하려면 암호화된 연결을 허용하도록 HANA 서버를 구성하고, 암호화를 사용하여 HANA 서버와 통신하도록 게이트웨이를 구성합니다. HANA ODBC 드라이버는 기본적으로 SAML 어설션을 암호화하지 않으므로, 서명된 SAML 어설션이 ‘일반 텍스트로’ 게이트웨이에서 HANA 서버로 전송되며 제3자의 인터셉션 및 재사용에 취약합니다.

Important

SAP가 OpenSSL을 더 이상 지원하지 않으므로 Microsoft도 지원을 중단했습니다. 기존 연결은 계속 작동하지만 더 이상 새 연결을 만들 수 없습니다. 대신 SAP 암호화 라이브러리(CommonCryptoLib) 또는 sapcrypto를 사용합니다.

게이트웨이 및 데이터 원본 구성

SAML을 사용하려면 SSO와 게이트웨이를 사용하도록 설정할 HANA 서버 간에 트러스트 관계를 설정해야 합니다. 이 시나리오에서 게이트웨이는 SAML IdP(ID 공급자) 역할을 합니다. 다양한 방법으로 이 관계를 설정할 수 있습니다. SAP에서는 CommonCryptoLib를 사용하여 설치 단계를 완료하기를 권장합니다. 자세한 내용은 공식 SAP 설명서를 참조하세요.

인증서 만들기

HANA 서버에서 신뢰하는 루트 인증 기관(CA)로 게이트웨이 IdP의 X509 인증서에 서명하여 HANA 서버와 게이트웨이 IdP 간의 트러스트 관계를 설정할 수 있습니다.

인증서를 만들려면 다음 단계를 수행합니다.

  1. SAP HANA를 실행 중인 디바이스에서 인증서를 저장할 빈 폴더를 만든 다음 해당 폴더로 이동합니다.

  2. 다음 명령을 실행하여 루트 인증서를 만듭니다.

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

    이 인증서를 사용하여 다른 인증서에 서명하려면 암호를 복사하고 저장해야 합니다. CA_Cert.pemCA_Key.pem 파일을 만들어야 합니다.

  3. 다음 명령을 실행하여 IdP 인증서를 만듭니다.

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

    IdP_Key.pemIdP_Req.pem 파일을 만들어야 합니다.

  4. 루트 인증서를 사용하여 IdP 인증서에 서명합니다.

    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
    

    CA_Cert.srlIdP_Cert.pem 파일을 만들어야 합니다. 현재는 IdP_Cert.pem 파일에만 관심이 있습니다.

SAML ID 공급자 인증서 매핑 만들기

SAML ID 공급자 인증서 매핑을 만들려면 다음 단계를 따릅니다.

  1. SAP HANA Studio에서 SAP HANA 서버 이름을 마우스 오른쪽으로 클릭한 다음 보안>보안 콘솔 열기>SAML ID 공급자를 선택합니다.

  2. SAP 암호화 라이브러리 옵션을 선택합니다. SAP에서 더 이상 사용되지 않는 OpenSSL 암호화 라이브러리 옵션은 사용하지 마세요.

    Screenshot of the

  3. 서명된 인증서 IdP_Cert.pem을 가져오려면 다음 이미지에 표시된 파란색 가져오기 단추를 클릭합니다.

    Screenshot of the

  4. ID 공급자 이름에 이름을 할당해야 합니다.

HANA에서 서명된 인증서 가져오기 및 만들기

HANA에서 서명된 인증서를 가져오고 만들려면 다음 단계를 수행합니다.

  1. SAP HANA Studio에서 다음 쿼리를 실행합니다.

    CREATE CERTIFICATE FROM '<idp_cert_pem_certificate_content>'
    

    예를 들면 다음과 같습니다.

    CREATE CERTIFICATE FROM
    '-----BEGIN CERTIFICATE-----
    MIIDyDCCArCgA...veryLongString...0WkC5deeawTyMje6
    -----END CERTIFICATE-----
    '
    
  2. 용도의 SAML이 있는 개인 보안 환경 (PSE)이 없는 경우 SAP HANA Studio에서 다음 쿼리를 실행하여 만듭니다.

    CREATE PSE SAMLCOLLECTION;
    set pse SAMLCOLLECTION purpose SAML;
    
  3. 다음 명령을 실행하여 새로 만든 서명된 인증서를 PSE에 추가합니다.

    alter pse SAMLCOLLECTION add CERTIFICATE <certificate_id>;
    

    예시:

    alter pse SAMLCOLLECTION add CERTIFICATE 1978320;
    

    다음 쿼리를 실행하여 만든 인증서 목록을 확인할 수 있습니다.

    select * from PUBLIC"."CERTIFICATES"
    

    이제 인증서가 제대로 설치됩니다. 설치를 확인하려면 다음 쿼리를 실행하면 됩니다.

    select * from "PUBLIC"."PSE_CERTIFICATES"
    

사용자 매핑

사용자를 매핑하려면 다음을 수행합니다.

  1. SAP HANA Studio에서 보안 폴더를 선택합니다.

    Screenshot of the Security folder structure on the left pane.

  2. 사용자를 펼친 다음, Power BI 사용자를 매핑할 사용자를 선택합니다.

  3. SAML 확인란을 선택하고 다음 이미지에 표시된 구성를 선택합니다.

    Screenshot of the

  4. SAML ID 공급자 인증서 매핑 만들기 섹션에서 만든 ID 공급자를 선택합니다. 외부 ID에 Power BI 사용자의 UPN(일반적으로 사용자가 Power BI에 로그인하는 데 사용하는 메일 주소)을 입력하고 추가를 선택합니다.

    Screenshot of the

    ADUserNameReplacementProperty 구성 옵션을 사용하도록 게이트웨이를 구성한 경우, Power BI 사용자의 원래 UPN을 대체할 값을 입력합니다. 예를 들어 ADUserNameReplacementPropertySAMAccountName으로 설정하는 경우 사용자의 SAMAccountName을 입력합니다.

게이트웨이 구성

게이트웨이의 인증서와 ID를 구성했으므로, 이제 다음 단계를 사용하여 인증서를 PFX 파일 형식으로 변환하고 다음을 수행하여 인증서를 사용하도록 게이트웨이를 구성합니다.

  1. 다음 명령을 실행하여 인증서를 PFX 형식으로 변환합니다. 이 명령은 생성된 파일의 이름을 samlcert.pfx로 지정하고 여기에서 보듯 root를 암호로 설정합니다.

    openssl pkcs12 -export -out samltest.pfx -in IdP_Cert.pem -inkey IdP_Key.pem -passin pass:root -passout pass:root
    
  2. 게이트웨이 머신에 PFX 파일을 복사합니다.

    a. samltest.pfx를 두 번 클릭한 다음, 로컬 머신>다음을 선택합니다.

    b. 암호를 입력한 후 다음을 선택합니다.

    c. 모든 인증서를 다음 저장소에 저장을 선택한 다음, 찾아보기>개인>확인을 선택합니다.

    Screenshot of the

    d. 다음를 선택한 다음 마침을 선택합니다.

  3. 인증서의 프라이빗 키에 게이트웨이 서비스 계정 액세스 권한을 부여하려면 다음을 수행합니다.

    a. 게이트웨이 머신에서 MMC(Microsoft Management Console)를 실행합니다.

    Screenshot of the gateway machine

    b. MMC에서 파일>스냅인 추가/제거를 선택합니다.

    Screenshot of the

    c. 인증서>추가를 선택한 다음, 컴퓨터 계정>다음을 선택합니다.

    d. 로컬 컴퓨터>마침>확인을 선택합니다.

    e. 인증서>개인>인증서를 확장하고 인증서를 찾습니다.

    f. 인증서를 마우스 오른쪽 단추로 클릭하고 모든 작업>프라이빗 키 관리를 선택합니다.

    Screenshot of the

    g. 게이트웨이 서비스 계정을 목록에 추가합니다. 기본적으로 계정은 NT SERVICE\PBIEgwService입니다. services.msc를 실행하고 온-프레미스 데이터 게이트웨이 서비스를 찾아 게이트웨이 서비스를 실행 중인 계정을 확인할 수 있습니다.

    Screenshot of the

마지막으로 게이트웨이 구성에 인증서 지문을 추가합니다.

  1. 머신의 인증서를 나열하려면 다음 PowerShell 명령을 실행합니다.

    Get-ChildItem -path cert:\LocalMachine\My
    
  2. 만든 인증서의 지문을 복사합니다.

  3. 게이트웨이 디렉터리(기본적으로 C:\Program Files\On-premises data gateway임)로 이동합니다.

  4. PowerBI.DataMovement.Pipeline.GatewayCore.dll.config를 열고 SapHanaSAMLCertThumbprint 섹션을 찾습니다. 2단계에서 복사한 지문을 붙여넣습니다.

  5. 게이트웨이 서비스를 다시 시작합니다.

Power BI 보고서 실행

이제 Power BI에서 게이트웨이 관리 페이지를 사용하여 SAP HANA 데이터 원본을 구성할 수 있습니다. 고급 설정에서 SAML을 통해 SSO를 사용하도록 설정합니다. 이렇게 하면 해당 데이터 원본에 보고서 및 데이터 세트 바인딩을 게시할 수 있습니다.

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

참고 항목

SSO는 Windows 인증을 사용하므로 Windows 계정이 게이트웨이 머신에 액세스할 수 있어야 합니다. 확실하지 않은 경우 로컬 머신 “사용자” 그룹에 NT-AUTHORITY\인증된 사용자(S-1-5-11)를 추가해야 합니다.

SAP HANA Single Sign-On에 대한 SAML 사용 문제 해결

이 섹션에서는 SAP HANA Single Sign-On에 SAML을 사용하는 것과 관련된 문제를 해결하는 포괄적인 단계를 설명합니다. 이러한 단계를 사용하면 발생 가능한 문제를 자체적으로 진단하고 해결할 수 있습니다.

거부된 자격 증명

SAML 기반 SSO를 구성한 후에 Power BI 포털에서 다음과 같은 오류가 표시될 수 있습니다. “제공된 자격 증명을 SapHana 원본에 사용할 수 없습니다.” 이 오류는 SAML 자격 증명이 SAP HANA에 의해 거부되었음을 나타냅니다.

서버 쪽 인증 추적은 SAP HANA의 자격 증명 문제를 해결하기 위한 자세한 정보를 제공합니다. SAP HANA 서버에 대해 추적을 구성하려면 다음 단계를 따르세요.

  1. SAP HANA 서버에서 다음 쿼리를 실행하여 인증 추적을 켭니다.

    ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') set ('trace', 'authentication') = 'debug' with reconfigure 
    
  2. 이슈를 재현합니다.

  3. SAP HANA Studio에서 관리 콘솔을 열고 진단 파일 탭을 선택합니다.

  4. 최신 인덱스 서버 추적을 열고 SAMLAuthenticator.cpp를 검색합니다.

    다음 예제와 같은 근본 원인을 나타내는 자세한 오류 메시지를 찾아야 합니다.

    [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. 문제 해결이 완료되면 다음 쿼리를 실행하여 인증 추적을 끕니다.

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

게이트웨이 오류 확인 및 문제 해결

이 섹션의 절차를 따르려면 게이트웨이 로그를 수집해야 합니다.

SSL 오류(인증서)

오류 증상

이 문제에는 여러 가지 증상이 있습니다. 새 데이터 원본을 추가하려고 하면 다음과 같은 오류 메시지가 표시될 수 있습니다.

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."

보고서를 만들거나 새로 고치려고 하면 다음 이미지와 같은 오류 메시지가 표시될 수 있습니다.

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

Mashup[date]*.log를 조사할 때는 다음 오류 메시지가 표시될 수 있습니다.

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

해결 방법

이 SSL 오류를 해결하려면 데이터 원본 연결로 이동하고 다음 이미지처럼 서버 인증서 유효성 검사 드롭다운 목록에서 아니요를 선택합니다.

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

이 설정을 선택하면 오류 메시지가 더 이상 표시되지 않습니다.

게이트웨이 SignXML 오류

게이트웨이 SignXML 오류는 SapHanaSAMLCertThumbprint 설정이 올바르지 않아 발생하며, HANA 서버와 관련된 문제일 수도 있습니다. 게이트웨이 로그의 항목을 이용하면 문제가 있는 위치와 해결 방법을 쉽게 확인할 수 있습니다.

오류 증상

SignXML: Found the cert...에 대한 로그 항목: GatewayInfo[date].log 파일에 이 오류가 포함되어 있고 SignXML 인증서가 발견된다면, HANA 서버 측 확인 및 문제 해결 섹션에 있는 단계를 수행하여 문제를 해결해야 합니다.

Couldn't find saml cert에 대한 로그 항목: GatewayInfo[date].log 파일에 이 오류가 포함된다면 SapHanaSAMLCertThumbprint가 잘못 설정되어 있다는 뜻입니다. 다음 해결 방법 섹션에서는 이 문제를 해결하는 방법을 설명합니다.

해결 방법

SapHanaSAMLCertThumbprint를 적절하게 설정하려면 "게이트웨이 구성" 섹션의 지침을 따릅니다. 지침은 마지막으로 게이트웨이 구성에 인증서 지문을 추가합니다로 시작합니다.

구성 파일을 변경한 후에는 게이트웨이 서비스를 다시 시작해야 변경 내용이 적용됩니다.

유효성 검사

SapHanaSAMLCertThumbprint가 올바르게 설정되면 게이트웨이 로그에 SignXML: Found the cert...가 포함된 항목이 있습니다. 이 때 “HANA 서버 측 확인 및 문제 해결” 섹션을 진행하면 됩니다.

게이트웨이에서 인증서를 사용하여 SAML 어설션을 서명할 수 없다면, 로그에 다음과 같은 오류가 표시될 수 있습니다.

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.

이 오류를 해결하려면 "게이트웨이 구성" 섹션의 3단계에서 시작하는 지침을 따르세요.

구성이 변경되면 게이트웨이 서비스를 다시 시작해야 변경 내용이 적용됩니다.

HANA 서버 측 확인 및 문제 해결

게이트웨이가 인증서를 찾고 있으며 SAML 어설션에 서명할 수 있지만 여전히 오류가 발생한다면, 이 섹션의 솔루션을 사용하세요. 앞서 "거부된 자격 증명" 섹션에서 설명한 대로 HANA 인증 추적을 수집해야 합니다.

SAML ID 공급자

HANA 인증 추적에 Found SAML provider 문자열이 있으면 SAML ID 공급자가 올바르게 구성되었음을 나타냅니다. 문자열이 없다면 구성이 올바르지 않다는 뜻입니다.

해결 방법

먼저 조직에서 OpenSSL과 commoncrypto 중 무엇을 sslcryptoprovider로 사용하는지 확인합니다. 사용 중인 공급자를 확인하려면 다음을 수행합니다.

  1. SAP HANA Studio를 엽니다.

  2. 사용 중인 테넌트의 관리 콘솔을 엽니다.

  3. 구성 탭을 선택하고 다음 이미지처럼 필터로 sslcryptoprovider를 선택합니다.

    Screenshot of the sslcryptoprovider information in SAP HANA Studio.

다음 단계에 따라 암호화 라이브러리가 올바르게 설정되었는지 확인합니다.

  1. SAP HANA Studio에서 SAML ID 공급자 탭을 선택하여 보안 콘솔로 이동하고 다음 중 하나를 수행합니다.

    • sslcryptoprovider가 OpenSSL이라면 OpenSSL 암호화 라이브러리를 선택합니다.
    • sslcryptoprovider가 commonCrypto라면 SAP 암호화 라이브러리를 선택합니다.

    다음 이미지에서 SAP 암호화 라이브러리를 선택합니다.

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

  2. 다음 이미지처럼 오른쪽 위에 있는 배포 단추를 선택하여 변경 내용을 배포합니다.

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

유효성 검사

추적이 올바르게 구성되었다면 Found SAML provider는 보고하고 SAML Provider not found는 보고하지 않습니다. 다음 섹션인 "SAML 어설션 서명 문제 해결"로 진행할 수 있습니다.

암호화 공급자가 설정되어 있지만 SAML Provider not found가 계속 보고된다면 추적에서 다음으로 시작하는 문자열을 검색하세요.

Search SAML provider for certificate with subject =

문자열에서 주체와 발급자가 보안 콘솔의 SAML ID 공급자 탭에 표시된 것과 정확히 일치해야 합니다. 문자가 하나만 달라도 문제가 발생할 수 있습니다. 차이가 있는 경우 SAP 암호화 라이브러리에서 문제를 수정해 항목을 정확하게 일치시키세요.

SAP 암호화 라이브러리를 변경해도 문제가 해결되지 않는다면 발급 대상과 발급자 필드를 두 번 클릭하기만 하면 수동으로 편집할 수 있습니다.

SAML 어설션 서명 문제 해결

다음과 유사한 항목을 포함하는 HANA 인증 추적을 찾을 수 있습니다.

[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!

이러한 항목이 있으면 서명을 신뢰할 수 없다는 의미입니다.

해결 방법

OpenSSL을 sslcryptoprovider로 사용 중인 경우 trust.pemkey.pem 파일이 SSL 디렉터리에 있는지 확인합니다. 자세한 내용은 SAP 블로그 SSL을 통해 SAP HANA Studio와 SAP HANA 서버 간의 통신 보안 설정을 참조하세요.

commoncrypto를 sslcryptoprovider로 사용한다면 테넌트에 인증서가 포함된 컬렉션에 있는지 확인합니다.

유효성 검사

추적이 올바르게 구성되었다면 Found valid XML signature를 보고합니다.

UPN 매핑 문제 해결

다음과 유사한 항목을 포함하는 HANA 추적을 찾을 수 있습니다.

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

이 오류는 nameId johnny@contoso.com을 SAML 어설션에서 찾았지만 HANA Server에서는 존재하지 않거나 올바르게 매핑되지 않았다는 뜻입니다.

해결 방법

HANA 데이터베이스 사용자로 이동하여 선택한 SAML 확인란에서 구성 링크를 선택합니다. 다음과 같은 창이 나타납니다.

Screenshot showing that the incorrect user name is displayed.

오류 메시지에서 설명하는 것처럼 HANA에서 johnny@contoso.com을 찾으려 했지만 외부 ID는 johnny만 표시됩니다. 이러한 두 값이 일치해야 합니다. 이 문제를 해결하려면 외부 ID에서 값을 johnny@contoso.com으로 변경합니다. 이 값은 대/소문자를 구분합니다.

온-프레미스 데이터 게이트웨이 및 DirectQuery에 대한 자세한 내용은 다음 리소스를 참조하세요.