서비스 주체에 기업계약 역할 할당
Azure Portal에서 EA(기업계약) 등록을 관리할 수 있습니다. 여러 역할을 만들어 조직을 관리하고, 비용을 살펴보고, 구독을 만들 수 있습니다. 이 문서에서는 Azure PowerShell 및 REST API와 함께 Microsoft Entra ID 서비스 주체를 사용하여 이러한 작업 중 일부를 자동화할 수 있도록 도와줍니다.
참고 항목
조직에 여러 EA 청구 계정이 있는 경우 각 EA 청구 계정에서 개별적으로 Microsoft Entra ID 서비스 주체에 EA 역할을 부여해야 합니다.
시작하기 전에 다음 문서를 숙지해야 합니다.
REST API를 호출하는 방법이 필요합니다. 다음은 API를 쿼리하는 데 많이 사용되는 몇 가지 방법입니다.
- Visual Studio
- Insomnia
- Bruno
- PowerShell의 Invoke-RestMethod
- Curl
서비스 사용자 만들기 및 인증
서비스 주체를 사용하여 EA 작업을 자동화하려면 Microsoft Entra 앱 ID를 만든 다음에 자동화된 방식으로 인증할 수 있어야 합니다.
이 문서의 단계에 따라 서비스 주체를 사용하여 만들고 인증하세요.
다음은 애플리케이션 등록 페이지의 예입니다.
서비스 주체 및 테넌트 ID 찾기
서비스 주체의 개체 ID와 테넌트 ID가 필요합니다. 이 정보는 이 문서의 뒷부분에 있는 사용 권한 할당 작업에 필요합니다. 모든 애플리케이션은 테넌트의 Microsoft Entra ID에 등록됩니다. 앱 등록이 완료되면 두 가지 유형의 개체가 만들어집니다.
- 애플리케이션 개체 - 애플리케이션 ID는 엔터프라이즈 애플리케이션에서 볼 수 있는 것입니다. EA 역할을 부여하는 데 ID를 사용하지 마세요.
- 서비스 주체 개체 - 서비스 주체 개체는 Microsoft Entra ID의 엔터프라이즈 등록 창에 표시되는 개체입니다. 개체 ID는 서비스 주체에 EA 역할을 부여하는 데 사용됩니다.
Microsoft Entra ID를 열고 다음 엔터프라이즈 애플리케이션을 선택합니다.
목록에서 앱을 찾습니다.
앱을 선택하여 애플리케이션 ID와 개체 ID를 확인합니다.
Microsoft Entra ID 개요 페이지로 이동하여 테넌트 ID를 확인합니다.
참고 항목
Microsoft Entra 테넌트 ID 값은 aaaabbbb-0000-cccc-1111-dddd2222eeee
형식의 GUID와 비슷합니다.
서비스 주체에 할당할 수 있는 권한
이 문서의 뒷부분에서는 EA 역할을 통해 작업 수행 권한을 Microsoft Entra ID 앱에 부여합니다. 서비스 주체에는 다음 역할만 할당할 수 있으며, 아래 나와 있는 대로 정확히 역할 정의 ID가 필요합니다.
역할 | 허용되는 작업 | 역할 정의 ID |
---|---|---|
EnrollmentReader | 등록 읽기 권한자는 등록, 부서 및 계정 범위에서 데이터를 볼 수 있습니다. 데이터에는 테넌트 전체를 포함하여 범위 아래의 모든 구독에 대한 요금이 포함됩니다. 등록과 관련된 Azure 선불(이전 명칭은 현금 약정 금액) 잔액을 볼 수 있습니다. | 24f8edb6-1668-4659-b5e2-40bb5f3a7d7e |
EA 구매자 | 예약 주문을 구입하고 예약 트랜잭션을 봅니다. EnrollmentReader의 모든 권한을 가지고 있으며, EnrollmentReader는 DepartmentReader의 모든 권한을 가지고 있습니다. 모든 계정과 구독의 사용량 및 요금을 볼 수 있습니다. 등록과 관련된 Azure 선불(이전 명칭은 현금 약정 금액) 잔액을 볼 수 있습니다. | da6647fb-7651-49ee-be91-c43c4877f0c4 |
DepartmentReader | 본인이 관리하는 부서의 사용량 세부 정보를 다운로드할 수 있습니다. 본인의 부서와 관련된 사용량과 요금을 볼 수 있습니다. | db609904-a47f-4794-9be8-9bd86fbffd8a |
SubscriptionCreator | 지정된 계정 범위에서 새 구독을 만듭니다. | a0bcee42-bf30-4d1b-926a-48d21664ef71 |
- 등록 작성자 역할을 가진 사용자만이 EnrollmentReader 역할을 서비스 주체에 할당할 수 있습니다. 서비스 주체에 할당된 EnrollmentReader 역할은 Azure Portal에 표시되지 않습니다. 이 역할은 프로그래매틱 방식으로 생성되고 사용됩니다.
- 등록 작성자 역할 또는 부서 작성자 역할을 가진 사용자만이 DepartmentReader 역할을 서비스 주체에 할당할 수 있습니다.
- 등록 계정의 소유자(EA 관리자)인 사용자만이 SubscriptionCreator 역할을 서비스 주체에 할당할 수 있습니다. 해당 역할은 Azure Portal에 표시되지 않습니다. 이 역할은 프로그래매틱 방식으로 생성되고 사용됩니다.
- EA 구매자 역할은 Azure Portal에 표시되지 않습니다. 이 역할은 프로그래매틱 방식으로 생성되고 사용됩니다.
서비스 주체에 EA 역할을 부여할 때 필요한 billingRoleAssignmentName
속성을 사용해야 합니다. 이 매개 변수는 사용자가 제공해야 하는 고유한 GUID입니다. PowerShell 명령 New-Guid를 사용하여 GUID를 생성할 수 있습니다. 또한 온라인 GUID/UUID 생성기 웹 사이트에서 고유한 GUID를 생성할 수도 있습니다.
서비스 주체는 하나의 역할만 가질 수 있습니다.
서비스 주체에 등록 계정 역할 권한 할당
역할 할당 - Put REST API 문서를 읽어 보세요. 문서를 읽는 동안 사용해 보기를 선택하여 서비스 주체 사용을 시작하세요.
계정 자격 증명을 사용하여 할당하려는 등록 액세스 권한으로 테넌트에 로그인합니다.
다음 매개 변수를 API 요청에 포함하여 제공합니다.
billingAccountName
: 이 매개 변수는 청구 계정 ID입니다. 이 ID는 Azure Portal의 Cost Management + Billing 개요 페이지에서 확인할 수 있습니다.billingRoleAssignmentName
: 이 매개 변수는 사용자가 입력해야 하는 고유한 GUID입니다. PowerShell 명령 New-Guid를 사용하여 GUID를 생성할 수 있습니다. 또한 온라인 GUID/UUID 생성기 웹 사이트에서 고유한 GUID를 생성할 수도 있습니다.api-version
: 2019-10-01-preview 버전을 사용합니다. 역할 할당 - Put - 예제의 샘플 요청 본문을 사용합니다.요청 본문에는 사용해야 하는 세 개의 매개 변수가 있는 JSON 코드가 포함됩니다.
매개 변수 찾는 위치 properties.principalId
개체 ID의 값입니다. 서비스 주체 및 테넌트 ID 찾기를 참조하세요. properties.principalTenantId
서비스 주체 및 테넌트 ID 찾기를 참조하세요. properties.roleDefinitionId
/providers/Microsoft.Billing/billingAccounts/{BillingAccountName}/billingRoleDefinitions/24f8edb6-1668-4659-b5e2-40bb5f3a7d7e
청구 계정 이름은 API 매개 변수에서 사용한 것과 동일한 매개 변수입니다. Azure Portal에 표시되는 등록 ID입니다.
24f8edb6-1668-4659-b5e2-40bb5f3a7d7e
는 EnrollmentReader의 청구 역할 정의 ID입니다.
실행을 선택하여 명령을 시작합니다.
200 OK
응답은 서비스 주체가 성공적으로 추가되었음을 보여 줍니다.
이제 서비스 주체를 사용하여 EA API에 자동으로 액세스할 수 있습니다. 서비스 주체에는 EnrollmentReader 역할이 있습니다.
서비스 주체에 EA 구매자 역할 권한 할당
EA 구매자 역할에는 등록 읽기 권한자의 경우와 동일한 단계를 사용합니다. 다음 예제를 참조하여 roleDefinitionId
를 지정합니다.
"/providers/Microsoft.Billing/billingAccounts/1111111/billingRoleDefinitions/ da6647fb-7651-49ee-be91-c43c4877f0c4"
서비스 주체에 부서 읽기 권한자 역할 할당
등록 부서 역할 할당 - Put REST API 문서를 읽어 보세요. 문서를 읽는 동안 사용해 보기를 선택합니다.
계정 자격 증명을 사용하여 할당하려는 등록 액세스 권한으로 테넌트에 로그인합니다.
다음 매개 변수를 API 요청에 포함하여 제공합니다.
billingAccountName
: 이 매개 변수는 청구 계정 ID입니다. 이 ID는 Azure Portal의 Cost Management + Billing 개요 페이지에서 확인할 수 있습니다.billingRoleAssignmentName
: 이 매개 변수는 사용자가 입력해야 하는 고유한 GUID입니다. PowerShell 명령 New-Guid를 사용하여 GUID를 생성할 수 있습니다. 또한 온라인 GUID/UUID 생성기 웹 사이트에서 고유한 GUID를 생성할 수도 있습니다.departmentName
: 이 매개 변수는 부서 ID입니다. 부서 ID는 Azure Portal의 Cost Management + Billing>부서 페이지에서 확인할 수 있습니다.이 예에서는 ACE 부서를 사용했습니다. 예제의 ID는
84819
입니다.api-version
: 2019-10-01-preview 버전을 사용합니다. 등록 부서 역할 할당 - Put의 샘플을 사용합니다.요청 본문에는 사용해야 하는 세 개의 매개 변수가 있는 JSON 코드가 포함됩니다.
매개 변수 찾는 위치 properties.principalId
개체 ID의 값입니다. 서비스 주체 및 테넌트 ID 찾기를 참조하세요. properties.principalTenantId
서비스 주체 및 테넌트 ID 찾기를 참조하세요. properties.roleDefinitionId
/providers/Microsoft.Billing/billingAccounts/{BillingAccountName}/billingRoleDefinitions/db609904-a47f-4794-9be8-9bd86fbffd8a
청구 계정 이름은 API 매개 변수에서 사용한 것과 동일한 매개 변수입니다. Azure Portal에 표시되는 등록 ID입니다.
청구 역할 정의 ID
db609904-a47f-4794-9be8-9bd86fbffd8a
는 부서 읽기 권한자의 것입니다.
실행을 선택하여 명령을 시작합니다.
200 OK
응답은 서비스 주체가 성공적으로 추가되었음을 보여 줍니다.
이제 서비스 주체를 사용하여 EA API에 자동으로 액세스할 수 있습니다. 서비스 주체에는 DepartmentReader 역할이 있습니다.
서비스 주체에 구독 작성자 역할 할당
등록 계정 역할 할당 - Put 문서를 읽어 보세요. 문서를 읽는 동안 사용해 보기를 선택하여 구독 작성자 역할을 서비스 주체에 할당합니다.
계정 자격 증명을 사용하여 할당하려는 등록 액세스 권한으로 테넌트에 로그인합니다.
다음 매개 변수를 API 요청에 포함하여 제공합니다. 등록 계정 역할 할당 - Put - URI 매개 변수의 문서를 읽어 보세요.
billingAccountName
: 이 매개 변수는 청구 계정 ID입니다. 이 ID는 Azure Portal의 Cost Management + Billing 개요 페이지에서 확인할 수 있습니다.billingRoleAssignmentName
: 이 매개 변수는 사용자가 입력해야 하는 고유한 GUID입니다. PowerShell 명령 New-Guid를 사용하여 GUID를 생성할 수 있습니다. 또한 온라인 GUID/UUID 생성기 웹 사이트에서 고유한 GUID를 생성할 수도 있습니다.enrollmentAccountName
: 이 매개 변수는 계정 ID입니다. 계정 이름의 계정 ID는 Azure Portal의 Cost Management + Billing 페이지에서 확인합니다.이 예에서는
GTM Test Account
를 사용했습니다. ID는196987
입니다.api-version
: 2019-10-01-preview 버전을 사용합니다. 등록 부서 역할 할당 - Put - 예제의 샘플을 사용합니다.요청 본문에는 사용해야 하는 세 개의 매개 변수가 있는 JSON 코드가 포함됩니다.
매개 변수 찾는 위치 properties.principalId
개체 ID의 값입니다. 서비스 주체 및 테넌트 ID 찾기를 참조하세요. properties.principalTenantId
서비스 주체 및 테넌트 ID 찾기를 참조하세요. properties.roleDefinitionId
/providers/Microsoft.Billing/billingAccounts/{BillingAccountID}/enrollmentAccounts/{enrollmentAccountID}/billingRoleDefinitions/a0bcee42-bf30-4d1b-926a-48d21664ef71
청구 계정 이름은 API 매개 변수에서 사용한 것과 동일한 매개 변수입니다. Azure Portal에 표시되는 등록 ID입니다.
청구 역할 정의 ID
a0bcee42-bf30-4d1b-926a-48d21664ef71
은 구독 작성자 역할의 것입니다.
실행을 선택하여 명령을 시작합니다.
200 OK
응답은 서비스 주체가 성공적으로 추가되었음을 보여 줍니다.
이제 서비스 주체를 사용하여 EA API에 자동으로 액세스할 수 있습니다. 서비스 주체에는 SubscriptionCreator 역할이 있습니다.
서비스 주체 역할 할당 확인
서비스 주체 역할 할당은 Azure Portal에 표시되지 않습니다. 구독 작성자 역할을 포함한 등록 계정 역할 할당은 청구 역할 할당 - 등록 계정별 목록 - REST API(Azure 청구) API를 사용하여 볼 수 있습니다. API를 사용하여 역할 할당이 성공했는지 확인합니다.
문제 해결
EA 역할을 부여한 Enterprise 애플리케이션 개체 ID를 식별하고 사용해야 합니다. 다른 애플리케이션의 개체 ID를 사용하면 API 호출이 실패합니다. 올바른 Enterprise 애플리케이션 개체 ID를 사용하고 있는지 확인합니다.
API 호출 시 다음 오류가 발생하면 앱 등록에 있는 서비스 주체 개체 ID 값을 잘못 사용하고 있을 수 있습니다. 이 오류를 해결하려면 앱 등록이 아닌 엔터프라이즈 애플리케이션의 서비스 주체 개체 ID를 사용하고 있는지 확인합니다.
The provided principal Tenant Id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and principal Object Id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx are not valid