보안 그룹은 AWS에서 사용자가 정의한 가상 방화벽으로, EC2 인스턴스에 대한 네트워크 트래픽을 제어하는 역할을 한다. 보안 그룹은 인스턴스 수준에서 트래픽을 허용하거나 차단할 수 있는 규칙을 정의하여, 인스턴스에 대한 접근을 세밀하게 제어할 수 있다.
보안 그룹은 상태 저장형(Stateful)이다. 즉, 들어오는 트래픽에 대한 규칙이 있으면, 나가는 트래픽은 자동으로 허용되며, 반대로 나가는 트래픽에 대한 규칙이 있으면, 들어오는 트래픽도 자동으로 허용된다.
보안 그룹을 생성할 때, 사용자는 허용할 인바운드(들어오는) 및 아웃바운드(나가는) 트래픽 규칙을 설정해야 한다. 각 규칙은 프로토콜, 포트 범위, 소스 또는 대상 IP 주소를 지정할 수 있다. 예를 들어, HTTP 트래픽을 허용하려면 TCP 프로토콜의 80번 포트를 지정하고, SSH 트래픽을 허용하려면 TCP 프로토콜의 22번 포트를 지정할 수 있다. 이러한 규칙을 통해 특정 IP 주소 또는 IP 범위에서만 인스턴스로의 접근을 허용하거나 차단할 수 있다.
보안 그룹은 여러 인스턴스에 동시에 적용될 수 있으며, 각 인스턴스는 여러 보안 그룹에 속할 수 있다. 이는 관리의 편의성을 높이고, 다양한 보안 요구 사항에 유연하게 대응할 수 있도록 한다. 예를 들어, 웹 서버 인스턴스에는 HTTP 및 HTTPS 트래픽을 허용하는 보안 그룹과 SSH 트래픽을 허용하는 보안 그룹을 동시에 적용할 수 있다. 이렇게 함으로써 보안 그룹 규칙을 중앙에서 관리하고, 변경 사항을 여러 인스턴스에 일괄 적용할 수 있다.
보안 그룹의 규칙을 설정할 때는 최소 권한 원칙(Principle of Least Privilege)을 따르는 것이 중요하다. 이는 인스턴스가 필요한 최소한의 트래픽만 허용하도록 규칙을 설정하는 것을 의미한다. 예를 들어, 웹 서버가 HTTP 및 HTTPS 트래픽만 필요로 한다면, 이러한 트래픽만 허용하고, 다른 모든 트래픽은 차단해야 한다. 이를 통해 보안 위협을 최소화할 수 있다.
또한, 보안 그룹은 VPC(Virtual Private Cloud) 단위로 작동한다. 이는 동일한 VPC 내의 인스턴스에만 보안 그룹을 적용할 수 있다는 것을 의미한다. 다른 VPC에 있는 인스턴스에는 동일한 보안 그룹을 적용할 수 없지만, VPC 피어링을 통해 서로 다른 VPC 간에 트래픽을 허용할 수 있다. 이러한 경우에도 각 VPC의 보안 그룹 규칙을 적절히 설정하여 트래픽을 제어해야 한다.
보안 그룹은 자동으로 동적 변경이 가능하다. 사용자가 보안 그룹의 규칙을 변경하면, 즉시 적용되며, 인스턴스를 재시작할 필요가 없다. 이는 보안 정책의 유연성을 높이고, 빠르게 보안 요구 사항에 대응할 수 있게 한다. 예를 들어, 특정 포트에 대한 트래픽을 차단하거나 허용하는 규칙을 추가하거나 제거할 때, 이러한 변경 사항이 즉시 반영된다.
보안 그룹은 로그 및 모니터링 기능을 통해 트래픽 활동을 추적할 수 있다. AWS CloudTrail을 사용하여 보안 그룹 규칙 변경 사항을 기록하고, 이를 통해 누가 언제 어떤 규칙을 변경했는지 추적할 수 있다. 또한, VPC Flow Logs를 통해 인스턴스로 들어오고 나가는 트래픽을 모니터링하고, 비정상적인 활동을 감지할 수 있다.