Azure SAST Rules
This contains SAST (static Application Security Testing) rules for shift left approach and maintain code smell and clean coding
RBAC Rules
Azure custom roles should not grant subscription "Owner" capabilities
Noncompliant code example
//Noncompliant code
resource "azurerm_role_definition" "example" { # Sensitive
name = "example"
scope = data.azurerm_subscription.primary.id
permissions {
actions = ["*"]
not_actions = []
}
assignable_scopes = [
data.azurerm_subscription.primary.id
]
}
// compliant solution
resource "azurerm_role_definition" "example" {
name = "example"
scope = data.azurerm_subscription.primary.id
permissions {
actions = ["Microsoft.Compute/*"]
not_actions = []
}
assignable_scopes = [
data.azurerm_subscription.primary.id
]
}
Administration services access should be restricted to specific IP addresses.
What is the potential impact?
Since Administrative services run with the elevated privileges and thus a vulnerability could have a high impact on the system along with credentials might be leaked through the phishing or similar technique.
Solution
Restrict access to the remote administrative services to only trusted IP address. What should be termed as "Trusted IP "?
Any IP address which is held by system Administrative
eg:-
// Nonecompliant code example
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "networkSecurityGroups/example",
"type": "Microsoft.Network/networkSecurityGroups/securityRules",
"apiVersion": "2022-11-01",
"properties": {
"protocol": "*",
"destinationPortRange": "*",
"sourceAddressPrefix": "*",
"access": "Allow",
"direction": "Inbound"
}
}
]
}
resource securityRules 'Microsoft.Network/networkSecurityGroups/securityRules@2022-11-01' = {
name: 'securityRules'
properties: {
direction: 'Inbound'
access: 'Allow'
protocol: '*'
destinationPortRange: '*'
sourceAddressPrefix: '*'
}
}
// compliant solution
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "networkSecurityGroups/example",
"type": "Microsoft.Network/networkSecurityGroups/securityRules",
"apiVersion": "2022-11-01",
"properties": {
"protocol": "*",
"destinationPortRange": "22",
"sourceAddressPrefix": "10.0.0.0/24",
"access": "Allow",
"direction": "Inbound"
}
}
]
}
resource securityRules 'Microsoft.Network/networkSecurityGroups/securityRules@2022-11-01' = {
name: 'securityRules'
properties: {
direction: 'Inbound'
access: 'Allow'
protocol: '*'
destinationPortRange: '22'
sourceAddressPrefix: '10.0.0.0/24'
}
}
Last updated