Azure: Python SDK для вывода списка и расчета секретов клиентов с просроченной регистрацией приложений.
Я ищу способ подключения к Azure SDK через Python, чтобы получить список секретов регистрации приложений с истекшим сроком действия до истечения срока действия 30 дней. Я знаю, что это можно сделать с помощью Powershell, но как бы мы поступили с подключением Python SDK к Azure и получением этого не с помощью powershell, а с помощью Python.
Если есть какой-либо образец, как мы можем его получить?
Вывод должен быть примерно таким:
app_id:aaaaaaaa-bbbb-cccc-dddd-eeeeeeee
app_display_name:yourspname
password_expire:2021-08-29T18:30:00+00:00
2 ответа
Чтобы получить сведения о секрете клиента приложений Azure AD, вы можете использовать приведенный ниже графический запрос:
https://graph.microsoft.com/v1.0/applications?$select=appId,displayName,passwordCredentials
Чтобы получить такой же ответ с помощью Python, вы можете использовать следующий код:
Я попытался воспроизвести то же самое в своей среде и получил следующие результаты:
Я зарегистрировал одно приложение Azure AD и предоставил разрешение API, как показано ниже:
Когда я запустил приведенный ниже код Python, я получил тот же ответ , что и ниже:
from azure.identity import ClientSecretCredential
from msgraph.core import GraphClient
credential = ClientSecretCredential(tenant_id=<tenantID>,client_secret=<secret>,client_id=<appID>)
client = GraphClient(credential=credential)
result = client.get('/applications?$select=id,displayName,passwordCredentials')
print(result.json())
Ответ:
В качестве альтернативы вы можете использовать
urllib3
библиотека, чтобы получить токен для вызова Microsoft Graph, как показано ниже:
import urllib3
uri = "https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token"
payload= {
'Content-Type': 'application/x-www-form-urlencoded',
'Host': 'login.microsoftonline.com',
'client_id': <Your AppID>,
'scope': 'https://graph.microsoft.com/.default',
'client_secret': <Your client secret>,
'grant_type': 'client_credentials'
}
http = urllib3.PoolManager()
response = http.request('POST', uri, payload)
my_dict = eval(response.data)
token = f"{my_dict['token_type']} {my_dict['access_token']}"
print(token)
Ответ:
Теперь запустите приведенный ниже код Python, чтобы получить вывод в нужном формате:
uri = 'https://graph.microsoft.com/v1.0/applications?$select=id,displayName,passwordCredentials'
payload = {'Authorization':token,'Host':'graph.microsoft.com'}
https = urllib3.PoolManager()
response = http.request('GET', uri, headers=payload)
#print(response.data)
mydict = json.loads(response.data)
app_id=f"{mydict['value'][0]['id']}"
app_name=f"{mydict['value'][0]['displayName']}"
endDateTime = f"{mydict['value'][0]['passwordCredentials'][0]['endDateTime']}"
print("App_ID:",app_id)
print("App_Display_Name:",app_name)
print("Password_Expires:",password_expire)
Ответ:
Я нашел следующее, что может быть полезно.
Вы можете использовать API Graph Azure Active Directory (AAD) для получения списка секретов регистрации приложений с истекшим сроком действия. Ниже приведен URI запроса, который вы можете использовать для получения этой информации:
https://graph.windows.net/ <your_tenant_id>/applications?$filter=passwordCredentials/endDate lt <current_date>&$select=displayName,passwordCredentials
Вы также можете обратиться к этой статье для получения дополнительной информации об использовании Graph API в Python: https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-python .