Amazon Web Services (AWS) Best Practices For a Successful SOC 2 Examination

For Software as a Service (SaaS) companies operating in Amazon Web Services’ (AWS) cloud environment, there are a number of AWS best practices that should be considered in order to improve security and meet certain SOC 2 trust services criteria (TSC). When Schneider Downs performs a SOC 2 examination, we typically look for the following controls and configurations to be in place:

  • Use Multifactor Authentication (MFA) for the Root User Account – The root account is the most privileged user in an AWS environment. With MFA enabled, a user signing in to an AWS website via the root account will be prompted for the account password as well as for the authentication code they’ll receive on their AWS MFA device. For stronger security, it’s recommended that a hard token device be used rather than a soft one (e.g., authenticator on a mobile device). AWS supports both methods.
  • Store the Root User Account Password in a Secured Password Vault – Due to the critical nature of this password, there should be at least two highly privileged users who have knowledge of it. Since the password is shared, it should be stored in a secured vault so that its usage can be tracked. If someone with knowledge of the password leaves the organization, the password should be changed.
  • Use MFA for all Identity Access Management (IAM) Users who have Console Access – Enabling MFA provides increased security for console access, since it requires the user to have both knowledge of a credential and possess a device that emits a time-sensitive key. Depending on the number of users, it could become problematic if hard tokens are used for MFA, since those devices may frequently be misplaced. If you’ve configured AWS to use single sign-on through another service, such as G Suite, ensure that MFA is turned on for the authentication service you’re using.
  • Only Use the Root User Account when the Root User is the Only User Who Can Perform the Action – The root account should only be used for specific actions, a list of which can be found here at
  • Configure Strong IAM Password Policies – Complexity (use of upper and lowercase letters, numbers and symbols), minimum length, password expiration and prevention of password reuse should all be enforced. Some requirements – including minimum length – can be relaxed depending on the use of MFA. If MFA is in use and minimum length is set to a minimum of 14 characters, for instance, complexity, password expiration and password reuse restrictions do not have to be enforced. As with above, if you’ve configured AWS to use single sign-on through another service, ensure that appropriate password controls are set for the authentication service you’re using.
  • Use Groups to Assign Permissions to IAM Users – Groups like Admin, Developers, Read-Only and Test should be created, with specific unique permissions. Once these groups are established, IAM users should be assigned appropriately, based on the principle of least privilege.
  • Use Security Groups to Restrict Traffic Flow to your Virtual Private Cloud (VPC) – A security group acts as a virtual firewall. For each group, one set of rules controls inbound traffic to instances, while a separate set controls outbound traffic. After creating a security group, ensure you change the default rules.
  • Monitor CloudTrail Log Files with CloudWatch Logs – Several CloudTrail events should be monitored. CloudWatch alarms can be configured to alert appropriate personnel when specific activity occurs. Examples of events that should be monitored include S3 API  calls made to bucket policies; deletion of an S3 bucket; security group configuration changes; network gateway changes; VPC changes; creating, terminating, starting, stopping or rebooting an Elastic Computing (EC2) instance; creating, updating or deleting a CloudTrail trail; stopping CloudTrail; AWS Console sign-in failures; unauthorized API calls; IAM policy changes; root account logins; and any AWS Console sign-in without MFA.
  • Protect CloudTrail Logs – CloudTrail logs should be stored in a dedicated and centralized S3 bucket, where strict security controls access and segregation of duties can be enforced. Only authorized users should have access. The bucket should be configured to require MFA to delete.
  • Use Correct Policies and Ensure S3 Buckets are not Publicly Accessible – Unless explicitly required for anyone on the internet to be able to read or write to them, S3 buckets should not be public.
  • Run AWS Trusted Advisor on a Regular Basis – Trusted Advisor performs best practice checks and recommendations across five categories: cost optimization, security, fault tolerance, performance and service limits. Running this tool on a regular basis, documenting the review of the results, and making changes as necessary will show your auditor that you have a process in place to monitor for vulnerabilities.
  • Use Amazon Machine Images (AMI) – An AMI provides the information required to launch an instance. This is essentially equivalent to creating a server-hardening standard. When a new EC2 instance is launched, an AMI can be specified to ensure the instance has the appropriate configurations in place.
  • Deploy Critical Application Components across Multiple Availability Zones and Replicate Data and AMIs – Amazon EC2 is hosted in multiple locations worldwide and is composed of Regions and Availability Zones. Resources are not replicated across Regions unless configured otherwise. Although rare, failures can occur that affect the availability of instances that are in the same location. If all instances are hosted in a single location that’s affected by a failure, none of the instances would be available.
  • Keep AWS Account Owner Contact Details Up to Date and Map Contact Information to Multiple Individuals – This ensures that important communications from AWS, such as breaches of the Acceptable Use Policy and security breaches, are communicated to multiple members of your organization and not overlooked.

You’ve heard our thoughts… We’d like to hear yours

The Schneider Downs Our Thoughts On blog exists to create a dialogue on issues that are important to organizations and individuals. While we enjoy sharing our ideas and insights, we’re especially interested in what you may have to say. If you have a question or a comment about this article – or any article from the Our Thoughts On blog – we hope you’ll share it with us. After all, a dialogue is an exchange of ideas, and we’d like to hear from you. Email us at [email protected].

Material discussed is meant for informational purposes only, and it is not to be construed as investment, tax, or legal advice. Please note that individual situations can vary. Therefore, this information should be relied upon when coordinated with individual professional advice.

© 2022 Schneider Downs. All rights-reserved. All content on this site is property of Schneider Downs unless otherwise noted and should not be used without written permission.

our thoughts on
The Future of Retail Shopping
Benefits of a Trusted Co-Source Audit Partner During the Great Resignation
United States Deals with Baby Formula Shortage
Accounting Challenges for Emerging Technology Companies – Accounting For Research and Development Costs
What Should a Service Organization Consider When Determining Its SOC Report Testing Period?
What is blockchain? How can I secure my blockchain environment?
Register to receive our weekly newsletter with our most recent columns and insights.
Have a question? Ask us!

We’d love to hear from you. Drop us a note, and we’ll respond to you as quickly as possible.

Ask us
contact us

This site uses cookies to ensure that we give you the best user experience. Cookies assist in navigation, analyzing traffic and in our marketing efforts as described in our Privacy Policy.