@@ -53,7 +53,7 @@ var existingAIServiceResourceGroup = !empty(azureExistingAIProjectResourceId)
5353 ? split (azureExistingAIProjectResourceId , '/' )[4 ]
5454 : ''
5555var aiSearchConnectionName = 'foundry-search-connection-${solutionName }'
56- // var aiAppInsightConnectionName = 'foundry-app-insights-connection-${solutionName}'
56+ var aiAppInsightConnectionName = 'foundry-app-insights-connection-${solutionName }'
5757
5858var aiModelDeployments = [
5959 {
@@ -219,6 +219,74 @@ module existing_AIProject_SearchConnectionModule 'deploy_aifp_aisearch_connectio
219219 }
220220}
221221
222+ resource cognitiveServicesOpenAIUser 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
223+ name : '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd'
224+ }
225+
226+ module assignOpenAIRoleToAISearch 'deploy_foundry_role_assignment.bicep' = {
227+ name : 'assignOpenAIRoleToAISearch'
228+ scope : resourceGroup (existingAIServiceSubscription , existingAIServiceResourceGroup )
229+ params : {
230+ roleDefinitionId : cognitiveServicesOpenAIUser .id
231+ roleAssignmentName : guid (resourceGroup ().id , aiSearch .id , cognitiveServicesOpenAIUser .id , 'openai-foundry' )
232+ aiFoundryName : !empty (azureExistingAIProjectResourceId ) ? existingAIFoundryName : aiFoundryName
233+ aiProjectName : !empty (azureExistingAIProjectResourceId ) ? existingAIProjectName : aiProjectName
234+ principalId : aiSearch .identity .principalId
235+ }
236+ }
237+
238+ @description ('This is the built-in Search Index Data Reader role.' )
239+ resource searchIndexDataReaderRoleDefinition 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
240+ scope : aiSearch
241+ name : '1407120a-92aa-4202-b7e9-c0e197c71c8f'
242+ }
243+
244+ resource searchIndexDataReaderRoleAssignmentToAIFP 'Microsoft.Authorization/roleAssignments@2022-04-01' = if (empty (azureExistingAIProjectResourceId )) {
245+ name : guid (aiSearch .id , aiFoundryProject .id , searchIndexDataReaderRoleDefinition .id )
246+ scope : aiSearch
247+ properties : {
248+ roleDefinitionId : searchIndexDataReaderRoleDefinition .id
249+ principalId : aiFoundryProject .identity .principalId
250+ principalType : 'ServicePrincipal'
251+ }
252+ }
253+ resource assignSearchIndexDataReaderToExistingAiProject 'Microsoft.Authorization/roleAssignments@2022-04-01' = if (!empty (azureExistingAIProjectResourceId )) {
254+ name : guid (resourceGroup ().id , existingAIProjectName , searchIndexDataReaderRoleDefinition .id , 'Existing' )
255+ scope : aiSearch
256+ properties : {
257+ roleDefinitionId : searchIndexDataReaderRoleDefinition .id
258+ principalId : assignOpenAIRoleToAISearch .outputs .aiProjectPrincipalId
259+ principalType : 'ServicePrincipal'
260+ }
261+ }
262+
263+ @description ('This is the built-in Search Service Contributor role.' )
264+ resource searchServiceContributorRoleDefinition 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
265+ scope : aiSearch
266+ name : '7ca78c08-252a-4471-8644-bb5ff32d4ba0'
267+ }
268+
269+ resource searchServiceContributorRoleAssignmentToAIFP 'Microsoft.Authorization/roleAssignments@2022-04-01' = if (empty (azureExistingAIProjectResourceId )) {
270+ name : guid (aiSearch .id , aiFoundryProject .id , searchServiceContributorRoleDefinition .id )
271+ scope : aiSearch
272+ properties : {
273+ roleDefinitionId : searchServiceContributorRoleDefinition .id
274+ principalId : aiFoundryProject .identity .principalId
275+ principalType : 'ServicePrincipal'
276+ }
277+ }
278+
279+ resource searchServiceContributorRoleAssignmentExisting 'Microsoft.Authorization/roleAssignments@2022-04-01' = if (!empty (azureExistingAIProjectResourceId )) {
280+ name : guid (resourceGroup ().id , existingAIProjectName , searchServiceContributorRoleDefinition .id , 'Existing' )
281+ scope : aiSearch
282+ properties : {
283+ roleDefinitionId : searchServiceContributorRoleDefinition .id
284+ principalId : assignOpenAIRoleToAISearch .outputs .aiProjectPrincipalId
285+ principalType : 'ServicePrincipal'
286+ }
287+ }
288+
289+
222290resource tenantIdEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
223291 parent : keyVault
224292 name : 'TENANT-ID'
@@ -227,6 +295,7 @@ resource tenantIdEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' =
227295 }
228296}
229297
298+
230299resource azureOpenAIDeploymentModel 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
231300 parent : keyVault
232301 name : 'AZURE-OPEN-AI-DEPLOYMENT-MODEL'
@@ -247,9 +316,12 @@ resource azureOpenAIEndpointEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-
247316 parent : keyVault
248317 name : 'AZURE-OPENAI-ENDPOINT'
249318 properties : {
250- value : aiFoundry .properties .endpoints ['OpenAI Language Model Instance API' ] //aiServices_m.properties.endpoint
319+ value : !empty (existingOpenAIEndpoint )
320+ ? existingOpenAIEndpoint
321+ : aiFoundry .properties .endpoints ['OpenAI Language Model Instance API' ]
251322 }
252- }
323+ }
324+
253325
254326resource azureSearchAdminKeyEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
255327 parent : keyVault
0 commit comments