Azure 청구 API를 사용하여 프로그래밍 방식으로 본인의 권한을 상승시켜 디렉터리의 모든 청구 계정을 관리할 수 있습니다.
디렉터리에서 모든 청구 계정 찾기
GET https://management.azure.com/providers/Microsoft.Billing/billingAccounts?includeAllOrgs=true&api-version=2020-05-01
API 응답은 디렉터리의 청구 계정 목록을 반환합니다.
{
"value": [
{
"id": "/providers/Microsoft.Billing/billingAccounts/6e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx_xxxx-xx-xx",
"name": "6e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx_xxxx-xx-xx",
"properties": {
"accountStatus": "Active",
"accountType": "Individual",
"agreementType": "MicrosoftCustomerAgreement",
"billingProfiles": {
"hasMoreResults": false
},
"displayName": "Connie Wilson",
"hasReadAccess": true
},
"type": "Microsoft.Billing/billingAccounts"
},
{
"id": "/providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx_xxxx-xx-xx",
"name": "5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx_xxxx-xx-xx",
"properties": {
"accountStatus": "Active",
"accountType": "Enterprise",
"agreementType": "MicrosoftCustomerAgreement",
"billingProfiles": {
"hasMoreResults": false
},
"displayName": "Contoso",
"hasReadAccess": true
},
"type": "Microsoft.Billing/billingAccounts"
},
{
"id": "/providers/Microsoft.Billing/billingAccounts/4e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx_xxxx-xx-xx",
"name": "4e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx_xxxx-xx-xx",
"properties": {
"accountStatus": "Active",
"accountType": "Individual",
"agreementType": "MicrosoftCustomerAgreement",
"billingProfiles": {
"hasMoreResults": false
},
"displayName": "Tomas Wilson",
"hasReadAccess": true
},
"type": "Microsoft.Billing/billingAccounts"
}
]
}
청구 계정의 displayName
속성을 사용하여 액세스 권한을 상승시키려면 청구 계정을 식별합니다. 청구 계정 name
을 복사합니다. 예를 들어 Connie Wilson 청구 계정에서 자신을 소유자로 승격하려면 6e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx_xxxx-xx-xx
를 복사합니다. 다음 단계에서 사용할 수 있도록 이 값을 어딘가에 붙여넣습니다.
청구 계정에 사용할 수 있는 역할의 정의 가져오기
<billingAccountName>
를 첫 번째 단계(6e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx_xxxx-xx-xx
)에서 복사한 name
로 바꿔서 다음 요청을 수행합니다.
GET https://management.azure.com/providers/Microsoft.Billing/billingAccounts/<billingAccountName>/billingRoleDefinitions?api-version=2020-05-01
API 응답은 청구 계정에 사용할 수 있는 역할 목록을 반환합니다.
{
"value": [
{
"id": "/providers/Microsoft.Billing/billingAccounts/6e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx_xxxx-xx-xx/billingRoleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"name": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"properties": {
"description": "The Owner role gives the user all permissions including access management on a billing account.",
"permissions": [
{
"actions": [
"a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1"
]
}
],
"roleName": "Billing account owner"
},
"type": "Microsoft.Billing/billingAccounts/billingRoleDefinitions"
},
{
"id": "/providers/Microsoft.Billing/billingAccounts/6e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx_xxxx-xx-xx/billingRoleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"name": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"properties": {
"description": "The Contributor role gives the user all permissions except access management on a billing account.",
"permissions": [
{
"actions": [
"a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
]
}
],
"roleName": "Billing account contributor"
},
"type": "Microsoft.Billing/billingAccounts/billingRoleDefinitions"
},
{
"id": "/providers/Microsoft.Billing/billingAccounts/6e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx_xxxx-xx-xx/billingRoleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"name": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"properties": {
"description": "The Reader role gives the user read permissions to a billing account.",
"permissions": [
{
"actions": [
"a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
]
}
],
"roleName": "Billing account reader"
},
"type": "Microsoft.Billing/billingAccounts/billingRoleDefinitions"
}
]
}
roleName
속성을 사용하여 소유자 역할 정의를 식별합니다. 역할 정의의 name
을 복사합니다. 예를 들어 위의 API 응답에서 a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1
을 복사합니다. 다음 단계에서 사용할 수 있도록 이 값을 어딘가에 붙여 넣습니다.
자신을 소유자로 추가
<billingAccountName>
를 첫 번째 단계(6e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx_xxxx-xx-xx
)에서 복사한 name
로 바꿔서 다음 요청을 수행합니다.
PUT https://management.azure.com/providers/Microsoft.Billing/billingAccounts/<billingAccountName>/createBillingRoleAssignment?api-version=2020-05-01
요청 본문
자신을 소유자로 추가하려면 개체 ID를 가져와야 합니다. Azure Portal에 있는 Microsoft Entra ID 섹션의 사용자 페이지에서 개체 ID를 찾거나 Microsoft Graph API를 사용하여 개체 ID를 가져올 수 있습니다.
요청 본문에서 2단계에서 <roleDefinitionName>
을 복사한 name
으로 바꿉니다. <principalId>
를 Azure Portal 또는 Microsoft Graph API를 통해 얻은 개체 ID로 바꿉니다.
{
"principalId": "<principalId>",
"roleDefinitionId": "<roleDefinitionName>"
}