正如官方 API 参考列表位置所示:
特定订阅的负责 ASC 的位置(主区域)。对于每个订阅,只有一个负责的位置。
它不会改变,因此如果您已经知道asc_location
订阅的价值,则可以硬编码此值。
但是每个订阅可能有不同的 asc_location 值(我的 2 个 Azure 订阅有不同的 asc_location 值)。因此,如果您有很多 Azure 订阅,您可以asc_location
通过 API 查询(据我所知,这是我能找到的唯一方法),然后使用 SDK 获取安全分数,请尝试以下代码:
from azure.mgmt.security import SecurityCenter
from azure.identity import ClientSecretCredential
import requests
from requests.api import head, request
TENANT_ID = ''
CLIENT = ''
KEY = ''
subscription_id= ''
getLocationsURL = "https://management.azure.com/subscriptions/"+subscription_id+"/providers/Microsoft.Security/locations?api-version=2015-06-01-preview"
credentials = ClientSecretCredential(
client_id = CLIENT,
client_secret = KEY,
tenant_id = TENANT_ID
)
#request for asc_location for a subscription
azure_access_token = credentials.get_token('https://management.azure.com/.default')
r = requests.get(getLocationsURL,headers={"Authorization":"Bearer " + azure_access_token.token}).json()
location = r['value'][0]['name']
print("location:" + location)
client = SecurityCenter(credentials, subscription_id, asc_location=location)
for score in client.secure_scores.list():
print(score)
结果: