다음을 통해 공유


CommonCryptoLib(sapcrypto.dll)를 사용하여 SAP BW에 대한 SSO에 Kerberos Single Sign-On 사용

이 문서에서는 sapcrypto.dll(CommonCryptoLib)를 사용하여 Power BI 서비스 SSO(Single Sign-On)를 사용하도록 SAP BW 데이터 원본을 구성하는 방법을 설명합니다.

참고 항목

Kerberos SSO를 사용하는 SAP BW 기반 보고서를 새로 고치려면 이 문서의 단계와 Kerberos 기반 SSO 구성의 단계를 모두 완료합니다. CommonCryptoLib을 SNC(Secure Network Communications) 라이브러리로 사용하면 SAP BW 애플리케이션 서버와 SAP BW 메시지 서버 모두에 대한 SSO 연결을 사용할 수 있습니다.

참고 항목

동일한 게이트웨이 서버에서 두 라이브러리(sapcrypto 및 gx64krb5)를 구성하는 것은 지원되지 않는 시나리오입니다. 라이브러리가 혼합되도록 동일한 게이트웨이 서버에서 두 라이브러리를 구성하는 것은 권장되지 않습니다. 두 라이브러리를 모두 사용하려면 게이트웨이 서버를 완전히 분리하세요. 예를 들어 서버 A에 대해 gx64krb5를 구성한 다음, 서버 B에 대해 sapcrypto를 구성합니다. gx64krb5는 SAP 및 Microsoft에서 더 이상 지원되지 않으므로 gx64krb5를 사용하는 서버 A의 오류는 지원되지 않습니다.

CommonCryptoLib를 사용하여 SSO를 활성화하도록 SAP BW 구성

참고 항목

