AzSDK.Test/TestCases/SVT/SQLDB/SQLDBResource.ps1
Set-StrictMode -Version Latest class SQLDBResource:TestResource{ SQLDBResource([TestCase] $testcase, [TestSettings] $testsettings):Base($testcase, $testsettings){ } #Setting the properties as required by this resource type. [void]SetDerivedResourceProps(){ $this.SetKeyVaultUrl() #Pick the resource name from Params file if its not null if(![string]::IsNullOrEmpty($this.Params)){ $this.ResourceName = $this.GetResourceNameFromARMJson($this.Params, "ResName", "value") } else{ $this.ResourceName = "azsdktestsqldb" #Else set the default resource name } $this.ResourceType = "Microsoft.Sql/servers" } #Enable Sql Server Auditing [void]EnableSqlServerAuditing(){ try{ $TableIdentifier = "SQLServer" + $(Get-Date -format "yyyyMMDDHHmmss") Set-AzureRmSqlServerAuditingPolicy ` -ResourceGroupName $this.ResourceGroupName ` -ServerName $this.ResourceName ` -StorageAccountName $this.settings.CommonStorageAcctName ` -EventType All ` -RetentionInDays 365 ` -TableIdentifier $TableIdentifier ` -ErrorAction Stop } catch{ [CommonHelper]::Log("Error while Enabling Sql Server Auditing : " + $this.ResourceName, [MessageType]::Error) } } #Disable Sql Server Auditing [void]DisableSqlServerAuditing(){ try{ $TableIdentifier = "SQLServer" + $(Get-Date -format "yyyyMMDDHHmmss") Set-AzureRmSqlServerAuditingPolicy ` -ResourceGroupName $this.ResourceGroupName ` -ServerName $this.ResourceName ` -StorageAccountName $this.settings.CommonStorageAcctName ` -EventType None ` -RetentionInDays 10 ` -TableIdentifier $TableIdentifier ` -ErrorAction Stop } catch{ [CommonHelper]::Log("Error while disabling Sql Server Auditing : " + $this.ResourceName, [MessageType]::Error) } } #Enable Sql Server Threat Detection Policy [void]EnableSqlServerThreatDetectionPolicy(){ try{ Set-AzureRmSqlServerThreatDetectionPolicy -ResourceGroupName $this.ResourceGroupName ` -ServerName $this.ResourceName ` -StorageAccountName $this.settings.CommonStorageAcctName ` -EmailAdmins $true ` -ExcludedDetectionType None ` -ErrorAction Stop } catch{ [CommonHelper]::Log("Error while Enabling Sql Server Threat Detection Policy : " + $this.ResourceName, [MessageType]::Error) } } #Disable Sql Server Threat Detection Policy [void]DisableSqlServerThreatDetectionPolicy(){ try{ Set-AzureRmSqlServerThreatDetectionPolicy -ResourceGroupName $this.ResourceGroupName ` -ServerName $this.ResourceName ` -StorageAccountName $this.settings.CommonStorageAcctName ` -EmailAdmins $false ` -ExcludedDetectionType Sql_Injection ` -ErrorAction Stop } catch{ [CommonHelper]::Log("Error while disabling Sql Server Threat Detection Policy : " + $this.ResourceName, [MessageType]::Error) } } #set Sql Server Active Directory Administrator [void]SetSqlServerActiveDirectoryAdmin(){ try{ Set-AzureRmSqlServerActiveDirectoryAdministrator -ResourceGroupName $this.ResourceGroupName ` -ServerName $this.ResourceName ` -ErrorAction Stop } catch{ [CommonHelper]::Log("Error while setting Sql Server Active Directory Administrator : " + $this.ResourceName, [MessageType]::Error) } } #Remove Sql Server Active Directory Administrator [void]RemoveSqlServerActiveDirectoryAdmin(){ try{ Remove-AzureRmSqlServerActiveDirectoryAdministrator -ResourceGroupName $this.ResourceGroupName ` -ServerName $this.ResourceName ` -Force ` -ErrorAction Stop } catch{ [CommonHelper]::Log("Error while removing Sql Server Active Directory Administrator : " + $this.ResourceName, [MessageType]::Error) } } #set Sql Server Firewall IP Address Ranges [void]SetSqlServerFirewallIPAddressRanges(){ try{ #Set Allow access to Azure services New-AzureRmSqlServerFirewallRule -FirewallRuleName "AllowAllWindowsAzureIps" -ResourceGroupName $this.ResourceGroupName -ServerName $this.ResourceName ` -StartIpAddress "0.0.0.0" -EndIpAddress "0.0.0.0" New-AzureRmSqlServerFirewallRule -FirewallRuleName "AzSDKTestFirewallRule" -ResourceGroupName $this.ResourceGroupName -ServerName $this.ResourceName ` -StartIpAddress "0.0.0.10" -EndIpAddress "0.0.0.20" } catch{ [CommonHelper]::Log("Error while setting Sql Server Firewall IP Address Ranges : " + $this.ResourceName, [MessageType]::Error) } } #Remove Sql Server Firewall IP Address Ranges [void]RemoveSqlServerFirewallIPAddressRanges(){ try{ Remove-AzureRmSqlServerFirewallRule -FirewallRuleName "AllowAllWindowsAzureIps" -ResourceGroupName $this.ResourceGroupName -ServerName $this.ResourceName -Force Remove-AzureRmSqlServerFirewallRule -FirewallRuleName "AzSDKTestFirewallRule" -ResourceGroupName $this.ResourceGroupName -ServerName $this.ResourceName -Force } catch{ [CommonHelper]::Log("Error while removing Sql Server Firewall IP Address Ranges : " + $this.ResourceName, [MessageType]::Error) } } #set Sql Server Any to Any Firewall Rule [void]SetSqlServerAnyToAnyFirewallRule(){ try{ New-AzureRmSqlServerFirewallRule -FirewallRuleName "AzSDKTestAnyToAnyRule" -ResourceGroupName $this.ResourceGroupName -ServerName $this.ResourceName ` -StartIpAddress "0.0.0.0" -EndIpAddress "255.255.255.255" } catch{ [CommonHelper]::Log("Error while setting Sql Server Any to Any Firewall Rule: " + $this.ResourceName, [MessageType]::Error) } } #set Sql Server Any to Any Firewall Rule [void]RemoveSqlServerAnyToAnyFirewallRule(){ try{ Remove-AzureRmSqlServerFirewallRule -FirewallRuleName "AzSDKTestAnyToAnyRule" -ResourceGroupName $this.ResourceGroupName -ServerName $this.ResourceName } catch{ [CommonHelper]::Log("Error while setting Sql Server Any to Any Firewall Rule: " + $this.ResourceName, [MessageType]::Error) } } #Add Single DB to SQL Server [void]AddDataBase() { try{ New-AzureRmSqlDatabase -ResourceGroupName $this.ResourceGroupName ` -ServerName $this.ResourceName ` -DatabaseName "AzSDKTestDB01" ` -RequestedServiceObjectiveName "Basic" } catch{ [CommonHelper]::Log("Error while adding database " + $this.ResourceName, [MessageType]::Error) } } #Add Single DB to SQL Server [void]EnableSqlDatabaseTransparentDataEncryption() { try{ Set-AzureRmSqlDatabaseTransparentDataEncryption -ResourceGroupName $this.ResourceGroupName ` -ServerName $this.ResourceName ` -DatabaseName "AzSDKTestDB01" ` -State Enabled } catch{ [CommonHelper]::Log("Error while setting Sql Database Transparent Data Encryption " + $this.ResourceName, [MessageType]::Error) } } [void]RemoveDatabase() { try{ Remove-AzureRmSqlDatabase -ResourceGroupName $this.ResourceGroupName ` -ServerName $this.ResourceName ` -DatabaseName "AzSDKTestDB01" ` -Force } catch{ [CommonHelper]::Log("Error while deleting database " + $this.ResourceName, [MessageType]::Error) } } #Setting the Key Vault Url in SQL DB ARM template parameter [void] SetKeyVaultUrl(){ try{ $paramFile = [CommonHelper]::GetRootPath() + "\TestCases\"+$this.TestCase.Feature+"\"+$this.TestCase.ModuleName+"\TestData\"+$this.TestCase.ParamFileName if(!([string]::IsNullOrEmpty($paramFile))){ $jsonFile = Get-Content -Path $paramFile | ConvertFrom-Json $jsonFile.parameters.administratorLoginPassword.keyVault.id = $this.settings.CommonKeyVaultUrl $jsonFile |ConvertTo-Json | Set-Content $paramFile } } catch{ [CommonHelper]::Log("Failed to set Key vault url in parameters file!", [MessageType]::Error) } } } |