Architecture Overview

An in-depth overview of our architecture.

Architecture

The architecture seen below supports the object flow as described in the Object Scanning section both in a single region as well as across all regions supported. The Console region will have all components deployed to it. Any additional regions only require the scanning Agent(s) which will report back to the centrally located Console. In addition to this high-level architecture, you can get more details on routing and the public access required on the Deployment Details page.

Architecture - High-level Overview

Single-Region Architecture
  1. ECS is the core of our application, which hosts 4 types of services.

    1. The Console service is utilized for configuration of our product and provides the main communication to other AWS services. It also surfaces data from our product for user analysis.

    2. The API Agent provides an endpoint where files can be sent and scanned before entering a storage volume.

    3. The Event Agent scans files as they land into an S3 bucket by leveraging SNS and SQS.

    4. The Scheduled & On-demand Agent scans pre-existing objects in a storage volume using Fargate Run Tasks.

  2. Users and apps can log into our management console service through Cognito, or send files directly to our API scanning agent through a load balancer.

  3. Objects can be uploaded either directly into the supported storage volumes or uploaded to S3 via our API Agent.

  4. In AWS, we currently scan S3, EBS, EFS, and FSx.

  5. Integrations are handled through our Console service.

  6. The Console stores and reads configuration details from DynamoDB and Parameter Store, for example to ensure consistency when scaling agents or restarting tasks.

  7. The Console logs all application activity in CloudWatch, which can be integrated with most SIEM tools.

Platform Services

While many services are used (ECS Fargate, App Config, CloudWatch, CloudFormation, DynamoDB, SNS, SQS, IAM) to deliver the Antivirus for Amazon S3 solution, two will be called out here. CloudWatch and IAM are leveraged for logging and permissions respectively. These are the usual questions we get from customers:

  1. How do I check the logs?

  2. What are you doing behind the scenes (permissions wise)?

We wanted to make sure you had those bases covered with the information below.

CloudWatch Log Group Overview

Log groups for the Console

AgentConfig

Logs of changes to agent configuration performed through the console.

Buckets

Logs of changes to bucket protection status and any errors that may occur while trying to turn on/off buckets.

EcsConfig

Logs of actions taken to enable or disable Agents in a region. This includes creation of clusters, task definitions, services, sns topics, sqs queues, quarantine buckets, and autoscaling policies.

Error

Logs of when activities and actions intitiated by the Console encounter an error.

Metering

Logs of when metering is submitted, and any errors that may occur during metering.

Metrics

Logs of when cache for Console dashboard chart data is updated.

RetroScan

Logs of when retro scanning starts and finishes per bucket as well as when queue entries are added.

Subdomain

Logs of each time the console is assigned a new IP and when the subdomain is renamed.

System

Logs of general Console system information and errors and the return of the entitlement verification.

Updates

Logs of what updates are available and when an update is being performed.

Users

Logs of all user activity including user creates/deletes, password resets, role changes.

Log groups for the Agent

ScanConfig

Scan settings for the agent.

Settings include, but are not limited to:

  • Tags for the objects scanned

  • Actions taken on objects

  • Scan and skip lists

  • Bucket handling configuration

  • Classification Rules configuration for DLP

Note that the following snippet below has been shortened for brevity.

ScanResults

Scan results for clean, infected, error, or unscannable files.

Infected:

Clean:

Error:

ScanStatistics

Every-hour statistics of an agents activity for each bucket being monitored. These include the number of files scanned, the number of clean/infected/error files, and the total bytes scanned.

SystemEvents

Logs of general Agent system information and errors.

Log groups for ECS

As of version 6.06 we enable ECS logging by default. These logs will be shown in the following log groups.

For each of these log groups you will see your seven character application ID in the title of each log group as noted below by the AppID between the ECS and type of ECS service the log is for.

ECS.AppID.API

Log groups related to the ECS API Agent Service

ECS.AppID.Console

Log groups related to the ECS Console Service

ECS.AppID.AVEvent

Log groups related to the ECS AV Event Agent Service

ECS.AppID.DCEvent

Log groups related to the ECS DC Event Agent Service

IAM Permissions Review

We have been able to simplify the management and delivery of the solution such that there are very few tasks the administrator is required to perform inside the AWS Console. As a result, the Console and EventAgent have a number of permissions assigned to them within their respective roles to allow them to perform the actions needed on your behalf. In all cases, we went with a least privilege model wherever possible. There are a few instances where we have assigned * when it is required. Below you will find a review of the two IAM Roles we create and assign to the Console and scanning Agents.

Please review and Contact Us if you have any questions we can clear up for you.

The permission descriptions below follow the format:

Console Roles (All Resources)
Console Permissions (Targeted Resources)
Agent Permissions (All Resources)
Agent Permissions (Targeted Resources)

Permissions Policies

Console Role

Trust Relationships

Console Role Customer Inline Policies

PoliciesCreation
ApiLb
AwsLicensing
CloudTrailLake

Console Role Customer Managed Policies

Application-Resources-Policy
EC2-Management-Policy
Infrastructure-Management-Policy
Logging-And-Monitoring-Policy
Security-And-Access-Policy

Scan Engines

Antivirus for Amazon S3 has been built in such a way that the underlying scanning engine can be exchanged with other scanning engines as needed or desired. There are three engines included out of the box:

  • Sophos - a well known enterprise solution that offers speed, great accuracy and large file scanning

  • ClamAV - a widely used open source antivirus engine for detecting trojans, viruses, malware & other malicious threats

  • CSS Premium - our latest scanning engine that can be used as either a primary scanning engine or as a secondary scanning engine to increase the efficacy of your scan

Engine
Update Frequency
Max File Size
Speed
Type
API Endpoint

Agent checks every 15 minutes Vendor typically updates 4 times per day

Faster engine; refer to Sizing Discussion

Signature Based

Yes

Agent checks every hour Vendor typically updates once per day

Good performance engine; refer to Sizing Discussion

Signature Based

Yes

Agent checks every 15 minutes Typically updates one to four times per day

195GB through an ECS task 5TB with extra large file scanning File Types

Great performance; data to be released in the near future

Signature Based

Yes

Antivirus for Amazon S3 has the ability to use multiple scanning engines configured serially to ensure the highest level of efficacy and protection. Antivirus for Amazon S3 updates virus definitions as defined above as well as with each reboot / new spin up.

If you are a scan engine vendor and would like to partner with us to get your engine integrated into our solution or if you are a customer who would prefer another engine, please Contact Us.

Last updated