온-프레미스 데이터 게이트웨이는 64비트 소프트웨어이므로 BW SSO를 수행하려면 64비트 버전의 CommonCryptoLib(sapcrypto.dll)가 필요합니다. 게이트웨이를 통해 SSO 연결을 시도하기 전에 SAP GUI에서 SAP BW 서버에 대한 SSO 연결을 테스트하려는 경우, SAP GUI가 32비트 소프트웨어이기 때문에 32비트 버전의 CommonCryptoLib도 필요합니다.

  1. BW 서버가 CommonCryptoLib를 사용하여 Kerberos SSO에 대해 올바르게 구성되었는지 확인합니다. 올바르게 구성된 경우, SSO를 사용하여 CommonCryptoLib를 사용하도록 구성된 SAP GUI와 같은 SAP 도구로 직접 또는 SAP BW 메시지 서버를 통해 BW 서버에 액세스할 수 있습니다.

    설치 단계에 대한 자세한 내용은 SAP Single Sign-On: Kerberos/SPNEGO를 사용하여 인증을 참조하세요. BW 서버는 CommonCryptoLib를 SNC 라이브러리로 사용하고 CN=으로 시작하는 SNC 이름(예: CN = BW1)이 있어야 합니다. SNC 이름 요구 사항(특히 snc/identity/as 매개 변수)에 대한 자세한 내용은 SNC Parameters for Kerberos Configuration(Kerberos 구성의 SNC 매개 변수)를 참조하세요.

  2. 아직 수행하지 않은 경우 게이트웨이가 설치된 컴퓨터에 SAP .NET Connector x64 버전을 설치합니다.

    게이트웨이 컴퓨터의 Power BI Desktop에서 BW 서버에 연결을 시도하여 구성 요소가 설치되었는지 확인할 수 있습니다. 2.0 구현을 사용하여 연결할 수 없는 경우 .NET 커넥터가 설치되지 않았거나 전역 어셈블리 캐시에 설치되지 않았습니다.

  3. 게이트웨이가 설치된 컴퓨터에 SAP SLC(보안 로그인 클라이언트)가 실행되고 있지 않은지 확인합니다.

    SLC는 SSO를 위해 Kerberos를 사용하는 게이트웨이 기능을 방해할 수 있는 방식으로 Kerberos 티켓을 캐시합니다.

  4. SLC가 설치되어 있으면 제거하거나 SAP 보안 로그인 클라이언트를 종료해야 합니다. 시스템 트레이에서 아이콘을 마우스 오른쪽 단추로 클릭하고 로그아웃종료를 선택한 다음, 게이트웨이를 사용하여 SSO 연결을 시도합니다.

    Windows Server 머신에서는 SLC를 사용할 수 없습니다. 자세한 내용은 SAP Note 2780475(s-user가 필요함)를 참조하세요.

    SAP 보안 로그인 클라이언트

  5. SLC를 제거하거나 로그아웃종료를 선택하는 경우, cmd 창을 열고 klist purge를 입력하여 캐시된 Kerberos 티켓을 모두 지운 다음, 게이트웨이를 통해 SSO 연결을 시도합니다.

  6. SAP 실행 패드에서 64비트 CommonCryptoLib(sapcrypto.dll) 버전 8.5.25 이상을 다운로드하고 게이트웨이 머신의 폴더에 복사합니다. sapcrypto.dll을 복사한 디렉터리에 다음 내용이 포함된 sapcrypto.ini라는 파일을 만듭니다.

    ccl/snc/enable_kerberos_in_client_role = 1
    

    .ini 파일에는 CommonCryptoLib가 게이트웨이 시나리오에서 SSO를 사용하도록 설정하는 데 필요한 구성 정보가 포함되어 있습니다.

    참고 항목

    두 파일을 동일한 위치에 저장해야 합니다. 즉, /path/to/sapcrypto/에 sapcrypto.ini와 sapcrypto.dll을 모두 포함해야 합니다.

    게이트웨이 서비스 사용자와 서비스 사용자가 가장하는 AD(Active Directory) 사용자 모두 두 파일에 대한 읽기 및 실행 권한이 필요합니다. 인증된 사용자 그룹에 .ini 및 .dll 파일 권한을 모두 부여하는 것이 좋습니다. 테스트를 위해 게이트웨이 서비스 사용자와 테스트에 사용하는 AD 사용자에게 이러한 권한을 명시적으로 부여할 수도 있습니다. 다음 스크린샷에서는 인증된 사용자 그룹에 sapcrypto.dll에 대한 읽기 및 실행 권한을 부여했습니다.

    인증된 사용자

  7. SSO 연결을 통과하려는 게이트웨이와 연결된 SAP BW 데이터 원본이 아직 없는 경우 Power BI 서비스 연결 및 게이트웨이 관리 페이지에 추가합니다. 이러한 데이터 원본이 이미 있는 경우 다음과 같이 편집합니다.

    • BW 애플리케이션 서버에 대한 SSO 연결을 만들려면 SAP Business Warehouse데이터 원본 유형으로 선택합니다.
    • BW 메시지 서버에 대한 SSO 연결을 만들려면 Sap Business Warehouse 메시지 서버를 선택합니다.
  8. SNC 라이브러리에서 SNC_LIB 또는 SNC_LIB_64 환경 변수 또는 사용자 지정을 선택합니다.

    • SNC_LIB를 선택하는 경우, 게이트웨이 머신의 SNC_LIB_64 환경 변수 값을 게이트웨이 머신에 있는 sapcrypto.dll 64비트 버전의 절대 경로로 설정해야 합니다. 예를 들어 C:\Users\Test\Desktop\sapcrypto.dll로 설정합니다.

    • 사용자 지정을 선택하는 경우, 게이트웨이 관리 페이지에 표시되는 사용자 지정 SNC 라이브러리 경로 필드에 sapcrypto.dll의 절대 경로를 붙여넣습니다.

  9. SNC 파트너 이름에 BW 서버의 SNC 이름을 입력합니다. 고급 설정에서 DirectQuery 쿼리에 Kerberos를 통한 SSO 사용이 선택되어 있는지 확인합니다. PBI Desktop에서 Windows 인증 연결을 설정하는 것처럼 다른 필드를 채웁니다.

  10. CCL_PROFILE 시스템 환경 변수를 만들고 변수 값을 sapcrypto.ini의 경로로 설정합니다.

    CCL_PROFILE 시스템 환경 변수

    sapcrypto .dll 및 .ini 파일은 동일한 위치에 있어야 합니다. 위의 예제에서 sapcrypto.ini 및 sapcrypto.dll은 둘 다 바탕 화면에 있습니다.

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

    게이트웨이 서비스 다시 시작

  12. Power BI 보고서 실행

문제 해결

Power BI 서비스에서 보고서를 새로 고칠 수 없는 경우 게이트웨이 추적, CPIC 추적 및 CommonCryptoLib 추적을 사용하여 문제를 진단할 수 있습니다. CPIC 추적 및 CommonCryptoLib는 SAP 제품이므로 Microsoft에서 지원할 수 없습니다.

