Netlify Güvenlik Rehberi: Kurumsal Web Uygulaması Koruması
Yazar: Burak Balkı | Kategori: Security | Okuma Süresi: 9 dk
Netlify platformunda kurumsal düzeyde güvenlik yapılandırmalarını içeren kapsamlı rehber. SSL, CSP, Identity, Edge Functions ve RBAC konularını teknik örnekl...
## Netlify ile Modern Web Güvenliği: Jamstack Mimarisinde Tam Koruma
**Netlify**, modern web uygulamalarını dağıtmak ve yönetmek için kullanılan en gelişmiş platformlardan biridir. Geleneksel sunucu tabanlı mimarilerin aksine, Netlify'ın sunduğu **Jamstack** (JavaScript, API, Markup) yaklaşımı, saldırı yüzeyini minimize ederek doğal bir güvenlik katmanı sağlar. Bu rehberde, Netlify ekosisteminde uçtan uca güvenliğin nasıl yapılandırılacağını teknik derinlikle inceleyeceğiz.
### Netlify Güvenlik Mimarisi ve Temel Kavramlar
Netlify'ın güvenlik felsefesi, 'güvenli-varsayılan' (secure-by-default) prensibine dayanır. Platform, statik dosyaları global bir **CDN (Content Delivery Network)** üzerinden sunarak sunucu taraflı açıkları (SQL Injection, Remote Code Execution vb.) ortadan kaldırır.
- **Atomic Deploys:** Her dağıtımın değişmez (immutable) bir kopyası oluşturulur. Bu, bir siber saldırı durumunda hızlıca güvenli bir sürüme geri dönmeyi sağlar.
- **Edge Network:** Trafik, Netlify'ın global ağında filtrelenerek DDoS saldırılarına karşı ilk savunma hattını oluşturur.
- **Environment Variables:** Hassas veriler kod tabanından ayrıştırılarak güvenli bir şekilde saklanır.
## Netlify Kurulumu ve Güvenli Başlangıç
Bir projeyi Netlify'a bağlarken güvenli bir temel oluşturmak kritik öneme sahiptir. İlk adım, `netlify.toml` dosyasının doğru yapılandırılmasıdır.
```toml
# netlify.toml - Güvenli Yapılandırma Örneği
[build]
publish = "dist"
command = "npm run build"
[build.environment]
NODE_VERSION = "18"
[[headers]]
for = "/*"
[headers.values]
X-Frame-Options = "DENY"
X-XSS-Protection = "1; mode=block"
X-Content-Type-Options = "nosniff"
Referrer-Policy = "strict-origin-when-cross-origin"
```
### SSL/TLS Sertifika Yönetimi
Netlify, tüm siteler için otomatik olarak **Let's Encrypt** tabanlı SSL sertifikaları sağlar. Ancak kurumsal seviyede, özel sertifikaların (Custom SSL) yönetimi ve HSTS (HTTP Strict Transport Security) yapılandırması gereklidir.
```toml
[[headers]]
for = "/*"
[headers.values]
Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload"
```
## Hassas Veri Yönetimi: Environment Variables
API anahtarları, veritabanı bağlantı dizeleri ve gizli anahtarlar asla kaynak kodda (Git) tutulmamalıdır. Netlify, bu verileri şifrelenmiş bir şekilde saklar.
### Ortam Değişkenlerinin Kod İçinde Kullanımı
JavaScript tarafında bu değişkenlere erişirken, sadece `VITE_` veya `GATSBY_` gibi ön eklerle işaretlenmiş olanların istemci tarafına sızmasına izin verilmelidir. Diğerleri sadece build aşamasında veya **Netlify Functions** içinde erişilebilir kalmalıdır.
```javascript
// Sadece sunucu tarafında (Netlify Functions) çalışması gereken güvenli erişim
const stripeSecretKey = process.env.STRIPE_SECRET_KEY;
if (!stripeSecretKey) {
throw new Error("Kritik API anahtarı eksik!");
}
```
## Content Security Policy (CSP) Yapılandırması
**CSP**, Cross-Site Scripting (XSS) ve veri enjeksiyon saldırılarını önlemek için en güçlü araçtır. Netlify üzerinde CSP başlıklarını tanımlarken seçici davranılmalıdır.
```toml
[[headers]]
for = "/*"
[headers.values]
Content-Security-Policy = "default-src 'self'; script-src 'self' https://trustedscripts.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self' https://api.netlify.com;"
```
## Netlify Identity ile Kimlik Doğrulama ve Yetkilendirme
Netlify Identity, uygulamanıza JWT (JSON Web Token) tabanlı bir kimlik doğrulama katmanı ekler. Bu, kullanıcı yönetimi için güvenli bir mikro servis sağlar.
### Identity Widget Entegrasyonu
```html
```
## Netlify Functions Güvenliği
Serverless fonksiyonlar, backend mantığını barındırdığı için en çok hedef alınan noktalardır. Bu fonksiyonların güvenliğini sağlamak için yetkilendirme kontrolleri zorunludur.
### Fonksiyon İçinde JWT Doğrulaması
```javascript
// netlify/functions/secure-data.js
exports.handler = async (event, context) => {
const { user } = context.clientContext;
if (!user) {
return {
statusCode: 401,
body: JSON.stringify({ message: "Yetkisiz erişim: Lütfen giriş yapın." }),
};
}
return {
statusCode: 200,
body: JSON.stringify({ data: "Gizli kurumsal veriler" }),
};
};
```
## Rol Tabanlı Erişim Kontrolü (RBAC)
Netlify, yönlendirme kuralları (Redirects) üzerinden belirli sayfaları sadece belirli rollere sahip kullanıcılara açmanıza olanak tanır.
```text
# _redirects dosyası
/admin/* 200! Role=admin
/member/* 200! Role=member,admin
/login 200
```
## Edge Functions ve Güvenlik Filtreleri
**Netlify Edge Functions**, trafiği kullanıcıya en yakın noktada (Edge) işleyerek güvenlik kontrolleri yapmanızı sağlar. Örneğin, belirli IP adreslerini veya ülkeleri engellemek için kullanılabilir.
```javascript
// netlify/edge-functions/block-ip.js
export default async (request, context) => {
const blockedIPs = ["1.2.3.4"];
const clientIP = context.ip;
if (blockedIPs.includes(clientIP)) {
return new Response("Erişim Reddedildi", { status: 403 });
}
return context.next();
};
```
## Veri Bütünlüğü: Subresource Integrity (SRI)
Harici CDN'lerden yüklenen kütüphanelerin manipüle edilmediğinden emin olmak için SRI kullanılmalıdır.
```html
```
## Kurumsal Güvenlik İçin Best Practices
Netlify projelerinizde en yüksek güvenlik seviyesine ulaşmak için aşağıdaki tabloyu rehber edinebilirsiniz:
| Güvenlik Katmanı | Uygulanacak Yöntem | Önem Derecesi |
| :--- | :--- | :--- |
| **Altyapı** | 2FA (İki Faktörlü Doğrulama) Aktifleştirme | Kritik |
| **Kod** | Bağımlılık Taraması (Snyk, Dependabot) | Yüksek |
| **Ağ** | DNSSEC Yapılandırması | Orta |
| **Veri** | Environment Variable Şifreleme | Kritik |
| **Erişim** | RBAC ve JWT Kullanımı | Yüksek |
## Sık Yapılan Güvenlik Hataları
1. **Hassas Verilerin Git'e Push Edilmesi:** `.env` dosyalarının yanlışlıkla repoya gönderilmesi.
2. **Aşırı İzinli CSP Başlıkları:** `'unsafe-inline'` kullanımının suistimal edilmesi.
3. **Fonksiyonlarda Girdi Doğrulaması Eksikliği:** Serverless fonksiyonlara gelen verilerin sanitize edilmemesi.
4. **Eski Bağımlılıklar:** Güncellenmeyen npm paketlerinin barındırdığı güvenlik açıkları.
5. **Build Loglarında Secret İfşası:** Build sırasında konsola yazdırılan API anahtarları.
## Performans ve Güvenlik Dengesi
Güvenlik önlemleri bazen performansı etkileyebilir. Ancak Netlify'ın **Edge Network** yapısı, bu iki unsuru optimize eder. Örneğin, CSP başlıklarının Edge üzerinden sunulması, tarayıcı tarafında gecikme yaratmadan güvenlik sağlar.
> **Not:** Güvenlik bir varış noktası değil, sürekli bir süreçtir. Netlify Audit loglarını düzenli olarak incelemek, şüpheli aktiviteleri tespit etmenize yardımcı olur.
## Sık Sorulan Sorular (SSS)
**1. Netlify'da DDoS koruması varsayılan olarak açık mı?**
Evet, Netlify tüm siteler için çok katmanlı DDoS koruması sağlar. Trafik anomalileri otomatik olarak algılanır ve filtrelenir.
**2. Netlify Functions güvenli mi? Fonksiyon kodlarım çalınabilir mi?**
Fonksiyon kodları sunucu tarafında çalışır ve asla istemciye (browser) gönderilmez. Sadece API üzerinden dönen sonuçlar görünür.
**3. Ücretsiz planda SSL sertifikası alabilir miyim?**
Evet, Netlify tüm planlarda (Ücretsiz dahil) otomatik SSL sertifikası sağlar.
**4. Netlify sitelerimi belirli bir ülke trafiğine kapatabilir miyim?**
Evet, Edge Functions kullanarak coğrafi konum tabanlı (Geo-blocking) engelleme yapabilirsiniz.
**5. Build aşamasında güvenlik taraması yapabilir miyim?**
Evet, Netlify build komutlarınıza `npm audit` veya `snyk test` gibi komutlar ekleyerek güvenlik açığı olan projelerin dağıtılmasını engelleyebilirsiniz.
## Özet ve Sonuç
Netlify, modern web geliştirme dünyasında güvenliği en üst düzeye çıkaran araçlar sunar. Statik site üretimi ile sunucu risklerini azaltırken, **Edge Functions**, **Identity** ve **Advanced Headers** gibi özelliklerle dinamik güvenlik katmanları ekler. Bu rehberde uyguladığımız stratejiler, uygulamanızı sadece siber saldırılardan korumakla kalmaz, aynı zamanda kurumsal standartlara uygun, güvenilir bir yapıya kavuşturur.