policy/avmsec/LinuxVMUsesSSH.azapi.rego (25 lines of code) (raw):

package avmsec import rego.v1 is_azapi_linux_virtual_machine(resource) if { resource.values.body.properties.storageProfile.osDisk.osType == "Linux" } valid_azapi_linux_virtual_machine_use_ssh(resource) if { resource.values.body.properties.osProfile.linuxConfiguration.ssh.publicKeys[0].keyData == resource.values.body.properties.osProfile.linuxConfiguration.ssh.publicKeys[0].keyData } valid_azapi_linux_virtual_machine_use_ssh(resource) if { resource.after_unknown.body.properties.osProfile.linuxConfiguration.ssh.publicKeys[0].keyData == resource.after_unknown.body.properties.osProfile.linuxConfiguration.ssh.publicKeys[0].keyData } deny_AVM_SEC_178 contains reason if { resource := data.utils.resource(input, "azapi_resource")[_] data.utils.is_azure_type(resource.values, "Microsoft.Compute/virtualMachines") is_azapi_linux_virtual_machine(resource) not valid_azapi_linux_virtual_machine_use_ssh(resource) reason := sprintf("avmsec/AVM_SEC_178: Ensure that Linux VMs and Linux VM Scale Sets in Azure are configured to use SSH keys for authentication %s. https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/LinuxVMUsesSSH.py", [resource.address]) } deny_AVM_SEC_178 contains reason if { resource := data.utils.resource(input, "azapi_resource")[_] data.utils.is_azure_type(resource.values, "Microsoft.Compute/virtualMachineScaleSets") is_azapi_linux_virtual_machine(resource) not valid_azapi_linux_virtual_machine_use_ssh(resource) reason := sprintf("avmsec/AVM_SEC_178: Ensure that Linux VMs and Linux VM Scale Sets in Azure are configured to use SSH keys for authentication %s. https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/LinuxVMUsesSSH.py", [resource.address]) }