@@ -537,6 +537,8 @@ function Set-SQLServerPermissions {
537537 [Parameter (Mandatory = $true )]
538538 [string ]$ConnectionString ,
539539 [Parameter (Mandatory = $true )]
540+ [string ]$ConnectionStringADF ,
541+ [Parameter (Mandatory = $true )]
540542 [string ]$ComputeResourceGroup ,
541543 [Parameter (Mandatory = $true )]
542544 [string ]$DataResourceGroup
@@ -587,11 +589,20 @@ function Set-SQLServerPermissions {
587589 $roleCommand.Dispose ()
588590 }
589591
592+ $connection.Close ()
593+
594+ # ADF Permissions
590595 $dataFactoryName = " $SolutionAbbreviation -data-$EnvironmentAbbreviation -adf"
591596 $dataFactory = Get-AzDataFactoryV2 - ResourceGroupName $DataResourceGroup - Name $dataFactoryName - ErrorAction SilentlyContinue
597+ $functionAppsADF = $functionApps | Where-Object { $_.Name -match " -webapi" -or $_.Name -match " -SqlMembershipObtainer" }
592598
593599 if ($null -ne $dataFactory ) {
594600
601+ $connectionADF = New-Object System.Data.SqlClient.SqlConnection
602+ $connectionADF.ConnectionString = $ConnectionStringADF
603+ $connectionADF.AccessToken = $sqlToken
604+ $connectionADF.Open ()
605+
595606 $dataFactorySqlScript = " IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'$dataFactoryName ')
596607 BEGIN
597608 CREATE USER [$dataFactoryName ] FROM EXTERNAL PROVIDER
@@ -602,13 +613,30 @@ function Set-SQLServerPermissions {
602613
603614 Write-Host " Granting permissions to SQL database for $dataFactoryName "
604615
605- $roleCommand = $connection.CreateCommand ()
606- $roleCommand.CommandText = $dataFactorySqlScript
607- [void ]$roleCommand.ExecuteNonQuery ()
608- $roleCommand.Dispose ()
609- }
616+ $roleCommandADF = $connectionADF.CreateCommand ()
617+ $roleCommandADF.CommandText = $dataFactorySqlScript
618+ [void ]$roleCommandADF.ExecuteNonQuery ()
619+ $roleCommandADF.Dispose ()
610620
611- $connection.Close ()
621+ foreach ($functionApp in $functionAppsADF ) {
622+
623+ $functionSqlScript = " IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'$ ( $functionApp.Name ) ')
624+ BEGIN
625+ CREATE USER [$ ( $functionApp.Name ) ] FROM EXTERNAL PROVIDER
626+ ALTER ROLE db_datareader ADD MEMBER [$ ( $functionApp.Name ) ]
627+ ALTER ROLE db_datawriter ADD MEMBER [$ ( $functionApp.Name ) ]
628+ END"
629+
630+ Write-Host " Granting permissions to SQL database for $ ( $functionApp.Name ) "
631+
632+ $roleCommandADF = $connectionADF.CreateCommand ()
633+ $roleCommandADF.CommandText = $functionSqlScript
634+ [void ]$roleCommandADF.ExecuteNonQuery ()
635+ $roleCommandADF.Dispose ()
636+ }
637+
638+ $connectionADF.Close ()
639+ }
612640}
613641
614642function Set-RBACPermissions {
@@ -1101,8 +1129,14 @@ function Deploy-Resources {
11011129 - Name " sqlDatabaseConnectionString" `
11021130 - AsPlainText
11031131
1132+ $connectionStringADF = Get-AzKeyVaultSecret `
1133+ - VaultName " $SolutionAbbreviation -data-$EnvironmentAbbreviation " `
1134+ - Name " sqlServerBasicConnectionStringADF" `
1135+ - AsPlainText
1136+
11041137 Set-SQLServerPermissions `
11051138 - ConnectionString $connectionString `
1139+ - ConnectionStringADF $connectionStringADF `
11061140 - ComputeResourceGroup $computeResourceGroup `
11071141 - DataResourceGroup $dataResourceGroup
11081142
0 commit comments