End-of-Life (EoL)

Amazon ECS

This guide shows you how to deploy Prisma Cloud in an ECS cluster with a single infrastructure node and two worker nodes. Console runs on the infrastructure node. An instance of Defender runs on each node in the cluster.
Console is the Prisma Cloud management interface It runs as a service in your ECS cluster. The parameters of the service are described in a task definition, and the task definition is written in JSON format.
Defender protects your containerized environment according to the policies you set in Prisma Cloud Console It also runs a service in your ECS cluster. To automatically deploy an instance of Defender on each node in your cluster, you’ll run the Defender task as a daemon service.
The installation described in this article is meant to be highly available. Data is persisted across nodes. If an infrastructure node were to go down, ECS can reschedule the Console service on any healthy node, and Console will continue to have access to its state. To enable this capability, you’ll attach storage that’s accessible from each of your infrastructure nodes, and Amazon Elastic File System (EFS) is an excellent option.
When you have multiple infrastructure nodes, ECS can schedule Console on any of them. Defenders need a reliable way to connect to Console. A load balancer automatically directs traffic to the node where Console runs, and offers a stable interface that Defenders can use to connect to Console and that operators can use to access its web interface.
We assume you are deploying Prisma Cloud to the default VPC. If you are not using the default VPC, adjust your settings accordingly.
This guide assumes you know very little about AWS ECS. As such, it is extremely prescriptive, and includes step for building your cluster. If you are already familiar with AWS ECS and do not need assistance navigating the interface, simply read the section synopsis, which summarizes all key configurations.

Cluster context

Prisma Cloud can segment your environment by cluster. For example, you might have three clusters: test, staging, and production. The cluster pivot in Prisma Cloud lets you inspect resources and administer security policy on a per-cluster basis.
Defenders in each DaemonSet are responsible for reporting which resources belong to which cluster. When deploying a Defender DaemonSet, Prisma Cloud tries to determine the cluster name through introspection. First, it tries to retrieve the cluster name from the cloud provider. As a fallback, it tries to retrieve the name from the corresponding kubeconfig file saved in the credentials store. Finally, you can override these mechanisms by manually specifying a cluster name when deploying your Defender DaemonSet.
Both the Prisma Cloud UI and twistcli tool accept an option for manually specifying a cluster name. Let Prisma Cloud automatically detect the name for provider-managed clusters. Manually specify names for self-managed clusters, such as those built with kops.
Radar lets you explore your environment cluster-by-cluster. You can also create stored filters (also known as collections) based on cluster names. Finally, you can scope policy by cluster. Vulnerability and compliance rules for container images and hosts, runtime rules for container images, and trusted images rules can all be scoped by cluster name.
There are some things to consider when manually naming clusters:
  • If you specify the same name for two or more clusters, they’re treated as a single cluster.
  • For GCP, if you have clusters with the same name in different projects, they’re treated as a single cluster. Consider manually specifying a different name for each cluster.
  • Manually specifying names isn’t supported in
    Manage > Defenders > Manage > DaemonSet
    . This page lets you deploy and manage DaemonSets directly from the Prisma Cloud UI. For this deployment flow, cluster names are retrieved from the cloud provider or the supplied kubeconfig only.

Download the Prisma Cloud software

The Prisma Cloud release tarball contains all the release artifacts.
  1. Download the latest recommended release.
  2. Retrieve the release tarball.
    $ wget <LINK_TO_CURRENT_RECOMMENDED_RELEASE_LINK>
  3. Unpack the Prisma Cloud release tarball.
    $ mkdir twistlock $ tar xvzf prisma_cloud_compute_edition_<VERSION>.tar.gz -C twistlock/

Create a cluster

Create an empty cluster named pc-ecs-cluster. Later, you will create launch configurations and auto-scaling groups to start EC2 instances in the cluster.
  1. Log into the AWS Management Console.
  2. Go to
    Services > Containers > Elastic Container Service
    .
  3. Click
    Create Cluster
    .
  4. Select
    Networking only
    , then click
    Next Step
    .
  5. Enter a cluster name, such as
    pc-ecs-cluster
    .
  6. Click
    Create
    .

Create a security group

