Skip to content

Commit b8f300f

Browse files
Merge pull request #524 from microsoft/psl-sfi
feat: replacing DefaultAzureCredential with ManagedIdentityCredential
2 parents 09b67ea + 156ebb5 commit b8f300f

File tree

11 files changed

+75
-27
lines changed

11 files changed

+75
-27
lines changed

infra/deploy_app_service.bicep

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,10 @@ resource Website 'Microsoft.Web/sites@2020-06-01' = {
298298
name: 'UWSGI_THREADS'
299299
value: '2'
300300
}
301+
{
302+
name: 'APP_ENV'
303+
value: 'Prod'
304+
}
301305
]
302306
linuxFxVersion: imageName
303307
}

infra/main.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"_generator": {
66
"name": "bicep",
77
"version": "0.36.177.2456",
8-
"templateHash": "7421251462011771854"
8+
"templateHash": "12338844521177910469"
99
}
1010
},
1111
"parameters": {
@@ -1848,7 +1848,7 @@
18481848
"_generator": {
18491849
"name": "bicep",
18501850
"version": "0.36.177.2456",
1851-
"templateHash": "16850060889438240970"
1851+
"templateHash": "7711665754275271950"
18521852
}
18531853
},
18541854
"parameters": {
@@ -2308,6 +2308,10 @@
23082308
{
23092309
"name": "UWSGI_THREADS",
23102310
"value": "2"
2311+
},
2312+
{
2313+
"name": "APP_ENV",
2314+
"value": "Prod"
23112315
}
23122316
],
23132317
"linuxFxVersion": "[variables('imageName')]"

