서비스 주체 및 애플리케이션 암호를 사용하여 Power BI 콘텐츠 포함

서비스 주체는 Microsoft Entra 애플리케이션이 콘텐츠 및 API에 Power BI 서비스 액세스할 수 있도록 하는 데 사용할 수 있는 인증 방법입니다.

Microsoft Entra 앱을 만들면 서비스 주체 개체 가 만들어집니다. 단순히 서비스 주체라고도 하는 서비스 주체 개체를 사용하면 Microsoft Entra ID가 앱을 인증할 수 있습니다. 인증된 후 앱은 Microsoft Entra 테넌트 리소스에 액세스할 수 있습니다.

인증하기 위해 서비스 주체는 Microsoft Entra 앱의 애플리케이션 ID 와 다음 중 하나를 사용합니다.

  • 인증서
  • 응용 프로그램 비밀

이 문서에서는 응용 프로그램 ID응용 프로그램 비밀을 사용한 서비스 사용자 인증에 대해 설명합니다.

참고 항목

비밀 키가 아닌 인증서를 사용하여 백 엔드 서비스를 보호하는 것이 좋습니다.

메서드

임베디드 분석에 서비스 사용자 및 응용 프로그램 ID를 사용하려면 다음 단계를 수행합니다. 이후 섹션에서는 관련 단계를 자세히 설명합니다.

  1. Microsoft Entra 앱을 만듭니다.

    1. Microsoft Entra 앱에 대한 비밀을 만듭니다.
    2. 앱의 응용 프로그램 ID응용 프로그램 비밀을 가져옵니다.

    참고 항목

    이들 단계는 1단계에 설명되어 있습니다. Microsoft Entra 앱을 만드는 방법에 대한 자세한 내용은 Microsoft Entra 앱 만들기를 참조 하세요.

  2. Microsoft Entra 보안 그룹을 만듭니다.

  3. Power BI 서비스 관리자 설정을 사용하도록 설정합니다.

  4. 작업 영역에 서비스 주체를 추가합니다.

  5. 콘텐츠를 포함합니다.

Important

Microsoft Entra 애플리케이션은 서비스 주체에 대해 만들어진 경우 Azure Portal에서 위임된 권한 또는 애플리케이션 권한을 구성할 필요가 없습니다. Power BI REST API에 액세스하기 위해 서비스 주체에 대한 Microsoft Entra 애플리케이션을 만들 때 사용 권한을 추가하지 않는 것이 좋습니다. 권한은 사용되지 않으며 문제를 해결하기에 어려운 오류가 발생할 수 있습니다.

1단계 - Microsoft Entra 앱 만들기

다음 방법 중 하나를 사용하여 Microsoft Entra 앱을 만듭니다.

Azure Portal에서 Microsoft Entra 앱 만들기

  1. Azure Portal에 로그인합니다.

  2. 앱 등록을 검색하여 선택합니다.

    Screenshot of the Azure portal, with app registration in the search box. That box and the App registrations icon are highlighted.

  3. 새 등록을 선택합니다.

    Screenshot of the App registrations page in the Azure portal. New registration is highlighted.

  4. 필수 정보를 입력합니다.

    • 이름 - 응용 프로그램의 이름을 입력합니다.
    • 지원되는 계정 유형 - 지원되는 계정 유형을 선택합니다.
    • (선택 사항) 리디렉션 URI - 필요한 경우 URI를 입력합니다.
  5. 등록을 선택합니다.

  6. 앱을 등록한 후에는 개요 탭에서 응용 프로그램 ID를 확인할 수 있습니다. 나중에 사용할 수 있도록 응용 프로그램 ID를 복사하여 저장합니다.

    Screenshot of the Overview page of the new app. The Application ID is indecipherable and is highlighted.

  7. 인증서 및 비밀을 선택합니다.

    Screenshot of the Overview page of the new app. On the navigation pane, Certificates & secrets is highlighted.

  8. 새 클라이언트 비밀을 선택합니다.

    Screenshot that shows part of the Certificates & secrets page for the app. Under Client secrets, the New client secret button is highlighted.

  9. 클라이언트 비밀 추가 창에서 설명을 입력하고, 클라이언트 비밀의 만료 시기를 지정하고, 추가를 선택합니다.

  10. 클라이언트 비밀 값을 복사하여 저장합니다.

    Screenshot of the Certificates & secrets page for the app. Under Client secrets, a new secret is visible. Its indecipherable value is highlighted.

    참고 항목

    이 창을 벗어나면 클라이언트 비밀 값이 숨겨지므로 다시 보거나 복사할 수 없습니다.

PowerShell을 사용하여 Microsoft Entra 앱 만들기

다음 샘플 PowerShell 스크립트는 새 Microsoft Entra 앱과 서비스 주체를 만듭니다. 이 스크립트를 실행하기 전에 다음을 수행합니다.

