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 .

Другие вопросы по тегам