infra/scripts/index_scripts/01_create_search_index.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from azure.identity import DefaultAzureCredential
1+
from azure.identity import AzureCliCredential
22
from azure.keyvault.secrets import SecretClient
33
from azure.search.documents.indexes import SearchIndexClient
44
from azure.search.documents.indexes.models import (
@@ -27,11 +27,11 @@ def get_secrets_from_kv(secret_name: str) -> str:
2727
Retrieves a secret value from Azure Key Vault.
2828
Args:
2929
secret_name (str): Name of the secret.
30-
credential (DefaultAzureCredential): Credential with access to Key Vault.
30+
credential (AzureCliCredential): Credential with access to Key Vault.
3131
Returns:
3232
str: The secret value.
3333
"""
34-
kv_credential = DefaultAzureCredential(managed_identity_client_id=managed_identity_client_id)
34+
kv_credential = AzureCliCredential()
3535
secret_client = SecretClient(
3636
vault_url=f"https://{key_vault_name}.vault.azure.net/",
3737
credential=kv_credential
@@ -43,7 +43,7 @@ def create_search_index():
4343
"""Create an Azure Search index."""
4444

4545
# Shared credential
46-
credential = DefaultAzureCredential(managed_identity_client_id=managed_identity_client_id)
46+
credential = AzureCliCredential()
4747

4848
# Retrieve secrets from Key Vault
4949
search_endpoint = get_secrets_from_kv("AZURE-SEARCH-ENDPOINT")

infra/scripts/index_scripts/02_process_data.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from azure.search.documents import SearchClient
88
from azure.storage.filedatalake import DataLakeServiceClient
99
from azure.search.documents.indexes import SearchIndexClient
10-
from azure.identity import (DefaultAzureCredential, get_bearer_token_provider)
10+
from azure.identity import (AzureCliCredential, get_bearer_token_provider)
1111

1212

1313
key_vault_name = 'kv_to-be-replaced'
@@ -22,11 +22,11 @@ def get_secrets_from_kv(secret_name: str) -> str:
2222
Retrieves a secret value from Azure Key Vault.
2323
Args:
2424
secret_name (str): Name of the secret.
25-
credential (DefaultAzureCredential): Credential with access to Key Vault.
25+
credential (AzureCliCredential): Credential with access to Key Vault.
2626
Returns:
2727
str: The secret value.
2828
"""
29-
kv_credential = DefaultAzureCredential(managed_identity_client_id=managed_identity_client_id)
29+
kv_credential = AzureCliCredential()
3030
secret_client = SecretClient(
3131
vault_url=f"https://{key_vault_name}.vault.azure.net/",
3232
credential=kv_credential
@@ -44,7 +44,7 @@ def get_secrets_from_kv(secret_name: str) -> str:
4444

4545
# Azure Data Lake settings
4646
account_url = f"https://{account_name}.dfs.core.windows.net"
47-
credential = DefaultAzureCredential(managed_identity_client_id=managed_identity_client_id)
47+
credential = AzureCliCredential()
4848
service_client = DataLakeServiceClient(account_url, credential=credential, api_version='2023-01-03')
4949
file_system_client = service_client.get_file_system_client(file_system_client_name)
5050
directory_name = directory

scripts/chunk_documents.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from azure.ai.formrecognizer import DocumentAnalysisClient
77
from azure.core.credentials import AzureKeyCredential
8-
from azure.identity import DefaultAzureCredential
8+
from azure.identity import AzureCliCredential
99
from azure.keyvault.secrets import SecretClient
1010
from data_utils import chunk_directory
1111

@@ -57,8 +57,7 @@ def get_document_intelligence_client(config, secret_client):
5757
with open(args.config_file) as f:
5858
config = json.load(f)
5959

60-
credential = DefaultAzureCredential()
61-
60+
credential = AzureCliCredential()
6261
if type(config) is not list:
6362
config = [config]
6463

scripts/embed_documents.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import json
33
from asyncio import sleep
44

5-
from azure.identity import DefaultAzureCredential
5+
from azure.identity import AzureCliCredential
66
from azure.keyvault.secrets import SecretClient
77
from data_utils import get_embedding
88

@@ -19,8 +19,7 @@
1919
with open(args.config_file) as f:
2020
config = json.load(f)
2121

22-
credential = DefaultAzureCredential()
23-
22+
credential = AzureCliCredential()
2423
if type(config) is not list:
2524
config = [config]
2625

src/app.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
import asyncio
99
from typing import Dict, Any, AsyncGenerator
1010

11-
from azure.identity.aio import DefaultAzureCredential
12-
from azure.identity import DefaultAzureCredential as DefaultAzureCredentialSync
11+
12+
from backend.helpers.azure_credential_utils import get_azure_credential
13+
from backend.helpers.azure_credential_utils import get_azure_credential_async
1314
from quart import (Blueprint, Quart, jsonify, make_response, render_template,
1415
request, send_from_directory)
1516

@@ -169,7 +170,7 @@ async def init_ai_foundry_client():
169170

170171
ai_project_client = AIProjectClient(
171172
endpoint=app_settings.azure_ai.agent_endpoint,
172-
credential=DefaultAzureCredential()
173+
credential=get_azure_credential()
173174
)
174175
track_event_if_configured("AIFoundryAgentEndpointUsed", {
175176
"endpoint": app_settings.azure_ai.agent_endpoint
@@ -193,7 +194,7 @@ def init_cosmosdb_client():
193194
)
194195

195196
if not app_settings.chat_history.account_key:
196-
credential = DefaultAzureCredential()
197+
credential = get_azure_credential()
197198
else:
198199
credential = app_settings.chat_history.account_key
199200

@@ -1163,7 +1164,7 @@ async def fetch_azure_search_content():
11631164
return jsonify({"error": "URL and title are required"}), 400
11641165

11651166
# Get Azure AD token
1166-
credential = DefaultAzureCredentialSync()
1167+
credential = await get_azure_credential_async()
11671168
token = credential.get_token("https://search.azure.com/.default")
11681169
access_token = token.token
11691170

src/backend/api/agent/browse_agent_factory.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from azure.ai.projects.aio import AIProjectClient
22
from azure.ai.agents.models import AzureAISearchTool, AzureAISearchQueryType
3-
from azure.identity.aio import DefaultAzureCredential
3+
from backend.helpers.azure_credential_utils import get_azure_credential
44
from backend.settings import app_settings
55
from event_utils import track_event_if_configured
66

@@ -20,7 +20,7 @@ async def create_or_get_agent(cls):
2020
"""
2121
project_client = AIProjectClient(
2222
endpoint=app_settings.azure_ai.agent_endpoint,
23-
credential=DefaultAzureCredential(exclude_interactive_browser_credential=False),
23+
credential=get_azure_credential(),
2424
api_version=app_settings.azure_ai.agent_api_version
2525
)
2626

src/backend/api/agent/section_agent_factory.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from azure.ai.projects.aio import AIProjectClient
22
from azure.ai.agents.models import AzureAISearchTool, AzureAISearchQueryType
3-
from azure.identity.aio import DefaultAzureCredential
3+
from backend.helpers.azure_credential_utils import get_azure_credential
44
from backend.settings import app_settings
55
from event_utils import track_event_if_configured
66

@@ -19,7 +19,7 @@ async def create_or_get_agent(cls):
1919
"""
2020
project_client = AIProjectClient(
2121
endpoint=app_settings.azure_ai.agent_endpoint,
22-
credential=DefaultAzureCredential(exclude_interactive_browser_credential=False),
22+
credential=get_azure_credential(),
2323
api_version=app_settings.azure_ai.agent_api_version
2424
)
2525

src/backend/api/agent/template_agent_factory.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from azure.ai.projects.aio import AIProjectClient
22
from azure.ai.agents.models import AzureAISearchTool, AzureAISearchQueryType
3-
from azure.identity.aio import DefaultAzureCredential
3+
from backend.helpers.azure_credential_utils import get_azure_credential
44
from backend.settings import app_settings
55
from event_utils import track_event_if_configured
66

@@ -20,7 +20,7 @@ async def create_or_get_agent(cls):
2020
"""
2121
project_client = AIProjectClient(
2222
endpoint=app_settings.azure_ai.agent_endpoint,
23-
credential=DefaultAzureCredential(exclude_interactive_browser_credential=False),
23+
credential=get_azure_credential(),
2424
api_version=app_settings.azure_ai.agent_api_version
2525
)
2626

0 commit comments

Comments
 (0)