Skip to main content

Command Palette

Search for a command to run...

Guide to Building Security Groups in Terraform

Published
•3 min read•View as Markdown
Guide to Building Security Groups in Terraform
A

Aspiring DevOps Engineer • Sharing my knowledge via blogs

Hey there, cloud security enthusiasts! 🔒 Are you ready to take control of your AWS security configurations? In this guide, we’ll walk through the steps to create a security group using Terraform. Security groups act as virtual firewalls that control inbound and outbound traffic to your EC2 instances, and managing them with Terraform allows you to define and maintain your network configurations as code.

Prerequisites

Before we get started, make sure you have the following:

  • Terraform: Installed on your local machine. You can download it from Terraform’s official website.

  • AWS Account: An active AWS account with permissions to create security groups.

  • AWS CLI: Optionally, install the AWS CLI and configure it with your credentials by running aws configure.

Step 1: Set Up Your Terraform Configuration

First, create a new directory for your Terraform project:

mkdir terraform-security-group
cd terraform-security-group

Step 2: Create a Terraform Configuration File

Next, create a file named main.tf in your project directory. This file will contain the configuration for your security group.

provider "aws" {
  region = "us-east-1"  
}

resource "aws_security_group" "my_security_group" {
  name        = "my-security-group"  
  description = "Allow HTTP and SSH access"  

  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  ingress {
    from_port   = 80     
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"] 
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"  
    cidr_blocks = ["0.0.0.0/0"]
  }

  tags = {
    Name = "MySecurityGroup"
  }
}

Explanation

  • provider "aws": Defines the AWS provider and sets the region where resources will be created.

  • resource "aws_security_group": Defines a security group resource with specified ingress (incoming) and egress (outgoing) rules.

  • ingress: Specifies rules for incoming traffic; in this case, allowing SSH (port 22) and HTTP (port 80) traffic from any IP address (0.0.0.0/0).

  • egress: Allows all outbound traffic (protocol = "-1" means all protocols).

Step 3: Initialize Terraform

In your terminal, run the following command to initialize your Terraform project:

terraform init

Step 4: Create an Execution Plan

Before applying the configuration, preview the changes that Terraform will make to your infrastructure:

terraform plan

This command will show you the resources that will be created.

Step 5: Apply the Configuration

To create the security group, run:

terraform apply

Terraform will prompt you for confirmation. Type yes to proceed. Terraform will then create the security group in your AWS account.

Step 6: Verify the Security Group

After the apply process completes, verify that your security group has been created by logging into the AWS Management Console:

  1. Navigate to the EC2 Dashboard.

  2. Click on Security Groups under Network & Security in the left sidebar.

  3. You should see your newly created security group listed with the specified rules.

Step 7: Clean Up Resources

To avoid incurring charges or cluttering your account, you can delete the security group created by Terraform when you’re done testing:

terraform destroy

Terraform will prompt you for confirmation again. Type yes to proceed with the destruction of the security group.

Conclusion

In this guide, you learned how to create a security group in AWS using Terraform. By managing security groups through Terraform, you can maintain your network configurations as code, allowing for version control and easier replication of environments.

Automating security group management enhances your overall infrastructure efficiency and security, making it easier to manage access controls across your cloud resources. So go ahead and start automating your AWS security configurations today! Happy automating! 🚀

More from this blog

Blissman's thoughts

104 posts