module/ConfigurationProvider/ControlConfigurations/Services/ContainerApps.json

{
  "FeatureName": "ContainerApps",
  "Reference": "aka.ms/azsktcp/Containerapps",
  "IsMaintenanceMode": false,
  "Controls": [
    {
      "ControlID": "Azure_ContainerApps_DP_Avoid_Plaintext_Secrets",
      "Description": "Container Apps must not have secrets/credentials present in plain text.",
      "Id": "ContainerApps10",
      "ControlSeverity": "High",
      "Automated": "Yes",
      "MethodName": "ContainerAppsAvoidPlaintextSecretsAsync",
      "DisplayName": "Container Apps must not have secrets/credentials present in plain text.",
      "Category": "Credentials Access",
      "ControlRequirements": "Eliminating plain text credentials",
      "Rationale": "Keeping secrets/credentials such as DB connection strings, passwords, keys, etc. in plain text can lead to exposure at various avenues during an application's lifecycle. Storing them in a key vault ensures that they are protected at rest.",
      "Recommendation": "Find detected secrets/credentials using the information available in the UI, rotate those credentials and remove them. Refer: https://learn.microsoft.com/en-us/azure/container-apps/manage-secrets?tabs=azure-portal to manage secrets in azure container apps.",
      "Tags": [
        "SDL",
        "TCP",
        "Automated",
        "DP",
        "Baseline"
      ],
      "Enabled": true,
      "CustomTags": [
        "Daily",
        "Preview",
        "TenantBaseline",
        "MSD",
        "TBv9",
        "TRWave4",
        "TRPreview",
        "TRBaseline",
        "CAIPreview",
        "EDPreview",
        "SMTPreview",
        "SN:ContainerApps_AvoidSecrets",
        "CAIWave1",
        "Secrets"
      ]
    },
    {
      "ControlID": "Azure_ContainerApps_DP_Dont_Allow_HTTP_Access",
      "Description": "Container Apps must only be accessible over HTTPS",
      "Id": "ContainerApps20",
      "ControlSeverity": "High",
      "Automated": "Yes",
      "MethodName": "ContainerAppsSecureCommunication",
      "DisplayName": "Container Apps must only be accessible over HTTPS",
      "Category": "Encrypt data in transit",
      "ControlRequirements": "Data must be encrypted in transit and at rest",
      "Rationale": "Enabling HTTPS helps encrypt data in transit, preventing potential eavesdropping and tampering.",
      "Recommendation": "To use secure communication in Container Apps, Go to Azure Portal --> Container App --> Ingress --> uncheck 'allowInsecure' --> Click Save.",
      "Tags": [
        "SDL",
        "TCP",
        "Automated",
        "DP",
        "ContainerApps",
        "Baseline"
      ],
      "Enabled": true,
      "CustomTags": [
        "Weekly"
      ]
    },
    {
      "ControlID": "Azure_ContainerApps_DP_Enable_mTLS_Encryption",
      "Description": "Container Apps Environment must have mTLS enabled",
      "Id": "ContainerApps30",
      "ControlSeverity": "High",
      "Automated": "Yes",
      "MethodName": "ContainerAppsmTLSEnabled",
      "DisplayName": "Container Apps Environment must have mTLS enabled",
      "Category": "Encrypt data in transit",
      "ControlRequirements": "Data must be encrypted in transit and at rest",
      "Rationale": "mTLS ensures secure end-to-end encryption by requiring encrypted communication between both the Container App and the Managed Environment, enhancing the confidentiality and integrity of data transmissions.",
      "Recommendation": "To enable mTLS in Container Apps managed environment, Go to Azure Portal --> Container App Environment --> Ingress --> mTLS --> 'Enable' --> Click Apply.",
      "Tags": [
        "SDL",
        "TCP",
        "Automated",
        "DP",
        "ContainerApps",
        "Baseline"
      ],
      "Enabled": true,
      "CustomTags": [
        "Weekly"
      ]
    }
  ]
}