Mercari, Claude Code'u Şirket İçinde Nasıl Güvenli Bir Şekilde Dağıttı?

@hermes_code
JAPONCA2 gün önce · 14 Tem 2026
836K
941
91
3
2.8K

TL;DR

Bu makale, tehlikeli komutları engellemek ve hassas dosyaları korumak için kullanılan özel JSON yapılandırmaları da dahil olmak üzere, Mercari'nin Claude Code dağıtımına yönelik güvenlik çerçevesini detaylandırmaktadır.

"Anlıyorum, kullanışlı olduğunu. Ama açıkçası, yapay zekanın çalışan bilgisayarlarında komutları yürütmesi korkutucu değil mi?"

AI uygulamasını desteklerken yöneticilerden en sık duyduğum endişe bu. Tarayıcı içinde kalan ChatGPT gibi AI'lar o kadar göz korkutucu değil. Ama Claude Code, çalışanların bilgisayarlarındaki dosyaları okuyor, komutlar yürütüyor ve internete erişiyor. "Daha hızlı yaptığını biliyorum. Ama bir kaza olursa sorumluluğu kim üstleniyor?" Birçok şirket muhtemelen bu noktada takılıp kalıyor.

Büyük bir şirket bu kaygıya bir yanıt verdi. Mercari yakın zamanda bir çalışma oturumunda, Claude Code'u yüzlerce çalışana dağıtırken kullandıkları "güvenlik ayarlarını ve dağıtım yöntemlerini" paylaştı.

