Skip to content

Commit 0d6de96

Browse files
feat(resource-group-init): add screening group members as enterprise app SP owners
Fetches members of the screening_<appShortName>_<env> Entra ID group and adds them as owners of spn-manbrs-web-api-<env> service principal via Bicep Graph extension, alongside the pipeline managed identity.
1 parent a709c24 commit 0d6de96

3 files changed

Lines changed: 10 additions & 3 deletions

File tree

infrastructure/terraform/resource_group_init/enterpriseAppOwner.bicep

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

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

67
resource enterpriseAppSp 'Microsoft.Graph/servicePrincipals@v1.0' = {
78
appId: enterpriseAppClientId
89
owners: {
9-
relationships: [miPrincipalId]
10+
relationships: concat([miPrincipalId], groupMemberIds)
1011
}
1112
}

infrastructure/terraform/resource_group_init/main.bicep

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ param storageAccountName string
88
param appShortName string
99
param userGroupPrincipalID string
1010
param enterpriseAppClientId string
11+
param groupMemberIds array = []
1112

1213
var hubMap = {
1314
dev: 'dev'
@@ -214,6 +215,7 @@ module pipelineMiAppRole 'enterpriseAppOwner.bicep' = {
214215
params: {
215216
miPrincipalId: managedIdentiyADOtoAZ.outputs.miPrincipalID
216217
enterpriseAppClientId: enterpriseAppClientId
218+
groupMemberIds: groupMemberIds
217219
}
218220
}
219221

scripts/bash/resource_group_init.sh

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ fi
2222

2323
echo "Found group Object ID: $userGroupPrincipalID"
2424

25+
echo "Fetching members of group: $userGroupName"
26+
groupMemberIds=$(az ad group member list --group "$userGroupName" --query "[].id" -o json)
27+
echo "Found group members: $groupMemberIds"
28+
2529
enterpriseAppName="spn-manbrs-web-api-${ENV_CONFIG}"
2630
echo "Fetching appId for enterprise app: $enterpriseAppName"
2731
enterpriseAppClientId=$(az ad sp list --filter "displayName eq '${enterpriseAppName}'" --query "[0].appId" -o tsv)
@@ -39,7 +43,7 @@ az deployment sub create --location "$REGION" --template-file infrastructure/ter
3943
--parameters enableSoftDelete="$ENABLE_SOFT_DELETE" envConfig="$ENV_CONFIG" region="$REGION" \
4044
storageAccountRGName="$STORAGE_ACCOUNT_RG" storageAccountName="$STORAGE_ACCOUNT_NAME" \
4145
appShortName="$APP_SHORT_NAME" userGroupPrincipalID="$userGroupPrincipalID" \
42-
enterpriseAppClientId="$enterpriseAppClientId" --what-if
46+
enterpriseAppClientId="$enterpriseAppClientId" groupMemberIds="$groupMemberIds" --what-if
4347

4448
read -r -p "Are you sure you want to execute the deployment? (y/n): " confirm
4549
[[ "$confirm" != "y" ]] && exit 0
@@ -49,7 +53,7 @@ output=$(az deployment sub create --location "$REGION" --template-file infrastru
4953
--parameters enableSoftDelete="$ENABLE_SOFT_DELETE" envConfig="$ENV_CONFIG" region="$REGION" \
5054
storageAccountRGName="$STORAGE_ACCOUNT_RG" storageAccountName="$STORAGE_ACCOUNT_NAME" \
5155
appShortName="$APP_SHORT_NAME" userGroupPrincipalID="$userGroupPrincipalID" \
52-
enterpriseAppClientId="$enterpriseAppClientId")
56+
enterpriseAppClientId="$enterpriseAppClientId" groupMemberIds="$groupMemberIds")
5357

5458
echo "$output"
5559

0 commit comments

Comments
 (0)