다음을 통해 공유


서비스 주체 및 인증서를 사용하여 Power BI 콘텐츠 포함

인증서 기반 인증을 사용하면 클라이언트 인증서를 사용하여 Microsoft Entra ID로 인증받을 수 있습니다. 클라이언트 인증서는 Windows, Android 또는 iOS 디바이스에 있거나 Azure Key Vault에 보관할 수 있습니다.

이 인증 방법을 사용하면 중앙에서 CA(인증 기관)를 사용하여 순환 또는 해지를 위해 인증서를 관리할 수 있습니다.

클라이언트 자격 증명 흐름 GitHub 페이지에서 Microsoft Entra ID의 인증서에 대해 자세히 알아볼 수 있습니다.

메서드

  1. 서비스 주체를 사용하여 콘텐츠를 포함합니다.

  2. 인증서를 만듭니다.

  3. 인증서 인증을 설정합니다.

  4. Azure Key Vault에서 인증서를 가져옵니다.

  5. 서비스 주체 및 인증서를 사용하여 인증합니다.

1단계 - 서비스 주체를 사용하여 콘텐츠 포함

서비스 주체를 사용하여 콘텐츠를 포함하려면 서비스 주체 및 애플리케이션 비밀을 사용하여 Power BI 콘텐츠 포함의 지침을 따르세요.

참고 항목

서비스 주체를 사용하여 포함된 콘텐츠가 이미 있는 경우 이 단계를 건너뛰고 2단계로 진행합니다.

2단계 - 인증서 만들기

신뢰할 수 있는 ‘인증 기관’에서 인증서를 구하거나 인증서를 직접 생성할 수 있습니다.

이 섹션에서는 Azure Key Vault를 사용하여 인증서를 만들고 퍼블릭 키가 포함된 .cer 파일을 다운로드하는 방법을 설명합니다.

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

  2. 키 자격 증명 모음 링크를 검색하고 선택합니다.

    서비스 목록의 키 자격 증명 모음 서비스에 대한 링크를 보여 주는 Azure Portal 창의 스크린샷.

  3. 인증서를 추가하려는 키 자격 증명 모음을 선택합니다.

    키 자격 증명 모음 목록에서 흐리게 표시된 키 자격 증명 모음 목록을 보여 주는 Azure Portal 창의 스크린샷.

  4. 인증서를 선택합니다.

    강조 표시된 인증서 항목이 있는 키 자격 증명 모음 페이지를 보여 주는 Azure Portal 창의 스크린샷.

  5. 생성/가져오기를 선택합니다.

    강조 표시된 생성/가져오기 항목이 있는 인증서 창을 보여 주는 Azure Portal 창의 스크린샷.

  6. 다음과 같이 인증서 만들기 필드를 구성합니다.

    • 인증서를 만드는 방법 - 일반

    • 인증서 이름 - 인증서의 이름을 입력합니다.

    • CA(인증 기관)의 유형 - 자체 서명된 인증서

    • 주체 - An X.500 고유 이름

    • DNS 이름 - 0개의 DNS 이름

    • 유효 기간(개월) - 인증서의 유효 기간 입력

    • 콘텐츠 형식 - PKCS #12

    • 수명 동작 유형 - 지정된 백분율 수명에 자동으로 갱신

    • 백분율 수명 - 80

    • 고급 정책 구성 - 구성되지 않음

  7. 만들기를 실행합니다. 새로 만든 인증서는 기본적으로 사용되지 않도록 설정되어 있습니다. 사용하도록 설정하는 데 최대 5분이 걸릴 수 있습니다.

  8. 만든 인증서를 선택합니다.

  9. CER 형식으로 다운로드를 선택합니다. 다운로드한 파일에는 공개 키가 들어 있습니다.

    강조 표시된 CER 형식으로 다운로드 단추를 보여 주는 Azure Portal 창의 스크린샷.

