API anahtarlarını güvenli bir şekilde saklamak için en iyi yöntemler

Jose Fontano tarafından resim

Geçmişte, birçok kişinin projeleriyle ilgili hassas bilgileri depolamak için Git depolarını kullandığını gördüm.

Son zamanlarda, bazı kişilerin API anahtarlarını kendi GitHub depolarına depoladıklarını duyurduklarını görüyorum. Bu makaleyi yazıyorum çünkü insanlar API kodlarını kodunuzla saklama risklerini anlamalıdır.

Bu makalede, API anahtarlarının depolanmasıyla ilgili sorunlarınız için kalıcı bir çözüm olması amaçlanmamıştır. Bunun yerine, sorun benim kendi analizim ve nasıl çözüleceği konusundaki önerilerim.

Peki, kodunuzun yakınında hassas bilgilerin Git deposunda depolanması sorunu tam olarak nedir?

Neden API anahtarlarını Git havuzlarına kaydetmemelisiniz?

API Anahtarlarını veya herhangi bir hassas bilgiyi git deposunda saklamak, ne pahasına olursa olsun kaçınılması gereken bir şeydir. Depo özel olsa bile, hassas bilgileri saklamak için güvenli bir yer olarak görmemelisiniz.

API anahtarlarının herkese açık git depolarında saklanmasının neden kötü bir fikir olduğuna bakarak başlayalım.

Doğal olarak, halka açık bir git deposuna herkes tarafından erişilebilir.

Başka bir deyişle, İnternet bağlantısı olan herkes halka açık bir veri havuzunun içeriğine erişebilir. Sadece bu değil, aynı zamanda havuzun içindeki tüm koda da göz atabilir ve muhtemelen çalıştırabilir. Bir API anahtarını bir halka açık depoda saklarsanız, herkesin görebilmesi için açık alanda yayın yaparsınız.

GitHub'da client_secret için yapılan son bir arama, potansiyel olarak bir API anahtarını ve sırrını açığa çıkaran 30.000'den fazla komisyon olduğunu ortaya çıkardı. Bazı durumlarda, API’ya hemen erişmek için kodu kopyalayıp yapıştırmanız yeterlidir.

Bu sorun o kadar önemli hale geliyor ki, bazı şirketler sızan API anahtarlarının ve sırlarının bulunmadığından emin olmak için kaynaklara yatırım yapıyor.

Geçen yıl, Slack açığa çıkan API belirteçlerini aramaya başladı ve proaktif olarak geçersiz kıldı. Bu işlem, Slack’in hesaplarına kötü niyetli erişimi engelliyor, ancak sızan belirteçlerin tümünü bulamıyor.

Yani, bu genel Git depolarında oluyor. Özel olanlar ne olacak? Bu neden bir sorun?

GitHub, GitLab ve Bitbucket gibi servislerde barındırılan Özel Git depoları farklı risk türlerine maruz kalır. Üçüncü taraf bir uygulamayı belirtilen hizmetlerden biriyle entegre ettiğinizde, özel depolarınızı bu üçüncü taraflara açıyor olabilirsiniz. Bu uygulamalar özel depolarınıza erişebilecek ve içerdiği bilgileri okuyabilecektir.

Bu tek başına bir risk oluşturmazken, bu uygulamalardan birinin saldırganlara karşı savunmasız olup olmadığını hayal edin. Saldırganlar, üçüncü taraf uygulamalardan birine yetkisiz erişim sağlayarak, API anahtarları ve sırları dahil olmak üzere hassas verilerinize erişebilir.

Peki API anahtarları nerede saklanmalı?

API anahtarlarını ve sırlarını güvenli bir şekilde saklamak için birçok alternatif vardır. Bazıları Git deponuzu kullanmanıza ve hassas verileri şifrelemenize izin verir. Diğer araçlar daha karmaşıktır ve konuşlandırma iş akışının bir parçası olarak hassas bilgilerin şifresini çözer. Mevcut çözümlerden bazılarına bakalım.

git-remote-gcrypt

İlk çözüm bütün bir Git deposunu şifrelemenizi sağlar. git-remote-gcrypt Git uzaktan yardımcılarına işlevsellik ekleyerek yeni bir şifreli taşıma katmanı elde edilmesini sağlar. Kullanıcıların yalnızca yeni bir şifreli uzaktan kumanda kurması ve ona kodu itmesi gerekir.