Üstelik içerik pahalı, özel sistemlerle ilgili değildi. Tek bir yapılandırma dosyası hazırlayıp dağıtarak, küçük ve orta ölçekli işletmeler (KOBİ'ler) bile bunun büyük bir kısmını uygulayabilir.

Mercari'nin bunu yüzlerce kişiye dağıtabilmesinin nedeni yüksek maliyetli bir mekanizma değil, "çalışanların kaldıramayacağı tek bir yapılandırma dosyası"ydı. KOBİ'ler de bugünden itibaren aynısını yapabilir.

Bu yazıda, Mercari'nin tasarımını olabildiğince basit bir şekilde, "neye korkmalı," "Mercari bunu nasıl yönetti" ve "şirketiniz nereden başlayabilir" başlıkları altında inceleyeceğim. Teknik terimleri geçtikçe açıklamalar ekleyeceğim, böylece mühendis olmayan yöneticiler ve PM'ler de takip edebilecek.

Bahsedilen sunum materyallerini burada bulabilirsiniz:

(Mercari Claude Code Organizasyonu Dağıtım Güvenlik Ayarları / Speaker Deck).

Ayarların tam sözdizimi, Anthropic'in resmi belgelerine göre doğrulanmıştır.

Claude Code Neden "Kullanışlı Ama Korkutucu"?

Öncelikle korkunun doğasını netleştirelim. Ayarları anlamadan kopyalarsanız, aslında neyi koruduğunuzu bilemezsiniz diye düşünüyorum.

Claude Code'u standart sohbet AI'ından ayıran şey, kendi yerel bilgisayarınızda bağımsız hareket edebilmesidir. Dosyaları arayıp okuyabilir, yeniden yazabilir ve kabuk komutları (terminalde yazılan komutlar) yürütebilir. Ayrıca internete de erişebilir. Başka bir deyişle, o bilgisayarda yapabileceğiniz hemen hemen her şeyi AI da yapabilir.

Spesifik olarak, ne ters gidebilir? Bilgisayarlar genellikle görmek istemediğiniz şeyler içerir:

  • Bulut veya API'ler için parola görevi gören bilgiler (.env, ~/.aws/credentials gibi yapılandırma dosyaları)
  • Sunuculara giriş yapmak için kullanılan anahtarlar (~/.ssh/ içeriği)
  • Silinmesi felaket olacak önemli dosyalar

AI'nın kötü niyeti yoktur. Ancak, belirsiz talimatlar veya web'deki şüpheli metinlere gömülü komutlar (istem enjeksiyonu olarak bilinir) nedeniyle, bu gizli dosyaları yanlışlıkla okuyup internete gönderebilir veya rm komutunu kullanarak önemli öğeleri silebilir. Anthropic'in resmi belgeleri, bu risklere dayalı olarak izinleri kısıtlayan bir tasarım önerir (İzin Ayarları - Resmi).

Kısacası, korunması gereken üç şey var: gizli bilgilerin sızmasını önlemek, tehlikeli işlemlerin otomatik olarak yapılmasını engellemek ve dokunulabilecek kapsamı daraltmak. Mercari'nin önlemleri, bu üç mercekten okunduğunda çok daha anlaşılır hale geliyor.

Mercari'nin "5 Önlemini" Ayrıştırmak

Mercari'nin sunumu beş ana önlemi özetledi. Her biri için "amacı" ve "nasıl uygulanacağını" inceleyeceğiz.

Sunum slaytlarının konseptlere odaklandığını ve yapılandırma dosyasının her ayrıntısını içermediğini lütfen unutmayın. Bu nedenle, bunu "Mercari'nin politikalarını Claude Code'un resmi ayarlarını kullanarak nasıl uygulayacağınız" şeklinde sunacağım. Anahtar adlar ve sözdizimi, Anthropic'in resmi belgelerinden doğrulanmıştır.

Önlem ①: İnsan Onayını "Atlanamaz" Hale Getirin

Claude Code, her seferinde onay istemeden otomatik olarak ilerleyen bir moda sahiptir. Geliştiricilerin deneme bilgisayarlarında kullanışlı olsa da, bunu şirketteki herkese dağıtırken izin vermek güvenlik frenlerini kaldırır.

Mercari bu "onay atlama modunu" devre dışı bıraktı. Resmi olarak, permissions.disableBypassPermissionsMode (ve otomatik modu engellemek için disableAutoMode) gibi ayarlar mevcuttur. Bunları "devre dışı" olarak ayarlamak, kullanıcıların bu modlara girmesini engeller. Ayrıca, daha sonra açıklanan "yönetilen ayarlara" yerleştirilirse, çalışanlar bunu kendileri devre dışı bırakamaz (İzin Ayarları - Resmi).

Anlamı basit: "AI ellerini hareket ettirmeden önce bir insan onay vermelidir" kuralını tüm şirkette zorunlu kılar.

Önlem ②: Tehlikeli Komutları Durdurun veya Her Zaman Onay İsteyin

Sırada, komutların kendilerine bir tasma takıyoruz. Örneğin, curl (internetten veri getiren bir komut). Serbestçe kullanılırsa, gizli dosyaları dışarı göndermek için bir yol haline gelebilir.

Claude Code'da, belirli komutlar için bir deny (yasakla) listesi ve yürütmeden önce onay gerektiren bir ask (sor) listesi ayarlayabilirsiniz. Sözdizimi şöyle görünür:

json
1{
2 "permissions": {
3 "deny": [
4 "Bash(curl:*)",
5 "Bash(wget:*)"
6 ],
7 "ask": [
8 "Bash(git push:*)"
9 ]
10 }
11}

Bash(curl:*), "curl ile başlayan tüm komutları engelle" anlamına gelir (sondaki :*, "bundan sonraki her şey"i temsil eder). Önemli bir not: resmi belgeler, curl'ü yalnızca GitHub gibi belirli hedefler için izin vermeye çalışmanın, yönlendirmeler yoluyla kolayca atlanabileceğini belirtir. Bu nedenle, resmi öneri internet iletişimini tamamen engellemek ve gerekli getirmeleri ayrı bir güvenli bağlantı noktası üzerinden birleştirmektir (İzin Ayarları - Resmi). Bu "güvenli bağlantı noktası", hedeflerin beyaz listeye alınabildiği WebFetch'tir (Claude Code'un internet erişimi için yerleşik özelliği).

Önlem ③: Gizli Dosyaların Okunmasını ve Sistem Değişikliklerini Engelleyin

Ayrıca, parolaların bulunduğu .env dosyaları veya derin sistem değişiklikleri için kullanılan sudo komutu gibi gizli bilgilere erişimi de engelliyoruz.

json
1{
2 "permissions": {
3 "deny": [
4 "Read(.env)",
5 "Read(.env.*)",
6 "Read(**/.ssh/**)",
7 "Bash(sudo:*)"
8 ]
9 }
10}

Read(.env) yazmak, .env'nin çalışma klasörü altındaki herhangi bir seviyede okunamaz hale gelmesini sağlar. Güvenlik için bilinmesi gereken bir şey, bu yasak listesinin Claude'un kendi dosya okumasına veya cat gibi bariz komutlara karşı işe yararken, AI tarafından yazılan bir komut dosyasının arka planda gizlice bir dosyayı açmasını tamamen durduramayacağıdır (İzin Ayarları - Resmi). Bu nedenle Önlem ④ gereklidir.

Önlem ④: "Erişimi" Bir Kum Havuzuyla Çevreleyin

Yasak listesi belirli komutlar için sınırlar çizmekle ilgiliyken, kum havuzu işletim sistemi düzeyinde bir duvar oluşturur. AI'nın çalışma klasörü dışındaki hiçbir şeye dokunmasını veya izin verilen internet alan adları dışındaki hiçbir şeye bağlanmasını fiziksel olarak kısıtlar.

json
1{
2 "sandbox": {
3 "enabled": true,
4 "network": {
5 "allowedDomains": ["*.github.com", "registry.npmjs.org"]
6 }
7 }
8}

Etkinleştirildiğinde, AI yanlışlıkla gizli bir dosyaya uzanmaya çalışsa bile, "kum havuzunun" dışında olduğu için ona erişemez. Resmi belgeler, nihai sınır için hem yasak listesini (Önlem ② & ③) hem de kum havuzunu katmanlamanız gerektiğini açıklar (Kum Havuzu - Resmi). Bunu hem bireysel kurallara hem de bir çevre çitine sahip olmak gibi düşünün.

Bir kısıtlama: Kum havuzu macOS, Linux ve WSL2'de (Windows'ta Linux) çalışır, ancak yerel Windows'ta desteklenmez. Windows merkezli işyerlerinde karar, Önlem ①–③'teki izin ayarlarını güçlendirmek olacaktır.

Önlem ⑤: AI'ya Her Seferinde "Neyi Koruması Gerektiğini" Okutun

Son olarak, katı ayarlardan farklı bir açı: şirketin güvenlik politikasını, AI'nın her seferinde okuduğu bir talimat kılavuzuna yazın. Ayarlar "fiziksel kilitler" ise, bu bir "iş yeri kurallarının gözden geçirilmesi" gibidir.

Bunu yapmanın birkaç teknik yolu vardır ve materyallerden Mercari'nin hangisini kullandığı net değildir. Ancak en kolay yol, çalışma klasörüne doğrudan CLAUDE.md adlı bir dosya yerleştirmek ve oraya dahili kuralları listelemektir. Claude Code bu dosyayı her seferinde okur.

markdown
1# Güvenlik Talepleri
2- .env veya anahtar dosyalarını (~/.ssh/, vb.) açma
3- Müşteri bilgilerini veya ticari sırları harici hizmetlere gönderme
4- Silme veya yayınlama işlemlerini yürütmeden önce her zaman bir insanla onayla

Bugün için yapılacak: Bu üç satırı bir CLAUDE.md dosyasına yapıştırmak, AI'nın davranışına bir sağduyu katmanı ekler. Yapılandırma dosyalarından önce bile bununla başlayabilirsiniz.

Bugün için yapılacak: Her şeyi bir kerede uygulamak zorunda değilsiniz. Önlem ③'teki Read(.env) satırını .claude/settings.json adlı bir yapılandırma dosyasına ekleyerek başlayın. Proje klasörünüzde .claude (baştaki nokta dahil) adlı bir klasör oluşturun ve içine settings.json adlı bir metin dosyası kaydedin. Tüm projeler için geçerli olmasını istiyorsanız, ana dizininizdeki ~/.claude/settings.json konumuna yerleştirin. En etkili hamleyle başlayabilirsiniz: AI'nın gizli dosyaları okumasını engellemek.

Mercari'nin Asıl Becerisi "Dağıtım"daydı

Şimdiye kadar "neyin ayarlanacağını" ele aldık. Mercari'nin sunumu özellikle pratikti çünkü bu ayarların yüzlerce kişiye nasıl dağıtılacağını ele alıyordu.

Normalde, yapılandırma dosyaları her kişinin bilgisayarına (kullanıcı ayarları) yerleştirilir, bu da çalışanların bunları yeniden yazabileceği anlamına gelir. Bu, "güvenlik ayarları dağıtıldı ama birisi devre dışı bıraktı" gibi durumlara yol açar.

Bunu çözmek için Mercari, MDM'yi (Mobil Cihaz Yönetimi—şirketlerin çalışan bilgisayarlarını yönetmesi için bir sistem) kullanarak çalışanların üzerine yazamayacağı "yönetilen ayarları" aynı anda dağıttı. Claude Code, bireysel ayarlara göre öncelikli olan ve kullanıcı tarafından değiştirilemeyen yönetilen ayarlar için belirlenmiş bir konuma sahiptir. macOS'ta bu, /Library/Application Support/ClaudeCode/managed-settings.json konumudur (Ayarlar - Resmi). Önlem ①–④'ü buraya yazarak, sahada gevşetilemezler.

Daha da akıllıcası, mühendisler ve mühendis olmayanlar için güvenlik seviyelerini farklılaştırmaktı:

  • Mühendisler İçin: Biraz özelleştirmeye izin veren ve üretkenliği çok fazla engellemeyen ayarlar.
  • Mühendis Olmayanlar İçin: Daha az kurcalama alanı olan en güvenli varsayılan ayarlar.

Aynı araç için bile, tasmanın uzunluğunu kullanıcının okuryazarlığına göre ayarladılar. Herkes sıkı bir şekilde kısıtlanırsa iş durur; herkes gevşek olursa kazalar olur. Bunu, dağıtılan ayarları değiştirerek çözdüler.

KOBİ'lerin Kopyalamaya Başlayabileceği Yer

Çoğu şirkette muhtemelen MDM yoktur. Sorun değil. Mercari'nin tasarımının ölçekten bağımsız çalışan kısımlarını çıkarabilirsiniz.

Tek yapmanız gereken, güvenlik ayarlarına sahip tek bir dosyayı dağıtmak ve yerleştirilmesini sağlamaktır. MDM'niz varsa, yönetilen bir ayar olarak dağıtın; yoksa, paylaşın ve "Lütfen bu settings.json dosyasını .claude/ klasörünüze koyun" deyin. Zorlama daha düşüktür, ancak yön aynıdır.

Minimum bir set olarak, Önlem ①–③'ü birleştirmek şöyle görünür. Bunu bir temel olarak kullanmanızı ve şirketinizin yasaklamak istediği belirli komutları eklemenizi öneririm.

json
1{
2 "permissions": {
3 "disableBypassPermissionsMode": "disable",
4 "deny": [
5 "Bash(curl:*)",
6 "Bash(wget:*)",
7 "Bash(sudo:*)",
8 "Read(.env)",
9 "Read(.env.*)",
10 "Read(**/.ssh/**)"
11 ],
12 "ask": [
13 "Bash(git push:*)",
14 "Bash(rm:*)"
15 ]
16 }
17}

Yukarıdan aşağıya: onay atlamayı devre dışı bırak, internet iletişimini ve yönetici işlemlerini engelle, gizli dosyaları okumayı yasakla ve her zaman silme veya yayınlamayı onayla. İçeriğini anlamasanız bile, kopyalayıp yapıştırırsanız çalışacaktır.

Mühendis olmayanlara dağıtıyorsanız, kum havuzunu (Önlem ④) ekleyen en güvenli sürümü öneririm. İki ayarı tek bir dosyada birleştirmek şöyle görünür:

json
1{
2 "permissions": {
3 "disableBypassPermissionsMode": "disable",
4 "deny": [
5 "Bash(curl:*)",
6 "Bash(wget:*)",
7 "Bash(sudo:*)",
8 "Read(.env)",
9 "Read(.env.*)",
10 "Read(**/.ssh/**)"
11 ],
12 "ask": [
13 "Bash(git push:*)",
14 "Bash(rm:*)"
15 ]
16 },
17 "sandbox": {
18 "enabled": true,
19 "network": {
20 "allowedDomains": ["*.github.com", "registry.npmjs.org"]
21 }
22 }
23}

Basitçe permissions ve sandbox'ı virgülle ayırarak yan yana yerleştirdim. allowedDomains'i şirketinizin kullandığı hizmetlere göre değiştirin. Kum havuzunun macOS, Linux ve WSL2'de çalıştığını unutmayın.

Uygulamayı desteklerken insanlara her zaman söylediğim şey, mükemmellik için durmayın. Mercari'ninki gibi çok katmanlı bir savunma hemen kuramasanız bile, .env'yi tek bir satırla korumak, kaza olasılığını önemli ölçüde azaltır.

Bugün için yapılacak: Şirketinizde en az bir kişi Claude Code kullanmaya başlıyorsa, yukarıdaki minimum seti metin olarak paylaşın ve .claude/settings.json dosyasına yapıştırmalarını sağlayın. Bir dağıtım provası için mükemmel bir boyut.

Tuzaklar: Ayarları Dağıtmadan Önce Bilinmesi Gereken 3 Şey

Bu, güvenliği sıkılaştırmakla ilgili olduğundan, yanlış anlaşılırsa tehlikeli olabilecek noktalar vardır.

  1. "Yasak listesi yazmak" mükemmel şekilde güvenli olduğu anlamına gelmez. Önlem ③'te belirtildiği gibi, bir yasak listesi bir komut dosyasının arka planda yapabileceği her şeyi durduramaz. curl'ü durdursanız bile, başka iletişim yöntemleri kalabilir. Gerçekten çevrelemek istiyorsanız, bir kum havuzuyla (Önlem ④) katmanlama ön koşulunu unutmayın.
  2. Argümanlara göre filtrelemeye güvenmeyin. Anthropic'in kendisi, curl'ü yalnızca belirli bir URL için izin vermek gibi koşullu izinlerin kolayca kırılabileceği konusunda uyarır. Tehlikeli şeyleri tamamen engellemek ve güvenli bir alternatif sağlamak daha sağlamdır.
  3. Ayarları dağıtıp bırakmayın. Yönetilen ayarları zorlasanız bile, çalışanlar kendi başlarına başka şüpheli araçlar kurarsa bunun bir anlamı yoktur. Ayarlar, "kazaları azaltan bir mekanizmadır" ve kullanım eğitimi ile eşleştirildiğinde en iyi şekilde çalışır. Önlem ⑤'in, "kuralları okutmanın" nihayet devreye girdiği yer burasıdır.

Orta Düzey Kullanıcılar için SSS

S. Kişisel kullanım için bunu ayarlamanın bir anlamı var mı?

Evet. Kriter, o bilgisayarda gizli bilgi olup olmadığıdır, bir şirket için olup olmadığı değil. Serbest çalışanlar ve bireysel geliştiricilerin yerel olarak hâlâ .env ve ~/.ssh/ dosyaları vardır. En azından, Önlem ③'teki okuma yasağını eklemek daha güvenlidir.

S. İzinleri kısıtlamak AI'yı işe yaramaz hale getirmez mi?

Nasıl kısıtladığınıza bağlı. Salt okunur komutlar (ls veya cat gibi) varsayılan olarak onay almadan çalışır, bu nedenle günlük işler nadiren durur. Durdurulan şeyler, silme, yayınlama ve internet iletişimi gibi ters giderse zarar verecek işlemlerdir. Aslında, "insanlar yalnızca tehlikeli olduğunda kontrol eder" durumuna geçerek, AI'nın otomatik olarak yapmasına izin verdiğiniz işlemlerin kapsamını güvenle genişletebilirsiniz.

S. `settings.json` ile yönetilen ayarlar (`managed-settings.json`) arasındaki fark nedir?

Konum ve "güç" farklıdır. Bir projenin .claude/ klasöründeki settings.json, herkesin düzenleyebileceği paylaşılan bir ayardır. managed-settings.json ise şirket tarafından dağıtılır ve kullanıcı tarafından değiştirilemez. Bireyler veya küçük gruplar için ilki yeterlidir; "birinin ayarları gevşetmesi sorun olur" aşamasına geldiğinizde ikincisine geçin.

S. Aynı mantığı Cursor veya diğer AI kodlama araçları için de kullanabilir miyim?

Korumak istediğiniz şeyler (sırlar, tehlikeli işlemler, erişim) aynıdır, bu nedenle konsept uygulanır. Ancak, sözdizimi ve kum havuzunun varlığı araca göre değişir, bu nedenle bu settings.json gösterimini Claude Code'a özgü olarak değerlendirin. Diğer araçları kullanıyorsanız, kısayol, bu aynı üç perspektifi ilgili resmi belgelerine uygulamaktır.

Özet: "Kullanma"dan "Güvenle Dağıt"a

AI uygulaması hakkında danışma aldığımda, en yaygın yanıt "Tehlikeli, henüz kullanmalarına izin veremeyiz" olurdu. Ancak bu karar, tüm kolaylığı da çöpe atar.

Mercari bize bu ikili seçimden bir çıkış yolu gösterdi. Onay atlamayı devre dışı bırak, tehlikeli işlemleri durdur, gizli dosyalara dokunmayı yasakla, bir kum havuzuyla çevrele ve kuralları okut. Ardından, kurcalanamaz ayarlar olarak herkese dağıt. Bu, "korkutucu olduğu için yasak" anlayışını "korkutucu olduğu için tasmalı dağıt"a dönüştüren bir tasarım.

  • Korunacak hedefler: Sırların sızmasını önle / Tehlikeli işlemleri engelle / Erişimi daralt.
  • Mercari'nin 5 Önlemi: Atlamayı devre dışı bırak, tehlikeli komutları kısıtla, gizli dosyaları yasakla, kum havuzu ve kural okuma.
  • Dağıtım: Kullanıcının üzerine yazamayacağı, okuryazarlığa göre farklılaştırılmış yönetilen ayarlar kullanın.

Son olarak, bugünden itibaren başlayabileceğiniz üç adım:

  1. Kendi bilgisayarınıza `Read(.env)` ekleyin: Gizli dosyaların okunmasını yasaklayarak başlayın. Bu, en etkili tek hamledir.
  2. Minimum setin tek bir dosyasını oluşturun: Yukarıdaki permissions örneğine dayanarak, şirketinizin durdurmak istediği komutları ekleyin.
  3. Şirkette bir kişiye test etmesi için dağıtın: Bunu .claude/settings.json dosyasına yapıştırmasını sağlayın ve işin durmadığını birlikte kontrol edin.

İlk adım, .env'yi korumak için tek bir satırdır. Oradan, mükemmel çok katmanlı bir savunmayı tek tek inşa edebilirsiniz. Neden bugün o ilk dosyayı yerleştirip "korkutucu olduğu için durdurmayı" "tasmalı devretmeye" dönüştürmüyorsunuz?

Referans Bağlantıları

YouMind’da yeniden üret

Turn one viral article into a full content workflow

Collect the source, decode the pattern, create assets, draft the story, and distribute from one AI workspace.

Explore YouMind
Üreticiler için

Markdown'ınızı temiz bir 𝕏 makalesine dönüştürün

Kendi uzun yazılarınızı yayımlarken görselleri, tabloları ve kod bloklarını 𝕏 için biçimlendirmek zahmetlidir. YouMind, eksiksiz bir Markdown taslağını temiz ve hemen paylaşılabilir bir 𝕏 makalesine dönüştürür.

Markdown'dan 𝕏'e deneyin

Çözülecek daha fazla kalıp

Son viral makaleler

Daha fazla viral makale keşfet