Skip to content

Commit 4e2f00d

Browse files
feat(resource-group-init): add MI and group members as app registration owners
Sets uniqueName on the application registration in the script (required for Bicep Graph extension lookup), then manages owners of both the service principal and application registration via Bicep, adding the pipeline MI and screening group members to both.
1 parent 0d6de96 commit 4e2f00d

3 files changed

Lines changed: 29 additions & 1 deletion

File tree

infrastructure/terraform/resource_group_init/enterpriseAppOwner.bicep

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,22 @@ extension microsoftGraphV1
22

33
param miPrincipalId string
44
param enterpriseAppClientId string
5+
param enterpriseAppName string
56
param groupMemberIds array = []
67

8+
var owners = concat([miPrincipalId], groupMemberIds)
9+
710
resource enterpriseAppSp 'Microsoft.Graph/servicePrincipals@v1.0' = {
811
appId: enterpriseAppClientId
912
owners: {
10-
relationships: concat([miPrincipalId], groupMemberIds)
13+
relationships: owners
14+
}
15+
}
16+
17+
resource enterpriseApp 'Microsoft.Graph/applications@v1.0' = {
18+
uniqueName: enterpriseAppName
19+
displayName: enterpriseAppName
20+
owners: {
21+
relationships: owners
1122
}
1223
}

infrastructure/terraform/resource_group_init/main.bicep

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ var privateDNSZoneRGName = 'rg-hub-${hubMap[envConfig]}-uks-private-dns-zones'
2323
var managedIdentityRGName = 'rg-mi-${envConfig}-uks'
2424
var infraResourceGroupName = 'rg-mbsgw-${envConfig}-infra'
2525
var keyVaultName = 'kv-mbsgw-${envConfig}-inf'
26+
var enterpriseAppName = 'spn-manbrs-web-api-${envConfig}'
2627

2728
var miADOtoAZname = 'mi-${appShortName}-${envConfig}-adotoaz-uks'
2829
var miGHtoADOname = 'mi-${appShortName}-${envConfig}-ghtoado-uks'
@@ -215,6 +216,7 @@ module pipelineMiAppRole 'enterpriseAppOwner.bicep' = {
215216
params: {
216217
miPrincipalId: managedIdentiyADOtoAZ.outputs.miPrincipalID
217218
enterpriseAppClientId: enterpriseAppClientId
219+
enterpriseAppName: enterpriseAppName
218220
groupMemberIds: groupMemberIds
219221
}
220222
}

scripts/bash/resource_group_init.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,21 @@ fi
3737

3838
echo "Found enterprise app client ID: $enterpriseAppClientId"
3939

40+
echo "Checking uniqueName on application registration $enterpriseAppName..."
41+
appObjectId=$(az ad app show --id "$enterpriseAppClientId" --query id -o tsv)
42+
currentUniqueName=$(az rest --method GET \
43+
--uri "https://graph.microsoft.com/v1.0/applications/${appObjectId}?\$select=uniqueName" \
44+
--query uniqueName -o tsv 2>/dev/null || echo "")
45+
if [ -z "$currentUniqueName" ]; then
46+
echo "Setting uniqueName to: $enterpriseAppName"
47+
az rest --method PATCH \
48+
--uri "https://graph.microsoft.com/v1.0/applications/${appObjectId}" \
49+
--headers "Content-Type=application/json" \
50+
--body "{\"uniqueName\": \"${enterpriseAppName}\"}"
51+
else
52+
echo "uniqueName already set to: $currentUniqueName"
53+
fi
54+
4055
echo "Deploy to hub subscription $HUB_SUBSCRIPTION_ID..."
4156
az deployment sub create --location "$REGION" --template-file infrastructure/terraform/resource_group_init/main.bicep \
4257
--subscription "$HUB_SUBSCRIPTION_ID" \

0 commit comments

Comments
 (0)