Skip to content

Commit 7ee7df0

Browse files
Use keyvault for secrets
1 parent 6ffcab4 commit 7ee7df0

File tree

10 files changed

+112
-94
lines changed

10 files changed

+112
-94
lines changed

.github/workflows/docker-build.yml

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
id: determine_tag
5050
run: |
5151
if [[ "${{ github.ref_name }}" == "main" ]]; then
52-
echo "tagname=latest" >> $GITHUB_OUTPUT
52+
echo "tagname=latest_migra" >> $GITHUB_OUTPUT
5353
elif [[ "${{ github.ref_name }}" == "dev" ]]; then
5454
echo "tagname=dev" >> $GITHUB_OUTPUT
5555
elif [[ "${{ github.ref_name }}" == "demo" ]]; then
@@ -70,22 +70,12 @@ jobs:
7070
${{ secrets.ACR_LOGIN_SERVER }}/km-app:${{ steps.determine_tag.outputs.tagname }}
7171
${{ secrets.ACR_LOGIN_SERVER }}/km-app:${{ steps.determine_tag.outputs.tagname }}_${{ steps.date.outputs.date }}_${{ github.run_number }}
7272
73-
- name: Build and Push Docker Image for km-rag-function
73+
- name: Build and Push Docker Image for api
7474
uses: docker/build-push-action@v6
7575
with:
76-
context: ./src/api/km-rag-function
77-
file: ./src/api/km-rag-function/Dockerfile
76+
context: ./src/api
77+
file: ./src/api/ApiApp.Dockerfile
7878
push: ${{ github.ref_name == 'main' || github.ref_name == 'dev' || github.ref_name == 'demo' || github.ref_name == 'dependabotchanges' }}
7979
tags: |
80-
${{ secrets.ACR_LOGIN_SERVER }}/km-rag-function:${{ steps.determine_tag.outputs.tagname }}
81-
${{ secrets.ACR_LOGIN_SERVER }}/km-rag-function:${{ steps.determine_tag.outputs.tagname }}_${{ steps.date.outputs.date }}_${{ github.run_number }}
82-
83-
- name: Build and Push Docker Image for km-charts-function
84-
uses: docker/build-push-action@v6
85-
with:
86-
context: ./src/api/km-charts-function
87-
file: ./src/api/km-charts-function/Dockerfile
88-
push: ${{ github.ref_name == 'main' || github.ref_name == 'dev' || github.ref_name == 'demo' || github.ref_name == 'dependabotchanges' }}
89-
tags: |
90-
${{ secrets.ACR_LOGIN_SERVER }}/km-charts-function:${{ steps.determine_tag.outputs.tagname }}
91-
${{ secrets.ACR_LOGIN_SERVER }}/km-charts-function:${{ steps.determine_tag.outputs.tagname }}_${{ steps.date.outputs.date }}_${{ github.run_number }}
80+
${{ secrets.ACR_LOGIN_SERVER }}/km-api:${{ steps.determine_tag.outputs.tagname }}
81+
${{ secrets.ACR_LOGIN_SERVER }}/km-api:${{ steps.determine_tag.outputs.tagname }}_${{ steps.date.outputs.date }}_${{ github.run_number }}

infra/deploy_backend_docker.bicep

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,8 @@ param solutionName string
44
@secure()
55
param appSettings object = {}
66
param appServicePlanId string
7-
@secure()
8-
param azureOpenAIKey string
9-
@secure()
10-
param azureAiProjectConnString string
11-
@secure()
12-
param azureSearchAdminKey string
13-
// param azureOpenAIKeyName string
14-
// param keyVaultName string
157
param userassignedIdentityId string
8+
param keyVaultName string
169

1710
var imageName = 'DOCKER|kmcontainerreg.azurecr.io/km-api:${imageTag}'
1811
var name = '${solutionName}-api'
@@ -91,10 +84,7 @@ module appService 'deploy_app_service.bicep' = {
9184
appSettings: union(
9285
appSettings,
9386
{
94-
AZURE_OPENAI_API_KEY: azureOpenAIKey
9587
APPINSIGHTS_INSTRUMENTATIONKEY: reference(applicationInsightsId, '2015-05-01').InstrumentationKey
96-
AZURE_AI_SEARCH_API_KEY: azureSearchAdminKey
97-
AZURE_AI_PROJECT_CONN_STRING:azureAiProjectConnString
9888
REACT_APP_LAYOUT_CONFIG: reactAppLayoutConfig
9989
}
10090
)
@@ -120,4 +110,25 @@ resource role 'Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments@2022-05-
120110
}
121111
}
122112

