AAS(Azure Analysis Services) 데이터베이스를 사용하여 보고서를 포함
적용 대상: 앱 소유 데이터
사용자 소유 데이터
이 문서에서는 고객에 대한 콘텐츠 포함 시나리오에서 AAS(Azure Analysis Services)에 저장된 데이터를 사용하는 Power BI 보고서를 포함하는 방법을 설명합니다. 이 문서는 데이터베이스가 행 수준 보안(RLS)을 구현하는지 여부에 관계없이, AAS 데이터와 함께 보고서를 포함하려는 ISV(독립 소프트웨어 개발자)를 대상으로 합니다.
필수 조건
RLS를 사용하거나 사용하지 않고 AAS 데이터베이스에 라이브로 연결하는 보고서가 필요합니다.
동적 보안 - RLS
보고서에서 동적 RLS를 구현하려면 customeData
함수를 사용해야 합니다. 유효 ID를 재정의할 수 없으므로 customData
를 이용해 새 역할을 만드는 것이 좋습니다. username
또는 userPrincipalName
함수가 있는 역할을 사용해도 됩니다(두 함수를 customData
로 바꿔야 합니다).
다음 단계에 따라 새 역할을 만들고 역할에 customData
함수를 추가합니다.
Analysis Services 서버에서 역할을 만듭니다.
일반 설정에서 역할 이름을 제공하고 데이터베이스 권한을 읽기 전용으로 설정합니다.
멤버 자격 설정에서 Embed Token - Generate Token API를 호출할 사용자를 추가합니다. 관리자가 아닌 서비스 주체를 사용하는 경우 서비스 주체도 추가합니다.
행 필터 설정에서
CUSTOMDATA()
함수를 사용하여 DAX 쿼리를 설정합니다.
서비스 사용자
서비스 주체를 사용하여 보고서를 포함하는 경우 서비스 주체가 AAS의 서버 관리자 또는 역할 멤버인지 확인합니다. 서비스 주체에 AAS 관리자 권한을 부여하려면 서버 관리자 역할에 서비스 주체 추가를 참조하세요. 서비스 주체를 역할 멤버로 추가하려면 멤버 자격 설정으로 이동합니다.
서비스 주체 개체 ID를 사용자 이름(유효 ID)으로 사용합니다.
Analysis Service 마이그레이션
포함된 AAS 보고서가 있는 경우에도 AAS에서 Power BI Premium 마이그레이션할 수 있습니다. 포함된 보고서는 Embed Token - Generate Token API를 호출하는 보안 주체가 작업 영역의 멤버 또는 관리자라면 마이그레이션 중에 중단되지 않습니다.
참고 항목
서비스 주체가 관리자가 아니고 마이그레이션할 때 작업 영역의 관리자로 만들지 않고 싶다면, 관리자 권한을 부여할 수 있는 별도의 작업 영역으로 모델을 마이그레이션합니다.
포함 토큰 생성
Generate Token API를 사용하여 유효 ID를 재정의하는 포함 토큰을 생성합니다.
포함 토큰을 생성하는 데 필요한 정보는 Power BI(서비스 주체 또는 마스터 사용자)에 연결된 방법과 데이터베이스에 RLS가 있는지 여부에 따라 달라집니다.
포함 토큰을 생성하려면 다음 정보를 제공하세요.
- 사용자 이름(RLS가 없는 경우 선택 사항, RLS가 있는 경우 필수) - 사용자 이름은 API 호출자(이 경우에는 마스터 사용자의 UPN)와 동일해야 합니다. 데이터베이스에서 RLS를 사용하지 않고 사용자 이름이 제공되지 않는 경우에는 마스터 사용자의 자격 증명을 사용합니다.
- 역할(RLS가 있는 경우 필수) - 유효 ID가 역할의 멤버인 경우에만 보고서가 데이터를 표시합니다.
예시:
다음 세 가지 시나리오 중 하나에 대한 사용자 ID 및 역할을 정의합니다.
- RLS가 구현되지 않은 경우:
유효 ID를 정의하지 않아도 됩니다.
정적 RLS를 사용하는 경우:
var rlsidentity = new EffectiveIdentity( //If static RLS username: "username@contoso.com", roles: new List<string>{ "MyRole" }, datasets: new List<string>{ datasetId.ToString()} )
동적 RLS를 사용하는 경우:
var rlsidentity = new EffectiveIdentity( // If dynamic RLS username: "username@contoso.com", roles: new List<string>{ "MyRoleWithCustomData" }, customData: "SalesPersonA" datasets: new List<string>{ datasetId.ToString()} )
참고 항목
customData
의 포함 토큰의 크기는 1,024자를 초과할 수 없습니다.
유효 ID를 사용하여 포함 토큰 생성:
public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
PowerBIClient pbiClient = this.GetPowerBIClient();
// 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 } // Only in cases of RLS
);
// Generate an embed token
var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);
return embedToken;
}
포함 토큰을 사용하여 보고서를 앱 또는 웹 사이트에 포함합니다. 보고서는 보고서에 적용된 RLS를 기준으로 데이터를 필터링합니다.