서비스 주체 및 인증서를 사용하여 Power BI 콘텐츠 포함
인증서 기반 인증을 사용하면 클라이언트 인증서를 사용하여 Microsoft Entra ID로 인증받을 수 있습니다. 클라이언트 인증서는 Windows, Android 또는 iOS 디바이스에 있거나 Azure Key Vault에 보관할 수 있습니다.
이 인증 방법을 사용하면 중앙에서 CA(인증 기관)를 사용하여 순환 또는 해지를 위해 인증서를 관리할 수 있습니다.
클라이언트 자격 증명 흐름 GitHub 페이지에서 Microsoft Entra ID의 인증서에 대해 자세히 알아볼 수 있습니다.
메서드
인증서 인증을 설정합니다.
1단계 - 서비스 주체를 사용하여 콘텐츠 포함
서비스 주체를 사용하여 콘텐츠를 포함하려면 서비스 주체 및 애플리케이션 비밀을 사용하여 Power BI 콘텐츠 포함의 지침을 따르세요.
참고 항목
서비스 주체를 사용하여 포함된 콘텐츠가 이미 있는 경우 이 단계를 건너뛰고 2단계로 진행합니다.
2단계 - 인증서 만들기
신뢰할 수 있는 ‘인증 기관’에서 인증서를 구하거나 인증서를 직접 생성할 수 있습니다.
이 섹션에서는 Azure Key Vault를 사용하여 인증서를 만들고 퍼블릭 키가 포함된 .cer 파일을 다운로드하는 방법을 설명합니다.
Microsoft Azure에 로그인합니다.
키 자격 증명 모음 링크를 검색하고 선택합니다.
인증서를 추가하려는 키 자격 증명 모음을 선택합니다.
인증서를 선택합니다.
생성/가져오기를 선택합니다.
다음과 같이 인증서 만들기 필드를 구성합니다.
인증서를 만드는 방법 - 일반
인증서 이름 - 인증서의 이름을 입력합니다.
CA(인증 기관)의 유형 - 자체 서명된 인증서
주체 - An X.500 고유 이름
DNS 이름 - 0개의 DNS 이름
유효 기간(개월) - 인증서의 유효 기간 입력
콘텐츠 형식 - PKCS #12
수명 동작 유형 - 지정된 백분율 수명에 자동으로 갱신
백분율 수명 - 80
고급 정책 구성 - 구성되지 않음
만들기를 실행합니다. 새로 만든 인증서는 기본적으로 사용되지 않도록 설정되어 있습니다. 사용하도록 설정하는 데 최대 5분이 걸릴 수 있습니다.
만든 인증서를 선택합니다.
CER 형식으로 다운로드를 선택합니다. 다운로드한 파일에는 공개 키가 들어 있습니다.
3단계 - 인증서 인증 설정
Microsoft Entra 애플리케이션에서 인증서 및 비밀 탭을 선택합니다.
인증서 업로드를 선택하고 이 자습서의 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 권한이 있어야 합니다.
Visual Studio에서 새 프로젝트를 엽니다.
도구>옵션을 선택합니다.
계정 선택을 검색하여 선택합니다.
Azure Key Vault에 대한 액세스 권한이 있는 계정을 추가합니다.