- Access exclusive content
- Connect with peers
- Share your expertise
- Find support resources
03-03-2025 05:10 PM - edited 03-05-2025 09:32 AM
Azure Container Instances (ACI) is a Microsoft Azure service that allows users to run containers without managing servers. ACI is a serverless solution that supports Linux and Windows containers.
This article will go through the steps needed to install an App-Embedded Defender in Azure ACI and connect it with Prisma Cloud so that the results from the defender are available in Prisma Cloud.
Deploy an App-Embedded Defender in ACI to provide runtime protection to applications installed in ACI. The App-Embedded Defender enforces runtime policy on the application entrypoint and any child processes created by this entrypoint.
This document is to help streamline the process and provide step-by-step instructions on how to get it done for Apps running as Azure Container Instances (ACI).
You can embed App-Embedded Defenders with the Console UI, twistcli, or Prisma Cloud API. However, this tutorial only covers how to do it with the console UI.
Use this guide when you need to deploy an app-embedded Defender on Azure Container Instance (ACI).
If you already have a project, begin by editing the dockerfile of your project. Otherwise, you can use Azure-Samples / aci-confidential-hello-world as a starting point for this exercise.
Some dockerfile will have the ENTRYPOINT instruction, some will have just the CMD instruction.
For this project there isn't an ENTRYPOINT instruction. You need to just add it ENTRYPOINT ["python3", "main.py" ], right before the CMD instruction.
git clone https://github.com/Azure-Samples/aci-confidential-hello-world.git
cp ./aci-confidential-hello-world/app/Dockerfile ./Dockerfile_bak && nano aci-confidential-hello-world/app/Dockerfile
Otherwise, You need to just add ENTRYPOINT ["python3", "main.py" ], right before the CMD instruction. Then save the changes.
In this step you're going to create a new app-embedded policy. Take note of the rule name you create, because that will be used as the App ID when configuring the Defender in later steps. When setting APP ID[2], specify a value that lets you easily trace findings back to the image. All vulnerability, compliance, and runtime findings for the container will be aggregated under this App ID. In Console, the App ID is presented as the image name.
Workflow Steps:
Figure 1: App-Embedded_defender_runtime_policy_PaloAltoNetworks
Figure 2: App-Embedded_defender_runtime_policy_scope_PaloAltoNetworks
Figure 3: App-Embedded_defender_runtime_policy_Collections_PaloAltoNetworks
Figure 4: Prisma_cloud_App-Embedded_defender_Collections_App-ID_PaloAltoNetworks
Now, you’re going to provision the app-embedded Defender and then embed it in the dockerfile. This is done through the Prisma cloud console UI. This part can also be done through automation using either twistcli or the API. But for this specific tutorial, we’re using the console UI.
These steps entail configuring the app-embedded Defender and then uploading the undefended dockerfile. The UI will return a zip file that has the new dockerfile with the Defender embedded.
Then define the required options as below:
Figure 5: Prisma_cloud_App-Embedded_defender_configuration_PaloAltoNetworks
Figure 6: Prisma_cloud_App-Embedded_defender_download_PaloAltoNetworks
At this point, Prisma Cloud has prepped and embedded the Defender code excerpt into the dockerfile and generated the zip file. You should have already downloaded the zip file in the previous step. Now, unpackage the zip file to extract the new dockerfile with the embedded defender. You will use that new docker file to build/rebuild the image. Then, you will have an app image with the Defender embedded in the image.
The steps below assume you already have an ACR or other registry/repo. If not, create an ACR[4] and confirm that you can access it from the workstation where the new image is being built.
Workflow Steps:
sudo unzip app_embedded_embed_aci-wl-helloworld.zip
mv ./aci-confidential-hello-world/app/Dockerfile ./Dockerfile_bak && cp ./twistlock_defender_app_embedded.tar.gz ./Dockerfile ./aci-confidential-hello-world/app/
sudo docker build --pull --rm -f ./aci-confidential-hello-world/app/Dockerfile -t aci-wl-helloworld:latest . && sudo docker image list
sudo docker tag aci-wl-helloworld:latest yourregistry.azurecr.io/prisma/aci-wl-helloworld:latest
Figure 7: App-Embedded_defender_new_image_PaloAltoNetworks
At this point, the new image is ready to be pushed to your registry for deployment. The steps below assume that you already have an ACR or other registry and you have the right credentials to login and push images to the registry. You will need Azure CLI[3] installed on the machine you’re working on.
sudo az login
sudo az acr login --name yourregistry
sudo docker push yourregistry.azurecr.io/prisma/aci-wl-helloworld:latest
Now that the newly defended image has been pushed to your repo, you can use it to deploy an ACI or redeploy your existing application to ensure it’s protected. This part can also be done through the Azure console or Azure CLI.
Figure 8: Azure_Container_Instance_protected_image_PaloAltoNetworks
This task entails confirming and validating that the app embedded Defender deployed successfully. If the previous task 6 was successful, in about 10-15 mins, the app embedded Defender should start reporting on any discovered vulnerabilities as well as runtime events and auditing.
Figure 9: Prisma_cloud_Prisma_App_embedded_defender_PaloAltoNetworks
Figure 10: Prisma_App_embedded_defender_vulnerabilities_PaloAltoNetworks
Figure 11: Prisma_App_embedded_observations_PaloAltoNetworks
This article has guided you through the high level step-by-step process to deploy Prisma Cloud's App-Embedded Defender in Azure Container Instances (ACI) to ensure runtime security and vulnerability monitoring for containerized applications. Prisma Cloud's App-Embedded Defender bridges the security gap that previously existed in apps running in ACI, a fully managed IaaS solution by Microsoft Azure, by embedding runtime protection directly into the user container images.
Some of the key steps in the deployment process include:
The workflow leverages Prisma Cloud's intuitive Console UI to assist with configurations, ensuring the process is seamless and secure. By following this tutorial, organizations can safeguard their ACI applications against vulnerabilities and runtime threats, maintaining robust cloud-native security with Prisma Cloud.
[1] Azure Container Instance (ACI)
[2] App ID
[3] Azure CLI
[5 Runtime Defense for App-Embedded
[6] Azure-Samples / aci-confidential-hello-world
Wikenson Lejulus is a Customer Success Engineer on the Prisma™ Cloud Runtime Security team, specializing in supporting all compute solutions for Prisma™ Cloud AWS, Azure, GCP, OCI, and Alibaba.
Wikenson’s broad expertise spans from Prisma Cloud, to Next-Generation Firewall, to securing compute workloads including containers and kubernetes on public and private clouds. He uses collaborative approaches to break down complex problems into solutions for global enterprise customers and leverage their multi-industry knowledge to inspire success.