VPC Ağ Segmentasyonu ve Güvenliği: Alt Ağlar ve Güvenlik Grupları
Bulut altyapılarında ağ izolasyonu ve erişim kontrolü, sistemlerin güvenliği ve performansı için kritik öneme sahiptir. AWS Virtual Private Cloud (VPC), bu temel gereksinimleri karşılamak üzere tasarlanmıştır. VPC içinde kaynakların mantıksal olarak ayrılması ve trafik akışının granüler düzeyde yönetilmesi, alt ağlar (subnets) ve güvenlik grupları (security groups) aracılığıyla sağlanır.
VPC Alt Ağları: Mantıksal Ayırma ve Yüksek Erişilebilirlik
Bir VPC, tanımladığınız bir IP adres aralığıdır (CIDR bloğu). Bu aralık, daha küçük parçalara, yani alt ağlara bölünür. Her alt ağ, tek bir Availability Zone (Erişilebilirlik Bölgesi) ile ilişkilendirilir. Bu mimari, uygulamalarınız için hata toleranslı ve yüksek erişilebilir bir yapı kurmanızı sağlar. Örneğin, bir uygulamayı birden fazla alt ağa yayılarak farklı Availability Zone'larda çalıştırmak, tek bir AZ arızasında dahi uygulamanın çalışmaya devam etmesini sağlar.
Alt ağlar temel olarak iki tiptir: Public Alt Ağlar ve Private Alt Ağlar. Public alt ağlar, bir Internet Gateway (IGW) üzerinden doğrudan internete erişebilir. Genellikle web sunucuları, yük dengeleyiciler (Load Balancers) gibi internete açık servisler bu alt ağlarda konumlandırılır. Private alt ağlar ise doğrudan internete erişime sahip değildir. Veritabanları, uygulama sunucuları ve diğer hassas kaynaklar private alt ağlarda barındırılır. Bu alt ağlardaki kaynakların internete çıkış ihtiyacı olduğunda (örneğin güncellemeler için), bir NAT Gateway veya NAT Instance kullanılır.
Üretim Senaryosu: Alt Ağ Tasarımı
Tipik bir üç katmanlı uygulama mimarisinde, her Availability Zone içinde en az bir public ve bir private alt ağ tanımlanır. Örneğin, 10.0.0.0/16 CIDR bloğuna sahip bir VPC'de, aşağıdaki gibi bir alt ağ yapısı kurulabilir:
- AZ1 Public:
10.0.0.0/24(Web sunucuları, ALB) - AZ1 Private:
10.0.1.0/24(Uygulama sunucuları) - AZ1 Private-DB:
10.0.2.0/24(Veritabanı sunucuları) - AZ2 Public:
10.0.3.0/24(Web sunucuları, ALB) - AZ2 Private:
10.0.4.0/24(Uygulama sunucuları) - AZ2 Private-DB:
10.0.5.0/24(Veritabanı sunucuları)
Bu yapı, hem yüksek erişilebilirlik sağlar hem de her katmanın ağ düzeyinde izolasyonuna olanak tanır.
aws ec2 create-subnet --vpc-id vpc-0abcdef1234567890 --cidr-block 10.0.0.0/24 --availability-zone us-east-1a --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=PublicSubnet-AZ1}]'Yukarıdaki AWS CLI komutu, belirli bir VPC içinde, us-east-1a Availability Zone'unda 10.0.0.0/24 CIDR bloğuna sahip bir public alt ağ oluşturur ve onu PublicSubnet-AZ1 olarak etiketler. Bu alt ağın public olması için ayrıca bir route table oluşturulup Internet Gateway'e yönlendirilmesi gerekmektedir.
Güvenlik Grupları: Durum Bilgili Paket Filtreleme
Güvenlik grupları (Security Groups - SG), AWS'teki sanal güvenlik duvarlarıdır. EC2 instance'ları, RDS veritabanları, Load Balancer'lar ve diğer kaynaklar için trafik akışını kontrol ederler. Güvenlik grupları, ağ arayüzü düzeyinde çalışır ve durum bilgili (stateful) yapıya sahiptir. Bu, bir giden trafiğe izin verildiğinde, dönen trafiğin otomatik olarak izinli sayıldığı anlamına gelir; gelen trafik için de benzer bir prensip geçerlidir.
Her güvenlik grubu, gelen (inbound) ve giden (outbound) trafik için kurallar tanımlar. Bu kurallar şunları içerebilir:
- Protokol: TCP, UDP, ICMP, All
- Port Aralığı: 22, 80, 443, 8080, vb.
- Kaynak/Hedef: Bir IP adresi/CIDR bloğu veya başka bir güvenlik grubu
Varsayılan olarak, tüm gelen trafik reddedilir ve tüm giden trafiğe izin verilir. Bu nedenle, yalnızca ihtiyaç duyulan port ve protokoller için gelen kurallar eklenmelidir (least privilege prensibi). Güvenlik grupları, kaynak bazlı filtreleme sağladığı için Ağ ACL'lerinden (Network Access Control Lists) daha esnek ve kullanımı kolaydır.
Üretim Senaryosu: Katmanlar Arası İletişim Güvenliği
Üç katmanlı bir uygulamada, güvenlik grupları katmanlar arası iletişimi sıkı bir şekilde kontrol eder:
- Web Sunucusu Güvenlik Grubu (Web-SG):
- Gelen (Inbound):
- TCP 80 (HTTP) ve TCP 443 (HTTPS) portlarına tüm IP adreslerinden (
0.0.0.0/0) erişime izin verilir. - TCP 22 (SSH) portuna yalnızca belirli yönetim IP adreslerinden erişime izin verilir.
- Giden (Outbound):
- Uygulama Sunucusu Güvenlik Grubundan (App-SG) belirli bir porta (örneğin 8080) erişime izin verilir.
- Giden tüm trafiğe izin verilebilir (varsayılan).
- Uygulama Sunucusu Güvenlik Grubu (App-SG):
- Gelen (Inbound):
- Web-SG'den TCP 8080 portuna erişime izin verilir.
- TCP 22 (SSH) portuna yalnızca belirli yönetim IP adreslerinden erişime izin verilir.
- Giden (Outbound):
- Veritabanı Sunucusu Güvenlik Grubundan (DB-SG) belirli bir porta (örneğin 3306) erişime izin verilir.
- Giden tüm trafiğe izin verilebilir (varsayılan).
- Veritabanı Sunucusu Güvenlik Grubu (DB-SG):
- Gelen (Inbound):
- App-SG'den TCP 3306 (MySQL) veya ilgili veritabanı portuna erişime izin verilir.
- TCP 22 (SSH) portuna yalnızca belirli yönetim IP adreslerinden erişime izin verilir (opsiyonel).
- Giden (Outbound):
- Giden tüm trafiğe izin verilebilir (varsayılan), ancak güvenlik amacıyla kısıtlanabilir.
aws ec2 authorize-security-group-ingress --group-id sg-0abcdef1234567890 --protocol tcp --port 80 --cidr 0.0.0.0/0 --description "Allow HTTP from anywhere"aws ec2 authorize-security-group-ingress --group-id sg-0abcdef1234567890 --protocol tcp --port 443 --cidr 0.0.0.0/0 --description "Allow HTTPS from anywhere"aws ec2 authorize-security-group-ingress --group-id sg-0abcdef1234567891 --protocol tcp --port 8080 --source-group sg-0abcdef1234567890 --description "Allow App traffic from Web-SG"Yukarıdaki AWS CLI komutları sırasıyla, bir güvenlik grubuna (Web-SG) HTTP ve HTTPS trafiğine genel erişim izni verir. Ardından, başka bir güvenlik grubuna (App-SG) sadece Web-SG'den gelen 8080 port trafiğine izin veren bir kural ekler. Bu, katmanlar arası güvenli iletişimi IP adresleri yerine güvenlik grubu referansları kullanarak kolayca yönetmenizi sağlar.
Sonuç
AWS VPC içindeki alt ağlar ve güvenlik grupları, bulut altyapınızın temel güvenlik ve ağ mimarisi bileşenleridir. Alt ağlar, kaynaklarınızı Availability Zone'lar arasında mantıksal olarak ayırarak yüksek erişilebilirlik ve izolasyon sağlar. Güvenlik grupları ise, bu kaynaklar üzerindeki trafik akışını durum bilgili, esnek ve granüler bir şekilde kontrol ederek yalnızca gerekli iletişime izin verir. Bu iki mekanizmayı doğru bir şekilde yapılandırmak, hem uygulamanızın dayanıklılığını artırır hem de potansiyel güvenlik açıklarını minimize eder.