Power Platform 관리 ID를 사용하면 Dataverse 플러그 인 또는 플러그 인 패키지가 Azure 리소스와 연결하여 자격 증명 없이 관리 ID를 지원할 수 있습니다. 이 문서는 Power Platform 환경에서 관리 ID를 설정하는 데 도움이 됩니다.
필수 구성 요소
- UAMI(사용자 할당 관리 ID) 또는 애플리케이션 등록을 프로비전할 수 있는 액세스 권한이 있는 Azure 구독입니다.
- 플러그 인 또는 플러그 인 패키지용 도구:
- 플러그 인을 빌드하기 위한 Visual Studio과 같은 IDE(통합 개발 환경)
- 플러그 인 등록 도구
- SignTool.exe(서명 도구)를 사용하여 플러그 인 어셈블리에 서명
- Power Platform CLI
- 플러그 인 어셈블리에 서명할 유효한 인증서입니다.
관리 ID 설정
Dataverse 플러그 인 또는 플러그 인 패키지에 대한 Power Platform 관리 ID를 구성하려면 다음 단계를 완료합니다.
- 새 앱 등록 또는 사용자가 할당한 관리 ID를 만듭니다.
- 페더레이션 ID 자격 증명을 구성합니다.
- Dataverse 플러그 인 또는 플러그 인 패키지를 만들고 등록합니다.
플러그 인 어셈블리를 빌드하고 플러그 인 또는 플러그 인 패키지를 등록해야 합니다. - Dataverse에서 관리 ID 레코드를 만듭니다.
- 애플리케이션 또는 UAMI(사용자 할당 관리 ID)에 Azure 리소스에 대한 액세스 권한을 부여합니다.
- 플러그인 통합의 유효성을 검사합니다.
새 앱 등록 또는 사용자 할당 관리 ID 만들기
다음 시나리오에 따라 Microsoft Entra ID에서 사용자 할당 관리 ID 또는 애플리케이션을 만들 수 있습니다.
- Azure Key Vault와 같은 Azure 리소스에 연결하는 플러그 인과 연결된 앱 ID를 원하는 경우 애플리케이션 등록을 사용합니다. 앱 ID를 사용하면 Azure 리소스에 액세스하는 플러그인에 Azure 정책을 적용할 수 있습니다.
- 서비스 주체가 Azure Key Vault와 같은 Azure 리소스에 액세스하도록 하려면 사용자 할당 관리 ID를 프로비전할 수 있습니다.
노트
이후 단계에서 사용하므로 다음 ID를 기록해 두어야 합니다.
- 애플리케이션(클라이언트) ID
- 테넌트 ID
페더레이션 ID 자격 증명 구성
관리 ID를 구성하려면 이전 섹션에서 만든 Azure 포털에서 사용자가 할당한 관리 ID 또는 Microsoft Entra ID 애플리케이션을 엽니다.
- Azure Portal로 이동합니다.
- Microsoft Entra ID로 이동합니다.
- 앱 등록을 선택합니다.
- 관리 ID 설정에서만든 앱을 엽니다.
- 인증서 및 암호로 이동합니다.
- 페더레이션 자격 증명 탭을 선택하고 자격 증명 추가를 선택합니다.
- 발급자를 Other issuer(기타 발급자 )로선택합니다.
- 다음 정보를 입력합니다.
발급자
테넌트의 v2.0 발급자를 사용하십시오.
https://login.microsoftonline.com/{tenantID}/v2.0
예시
https://login.microsoftonline.com/5f8a1a9f-2e1a-415f-b10c-84c3736a21b9/v2.0
유형
명시적 주체 식별자를 선택합니다.
주체 식별자
인증서 유형과 일치하는 형식을 선택합니다.
자체 서명된 인증서(개발 전용):
/eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/h/{hash}신뢰할 수 있는 발급자 인증서(프로덕션에 권장):
/eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/i/{issuer}/s/{certificateSubject}
세그먼트 참조
| 세그먼트 | Description |
|---|---|
| eid1 | ID 형식 버전 |
| c/pub | 퍼블릭 클라우드, GCC(Government Community Cloud) 및 GCC의 첫 번째 릴리스 스테이션에 대한 클라우드 코드입니다. |
| t/{encodedTenantId} | 테넌트 ID |
| a/qzXoWDkuqUa3l6zM5mM0Rw/ | 내부용으로만 사용됩니다. 수정하지 마세요. |
| n/플러그인 | 플러그 인 구성 요소 |
| e/{environmentId} | 환경 ID |
| h/{해시} | 인증서의 SHA-256(자체 서명된 경우에만) |
| i/{issuer} s/{certificateSubject} |
신뢰할 수 있는 발급자 세부 정보 |
자체 서명된 인증서 생성
모든 플러그 인에는 확인 가능한 ID가 있어야 하며 서명 인증서는 플러그 인의 고유한 지문 역할을 합니다. 다음 코드는 개발 또는 테스트 시나리오를 위해 자체 서명된 인증서를 생성하는 데 사용할 수 있는 샘플 PowerShell 코드 조각입니다. 참조를 위해 예제 3에서 따를 수 있습니다.
$params = @{
Type = 'Custom'
Subject = 'E=admin@contoso.com,CN=Contoso'
TextExtension = @(
'2.5.29.37={text}1.3.6.1.5.5.7.3.4',
'2.5.29.17={text}email=admin@contoso.com' )
KeyAlgorithm = 'RSA'
KeyLength = 2048
SmimeCapabilities = $true
CertStoreLocation = 'Cert:\CurrentUser\My'
}
New-SelfSignedCertificate @params
노트
에 대한 인코딩 {encodedTenantId}
- GUID → 16진수로 변환합니다.
- 16진수 → Base64URL(표준 Base64 아님)을 변환합니다.
자체 서명된 해시
-
.cer통해 SHA-256을 컴퓨팅합니다.
.pfx가 있는 경우 먼저 .cer 내보냅니다.
CertUtil -hashfile <CertificateFilePath> SHA256 $cert = Get-PfxCertificate -FilePath "path o\your.pfx" $cert.RawData | Set-Content -Encoding Byte -Path "extracted.cer"
특수한 Azure 클라우드 환경
GCC에서 퍼블릭 클라우드, GCC 및 GCC의 첫 번째 릴리스 스테이션이 아닌 곳에 배포할 때, 대상, 발급자 URL, 및 주체 접두사를 명시적으로 설정합니다.
| 클라우드 | 청중 | 발급자 URL | 제목 접두사 |
|---|---|---|---|
| GCC High & DoD | api://AzureADTokenExchangeUSGov |
https://login.microsoftonline.us |
/eid1/c/usg |
| 문케이크(중국) | api://AzureADTokenExchangeChina |
https://login.partner.microsoftonline.cn |
/eid1/c/chn |
| 미국 내셔널 (USNAT) | api://AzureADTokenExchangeUSNat |
https://login.microsoftonline.eaglex.ic.gov |
/eid1/c/uss |
| US Secure(USSec) | api://AzureADTokenExchangeUSSec |
https://login.microsoftonline.scloud |
/eid1/c/usn |
노트
대상 그룹 값은 대/소문자를 구분하며 정확히 일치해야 합니다.
퍼블릭 클라우드, GCC 및 GCC의 첫 번째 릴리스 스테이션(및 기타 나열되지 않은 클라우드)의 경우 기본값은 다음과 같습니다.
대상api://AzureADTokenExchange, 발급자https://login.microsoftonline.com, 제목 접두사/eid1/c/pub.
Dataverse 플러그 인 또는 플러그 인 패키지 만들기 및 등록
플러그 인 어셈블리 빌드
Visual Studio를 사용하여 플러그 인을 만듭니다. 플러그 인을 빌드하는 동안 새 앱 등록 또는 사용자가 할당한 관리 ID의 테넌트 ID와
https://{OrgName}.crm*.dynamics.com/.default와 같은 조직 URL 또는 훨씬 더 세부적인 범위를 사용합니다.IManagedIdentityService 를 사용하고 토큰 메서드를 획득하여 지정된 범위의 토큰을 요청합니다.
메서드 서명:
string AcquireToken(IEnumerable<string> scopes);
패키징 및 서명
플러그 인 패키지 서명
플러그 인 패키지를 빌드하는 경우 NuGet Sign CLI 를 사용하여 .nuspec 또는 .csproj 파일에서 패키지를 생성합니다. 패키지를 생성한 후 인증서로 서명합니다.
nuget sign YourPlugin.nupkg `
-CertificatePath MyCert.pfx `
-CertificatePassword "MyPassword" `
-Timestamper http://timestamp.digicert.com
플러그인 어셈블리 서명하기
플러그 인(어셈블리)을 등록하는 경우 SignTool.exe (서명 도구)를 사용하여 인증서로 DLL에 서명합니다.
signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dll
필요에 따라 RFC 3161 규격 타임스탬프 서버의 URL을 제공하여 타임스탬프를 추가할 수 있습니다.
노트
자체 서명된 인증서는 개발 또는 테스트 목적으로만 사용합니다. 프로덕션 환경에서 자체 서명된 인증서를 사용하지 마세요.
플러그 인 등록
컴퓨터에 플러그 인 등록 도구가 아직 없는 경우 설치합니다. 자세한 내용은 Dataverse 개발자 도구를 참조하십시오.
플러그 인을 등록합니다. 자세한 내용은 플러그 인 등록을 참조하세요.
Dataverse에서 관리 ID 레코드 만들기
Dataverse에서 관리 ID 레코드를 프로비전하려면 다음 단계를 완료합니다.
REST 클라이언트(예: 불면증)를 사용하여 HTTP POST 요청을 전송하여 관리 ID를 만듭니다. URL 및 요청 본문을 다음 형식으로 사용합니다.
POST https://<<orgURL>>/api/data/v9.0/managedidentitiesorgURL을 조직의 URL로 바꿔야 합니다.
credentialsource가 페이로드에서 2로 설정되어 있고, 환경별 시나리오에서 subjectscope가 1로 설정되어 있으며, 페이로드에서 버전이 1로 설정되어 있는지 확인합니다.
샘플 페이로드
{ "applicationid": "<<appId>>", //Application Id, or ClientId, or User Managed Identity "managedidentityid": "<<anyGuid>>", "credentialsource": 2, // Managed client "subjectscope": 1, //Environment Scope "tenantid": "<<tenantId>>", //Entra Tenant Id "version": 1 }1단계에서 만든 관리 ID와 연결하기 위해 HTTP PATCH 요청을 실행하여 플러그 인 패키지 또는 플러그 인 어셈블리 레코드를 업데이트합니다.
플러그 인 어셈블리
PATCH https://<<orgURL>>/api/data/v9.0/pluginassemblies(<<PluginAssemblyId>>)플러그 인 패키지
PATCH https://<<orgURL>>/api/data/v9.0/pluginpackages(<<PluginPackageId>>)샘플 페이로드
{ "managedidentityid@odata.bind": "/managedidentities(<<ManagedIdentityGuid>>)" }orgURL, PluginAssemblyId(또는 PluginPackageId) 및 ManagedIdentityGuid를 값으로 바꿔야 합니다.
애플리케이션 또는 사용자가 할당한 관리 ID에 Azure 리소스에 대한 액세스 권한 부여
Azure Key Vault와 같은 Azure 리소스에 액세스하기 위해 애플리케이션 ID에 대한 액세스 권한을 부여해야 하는 경우 해당 리소스에 애플리케이션 또는 사용자 할당 관리 ID에 대한 액세스 권한을 부여합니다.
플러그 인 통합 유효성 검사
플러그 인이 관리 ID를 지원하는 Azure 리소스에 대한 액세스를 안전하게 요청할 수 있으므로 별도의 자격 증명이 필요하지 않은지 확인합니다.
FAQ(질문과 대답)
이 오류를 해결하려면 어떻게 해야 하나요?
다음과 같은 오류 메시지가 나타나는 경우:
오류 발생 – 구성 문제로 인해 인증이 차단됩니다.
AADSTS700213: 일치하는 페더레이션 ID 레코드를 찾을 수 없음
다음 단계를 완료하여 문제를 해결합니다.
FIC가 올바르게 구성되고 저장되었는지 확인합니다.
발급자/주체가 이전에 지정한 형식과 일치하는지 확인합니다.
오류 스택에서 예상 형식을 찾을 수도 있습니다.
"Power Platform에 연결할 수 없음" 오류를 해결하려면 어떻게 해야 하나요?
Power Platform 엔드포인트에 연결할 수 있고 허용 목록에 있는지 확인하려면 Power Platform URL 및 IP 주소 범위를 참조하세요.