Azure Billing 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>
を最初のステップでコピーした name
(6e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx_xxxx-xx-xx
) と置き換えます。
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>
を最初のステップでコピーした name
(6e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx_xxxx-xx-xx
) と置き換えます。
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 を取得できます。
要求本文の <roleDefinitionName>
を、ステップ 2 からコピーした name
に置き換えます。 <principalId>
は、Azure portal または Microsoft Graph API から取得したオブジェクト ID に置き換えます。
{
"principalId": "<principalId>",
"roleDefinitionId": "<roleDefinitionName>"
}