Create a new security group named pc-security-group that opens the following ports. This security group will be associated with resources in your cluster.
Port
Description
8083
Prisma Cloud Console’s UI and API.
8084
Prisma Cloud secure websocket for Console-Defender communication.
2049
NFS for Prisma Cloud Console to access its state.
22
SSH for managing nodes.
You can harden this configuration as required. For example, you might want to limit access to port 22 to specific source IPs.
  1. Go to
    Services > Compute > EC2
    .
  2. In the left menu, click
    NETWORK & SECURITY > Security Groups
    .
  3. Click
    Create Security Group
    .
  4. In
    Security group name
    , enter a name, such as
    pc-security-group
    .
  5. In
    Description
    , enter
    Prisma Cloud ports
    .
  6. In
    VPC
    , select your default VPC.
  7. Under the
    Inbound rules
    section, click
    Add Rule
    .
    1. Under
      Type
      , select
      Custom TCP
      .
    2. Under
      Port Range
      , enter
      8083-8084
      .
    3. Under
      Source
      , select
      Anywhere
      .
  8. Click
    Add Rule
    .
    1. Under
      Type
      , select
      NFS
      .
    2. Under
      Source
      , select
      Anywhere
      .
  9. Click
    Add Rule
    .
    1. Under
      Type
      , select
      SSH
      .
    2. Under
      Source
      , select
      Anywhere
      .
  10. Click
    Create security group
    .

Create an EFS file system for Console

Create the Console EFS file system, and then get the command that will be used to mount the file system on every infrastructure node.
The EFS file system and ECS cluster must be in the same VPC and security group.
Prerequisites:
Prisma Cloud Console depends on an EFS file system with the following performance characteristics:
  • Performance mode:
    General purpose.
  • Throughput mode:
    Provisioned. Provision 0.1 MiB/s per deployed Defender. For example, if you plan to deploy 10 Defenders, provision 1 MiB/s of throughput.
  1. Log into the AWS Management Console.
  2. Go to
    Services > Storage > EFS
    .
  3. Click
    Create File System
    .
  4. Enter a value for
    Name
    , such as
    pc-efs-console
  5. Select a VPC.
  6. Click
    Customize
    .
  7. Set throughput mode to
    Provisioned
    , and set
    Throughput
    to 0.1 MiB/s per Defender to be deployed.
    For example, if you plan to deploy ten Defenders, set throughput to 1 MiB/s (10 Defenders * 0.1 MiB/s = 1 MiB/s).
  8. Click
    Next
    .
  9. For each mount target, select the
    pc-security-group
    .
  10. Click
    Next
    .
  11. In
    File System Policy
    , click
    Next
    .
  12. Review your settings and click
    Create
    .
  13. Click
    View file system
    .
  14. Click
    Attach
    , copy the NFS client mount command, and set it aside for later.
    You will use the mount command when setting up Console’s launch configuration.

Set up a load balancer

Set up an AWS Classic Load Balancer, and capture the Load Balancer DNS name.
You’ll create two load balancer listeners. One is used for Console’s UI and API, which are served on port 8083. Another is used for the websocket connection between Defender and Console, which is established on port 8084.
For detailed instructions on how to create a load balancer for Console, see Configure an AWS Load Balancer for ECS.

Deploy Console

Launch an infrastructure node that runs in the cluster, then start Prisma Cloud Console as a service on that node.

Create a launch configuration for the infrastructure node