스크립트가 실행된 후 스크립트 출력에서 다음 정보를 기록해 둡니다.

  • 새 앱의 클라이언트 ID
  • 새 서비스 사용자의 개체 ID
  • 서비스 사용자 비밀의 값
# Sign in as a user who's allowed to create an app.
Connect-MgGraph -Scopes "Application.ReadWrite.All" 

# Create a new Azure AD web application.
$web = @{
    RedirectUris = "https://localhost:44322"
    HomePageUrl = "https://localhost:44322"
}
$params = @{
    DisplayName = "myAzureADApp"
    Web = $($web)
}
$app = New-MgApplication @params
Write-Host "Client ID of new app: " $($app.AppId)

# Create a service principal.
$ServicePrincipalID=@{
  "AppId" = $($app.AppId)
  }
$sp = New-MgServicePrincipal -BodyParameter $($ServicePrincipalId)
Write-Host "Object ID of new service principal: " $($sp.Id)

# Create a key for the service principal.
$credential = Add-MgServicePrincipalPassword -ServicePrincipalId $($sp.Id)
Write-Host "Credential of new service principal: " $($credential.SecretText)

2단계 - Microsoft Entra 보안 그룹 만들기

현재 서비스 주체에는 Power BI 콘텐츠 및 API에 대한 액세스 권한이 없습니다. 서비스 주체에 대한 액세스 권한을 부여하려면 Microsoft Entra ID로 보안 그룹을 만듭니다. 그런 다음, 만든 서비스 사용자를 해당 보안 그룹에 추가합니다.

참고 항목

전체 조직에 대해 서비스 주체 액세스를 사용하도록 설정하려면 이 단계를 건너뜁니다.

Microsoft Entra 보안 그룹을 만드는 방법에는 두 가지가 있습니다.

수동으로 보안 그룹 만들기

수동으로 Azure 보안 그룹을 만들려면 기본 그룹 만들기 및 구성원 추가의 지침을 따르세요.

PowerShell을 사용하여 보안 그룹 만들기

다음 샘플 스크립트는 새 보안 그룹을 만듭니다. 또한 이전에 만든 서비스 사용자를 새 보안 그룹에 추가합니다.

  • 스크립트를 실행하기 전에 <app-client-ID>를 새 앱에 대해 이전에 기록한 클라이언트 ID로 바꿉니다.
  • 스크립트를 실행한 후 스크립트 출력에서 찾을 수 있는 새 보안 그룹의 개체 ID를 기록해 둡니다.
# Sign in as an admin.
Connect-MgGraph -Scopes "Application.ReadWrite.All"

# Get the service principal that you created earlier.
$servicePrincipal = Get-MgServicePrincipal -Filter "AppId eq '<app-client-ID>'"

# Create an Azure AD security group.
$group = New-MgGroup -DisplayName "securitygroup1" -SecurityEnabled -MailEnabled:$False -MailNickName "notSet"
Write-Host "Object ID of new security group: " $($group.Id)

# Add the service principal to the group.
New-MgGroupMember -GroupId $($group.Id) -DirectoryObjectId $($servicePrincipal.Id)

3단계 - Power BI 서비스 관리자 설정 사용

Microsoft Entra 앱이 Power BI 콘텐츠 및 API에 액세스하려면 Power BI 관리자가 다음 설정을 사용하도록 설정해야 합니다.

  • 앱에 콘텐츠 포함
  • 서비스 주체가 Power BI API를 사용하도록 허용

Power BI 관리자 포털에서 테넌트 설정으로 이동하고, 개발자 설정이 있는 아래로 스크롤합니다.

  • 전체 조직 또는 Microsoft Entra ID에서 만든 특정 보안 그룹에 대해 앱에 콘텐츠 포함을 사용하도록 설정합니다.

    Screenshot of the Developer settings in the Tenant settings section of the Admin portal. The option for embedding content in apps is turned on.

  • 서비스 주체가 전체 조직 또는 Microsoft Entra ID에서 만든 특정 보안 그룹에 대해 Power BI API를 사용하도록 허용합니다.

    Screenshot of the Developer settings section. The option for allowing service principals to use Power BI APIs is turned on for one security group.

    Important

    서비스 주체는 사용하도록 설정된 모든 테넌트 설정에 액세스할 수 있습니다. 관리자 설정에 따라 여기에는 특정 보안 그룹 또는 전체 구성이 포함됩니다.

    특정 테넌트 설정에 대한 서비스 주체 액세스를 제한하려면 특정 보안 그룹에만 액세스를 허용합니다. 또는 서비스 주체에 대한 전용 보안 그룹을 만들고 원하는 테넌트 설정에서 제외할 수 있습니다.

4단계 - 작업 영역에 서비스 주체 추가

Microsoft Entra 앱은 Power BI 작업 영역에 액세스할 수 있는 경우에만 Power BI 보고서, 대시보드 및 의미 체계 모델에 액세스할 수 있습니다. 앱의 서비스 사용자 또는 해당 보안 그룹을 구성원 또는 관리자로 작업 영역에 추가하여 해당 액세스 권한을 제공합니다.

