Amazon Web Services (AWS) has taken over the cloud infrastructure market by storm. Its 34% market share exceeds the combined market share of two of its biggest competitors, Microsoft Azure and Google Cloud. The tech giant offers a full spectrum of tools and cloud services, from simple hosting to complex structures.
As engineering teams deepen their cloud usage and become more agile, they need the right tools to support modern, complex cloud-native operations. With Amazon’s continued growth and the evolving requirements of progressive engineering teams, Amazon is constantly expanding its AWS DevOps portfolio, offering a wide range of tools to help teams increase their agility and speed. This post guides you through AWS's most popular security tools and best practices for AWS DevOps security.
DevOps is a set of practices that combines software development (Dev) and information-technology operations (Ops) to shorten the time it takes to deliver applications and services. It also aims to improve communication and collaboration between these two groups.
DevOps aims to help organizations deliver applications and services faster, all while maintaining quality and security. To do this, some of the methods DevOps teams employ include automation and monitoring to keep track of code changes and the environment in which they are deployed.
Before we get into AWS DevOps and AWS DevOps security specifically, it’s worth recapping how AWS works and the various services it offers. AWS, or Amazon Web Services, offers on-demand cloud computing services to individuals, companies, and governments on a pay-as-you-go basis.
Services include (but are not limited) to computation, storage, databases, analytics, networking, mobile, developer tools, management tools, IoT, security, and enterprise applications. AWS is a comprehensive, evolving cloud computing platform, growing rapidly, with new services and features constantly added.
AWS quickly saw the exponential growth of DevOps and incorporated DevOps practices into its tooling. AWS DevOps is a set of tools and services for automating software development and delivery on the Amazon Web Services (AWS) platform. AWS DevOps enables you to provision, manage, and deploy AWS resources safely and repeatedly. It also allows you to monitor and automate the process of software delivery.
AWS DevOps combines two main concepts:
AWS DevOps is a robust set of tools and services that can help you automate your software development process. However, it is essential to note that AWS DevOps is not a one-size-fits-all solution. It would be best if you tailored your AWS DevOps implementation to your specific needs.
AWS security is far from simple: it is a multi-layered approach to security that includes tools and technologies for each stage of the software development lifecycle (SDLC).
Security policies and postures are the guidelines and rules that organizations must adhere to protect their data and systems. AWS services can be utilized as tools to put security measures in place, such as OWASP ZAP and Gitleaks.
For example, in the early phases of SDLC, AWS Identity and Access Management (IAM) can control access to AWS resources. IAM can also create and manage user accounts and permissions and generate and rotate access keys. You can use AWS Config to audit and monitor resource configurations for compliance.
AWS Security is a constantly evolving service that is always adding new features and tools. For instance, a recently launched AWS Security Hub provides a centralized view of security alerts and findings from multiple AWS services.
Here is an example of the Kubernetes DeveSecOps pipeline using AWS CodePipeline that includes industry-grade security tools integration. Git secrets scanning presents itself as the first test for the security pipeline, followed by SAST, DAST, and RASP tools. Each component is vital in keeping your applications secure by scanning and flagging any vulnerabilities before they hit production.
AWS CodePipeline is a continuous delivery service that helps you automate your software release process. Third-party security integrations within the code pipeline allow teams to offload the task of secret scanning and automate continuous security protocols. Security-first platforms like JIT can help integrate DAST tools like OWASP ZAP and secret scanning like Gitleaks.
CodePipeline is a valuable tool that orchestrates and increases security by automating security scanning and vulnerability detection for code changes. Additionally, you can use it to automate the deployment process, which can help ensure that your security policies are always followed.
When it comes to DevSecOps and security, there are a few layers and categories that you need to focus on to ensure your application is secured end to end. This is also the approach that Jit takes as a DevSecOps platform, providing security on all layers - code, infrastructure, CI/CD, and integrations.
Identity and Access Management: This category of tools helps you manage users and their permissions to access AWS resources. Examples of tools in this category include IAM, Cognito, and STS.
Detection: This service helps you detect potential security threats and breaches. Examples of tools in this category include Inspector, GuardDuty, and Macie, all well-regarded solutions that can help detect potential security threats and breaches. Each service can be utilized as a part of your security toolkit and has unique strengths and weaknesses. Inspector helps identify security risks, Guard Duty provides real-time monitoring and threat detection, and Macie uses machine learning to detect and protect sensitive data.
Prevention: These tools help you prevent unauthorized access to your AWS resources. Examples of tools in this category include WAF, Shield, and VPC.
Auditing and Monitoring: These tools help you keep track of activity in your AWS environment and detect any suspicious activity. Examples of tools in this category include CloudTrail, CloudWatch, and Config.
Continuous monitoring, logging, and auditing are crucial to maintaining the safety of applications. By keeping track of activity and knowing what has happened in the past, it is possible to identify and fix problems that may arise more easily.
Below, we will provide a roundup of the AWS-specific DevOps and security-enabling tools that you should consider integrating into your cloud operations if you have not yet done so. There are non-AWS tools and platforms that you can consider in each category, as well. However, this post will focus on AWS services.
CloudWatch is a monitoring service for AWS cloud resources and the applications you run on AWS. You can use CloudWatch to collect and track metrics, collect and monitor log files, set alarms, and automatically react to changes in your AWS resources. CloudWatch can monitor AWS resources such as Amazon EC2 instances, Amazon DynamoDB tables, and Amazon RDS DB instances, as well as custom metrics generated by your applications and services.
CloudWatch logs can monitor your log files, such as application logs, access logs, and system logs. You can use CloudWatch to gain system-wide visibility into resource utilization, application performance, and operational health.
AWS CloudWatch can monitor the performance of an Amazon Elastic Compute Cloud (EC2) instance. CloudWatch would provide data on CPU utilization, network traffic, and disk activity.
AWS CloudTrail is a service that enables governance, compliance, operational auditing, and risk auditing of your AWS account. With CloudTrail, you can log, continuously monitor, and retain events related to API calls across your AWS infrastructure. These events include actions taken through the AWS Management Console, AWS SDKs, command line tools, and other AWS services.
CloudTrail provides the event history of your AWS account activity, including actions taken through the AWS Management Console, AWS SDKs, command line tools, and other AWS services. This event history simplifies security analysis, resource change tracking, and troubleshooting.
AWS CloudTrail can track changes to AWS resources, such as when an Amazon S3 bucket is created or an Amazon EC2 instance is launched. CloudTrail can also monitor and respond to changes in AWS resources in real-time.
AWS Identity and Access Management (IAM) is a service that helps you securely control access to your AWS resources. IAM lets you centrally manage users, security credentials such as passwords, keys, and access policies that control which users and resources can access your AWS account.
IAM can be used to control access to AWS resources such as S3 buckets and EC2 instances. For example, you can use IAM to create users and groups with specific permissions to access particular resources.
AWS Config is a service that enables you to assess, audit, and evaluate the configurations of your AWS resources. With AWS Config, you can review changes to your resources and maintain an inventory of your AWS resources.
You can use AWS Config to monitor changes to AWS resources in your account and compare them against a set of desired configurations. This can help you see if unauthorized modifications are made or configurations drift from your desired state.
One of the most important aspects of DevOps is security. When it comes to AWS, there are several common best practices that dev teams should follow to keep your data and applications safe without compromising on speed.
Continuous integration (CI) is a software development practice in which developers regularly merge their code changes into a shared code repository. Continuous delivery (CD) is a software development practice in which code changes are automatically built, tested, and deployed to production.
CI/CD helps developers to avoid merge conflicts, ensures that the codebase is always in a deployable state, and makes it easier to roll back changes if necessary. It also enables development teams to release new features and fixes more quickly and efficiently.
Automating infrastructure can improve code quality by reducing the need for manual input and increasing the accuracy of deployments. By automating infrastructure, you can free up time for developers to focus on other tasks and help avoid errors that can occur when manually configuring infrastructure.
Continuously monitoring and logging your software is essential because it allows you to identify issues and errors in your software in real-time. This way, you can fix these issues before they cause significant problems. Additionally, logging provides a record of what your software was doing at any given time, which can be helpful for debugging purposes.
Other best practices include:
Following these will help to ensure that your AWS environment is secure and compliant.
Many tools are available to help you harden your security posture. However, tools by themselves don't do much unless they are implemented. Jit sits within an AWS environment and works as an orchestration layer that enables developers to easily integrate security tools such as AWS 2FA, AWS runtime misconfig, AWS Least Privilege IAM, and many others.