Launch configurations are templates that are used by an auto-scaling group to start EC2 instances in your cluster.
Create a launch configuration named pc-infra-node that:
  • Creates an instance type of t2.xlarge, or higher. For more information about Console’s minimum requirements, see the system requirements.
  • Runs Amazon ECS-Optimized Amazon Linux 2 AMI.
  • Uses the ecsInstanceRole IAM role.
  • Runs a user data script that joins the pc-ecs-cluster and defines a custom attribute named purpose with a value of infra. Console tasks will be placed to this instance.
  1. Go to
    Services > Compute > EC2
    .
  2. In the left menu, click
    Auto Scaling > Launch Configurations
    .
  3. Click
    Create launch configuration
    .
  4. In
    Name
    , enter a name for your launch configuration, such as
    pc-infra-node
    .
  5. In Amazon machine image, select
    Amazon ECS-Optimized Amazon Linux 2 AMI
    .
    You can get a complete list of per-region Amazon ECS-optimized AMIs from here.
  6. Under instance type, select
    t2.xlarge
    .
  7. Under
    Additional Configuration
    :
    1. In
      IAM instance profile
      , select
      ecsInstanceRole
      .
      If this role doesn’t exist, see Amazon ECS Container Instance IAM Role.
    2. Under
      User data
      , select
      Text
      , and paste the following code snippet, which installs the NFS utilities and mounts the EFS file system:
      #!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=pc-ecs-cluster ECS_INSTANCE_ATTRIBUTES={"purpose": "infra"} EOF yum install -y nfs-utils mkdir /twistlock_console <CONSOLE_MOUNT_COMMAND> /twistlock_console mkdir -p /twistlock_console/var/lib/twistlock mkdir -p /twistlock_console/var/lib/twistlock-backup mkdir -p /twistlock_console/var/lib/twistlock-config
      ECS_CLUSTER
      must match your cluster name. If you’ve named your cluster something other than
      pc-ecs-cluster
      , then update the user data script accordingly.
      <CONSOLE_MOUNT_COMMAND>
      is the Console mount command you copied from the AWS Management Console after creating your console EFS file system. The mount target must be /twistlock_console, not the efs mount target provided in the sample command.
    3. (Optional) In
      IP Address Type
      , select
      Assign a public IP address to every instance
      .
      With this option, you can easily SSH to this instance to troubleshoot issues.
  8. Under
    Security groups
    :
    1. Select
      Select an existing security group
      .
    2. Select
      pc-security-group
      .
  9. Under
    Key pair (login)
    , select an existing key pair, or create a new key pair so that you can access your instances.
  10. Click
    Create launch configuration
    .

Create an auto scaling group for the infrastructure node

Launch a single instance of the infrastructure node into your cluster.
  1. Go to
    Services > Compute > EC2
    .
  2. In the left menu, click
    Auto Scaling > Auto Scaling Groups
    .
  3. Click
    Create an Auto Scaling group
    .
  4. In
    Choose launch template or configuration
    :
    1. In
      Auto Scaling group Name
      , enter
      pc-infra-autoscaling
      .
    2. In
      Launch template
      , click
      Switch to launch configuration
      .
    3. Select
      pc-infra-node
      .
    4. Click
      Next
      .
  5. Under
    Configure settings
    :
    1. In
      VPC
      , select your default VPC.
    2. In
      Subnet
      , select a public subnet, such as 172.31.0.0/20.
    3. Click
      Skip to review
      .
  6. Review the configuration and click
    Create Auto Scaling Group
    .
    After the auto scaling group spins up (it will take some time), validate that your cluster has one container instance, where a container instance is the ECS vernacular for an EC2 instance that has joined the cluster and is ready to accept container workloads:
    • Go to
      Services > Containers > Elastic Container Service
      . The count for
      Container instances
      should be 1.
    • Click on the cluster, then click on the
      ECS Instances
      tab. In the status table, there should be a single entry. Click on the link under the
      EC2 Instance
      column. In the details page for the EC2 instance, record the
      Public DNS
      .

Copy the Prisma Cloud config file into place

The Prisma Cloud API serves the version of the configuration file used to instantiate Console. Use scp to copy twistlock.cfg from the Prisma Cloud release tarball to /twistlock_console/var/lib/twistlock-config on the infrastructure node.
  1. Upload twistlock.cfg to the infrastructure node.
    1. Go to the directory where you unpacked the Prisma Cloud release tarball.
    2. Copy twistlock.cfg to the infrastructure node.
      $ scp -i <PATH-TO-KEY-FILE> twistlock.cfg ec2-user@<ECS_INFRA_NODE_DNS_NAME>:~
  2. SSH to the infrastructure node.
    $ ssh -i <PATH-TO-KEY-FILE> ec2-user@<ECS_INFRA_NODE_DNS_NAME>
  3. Copy the twistlock.cfg file into place.
    $ sudo cp twistlock.cfg /twistlock_console/var/lib/twistlock-config
  4. Close your SSH session.
    $ exit

Create a Prisma Cloud Console task definition