3단계 - 인증서 인증 설정

  1. Microsoft Entra 애플리케이션에서 인증서 및 비밀 탭을 선택합니다.

    앱에 대한 인증서 및 비밀 창을 보여 주는 Azure Portal 창의 스크린샷.

  2. 인증서 업로드를 선택하고 이 자습서의 2단계에서 만들고 다운로드한 .cer 파일을 업로드합니다. .cer 파일에는 공개 키가 들어 있습니다.

4단계 - Azure Key Vault에서 인증서 가져오기

MSI(관리 서비스 ID)를 사용하여 Azure Key Vault에서 인증서를 가져옵니다. 이 프로세스에는 퍼블릭 키와 프라이빗 키가 둘 다 들어 있는 .pfx 인증서를 가져오는 과정이 포함됩니다.

Azure Key Vault에서 인증서를 읽는 방법에 대한 코드 예제를 참조하세요. Visual Studio를 사용하려면 MSI를 사용하도록 Visual Studio 구성을 참조하세요.

private X509Certificate2 ReadCertificateFromVault(string certName)
{
    var serviceTokenProvider = new AzureServiceTokenProvider();
    var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(serviceTokenProvider.KeyVaultTokenCallback));
    CertificateBundle certificate = null;
    SecretBundle secret = null;

    certificate = keyVaultClient.GetCertificateAsync($"https://{KeyVaultName}.vault.azure.net/", certName).Result;
    secret = keyVaultClient.GetSecretAsync(certificate.SecretIdentifier.Identifier).Result;
    
    return new X509Certificate2(Convert.FromBase64String(secret.Value));
}

5단계 - 서비스 주체 및 인증서를 사용하여 인증

Azure Key Vault에 연결하여 Azure Key Vault에 저장된 인증서 및 서비스 주체를 사용하는 앱을 인증할 수 있습니다.

Azure Key Vault에서 인증서를 연결하고 읽으려면 다음 코드 샘플을 참조하세요.

참고 항목

조직에서 만든 인증서가 이미 있는 경우 Azure Key Vault에 .pfx 파일을 업로드합니다.

// Preparing needed variables
var Scope = "https://analysis.windows.net/powerbi/api/.default"
var ApplicationId = "{YourApplicationId}"
var tenantSpecificURL = "https://login.microsoftonline.com/{YourTenantId}/"
X509Certificate2 certificate = ReadCertificateFromVault(CertificateName);

// Authenticating with a SP and a certificate
public async Task<AuthenticationResult> DoAuthentication(){
    IConfidentialClientApplication clientApp = null;
    clientApp = ConfidentialClientApplicationBuilder.Create(ApplicationId)
                                                    .WithCertificate(certificate)
                                                    .WithAuthority(tenantSpecificURL)
                                                    .Build();
    return await clientApp.AcquireTokenForClient(Scope).ExecuteAsync();
}

MSI를 사용하도록 Visual Studio 구성

임베디드 솔루션을 만들 때 MSI(관리 서비스 ID)를 사용하도록 Visual Studio를 구성하는 것이 유용할 수 있습니다. MSI는 Microsoft Entra ID를 관리할 수 있는 기능입니다. 구성된 후에는 Visual Studio가 Azure Key Vault에 대해 인증을 수행하도록 합니다.

참고 항목

Visual Studio에 로그인하는 사용자는 인증서를 가져올 수 있는 Azure Key Vault 권한이 있어야 합니다.

  1. Visual Studio에서 새 프로젝트를 엽니다.

  2. 도구>옵션을 선택합니다.

    도구 메뉴에서 강조 표시된 옵션 단추를 보여 주는 Visual Studio 창의 스크린샷.

  3. 계정 선택을 검색하여 선택합니다.

    검색 결과에서 강조 표시된 계정 선택 옵션을 보여 주는 Visual Studio 옵션 창의 스크린샷.

  4. Azure Key Vault에 대한 액세스 권한이 있는 계정을 추가합니다.