"API Keys are Disallowed" Çözümü
Google Cloud'da API anahtarı oluşturmaya çalışıp "Your organization's security policy disallows API keys" hatası mı aldın? Yeni hesap/proje açmak bunu çözmez. Sebebini ve iki kalıcı çözümü adım adım anlatıyoruz.
Doğrulandı: Haziran 2026 · Google Cloud Console + resmi dökümanlar
1. Belirti — Ekranda ne görürsün?
⚠️ API Keys are Disallowed
"Your organization's security policy disallows API keys. Please use Application Default Credentials (ADC) instead." — ve "+ Create API Key" butonu pasif veya hiç yok.
2. Kök Neden — Neden yeni proje açmak işe yaramaz?
❌ Yanlış 1: "Yeni proje açarsam çözülür."
Yasak proje seviyesinde değil, organizasyon seviyesinde. Tüm projeler org'un altındadır ve bu yasağı miras alır (inherit). 100 proje açsan hepsinde kapalı olur.
❌ Yanlış 2: "Hesap benim, yetkim var."
Süper Admin her şeyi yönetir ama org güvenlik politikasını değiştirmek için ayrı bir rol gerekir: Organization Policy Administrator. Yeni org'da bu rol otomatik gelmez — ama Süper Admin'sen kendine verebilirsin (Çözüm 1).
iam.managed.disableServiceAccountApiKeyCreation (Status: Enforced, Inherit parent's policy).
3. Hangi Çözümü Seçmeli?
| Çözüm 1: API Key'i Aç | Çözüm 2: ADC (key'siz) | |
|---|---|---|
| Yöntem | Org policy'yi kapat, key üret | Hiç key yok, kimlikle bağlan |
| Kim yapabilir | Sadece org Süper Admin | Herkes (yetki gerekmez) |
| Güvenlik | Daha riskli (key sızabilir) | Daha güvenli (org'un önerdiği) |
| Sunucu (GCloud VM) | Key'i .env'e koymalısın | Otomatik (sıfır key yönetimi) |
| $300 kredi | ✅ | ✅ |
| Ne zaman | Org dışı / basit entegrasyon | Production, GCloud altyapısı |
API Key'i Açmak (Org Policy Override)
Kendine "Organization Policy Administrator" rolü ver
console.cloud.google.com/iam-admin/iam → en üstteki kaynak seçici → organizasyonu seç (proje değil!) → kendi e-postanı bul → ✏️ Edit → + ADD ANOTHER ROLE → Organization Policy Administrator → SAVE. 1-2 dk yayılma bekle.
Konsoldan atayamıyorsan gcloud ile:
ORG_ID'yi gcloud organizations list ile bul.
Policy'yi kapat
console.cloud.google.com/iam-admin/orgpolicies → ara: disableServiceAccountApiKeyCreation → aç → Manage policy (artık tıklanır) → Override parent's policy → Add a rule → Enforcement: Off → Set policy. 1-2 dk bekle.
API Key üret
Agent Platform / API Keys sayfasına dön → + Create API Key artık aktif. İsim ver, gerekirse kısıt uygula → key'i güvenli kaydet (bir daha tam gösterilmez). Kullanım: GEMINI_API_KEY olarak .env'e koy.
⚠️ Asla git'e commit etme, kimseyle paylaşma.
ADC — Application Default Credentials (key'siz)
Key üretmezsin; ortam kendi kimliğiyle bağlanır. Org policy'ye hiç dokunmazsın.
Senaryo A — Lokal geliştirme/test
Tarayıcı açılır → kredinin/projenin olduğu hesabı seç → izin ver. Kod tarafı (API key yerine Vertex modu):
ADC otomatik bulunur, key gerekmez.
Senaryo B — Production (GCloud VM)
- VM'e bir service account ata (veya varsayılan compute SA).
- O SA'ya Vertex AI User (
roles/aiplatform.user) rolü ver. - Kod aynı (
vertexai: true). VM kendi kimliğiyle bağlanır — hiç key dosyası yok.
Avantaj: key sızması imkansız, rotasyon derdi yok, org policy'ye uyumlu.
disableServiceAccountApiKeyCreation policy'si AÇIK kalabilir — ADC bu policy'ye takılmaz çünkü API key üretmez.
4. $300 Ücretsiz Kredi — Nerede, Nasıl?
- Yeni Google Cloud hesabına $300 / 90 gün trial (hangisi önce biterse).
- Billing → Credits sekmesinden kalan tutar + gün görülür.
- Hem API key hem ADC kullanımı aynı projenin billing'ine bağlıdır → kredi ikisinde de düşer.
- Tuzak: Kredinin olduğu hesap/proje ile key/ADC kurduğun hesap/proje aynı olmalı. Farklı hesapta key alırsan o kredi kullanılmaz.
- Express Mode (
console.cloud.google.com/expressmode): billing açmadan 90 gün Vertex erişimi + otomatik key — ama org policy'li hesapta yine kısıtlanabilir.
5. Doğrulama — Çalışıyor mu?
API key yolu
SDK/`curl` ile basit bir generateContent çağrısı → yanıt dönerse OK.
ADC yolu
gcloud auth application-default print-access-token token döndürüyorsa ADC hazır → vertexai:true çağrısı.
Maliyet
Billing → Credits'te kredinin düştüğünü gör → gerçekten çalışıyor.