온-프레미스 SQL Server Analysis Services(SSAS)에 보고서 포함

적용 대상: 앱 소유 데이터 사용자 소유 데이터

이 문서에서는 온-프레미스Analysis Services 테이블 형식 모델 라이브 연결을 사용하여 Power BI 콘텐츠를 표준 Power BI 앱 소유 데이터 애플리케이션에 포함하는 방법을 설명합니다. 이 문서는 RLS를 구현하는지 여부에 관계없이 모든 라이브 연결 SSAS 모델에 적용됩니다.

이 시나리오에서 데이터베이스는 SSAS(온-프레미스) 모델에 있으며 Power BI 엔진은 게이트웨이를 통해 데이터베이스에 연결합니다. 보안 역할(RLS) 및 권한(있는 경우)은 Power BI Desktop이 아니라 SSAS 모델에 정의됩니다.

이 문서의 대상

이 문서는 이미 온-프레미스(SSAS) 데이터베이스 설정이 (RLS 사용 여부와 상관없이) 되어있고 해당 위치에서 직접 콘텐츠를 포함하려는 ISV와 주로 관련이 있습니다.

ISV 설정

온-프레미스 행 수준 보안은 라이브 연결에서만 사용할 수 있지만 RLS를 구현하는지 여부에 관계없이 모든 데이터베이스에 대한 라이브 연결을 만들 수 있습니다. 다음 내용이 포함됩니다.

  • RLS 역할이 설정되지 않은 데이터베이스
  • 하나 이상의 역할에 속한 멤버가 있는 데이터베이스
  • 정적 또는 동적 보안 역할이 있는 데이터베이스

SSAS 모델에서 보고서를 포함하려면 다음 작업을 수행해야 합니다.

  1. 게이트웨이 설정
  2. 라이브 연결 만들기
  3. 포함 토큰 생성

게이트웨이 설정

SSAS 게이트웨이에 데이터 원본 연결 추가

Active Directory에서 인식하는 데이터 원본 이름, 데이터 원본 유형, 서버, 데이터베이스, 사용자 이름 및 암호를 입력합니다.

게이트웨이를 만들고 관리하는 방법에 대한 자세한 내용은 게이트웨이 데이터 원본 추가 또는 제거하기를 참조하세요.

서비스 주체 또는 마스터 사용자에게 게이트웨이에 대한 권한 부여

포함 토큰을 생성하는 사용자에게는 다음 권한 중 하나가 필요합니다.

  • 게이트웨이 관리자 권한

  • Datasource impersonate 권한(ReadOverrideEffectiveIdentity)

    가장(재정의) 권한이 있는 사용자에게는 이름 옆에 키 아이콘이 있습니다.

    Screenshot of a gateway member with a key icon next to their name.

다음 지침에 따라 마스터 사용자, 서비스 주체 또는 서비스 주체 프로필에 게이트웨이 권한을 부여합니다.

사용자 이름 매핑

온-프레미스 디렉터리의 사용자 이름과 Microsoft Entra 디렉터리가 다르고 포털에서 데이터를 보려면 Microsoft Entra ID의 각 사용자 또는 역할을 온-프레미스 데이터베이스의 사용자에게 매핑하는 사용자 매핑 테이블을 만들어야 합니다. 사용자 이름 매핑에 대한 지침은 수동으로 사용자 이름 다시 매핑을 확인하세요.

자세한 내용은 Analysis Services 데이터 원본의 사용자 이름 매핑을 참조하세요.

라이브 연결 만들기

환경이 설정되면 Power BI Desktop과 SQL Server 간에 라이브 연결을 만들고 보고서를 만듭니다.

  1. Power BI Desktop을 시작하고, 데이터 가져오기>데이터베이스를 선택합니다.

  2. 데이터 원본 목록에서 SQL Server Analysis Services 데이터베이스를 선택하고 연결을 선택합니다.

    Connect to SQL Server Analysis Services Database.

  3. Analysis Services 테이블 형식 인스턴스 세부 정보를 입력하고 라이브 연결을 선택합니다. 그런 다음 확인을 선택합니다.

    Screenshot of Analysis Services details.

포함 토큰 생성

고객에 대한 콘텐츠 포함 시나리오에 보고서를 포함하려면 유효 ID를 Power BI에 전달하는 포함 토큰을 생성하세요. RLS가 구현되지 않은 경우에도 AS 엔진에 대한 모든 라이브 연결에는 유효한 ID가 필요합니다.

RLS가 설정되지 않은 경우 관리자만 데이터베이스에 액세스할 수 있으므로 관리자를 유효 ID로 사용하는게 좋습니다.

포함 토큰을 생성하는 데 필요한 정보는 Power BI에 연결된 방법(서비스 주체 또는 마스터 사용자)과 데이터베이스에 RLS가 있는지 여부에 따라 달라집니다.

포함 토큰을 생성하려면 다음 정보를 제공하세요.

  • 사용자 이름(RLS가 없는 경우 선택 사항. RLS에는 필수) - SSAS에서 인식하는 유효한 사용자 이름으로 유효 ID로 사용됩니다. 데이터베이스에서 RLS를 사용하지 않고 사용자 이름이 제공되지 않는 경우에는 마스터 사용자의 자격 증명을 사용합니다.
  • 역할(RLS가 있는 경우 필수) - 유효 ID가 역할의 멤버인 경우에만 보고서가 데이터를 표시합니다.

예시:

public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
    PowerBIClient pbiClient = this.GetPowerBIClient();

    // Define the user identity and roles. Use one of the following:

    var rlsidentity = new EffectiveIdentity(  //If no RLS
       username: "Domain\\Username", // can also be username@contoso.com
       datasets: new List<string>{ datasetId.ToString()}
    )

    var rlsidentity = new EffectiveIdentity(  // If RLS
       username: "username@contoso.com",
       roles: new List<string>{ "MyRole" },
       datasets: new List<string>{ datasetId.ToString()}
    )
    
    // Create a request for getting an embed token for the rls identity defined above
    var tokenRequest = new GenerateTokenRequestV2(
        reports: new List<GenerateTokenRequestV2Report>() { new GenerateTokenRequestV2Report(reportId) },
        datasets: datasetIds.Select(datasetId => new GenerateTokenRequestV2Dataset(datasetId.ToString())).ToList(),
        targetWorkspaces: targetWorkspaceId != Guid.Empty ? new List<GenerateTokenRequestV2TargetWorkspace>() { new GenerateTokenRequestV2TargetWorkspace(targetWorkspaceId) } : null,
        identities: new List<EffectiveIdentity> { rlsIdentity }
    );

    // Generate an embed token
    var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);

    return embedToken;
}

이제 보고서를 앱에 포함할 수 있으며 보고서는 보고서에 액세스하는 사용자의 권한에 따라 데이터를 필터링할 것입니다.

고려 사항 및 제한 사항

CustomData는 지원되지 않습니다.

포함 토큰 생성