113+
resource keyVault 'Microsoft.KeyVault/vaults@2023-07-01' existing = {
114+
name: keyVaultName
115+
}
116+
117+
var keyVaultSecretsOfficerId='b86a8fe4-44ce-4948-aee5-eccb2c155cd7'
118+
@description('The built-in role for Key Vault Secrets Officer.')
119+
resource keyVaultSecretsOfficerRoleDefinition 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
120+
scope: subscription()
121+
name: keyVaultSecretsOfficerId
122+
}
123+
124+
resource keyVaultSecretsOfficerRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
125+
scope: keyVault
126+
name: guid(keyVault.id, keyVaultSecretsOfficerRoleDefinition.id)
127+
properties: {
128+
roleDefinitionId: keyVaultSecretsOfficerRoleDefinition.id
129+
principalId: appService.outputs.identityPrincipalId
130+
principalType: 'ServicePrincipal'
131+
}
132+
}
133+
123134
output appUrl string = appService.outputs.appUrl

infra/deploy_keyvault.bicep

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,4 @@ resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
6868

6969
output keyvaultName string = keyvaultName
7070
output keyvaultId string = keyVault.id
71+
output keyvaultUri string = keyVault.properties.vaultUri

infra/main.bicep

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,15 @@ param embeddingModel string = 'text-embedding-ada-002'
6363
@description('Capacity of the Embedding Model deployment')
6464
param embeddingDeploymentCapacity int = 80
6565

66-
param imageTag string = 'migra'
66+
param imageTag string = 'latest_migra'
6767

6868
var uniqueId = toLower(uniqueString(subscription().id, environmentName, resourceGroup().location))
6969
var solutionPrefix = 'km${padLeft(take(uniqueId, 12), 12, '0')}'
7070
var resourceGroupLocation = resourceGroup().location
7171
// var resourceGroupName = resourceGroup().name
7272

7373
var solutionLocation = resourceGroupLocation
74-
var baseUrl = 'https://raw.githubusercontent.com/microsoft/Conversation-Knowledge-Mining-Solution-Accelerator/psl-pk-dev-api-migration/'
74+
var baseUrl = 'https://raw.githubusercontent.com/microsoft/Conversation-Knowledge-Mining-Solution-Accelerator/main/'
7575

7676

7777
// ========== Managed Identity ========== //
@@ -195,17 +195,15 @@ module backend_docker 'deploy_backend_docker.bicep'= {
195195
appServicePlanId: hostingplan.outputs.name
196196
applicationInsightsId: aifoundry.outputs.applicationInsightsId
197197
solutionName: solutionPrefix
198-
azureOpenAIKey:keyVault.getSecret('AZURE-OPENAI-KEY')
199-
azureAiProjectConnString:keyVault.getSecret('AZURE-AI-PROJECT-CONN-STRING')
200-
azureSearchAdminKey:keyVault.getSecret('AZURE-SEARCH-KEY')
201198
userassignedIdentityId: managedIdentityModule.outputs.managedIdentityBackendAppOutput.id
202-
// azureOpenAIKeyName:aifoundry.outputs.azureOpenAIKeyName
203-
// keyVaultName: kvault.outputs.keyvaultName
199+
keyVaultName:aifoundry.outputs.keyvaultName
204200
appSettings:{
205201
AZURE_OPEN_AI_DEPLOYMENT_MODEL:gptModelName
206202
AZURE_OPEN_AI_ENDPOINT:aifoundry.outputs.aiServicesTarget
207203
AZURE_OPENAI_API_VERSION: azureOpenAIApiVersion
208204
AZURE_OPENAI_RESOURCE:aifoundry.outputs.aiServicesName
205+
AZURE_OPENAI_API_KEY:'AZURE-OPENAI-KEY'
206+
AZURE_KEY_VAULT_URL: kvault.outputs.keyvaultUri
209207
USE_CHAT_HISTORY_ENABLED:'True'
210208
AZURE_COSMOSDB_ACCOUNT: cosmosDBModule.outputs.cosmosAccountName
211209
AZURE_COSMOSDB_CONVERSATIONS_CONTAINER: cosmosDBModule.outputs.cosmosContainerName
@@ -214,11 +212,14 @@ module backend_docker 'deploy_backend_docker.bicep'= {
214212
SQLDB_DATABASE:sqlDBModule.outputs.sqlDbName
215213
SQLDB_SERVER: sqlDBModule.outputs.sqlServerName
216214
SQLDB_USERNAME: sqlDBModule.outputs.sqlDbUser
215+
SQLDB_USER_MID: managedIdentityModule.outputs.managedIdentityBackendAppOutput.clientId
216+
217217
OPENAI_API_VERSION: azureOpenAIApiVersion
218218
AZURE_AI_SEARCH_ENDPOINT: aifoundry.outputs.aiSearchTarget
219219
AZURE_AI_SEARCH_INDEX: 'call_transcripts_index'
220-
SQLDB_USER_MID: managedIdentityModule.outputs.managedIdentityBackendAppOutput.clientId
220+
AZURE_AI_SEARCH_API_KEY:'AZURE-SEARCH-KEY'
221221
USE_AI_PROJECT_CLIENT:'False'
222+
AZURE_AI_PROJECT_CONN_STRING:'AZURE-AI-PROJECT-CONN-STRING'
222223
DISPLAY_CHART_DEFAULT:'True'
223224
}
224225
}

0 commit comments

Comments
 (0)