API Key Nedir ve Nasıl Güvenli Kullanılır?
API Key (API Anahtarı), bir uygulamanın veya istemcinin API hizmetine erişirken kendisini tanıtmak için kullandığı özel bir anahtar değeridir.
API anahtarları, özellikle web uygulamaları, mobil uygulamalar, bulut servisleri ve üçüncü taraf yazılım entegrasyonlarında kullanılır. API sağlayıcıları bu anahtarlar aracılığıyla istekleri belirli uygulamalarla veya hesaplarla ilişkilendirebilir, kullanım miktarını takip edebilir ve erişim kısıtlamaları uygulayabilir.
API Key, çoğunlukla harflerden, rakamlardan veya farklı karakterlerden oluşan bir değerdir. Anahtarın biçimi ve uzunluğu hizmet sağlayıcısına göre değişebilir.
API Key kullanılması tek başına bir API'nin tamamen güvenli olduğu anlamına gelmez. Anahtarın nasıl oluşturulduğu, saklandığı, aktarıldığı ve hangi yetkilere sahip olduğu da güvenlik açısından önemlidir.
API Key Ne İşe Yarar?
API anahtarları, bir API hizmetine gönderilen isteklerin hangi uygulama veya proje tarafından gerçekleştirildiğini belirlemek amacıyla kullanılabilir.
Başlıca kullanım alanları şunlardır:
-
API hizmetlerine erişimi kontrol etmek.
-
Uygulamaları ve projeleri tanımlamak.
-
API kullanım miktarını takip etmek.
-
Belirli istemcilere erişim izni vermek.
-
İstek sınırlandırması uygulamak.
-
Ücretli API hizmetlerinde kullanım hesaplaması yapmak.
-
Üçüncü taraf yazılım entegrasyonlarını yönetmek.
-
Otomatik sunucu işlemlerinde API erişimi sağlamak.
API anahtarları genellikle uygulama veya proje kimliğini temsil eder. Tek başına son kullanıcının kimliğini güvenilir biçimde doğrulamak için yeterli değildir.
API Key Nasıl Çalışır?
API Key kullanılan sistemlerde istemci uygulama, kendisine verilen anahtarı HTTP isteğiyle birlikte API sunucusuna gönderir.
Temel çalışma süreci şu şekildedir:
-
API sağlayıcısı bir uygulama için API anahtarı oluşturur.
-
Anahtar, ilgili uygulamaya veya projeye atanır.
-
İstemci uygulama API isteği gönderirken anahtarı ekler.
-
Sunucu, gelen anahtarın geçerli olup olmadığını kontrol eder.
-
Anahtarın kullanım izinleri ve varsa kısıtlamaları değerlendirilir.
-
İstek uygun bulunursa API işlemi gerçekleştirilir.
-
Geçersiz veya yetkisiz istekler reddedilir.
API anahtarı doğrulaması, sunucunun uyguladığı güvenlik politikasının yalnızca bir bölümünü oluşturur.
API Key Nasıl Oluşturulur?
API anahtarları genellikle API hizmeti sağlayıcısının yönetim panelinden oluşturulur.
Anahtar oluşturma süreci hizmete göre değişebilse de genel olarak şu adımlardan oluşur:
-
API hizmetinde uygulama veya proje oluşturulur.
-
API erişimi etkinleştirilir.
-
Gerekli izinler belirlenir.
-
Yeni API anahtarı oluşturulur.
-
Anahtar güvenli bir ortamda saklanır.
-
Uygulama, API isteklerinde bu anahtarı kullanır.
Örnek bir API anahtarı:
api_8f4d2a91c7e6b3f05a12d9e84c6b7f30
Bu değer yalnızca örnektir ve gerçek bir hizmete erişim sağlamaz.
API Key HTTP İsteklerinde Nasıl Kullanılır?
API anahtarları farklı yöntemlerle HTTP isteklerine eklenebilir.
1. HTTP Header ile API Key Gönderme
Yaygın yöntemlerden biri API anahtarını HTTP başlığı içerisinde göndermektir.
Örnek:
GET /api/urunler HTTP/1.1
Host: api.example.com
X-API-Key: ORNEK_API_ANAHTARI
Bu örnekte X-API-Key başlığı kullanılmıştır.
Başlığın adı API sağlayıcısına göre değişebilir.
2. Authorization Header Kullanımı
Bazı API sistemleri anahtarı Authorization başlığı üzerinden kabul eder.
GET /api/urunler HTTP/1.1
Host: api.example.com
Authorization: Bearer ORNEK_API_ANAHTARI
Bearer biçiminin kullanılması API'nin tasarımına bağlıdır. Her API anahtarı Bearer biçiminde gönderilmez.
3. URL Parametresi ile API Key Gönderme
Bazı API hizmetleri anahtarın URL parametresiyle gönderilmesini destekler.
/api/urunler?api_key=ORNEK_API_ANAHTARI
Ancak bu yöntem, gizli API anahtarları için tercih edilmemelidir.
URL adresleri tarayıcı geçmişine, sunucu günlüklerine ve farklı izleme sistemlerine kaydedilebilir. Bu durum anahtarın açığa çıkma riskini artırır.
API Key ile PHP Kullanımı
PHP uygulamalarında API anahtarlarıyla HTTP istekleri gerçekleştirilebilir.
Aşağıdaki örnekte cURL kullanılarak bir API servisine istek gönderilmektedir.
<?php
$apiKey = getenv('API_KEY');
if (!$apiKey) {
throw new RuntimeException(
'API anahtarı tanımlanmadı.'
);
}
$ch = curl_init(
'https://api.example.com/urunler'
);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: ' . $apiKey,
'Accept: application/json'
],
CURLOPT_TIMEOUT => 15
]);
$response = curl_exec($ch);
if ($response === false) {
throw new RuntimeException(
curl_error($ch)
);
}
$statusCode = curl_getinfo(
$ch,
CURLINFO_HTTP_CODE
);
curl_close($ch);
if ($statusCode !== 200) {
throw new RuntimeException(
'API isteği başarısız.'
);
}
$data = json_decode(
$response,
true,
512,
JSON_THROW_ON_ERROR
);
print_r($data);
Bu örnekte API anahtarı kaynak koduna doğrudan yazılmamıştır. Ortam değişkeninden alınmaktadır.
api.example.com örnek bir adrestir ve gerçek bir API hizmetini temsil etmez.
API Key ile Node.js Kullanımı
Node.js uygulamalarında API anahtarlarıyla istek göndermek için fetch() kullanılabilir.
Örnek:
const apiKey = process.env.API_KEY;
if (!apiKey) {
throw new Error("API anahtarı bulunamadı.");
}
async function urunleriGetir() {
const response = await fetch(
"https://api.example.com/urunler",
{
headers: {
"X-API-Key": apiKey,
"Accept": "application/json"
}
}
);
if (!response.ok) {
throw new Error(
`HTTP hatası: ${response.status}`
);
}
const data = await response.json();
console.log(data);
}
urunleriGetir().catch(console.error);
Bu örnek, modern Node.js sürümlerindeki yerleşik fetch() desteğini kullanır.
API anahtarı sunucu tarafındaki ortam değişkeninden alınır.
API Key ile Python Kullanımı
Python uygulamalarında API anahtarı kullanılarak HTTP istekleri gerçekleştirilebilir.
Örneğin requests kütüphanesi kullanılabilir.
Kurulum:
python -m pip install requests
Örnek Python kodu:
import osimport requestsapi_key = os.environ["API_KEY"]url = "https://api.example.com/urunler"headers = { "X-API-Key": api_key, "Accept": "application/json"}response = requests.get( url, headers=headers, timeout=15)response.raise_for_status()data = response.json()print(data)
Bu örnekte API anahtarı işletim sisteminin ortam değişkenlerinden okunur.
API Key Nasıl Güvenli Saklanır?
API anahtarlarının güvenli saklanması, API sistemlerinin korunmasında önemli bir gerekliliktir.
Gizli API anahtarları kaynak koduna doğrudan yazılmamalıdır.
Ortam Değişkenleri Kullanmak
API anahtarları, uygulamanın çalıştığı ortamda tanımlanan değişkenler üzerinden okunabilir.
Örneğin:
API_KEY=ORNEK_GIZLI_ANAHTAR
PHP içerisinde:
$apiKey = getenv('API_KEY');
Node.js içerisinde:
const apiKey = process.env.API_KEY;
Python içerisinde:
import osapi_key = os.environ["API_KEY"]
Ortam değişkenleri, anahtarın doğrudan kaynak koduna eklenmesini önlemeye yardımcı olur. Ancak ortam değişkenlerinin bulunduğu sunucunun ve yapılandırma dosyalarının da korunması gerekir.
Gizli Bilgi Yönetim Sistemleri
Daha kapsamlı uygulamalarda API anahtarları, özel gizli bilgi yönetim sistemlerinde saklanabilir.
Bu sistemler erişim kontrolü, kayıt tutma ve anahtar yaşam döngüsünün yönetilmesine yardımcı olabilir.
API Key Neden Kaynak Koduna Yazılmamalıdır?
API anahtarının kaynak kodunda bulunması, kodun paylaşılması veya yanlışlıkla yayınlanması durumunda güvenlik riski oluşturur.
Örneğin aşağıdaki kullanım uygun değildir:
const apiKey = "GERCEK_GIZLI_API_ANAHTARI";
Bu değer kaynak koduyla birlikte başkalarına ulaşabilir.
Özellikle herkese açık kod depolarına yüklenen gizli anahtarlar kötüye kullanılabilir.
Anahtarın bir kod deposuna yanlışlıkla eklenmesi durumunda yalnızca koddan silinmesi yeterli değildir. İlgili anahtar iptal edilmeli veya değiştirilmelidir.
Frontend Kodlarında API Key Kullanılır mı?
Gizli API anahtarlarının doğrudan tarayıcıda çalışan JavaScript kodlarına eklenmesi güvenli değildir.
Örneğin:
const apiKey = "GIZLI_API_ANAHTARI";
Bu kod tarayıcıya gönderildiğinde kullanıcı tarafından incelenebilir.
Gizli anahtar gerektiren API istekleri genellikle backend üzerinden gerçekleştirilmelidir.
Güvenli bir backend aracılığıyla iletişim şu şekilde gerçekleştirilebilir:
-
Tarayıcı, uygulamanın backend sunucusuna istek gönderir.
-
Backend, gerekli kullanıcı ve erişim kontrollerini gerçekleştirir.
-
Backend, güvenli şekilde saklanan API anahtarını kullanır.
-
Harici API hizmetine istek gönderilir.
-
Alınan yanıt gerekli kontrollerden sonra istemciye iletilir.
Bazı API sağlayıcıları, tarayıcı veya mobil uygulamalarda kullanılmak üzere kısıtlanabilir ve herkese açık anahtarlar sunabilir. Bu tür anahtarlar gizli sunucu anahtarlarıyla aynı şekilde değerlendirilmemelidir.
API Key Güvenliği İçin IP Kısıtlaması
Bazı API sağlayıcıları, anahtarların yalnızca belirli IP adreslerinden kullanılmasına izin verir.
Örneğin bir API anahtarı yalnızca belirli bir backend sunucusunun IP adresiyle sınırlandırılabilir.
Bu yöntem, anahtarın farklı ağlardan kullanılmasını kısıtlamaya yardımcı olur.
Ancak IP kısıtlaması tek başına yeterli bir güvenlik mekanizması değildir.
API Key Rate Limiting Nedir?
Rate Limiting, bir istemcinin belirli bir zaman aralığında yapabileceği API isteği sayısını sınırlandırma işlemidir.
Örneğin bir API hizmetinde aşağıdaki sınırlar uygulanabilir:
|
İstemci türü |
Örnek istek sınırı |
|---|---|
|
Ücretsiz hesap |
Dakikada 60 istek |
|
Standart hesap |
Dakikada 300 istek |
|
Kurumsal hesap |
Dakikada 1.000 istek |
Bu değerler yalnızca örnektir.
Rate Limiting sayesinde API kaynaklarının aşırı tüketilmesi sınırlandırılabilir.
Belirlenen istek sınırı aşıldığında sunucu 429 Too Many Requests durum kodunu döndürebilir.
API Key Rotation Nedir?
API Key Rotation, mevcut API anahtarının yeni bir anahtarla değiştirilmesi işlemidir.
Bu işlem güvenlik politikaları kapsamında veya anahtarın ele geçirilmesinden şüphelenildiğinde gerçekleştirilebilir.
Genel anahtar değiştirme süreci:
-
Yeni API anahtarı oluşturulur.
-
Uygulama yeni anahtarı kullanacak şekilde yapılandırılır.
-
Yeni anahtarın çalıştığı doğrulanır.
-
Eski anahtar devre dışı bırakılır.
-
Sistem günlükleri ve API erişimleri kontrol edilir.
Anahtarın ele geçirildiği doğrulanmışsa riskin azaltılması için eski anahtarın mümkün olan en kısa sürede iptal edilmesi gerekir.
API Key ile JWT Arasındaki Farklar
API Key ve JWT, API sistemlerinde kullanılabilen iki farklı mekanizmadır.
|
Özellik |
API Key |
JWT |
|---|---|---|
|
Temel yapı |
Anahtar değeri |
JSON tabanlı token biçimi |
|
Kullanım |
Uygulama veya proje tanımlama |
Claim taşıma ve doğrulanabilir token oluşturma |
|
Kullanıcı bilgisi |
Genellikle doğrudan içermez |
Claim olarak içerebilir |
|
Geçerlilik süresi |
Sağlayıcının politikasına bağlıdır |
|
|
Yetki bilgisi |
Sunucu tarafında ilişkilendirilebilir |
Claim içerisinde taşınabilir |
|
İptal işlemi |
Anahtar devre dışı bırakılabilir |
Ek iptal mekanizmaları gerekebilir |
JWT, API Key yerine her durumda kullanılmak zorunda değildir.
Seçim, uygulamanın kimlik doğrulama ve yetkilendirme gereksinimlerine bağlıdır.
API Key ile OAuth 2.0 Arasındaki Farklar
OAuth 2.0, korumalı kaynaklara sınırlı erişim sağlamak için kullanılan bir yetkilendirme çerçevesidir.
API Key ise genellikle istemci uygulamayı veya projeyi tanımlamak için kullanılan bir anahtardır.
|
Özellik |
API Key |
OAuth 2.0 |
|---|---|---|
|
Temel amaç |
İstemci tanımlama ve erişim kontrolü |
Yetkilendirme ve erişim devri |
|
Kullanıcı onayı |
Genellikle gerekmez |
Bazı akışlarda kullanılır |
|
Erişim kapsamı |
Sağlayıcının yapılandırmasına bağlıdır |
Scope desteği bulunur |
|
Token yönetimi |
Anahtar yönetimi |
Access Token ve isteğe bağlı Refresh Token |
|
Kullanım |
Basit servis entegrasyonları |
Üçüncü taraf ve kapsamlı API entegrasyonları |
Kullanıcı adına başka bir hizmete erişim verilmesi gereken uygulamalarda OAuth 2.0 daha uygun bir yaklaşım olabilir.
API Key Kullanmanın Avantajları
API anahtarlarının başlıca avantajları şunlardır:
Kolay entegrasyon: API isteğine bir anahtar eklenerek kullanılabilir.
Uygulama tanımlama: İsteklerin hangi proje veya uygulamayla ilişkili olduğu belirlenebilir.
Kullanım takibi: API çağrılarının sayısı ve kullanım miktarı izlenebilir.
Erişim kısıtlamaları: Sağlayıcıya bağlı olarak IP, uygulama veya API bazında sınırlandırmalar uygulanabilir.
İstek sınırlandırma: API anahtarlarına özel kullanım limitleri tanımlanabilir.
API Key Kullanmanın Dezavantajları
API anahtarlarının bazı sınırlamaları bulunmaktadır.
Anahtarın Ele Geçirilmesi
Gizli anahtarın ele geçirilmesi, yetkisiz API kullanımına neden olabilir.
Son Kullanıcı Kimliğini Doğrulamaması
API anahtarları çoğunlukla uygulamayı veya projeyi tanımlar. Anahtarı kullanan kişinin kimliğini tek başına doğrulamaz.
Uzun Süreli Geçerlilik
Bazı API anahtarları, özel bir süre sınırı tanımlanmadıkça uzun süre kullanılabilir.
Yetki Yönetimi
API anahtarlarının izin kapsamları, kullanılan hizmetin desteklediği özelliklere bağlıdır.
Güvenli Saklama Gereksinimi
Anahtarların uygulama kodundan, günlük kayıtlarından ve yetkisiz erişimlerden korunması gerekir.
API Key Güvenliğinde Yapılan Yaygın Hatalar
API geliştirme sırasında karşılaşılan hatalar şunlardır:
-
API anahtarını herkese açık kod depolarına yüklemek.
-
Gizli anahtarı frontend JavaScript dosyalarına eklemek.
-
API anahtarını URL parametresinde taşımak.
-
HTTPS kullanmamak.
-
Bütün uygulamalarda aynı anahtarı kullanmak.
-
Anahtarlara gereğinden fazla yetki vermek.
-
Kullanılmayan anahtarları devre dışı bırakmamak.
-
API anahtarlarını uygulama günlüklerine yazdırmak.
-
Anahtar kullanımını takip etmemek.
-
Anahtar ele geçirildiğinde değiştirme işlemini geciktirmek.
Bu hatalar, yetkisiz erişim ve beklenmeyen API kullanım maliyetleri gibi sorunlara yol açabilir.
API Key Hangi Alanlarda Kullanılır?
API anahtarları farklı yazılım sistemlerinde kullanılabilir.
Harita servisleri: Harita verilerine ve coğrafi hizmetlere erişim.
Hava durumu servisleri: Hava durumu bilgilerinin API üzerinden alınması.
E-ticaret sistemleri: Ürün, stok ve sipariş entegrasyonları.
Ödeme sistemleri: Uygun güvenlik kontrolleriyle sunucu taraflı ödeme hizmeti entegrasyonları.
Yapay zekâ servisleri: Model ve diğer API hizmetlerine erişim.
Kurumsal yazılımlar: Farklı uygulamalar arasında veri aktarımı.
Otomasyon sistemleri: Zamanlanmış görevlerin harici API hizmetleriyle iletişim kurması.
Sonuç
API Key, uygulamaların veya projelerin API hizmetlerine erişirken kendilerini tanıtmak için kullandığı bir anahtar değeridir.
API anahtarları; istemci tanımlama, erişim kontrolü, kullanım takibi ve istek sınırlandırma gibi işlemlerde kullanılabilir.
Ancak API anahtarlarının güvenliği, yalnızca anahtarın gizli tutulmasına bağlı değildir. Güvenli saklama, HTTPS kullanımı, erişim izinlerinin sınırlandırılması, anahtar değiştirme ve kullanım izleme işlemleri birlikte uygulanmalıdır.
Özellikle gizli API anahtarlarının frontend kodlarında veya herkese açık kaynak depolarında bulunmaması gerekir.
Kullanıcı kimliğinin doğrulanması veya ayrıntılı yetkilendirme gerektiren sistemlerde API Key mekanizması, uygun kimlik doğrulama ve yetkilendirme yöntemleriyle desteklenmelidir.






