Azure云管場景下的RESTAPI實戰(zhàn)

來源: Azure上云直升機(jī)
作者:鮑積超
時間:2021-09-14
17603
隨著云計算的普及,在企業(yè)中使用多家云供應(yīng)商的場景已經(jīng)非常普遍,而多云的管理給企業(yè)帶來的全新的挑戰(zhàn),大部分的企業(yè)需要借助云管平臺實現(xiàn)多云的管理。

 隨著云計算的普及,在企業(yè)中使用多家云供應(yīng)商的場景已經(jīng)非常普遍,而多云的管理給企業(yè)帶來的全新的挑戰(zhàn),大部分的企業(yè)需要借助云管平臺實現(xiàn)多云的管理。

      微軟云作為國際化云供應(yīng)商,為廣大企業(yè)和合作伙伴提供了安全和功能豐富的接口實現(xiàn)云管平臺的開發(fā)和配置,借助這些接口可以實現(xiàn)價格的獲取,消耗的獲取和預(yù)測,已經(jīng)服務(wù)的增、刪、改、查等操作。


No.Azure Retail API

Azure 客戶一直在尋找一種以編程方式檢索所有 Azure 服務(wù)的零售價格,可以使用零售費率價格 API 來獲取所有 Azure 服務(wù)的零售價格。


終結(jié)點:

https://prices.azure.com/api/retail/prices


實例:

https://prices.azure.com/api/retail/prices?$filter=serviceName eq 'Virtual Machines' and armRegionName eq 'southeastasia' and armSkuName eq 'Standard_D2ds_v4'


結(jié)果:

微信圖片_20210914154524.png

No.2身份標(biāo)識

在介紹下一個API前,需要先了解一下微軟身份標(biāo)識。Microsoft 標(biāo)識平臺可以為用戶在構(gòu)建應(yīng)用程序時提供集成身份驗證和授權(quán),并提供對你的的授權(quán)訪問。而在云中,企業(yè)需要一個集中的身份驗證和授權(quán)的平臺,這個平臺就是Azure Active Directory(Azure AD)。


在Azure AD中有兩個作為身份標(biāo)識的對象,他們分別是Application Object 和 Service Principal Object。


應(yīng)用程序?qū)ο螅ˋpplication Object)定義與軟件一對一對應(yīng)的關(guān)系,服務(wù)如何發(fā)出令牌來訪問應(yīng)用程序、應(yīng)用程序可能需要訪問的資源以及應(yīng)用程序可以執(zhí)行的操作。


服務(wù)主體對象(Service Principal Object)是Azure AD定義的安全訪問受保護(hù)資源的安全主體對象,在訪問受保護(hù)資源時,需要對應(yīng)用程序進(jìn)行身份驗證,在訪問資源時進(jìn)行授權(quán)。


所以在我們的應(yīng)用程序(例如,云管平臺)希望管理到Azure里面受保護(hù)的資源的時候,就必須借助Azure AD的身份標(biāo)識平臺對其進(jìn)行身份驗證和授權(quán)的操作。


No.3Azure Rest API


大多數(shù) Azure 服務(wù)(例如 Azure 資源管理器提供程序和經(jīng)典部署模型)要求客戶端代碼使用有效憑據(jù)進(jìn)行身份驗證,然后才能調(diào)用服務(wù)的 API。身份驗證由 Azure AD 在各個參與者之間協(xié)調(diào),并為您的客戶端提供Access Token作為身份驗證的證明。然后將Token發(fā)送到后續(xù) REST API 請求的 HTTP 授權(quán)標(biāo)頭中的 Azure 服務(wù)。


我們需要創(chuàng)建服務(wù)主體(Service Principal),通過Azure AD完成身份的驗證和授權(quán)后方可通過Azure Rest API獲得訪問資源的權(quán)限。通過az ad sp create-for-rbac獲得所需要的appid, password, tenant。默認(rèn)獲得contributor權(quán)限。


第二步,根據(jù)我們服務(wù)主體的權(quán)限獲得access_token。用于對客戶端進(jìn)行身份驗證和獲取訪問令牌的兩個 Azure AD 終結(jié)點稱為 OAuth2 /authorize 和 /token 終結(jié)點。

第三步,訪問所需要的資源,微軟按照服務(wù)提供全面的API文檔,供客戶參考使用。

https://docs.microsoft.com/en-us/rest/api/azure/

https://management.azure.com/

subscriptions/{subscriptionId}/

resourcegroups/

{resourceGroupName}

?api-version=2021-04-01

No.4查看消耗


當(dāng)我們創(chuàng)建所需要的服務(wù)以后,接下來用戶就需要對服務(wù)產(chǎn)生的費用進(jìn)行查看了。最早微軟的消耗賬單情況只能通過EA門戶查看,這對于賬單管理員來說權(quán)限可能過大。微軟目前將用量嵌入到我們通常使用的管理門戶中,這樣我們就可以通過服務(wù)主體的方式獲得賬單使用情況。


通過Consumption Rest API,用戶可以查詢到關(guān)于合同里面消耗的一切信息。比如下面顯示的,虛擬機(jī)在某一天消耗的時間,費用,單價和預(yù)留實例情況等信息。


https://management.azure.com/{scope}/providers/Microsoft.Consumption/usageDetails?api-version=2019-10-01

微信圖片_20210914154643.png

與此同時,Rest API也能幫助企業(yè)對用量進(jìn)行預(yù)測。

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/forecasts?api-version=2019-10-01

微信圖片_20210914154706.png

No.5Manage Subscription


Azure為了更用戶統(tǒng)一的體驗,逐漸將以前EA門戶的功能,例如創(chuàng)建和管理訂閱,查看賬單等功能逐漸集成的管理門戶中,同時為了身份的安全性,Rest API也可以支持通過服務(wù)主體對訂閱進(jìn)行管理和創(chuàng)建。所以,目前我們可以通過兩種方法對訂閱進(jìn)行管理。


1. 通過獲得ID Token對訂閱進(jìn)行管理,官方不建議使用此方法。

2.  獲得Access Token對訂閱進(jìn)行管理。


我們演示通過Access Token對訂閱進(jìn)行管理:


1. 創(chuàng)建服務(wù)主體。步驟略

2. 獲得Bill ID和 Enrollment ID;


必須是Account Owner才能GET到Bill Account ID和Enrollment Account ID。


3. 為服務(wù)主體賦予EA權(quán)限(Subscription Creator),從而可以獲得創(chuàng)建訂閱的權(quán)限;


PUT

https://management.azure.com/providers/Microsoft.Billing/billingAccounts/{billingAccountName}/enrollmentAccounts/{enrollmentAccountName}/billingRoleAssignments/{billingRoleAssignmentName}?api-version=2019-10-01-preview


Billing Account Name 和 Enrollment Account Name從上部獲得。Bill Role Assignment Name可以通過Powershell 創(chuàng)建出GUID。


在Body中需要填寫,Service Principal Object ID和Tenant ID,而在billingRoleDefinitions填寫SubscriptionCreator ID,這個SubscriptionCreator并不會在EA門戶中顯示,只有作為帳戶所有者的用戶才能將 SubscriptionCreator 角色分配給 SPN。它通過編程方式創(chuàng)建,僅供編程使用。


"type": "Microsoft.Billing/billingRoleAssignments"


4. 創(chuàng)建訂閱


PUT  https://management.azure.com/providers/Microsoft.Subscription/aliases/sampleAlias?api-version=2020-09-01


Body中輸入


返回成功結(jié)果:

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Azure上云直升機(jī),本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家