게이트웨이 로그

  1. 이슈를 재현합니다.

  2. 게이트웨이 앱을 열고 진단 탭에서 로그 내보내기를 선택합니다.

    게이트웨이 로그 내보내기

CPIC 추적

  1. CPIC 추적을 사용하도록 설정하려면 두 개의 환경 변수 CPIC_TRACECPIC_TRACE_DIR을 설정합니다.

    첫 번째 변수는 추적 수준을 설정하고, 두 번째 변수는 추적 파일 디렉터리를 설정합니다. 이 디렉터리는 인증된 사용자 그룹의 구성원이 쓸 수 있는 위치여야 합니다.

  2. CPIC_TRACE3으로 설정하고, CPIC_TRACE_DIR을 추적하려는 파일이 기록된 디렉터리로 설정합니다. 예시:

    CPIC 추적

  3. 문제를 재현하고, CPIC_TRACE_DIR에 추적 파일이 있는지 확인합니다.

    CPIC 추적은 sapcrypto.dll 라이브러리 로드 오류와 같은 더 높은 수준의 문제를 진단할 수 있습니다. 예를 들어 .dll 로드 오류가 발생한 CPIC 추적 파일의 코드 조각은 다음과 같습니다.

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

    위의 섹션에 설명된 대로 sapcrypto.dll 및 sapcrypto.ini에 대한 읽기 및 실행 권한을 설정했지만 이 같은 오류가 발생하는 경우 해당 파일이 들어 있는 폴더에 대해 동일한 읽기 및 실행 권한을 설정해 봅니다.

    여전히 .dll을 로드할 수 없는 경우 파일에 대한 감사를 사용하도록 설정해 봅니다. Windows 이벤트 뷰어에서 결과 감사 로그를 검사하면 파일 로드에 실패한 이유를 확인하는 데 도움이 될 수 있습니다. 가장된 AD 사용자가 시작한 실패 항목을 찾습니다. 예를 들어 가장한 사용자가 MYDOMAIN\mytestuser인 경우 감사 로그에서 오류는 다음과 같습니다.

    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
    

CommonCryptoLib 추적

  1. 앞에서 만든 sapcrypto.ini 파일에 다음 줄을 추가하여 CommonCryptoLib 추적을 켭니다.

    ccl/trace/level=5
    ccl/trace/directory=<drive>:\logs\sectrace
    
  2. ccl/trace/directory 옵션을 인증된 사용자 그룹의 구성원이 쓸 수 있는 위치로 변경합니다.

  3. 또는 새 .ini 파일을 만들어 이 동작을 변경합니다. sapcrypto.ini 및 sapcrypto.dll 동일한 디렉터리에서 다음 콘텐츠가 포함된 sectrace.ini 파일을 만듭니다. DIRECTORY 옵션을 인증된 사용자 그룹의 구성원이 쓸 수 있는 컴퓨터의 위치로 바꿉니다.

    LEVEL = 5
    DIRECTORY = <drive>:\logs\sectrace
    
  4. 이제 문제를 재현하고, DIRECTORY가 가리키는 위치에 추적 파일이 있는지 확인합니다.

  5. 작업을 마쳤으면 CPIC 및 CCL 추적을 끕니다.

    CommonCryptoLib 추적에 대한 자세한 내용은 SAP Note 2491573(SAP s-user 필요)을 참조하세요.

가장 행위

이 섹션에서는 가장 문제의 증상 해결 및 해결 단계에 대해 설명합니다.

증상: GatewayInfo[date].log에서 About to impersonate user DOMAIN\User(IsAuthenticated: True, ImpersonationLevel: Impersonation)과 유사한 항목이 보입니다. ImpersonationLevel이 Impersonation다른 경우 가장이 제대로 실행되지 않습니다.

해결 방법: 게이트웨이 서비스 계정에 게이트웨이 머신에 대한 로컬 정책 권한 부여 문서에 있는 단계를 따릅니다. 구성을 변경한 후 게이트웨이 서비스를 다시 시작합니다.

유효성 검사: 보고서를 새로 고치거나 만들고 GatewayInfo[date].log를 수집합니다. 최신 GatewayInfo 로그 파일을 열고 사용자 DOMAIN\User(IsAuthenticated: True, ImpersonationLevel: Impersonation)를 가장하려면 About 문자열을 다시 확인하여 ImpersonationLevel이 Impersonation과 일치하는지 확인합니다.

