Giriş
EC2 instance'larına AWS API erişimi için IAM Role atanır; access key dosyada saklanmaz. Instance Profile role'ün EC2'ye bağlantısıdır.
Instance Metadata Service (IMDS) 169.254.169.254 üzerinden instance bilgisi ve geçici credential sağlar.
IMDSv2 session-oriented ve SSRF saldırılarına karşı daha güvenlidir.
IAM Role ve Instance Profile
Role oluşturun, gerekli policy ekleyin (ör. S3 read), instance profile oluşturup role bağlayın, launch'ta profile seçin.
Principle of least privilege: yalnızca gerekli action ve resource.
aws iam create-role --role-name ec2-s3-read \
--assume-role-policy-document file://trust-ec2.json
aws iam attach-role-policy --role-name ec2-s3-read \
--policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccessIMDSv2 Yapılandırması
Launch template'de MetadataOptions: HttpTokens=required IMDSv2 zorunlu kılar. HttpPutResponseHopLimit=1 container dışına metadata sızıntısını önler.
IMDSv1 devre dışı bırakılmalıdır; güvenlik best practice.
aws ec2 modify-instance-metadata-options \
--instance-id i-xxx \
--http-tokens required \
--http-put-response-hop-limit 1Metadata Kullanımı
curl ile token alın, sonra metadata endpoint'ine istek yapın. Instance ID, AZ, role credential okunabilir.
SDK (boto3) otomatik credential chain kullanır; role varsa metadata'dan alır.
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" \
-H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
http://169.254.169.254/latest/meta-data/iam/security-credentials/Güvenlik Riskleri
SSRF açığı IMDS credential sızıntısına yol açabilir. IMDSv2 token gerektirir. Hop limit container ortamında kritiktir.
Role policy'de s3:* gibi geniş izinlerden kaçının.
Tüm yeni instance'larda HttpTokens=required varsayılan yapın.
Audit ve Compliance
IAM Access Analyzer kullanılmayan role tespit eder. CloudTrail API çağrılarını loglar.
Per-instance role yerine işlev bazlı role (app role, backup role) tercih edin.
- IMDSv2 zorunlu
- Least privilege policy
- Instance profile kullanın
- Access key EC2'de saklamayın
- CloudTrail izleme
Sonuç
IAM Role + Instance Profile EC2 güvenliğinin temelidir. IMDSv2 etkinleştirin, least privilege uygulayın, access key kullanmayın.
Metadata erişimini container hop limit ile sınırlayın.