rules:
- id: azure-postgresql-min-tls-version
  message: >-
    Ensure PostgreSQL is using the latest version of TLS encryption
  patterns:
  - pattern-either:
    - pattern: |
        "TLS1_2"
    - pattern: |
        "TLS1_1"
    - pattern: |
        "TLS1_0"
  - pattern-inside: ssl_minimal_tls_version_enforced = ...
  - pattern-inside: |
      $RESOURCE "azurerm_postgresql_server" "..." {
      ...
      }
  - pattern-not-inside: |
      $RESOURCE "azurerm_postgresql_server" "..." {
      ...
      ssl_enforcement_enabled = true
      ...
      }
  metadata:
    owasp:
    - A03:2017 - Sensitive Data Exposure
    - A02:2021 - Cryptographic Failures
    cwe:
    - 'CWE-326: Inadequate Encryption Strength'
    category: security
    technology:
    - terraform
    - azure
    references:
    - https://owasp.org/Top10/A02_2021-Cryptographic_Failures
    subcategory:
    - audit
    likelihood: LOW
    impact: LOW
    confidence: LOW
  languages: [hcl]
  severity: WARNING