Tek tek dosyaları şifrelemenize izin veren daha iyi ayarlanmış bir çözüm arıyorsanız okumaya devam edin.

Git-sır

git-secret, yerel makinenizde çalışan ve depoya göndermeden önce belirli dosyaları şifreleyen bir araçtır. Sahnelerin arkasında, git-secret, hassas bilgilere sahip olabilecek dosyaları şifrelemek ve şifresini çözmek için GNU Privacy Guard (GPG) kullanan bir kabuk betiğidir.

Git-crypt

Başka bir çözüm git-crypt. Çalıştığı gibi git-secret'a çok benzer, ancak bazı ilginç farklılıkları vardır.

Git-crypt hakkında dikkat edilmesi gereken ilk şey, git-secret'ın olduğu gibi, bunun bir binary çalıştırılabilir dosya olduğu ve kabuk betiği olmadığıdır. İkili bir çalıştırılabilir olmak, onu kullanmak için önce onu derlemeniz ya da makineniz için bir ikili dağıtım bulmanız gerektiği anlamına gelir.

Mac kullanıyorsanız şanslısınız çünkü HomeBrew git-crypt kuruluma hazır bir paket sunuyor. Yapmanız gereken tek şey, bir terminalde git-crypt brew install çalıştırmak.

Siyah kutu

BlackBox Stack Overflow tarafından oluşturulan bir araçtır. Stack Overflow'un kendisi, Server Fault ve Super User gibi popüler soru-cevap topluluklarının arkasındaki şirket budur. BlackBox, Mercurial ve Subversion gibi diğer sürüm kontrol sistemlerinin yanı sıra Git ile birlikte çalıştığı için güçlü bir araçtır.

Ayrıca, yalnızca tüm dosyaların değil, küçük dizelerin şifrelenmesini de destekler. Bunu Puppet ile çalışırken yapar ve konfigürasyon verileri için anahtar-değer arama aracı olan Puppet’s Hiera’yı kullanır.

Bireysel dizeleri şifreleme ve şifresini çözme yeteneğine sahip olmak, BlackBox'ı API anahtarlarını ve sırlarını güvence altına almak için mükemmel bir çözüm haline getirir.

Heroku Yapılandırması ve Yapılandırması Vars

Heroku ile çalışıyorsanız Git anahtarları üzerindeki API anahtarları ve sırları gibi hassas bilgileri saklamamalısınız. Heroku, konfigürasyon değişkenlerini ayarlamanıza izin veren bir çözüm sunar.

Uygulamanız, daha sonra ilgili ortam değişkenlerine erişerek çalışma zamanı sırasında bu yapılandırma değişkenlerinin içeriğine erişebilir. Değerler şifreli olmasa da, bu çözüm Git depolarınızı API anahtarlarını depolamak için kullanmaktan kaçınmanızı sağlar.

Heroku gibi bir Açık Kaynak çözümü olan Dokku da aynı yetenekleri sunuyor.

Docker sırları

Olası çözümler yelpazesinin sonunda Docker sırları var. Bu çözüm Docker tarafından Şubat 2017'de tanıtıldı. O zamandan beri popülerlik kazandı.

Docker sırları, şifreli değişkenleri tanımlamanıza ve çalışma zamanı boyunca belirli servislerde kullanılabilir olmasını sağlar. Sırlar hem geçiş sırasında hem de dinlenme sırasında şifrelenir.

Bu yaklaşım Docker'ın, API anahtarlarını ve sırlarını güvenli ve şifreli bir şekilde depolamak ve kullanmak için mükemmel bir çözüm olmasını sağlar.

özet

Şimdiye kadar API anahtarları ve sırlar gibi hassas bilgileri kamuya açık ve özel Git depolarında saklamanın tehlikelerinin farkında olmalısınız.

Depolarınızın maruz kalabileceği olası yolları anlamak, bilgi sızıntılarıyla ilişkili riskleri değerlendirmek ve azaltmak için anahtardır.

Bu makalede ayrıca, kod havuzlarınızı güvenle kullanabilmeniz için API anahtarlarını ve sırlarını şifrelemenize izin veren birkaç farklı çözüm önerilmiştir.

Aynı sonuçları elde etmenize yardımcı olacak daha fazla çözüm olduğundan eminim.