위임

위임 문제는 대부분 Power BI 서비스에서 일반 오류로 표시됩니다. 위임이 문제인지를 확인하려면 Wireshark 추적을 수집하고 Kerberos를 필터로 사용하는 것이 유용합니다. Kerberos 오류 참조는 이 블로그 게시물을 참조하세요. 이 섹션의 나머지 부분에서는 위임 문제의 증상 해결 및 해결 단계를 설명합니다.

증상: Power BI 서비스 다음 스크린샷과 유사한 예기치 않은 오류가 발생할 수 있습니다. GatewayInfo[date].log clientPipelineId대한 ADO 쿼리 실행 시도 중에 예외를 수집하는 [DM.GatewayCore]가 표시되고 가져오기 [0D_NW_CHANN]는 내보내기와 일치하지 않습니다.

도움이 되지 않는 오류의 스크린샷

Mashup[date].logGSS-API(maj): 자격 증명이 제공되지 않았습니다. 일반 오류가 표시됩니다.

CPIC 추적(sec-Microsoft.Mashup.trc*)을 살펴보면 다음과 유사한 내용이 표시됩니다.

[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

게이트웨이 컴퓨터 sec-Microsoft.Mashup.Con-[].trc의 sectraces에서 오류가 더 명확해집니다.

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

WireShark 추적을 보면 이 문제를 확인할 수도 있습니다.

오류를 표시하는 추적 프로그램의 스크린샷

참고 항목

다른 오류 KRB5KDC_ERR_PREAUTH_REQUIRED는 무시해도 됩니다.

해결 방법: SPN SAP/BW5를 서비스 계정에 추가해야 합니다. 자세한 정보 및 단계는 SAP 설명서에서 확인할 수 있습니다.

다음과 같은 오류 KRB5KDC_ERR_BADOPTION WireShark에서 매니페스트하는 유사하지만 동일하지 않은 오류가 발생할 수 있습니다.

다른 오류를 보여 주는 WireShark 프로그램의 스크린샷

이 오류는 SPN SAP/BW5를 찾을 수 있지만 이 계정이 게이트웨이 서비스 계정에 대한 위임 탭에 위임된 자격 증명을 표시할 수 있는 서비스 아래에 있지 않음을 나타냅니다. 이 오류를 해결하려면 표준 Kerberos 제한 위임에 대한 게이트웨이 서비스 계정 구성에서 설명하는 단계를 따라야 합니다.

유효성 검사: 적절한 구성으로 인해 게이트웨이에서 제네릭 또는 예기치 않은 오류가 표시되지 않습니다. 그래도 오류가 표시되면 게이트웨이 자체의 구성 또는 BW 서버 구성을 확인합니다.

자격 증명 오류

이 섹션에서는 자격 증명 오류 문제의 증상 해결 및 해결 단계를 설명합니다. 위임의 이전 섹션에서 설명한 대로 Power BI 서비스 일반 오류가 표시될 수도 있습니다.

데이터 원본(SAP BW)에 표시되는 증상에 따라 다른 해결 방법이 있으며 두 가지 모두를 살펴보겠습니다.

증상 1: BW Server의 sec-disp+work[].trc 파일에 다음과 유사한 추적이 표시됩니다.

[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

해결 방법: 필요한 경우 게이트웨이 머신에 사용자 매핑 구성 매개 변수를 설정하는 구성 단계를 완료합니다. Microsoft Entra Connect를 이미 구성한 경우에도 이러한 단계를 완료해야 합니다.

유효성 검사: Power BI 서비스에서 성공적으로 보고서를 로드할 수 있습니다. 보고서를 로드할 수 없는 경우 증상 2의 단계를 참조하세요.

증상 2: BW 서버의 sec-disp+work[].trc 파일에 다음과 유사한 추적이 표시됩니다.

[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

해결 방법: 사용자의 Kerberos 외부 ID가 sectraces에 표시되는 것과 일치하는지 확인합니다.

  1. SAP 로그온을 엽니다.
  2. SU01 트랜잭션을 사용합니다.
  3. 사용자를 편집합니다.
  4. SNC 탭으로 이동하여 SNC 이름이 로그에 표시된 것과 일치하는지 확인합니다.

유효성 검사: 정상적으로 완료되면 Power BI 서비스에서 보고서를 만들고 새로 고칠 수 있습니다.

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