작업 영역에 서비스 사용자 또는 해당 보안 그룹을 추가하는 세 가지 방법이 있습니다.

수동으로 서비스 사용자 또는 보안 그룹 추가

  1. Power BI 서비스에서 액세스를 사용하도록 설정할 작업 영역으로 스크롤합니다. 기타 메뉴에서 작업 영역 액세스를 선택합니다.

    Screenshot that shows the expanded More menu for a workspace. On that menu, Workspace access is highlighted.

  2. 액세스 창의 관리자, 구성원 또는 참가자 추가에서 다음 중 하나를 추가합니다.

    • 서비스 주체 서비스 주체 의 이름은 Microsoft Entra 앱의 개요 탭에 표시되는 Microsoft Entra 앱의 표시 이름 입니다.
    • 서비스 주체를 포함하는 보안 그룹
  3. 드롭다운 메뉴에서 구성원 또는 관리자를 선택합니다.

  4. 추가를 선택합니다.

PowerShell을 사용하여 서비스 사용자 또는 보안 그룹 추가

다음 섹션에서는 Power BI 작업 영역에 서비스 사용자 및 보안 그룹을 구성원으로 추가하기 위한 샘플 PowerShell 스크립트를 제공합니다.

PowerShell을 사용하여 서비스 사용자를 작업 영역 구성원으로 추가

다음 스크립트는 서비스 사용자를 작업 영역 구성원으로 추가합니다. 스크립트를 실행하기 전에 다음을 수행합니다.

  • <service-principal-object-ID>를 새 서비스 사용자에 대해 이전에 기록한 개체 ID로 바꿉니다.
  • <workspace-name>을 서비스 사용자에게 액세스 권한을 부여할 작업 영역의 이름으로 바꿉니다.
# Sign in to Power BI.
Login-PowerBI

# Set up the service principal ID.
$SPObjectID = "<service-principal-object-ID>"

# Get the workspace.
$pbiWorkspace = Get-PowerBIWorkspace -Filter "name eq '<workspace-name>'"

# Add the service principal to the workspace.
Add-PowerBIWorkspaceUser -Id $($pbiWorkspace.Id) -AccessRight Member -PrincipalType App -Identifier $($SPObjectID)

PowerShell을 사용하여 보안 그룹을 작업 영역 구성원으로 추가

다음 스크립트는 보안 그룹을 작업 영역 구성원으로 추가합니다. 스크립트를 실행하기 전에 다음을 수행합니다.

  • <security-group-object-ID>를 새 보안 그룹에 대해 이전에 기록한 개체 ID로 바꿉니다.
  • <workspace-name>를 보안 그룹에게 액세스 권한을 부여할 작업 영역의 이름으로 바꿉니다.
# Sign in to Power BI.
Login-PowerBI

# Set up the security group object ID.
$SGObjectID = "<security-group-object-ID>"

# Get the workspace.
$pbiWorkspace = Get-PowerBIWorkspace -Filter "name eq '<workspace-name>'"

# Add the security group to the workspace.
Add-PowerBIWorkspaceUser -Id $($pbiWorkspace.Id) -AccessRight Member -PrincipalType Group -Identifier $($SGObjectID)

5단계: 콘텐츠 포함

자체 애플리케이션 또는 애플리케이션 예제 내에 콘텐츠를 포함할 수 있습니다.

콘텐츠가 포함되면 프로덕션으로 이동할 준비가 된 것입니다.

참고 항목

인증서를 사용하여 콘텐츠를 보호하려면 서비스 사용자 및 인증서를 사용하여 Power BI 콘텐츠 포함에 설명된 단계를 따르세요.

고려 사항 및 제한 사항

  • 서비스 주체 사용 시 내 작업 영역이 지원되지 않습니다.
  • 프로덕션으로 이동 시 용량이 필요합니다.
  • 서비스 사용자를 사용하여 Power BI 포털에 로그인할 수 없습니다.
  • Power BI 관리자 권한은 Power BI 관리 포털의 개발자 설정에서 서비스 사용자를 사용하도록 설정하는 데 필요합니다.
  • 조직에 대해 포함 애플리케이션은 서비스 주체를 사용할 수 없습니다.
  • 데이터 흐름 관리는 지원되지 않습니다.
  • 서비스 주체는 일부 읽기 전용 관리 API만 지원합니다. 읽기 전용 관리 API에 서비스 주체 지원을 사용하려면 테넌트에서 Power BI 서비스 관리 설정을 사용하도록 설정해야 합니다. 자세한 내용은 읽기 전용 관리 API에 대한 서비스 주체 인증 사용을 참조하세요.
  • Azure Analysis Services 데이터 원본과 함께 서비스 사용자를 사용하는 경우 서비스 사용자 자체에 Azure Analysis Services 인스턴스 권한이 있어야 합니다. 서비스 주체가 포함된 보안 그룹을 이 목적으로 사용할 수는 없습니다.