Skip to content

Commit 329659c

Browse files
feat: add support for system-assigned managed identity and role assignments in Azure Cognitive Services
1 parent b358930 commit 329659c

File tree

7 files changed

+352
-13
lines changed

7 files changed

+352
-13
lines changed

code/backend/batch/utilities/helpers/env_helper.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ def __load_config(self, **kwargs) -> None:
3535
self.secretHelper = SecretHelper()
3636

3737
self.LOGLEVEL = os.environ.get("LOGLEVEL", "INFO").upper()
38+
self.APP_ENV = os.getenv("APP_ENV", "Prod").lower()
3839

3940
# Azure
4041
self.AZURE_SUBSCRIPTION_ID = os.getenv("AZURE_SUBSCRIPTION_ID", "")

code/backend/batch/utilities/integrated_vectorization/azure_search_datasource.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,12 @@ def create_or_update_datasource(self):
3636
connection_string=connection_string,
3737
container=container,
3838
data_deletion_detection_policy=NativeBlobSoftDeleteDeletionDetectionPolicy(),
39-
identity=SearchIndexerDataUserAssignedIdentity(
40-
user_assigned_identity=self.env_helper.MANAGED_IDENTITY_RESOURCE_ID
39+
identity=(
40+
None
41+
if getattr(self.env_helper, "APP_ENV", "").lower() == "dev"
42+
else SearchIndexerDataUserAssignedIdentity(
43+
user_assigned_identity=self.env_helper.MANAGED_IDENTITY_RESOURCE_ID
44+
)
4145
),
4246
)
4347
self.indexer_client.create_or_update_data_source_connection(

code/backend/batch/utilities/integrated_vectorization/azure_search_index.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,12 @@ def get_vector_search_config(self):
145145
azure_open_ai_parameters = AzureOpenAIParameters(
146146
resource_uri=self.env_helper.AZURE_OPENAI_ENDPOINT,
147147
deployment_id=self.env_helper.AZURE_OPENAI_EMBEDDING_MODEL,
148-
auth_identity=SearchIndexerDataUserAssignedIdentity(
149-
user_assigned_identity=self.env_helper.MANAGED_IDENTITY_RESOURCE_ID
148+
auth_identity=(
149+
None
150+
if getattr(self.env_helper, "APP_ENV", "").lower() == "dev"
151+
else SearchIndexerDataUserAssignedIdentity(
152+
user_assigned_identity=self.env_helper.MANAGED_IDENTITY_RESOURCE_ID
153+
)
150154
),
151155
)
152156

code/backend/batch/utilities/integrated_vectorization/azure_search_skillset.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,12 @@ def create_skillset(self):
9696
if self.env_helper.is_auth_type_keys()
9797
else None
9898
),
99-
auth_identity=SearchIndexerDataUserAssignedIdentity(
100-
user_assigned_identity=self.env_helper.MANAGED_IDENTITY_RESOURCE_ID
99+
auth_identity=(
100+
None
101+
if getattr(self.env_helper, "APP_ENV", "").lower() == "dev"
102+
else SearchIndexerDataUserAssignedIdentity(
103+
user_assigned_identity=self.env_helper.MANAGED_IDENTITY_RESOURCE_ID
104+
)
101105
),
102106
inputs=[
103107
InputFieldMappingEntry(name="text", source="/document/pages/*"),

infra/main.bicep

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -872,6 +872,21 @@ module search 'modules/core/search/search-services.bicep' = if (databaseType ==
872872
principalType: 'User'
873873
}
874874
] : [])
875+
enableSystemAssigned: true
876+
systemAssignedRoleAssignments: [
877+
{
878+
resourceId: storage.outputs.id
879+
roleName: 'Storage Blob Data Contributor'
880+
roleDefinitionId: 'ba92f5b4-2d11-453d-a403-e96b0029c9fe'
881+
principalType: 'ServicePrincipal'
882+
}
883+
{
884+
resourceId: openai.outputs.resourceId
885+
roleName: 'Cognitive Services User'
886+
roleDefinitionId: 'a97b65f3-24c7-4388-baec-2e87135dc908'
887+
principalType: 'ServicePrincipal'
888+
}
889+
]
875890
}
876891
}
877892

0 commit comments

Comments
 (0)