Bir şirket içinde dahili API anahtarlarını paylaşmaktan nasıl vazgeçebilirim?


37

Yeni bir hizmet üzerinde çalışıyoruz - bu hizmet potansiyel olarak doğrudan kullanıcı cihazlarındaki uygulamalardan çağrılabilir. Bu uygulamalar, sunduğumuz verilere bağlı olarak, kuruluşun her yerinden gelen birden fazla geliştirme ekibi tarafından geliştirilecek ve desteklenecektir.

Hangi uygulamaların hangi istekleri gönderdiğini belirlemeye istekliyiz, böylece kullanım modellerini ve sorumlu geliştiricileri tanımlayabiliriz. (Şüphe duyulmaması için, kullanıcı kimlik doğrulaması ayrı ayrı ele alınır.)

Bizim çözümümüz, uygulama başına bir tane olmak üzere API anahtarları talep etmektir - daha sonra geliştirme ekibi için iletişim bilgilerimiz vardır.

API anahtarlarının sürtünme kaynağı olmasını istemiyoruz, ancak geliştiricilerin bunları diğer ekiplerdeki meslektaşlarınızla paylaşacaklarından endişe duyuyoruz, yani artık yalnızca bir uygulama için trafiği tanımlayamıyoruz.

Geliştiricilerin API anahtarlarını dahili olarak paylaşmamalarına nasıl teşvik edebiliriz?


5
Bu ekipler API'ye nasıl erişecek? Dahili ağ üzerinden mi? Genelde farklı ekipler farklı alt ağlara yerleştirilir, böylece belirli bir API anahtarının kullanımını ağ üzerinden zorlayabilirsiniz ... Yine de, sosyal çözüm onlara "güvenlik için değil, bu API anahtarını paylaşmamanız önemlidir. Bunu geliştirmek için farklı kullanıcıların metriklerine ihtiyaç duyuyor. Biri sadece sizden bize sormalarını isterse biz onlara memnuniyetle ve verimli bir şekilde bir API anahtarı sağlayacağız "dedi.
Giacomo Alzetta

3
İnsanların anahtarları iş arkadaşlarıyla paylaşmasını istemiyorsanız, sürüm oluşturma sistemi tarafından yok sayılan bir yapılandırma dosyası eklemeyi kolaylaştırın (böylece anahtar asla işlenmez) ve ayrıca yeni anahtarlar oluşturmayı da kolaylaştırır. Başka bir geliştirici kendi başına kolaylıkla yeni bir anahtar oluşturabilirse, hiç kimse gizli anahtar paylaşmaya zahmet etmeyecektir. Kişisel anahtarları paylaşma sorunu genellikle yeni anahtarlar almanın zaman almasından kaynaklanan bir sorundur.
Sulthan

Başvuru ilk başlatıldığında kayıt yaptırmayı düşündün mü? Kullanıcının iletişim bilgilerini (veya ihtiyacınız olan her türlü bilgiyi) isteyen bir açılış ekranı gösterebilir ve ardından API anahtarını yerinde verebilir.
John Wu,

"Geliştiricilerin API anahtarlarını dahili olarak paylaşmamalarına nasıl teşvik edebiliriz?" Basitçe ifade etmek gerekirse, her anahtarı, onları çalıştıran bilgisayarlardaki ağ kartlarının MAC adreslerine bağlayın. Ağ protokolleri, aynı MAC adreslerinin aynı ağda kullanılmasını önler, böylece insanların aynı anahtarları tekrar tekrar kullanmasını önler. Bunu bir cevap haline getirmiştim, ama şu anda bunun için temsilcisi yok.
Blerg

Merakla, şu anda bu sayfada hiçbir yerde "rotasyon" kelimesini görmüyorum ( anahtar rotasyon - kimlik bilgilerinin sona ermesi / rotasyon). Birisi bir anahtarı edindiğinde, kullanım dışı bırakılıp yenisiyle değiştirilmesi gereken sınırlı bir ömre sahip midir? Değilse neden olmasın?
Michael - sqlbot

Yanıtlar:


76

Bu anahtarları ekipler arasında paylaşmak için ekiplerin birbirleriyle konuşmaları, paylaşmayı kabul etmeleri ve sonra paylaşmaları gerekir. Bu zaman alır. Bir ekip sizden daha hızlı ve kolay bir şekilde API anahtarları talep edebilirse, paylaşacak bir teşvik yoktur.

Ve bu anahtarları talep etmelerinin en kolay yolu, onları önceden boşaltmanızdır. API anahtarlarına ihtiyaç duyacak diğer tüm ekipleri bildiğinizi varsayalım, hizmeti oluşturun.

Size önerebileceğiniz başka bir teşvik var: hata ayıklama desteği. Bu ekipler, işlerini hizmetinizle bütünleştirdiklerinde işler düzgün şekilde çalışmadığında yardımınızı isteyecektir. Bu API anahtarları, belirli isteklerini izlemenize ve böylece neyin yanlış gittiğini tespit etmenize yardımcı olur. Öyleyse , faaliyetlerine göz kulak olduğunuz gibi görünen " kullanım şekillerini ve geliştiricilerini sorumluları tanımlamak " yerine, anahtarların nedeni olarak satabilirsiniz .


2
Re: paylaşma, ideal bir dünyada haklısınız - ancak mükemmel bilgilere sahip olduklarını (şema, dokümanlar, bitiş noktasının kökü ve her türlü hataya dokümanlarla yönlendirerek yardımcı olabilirim) ve işbirliğine dayalı yönetim ve Tüm sahip olabileceği gerçeği son nokta değildir ve bazı kodlar üst düzey bir yönetici tarafından iletildikleri başka bir takımdan kopyalanmıştır.
Oli

3
Re: ön-empting, kesinlikle haklısın, agresif bir şekilde ilgili taraflara anahtarlar göndermeli ve göndermeliyiz. Bahsetmediğim, bu uygulamaların bazılarının ortak bir çerçeve / arayüz kullandığı ve belki de bu katmandaki benzersiz anahtarları yarı otomatik olarak enjekte edebileceğimizi veya uygulayabileceğimizi, ancak tüm uygulamalar için geçerli olmadığını söyleyebiliriz.
Oli

1
@Ewan verilen tuşa erişimi devre dışı bırakırsanız tüm kullanıcılar size koşar - kovalamaya gerek yok. Ve sonra onlara eşsiz anahtarlar verebilirsiniz :)
Alexei Levenkov

15
Önceden oylama işlemi şu formu almalıdır: API'ye anahtar olmadan erişmek, anahtar için başvurduğunuz sayfaya bağlantı içeren bir hata mesajı verir. Kimsenin belgeleri okumasını beklemeyin. Teşvikler, kimse onları bilmediğinde işe yaramaz.
candied_orange

1
Hata mesajları veya hata ayıklama günlükleri, anahtarla bağlantılı bir adrese otomatik olarak e-posta ile gönderilirse, verileri isteyen herkes kendi anahtarını kullanmaya teşvik eder - ve anahtarı paylaşılan herkesin paylaşan kişiyi izlemeye teşvik eder ve onları durdurmalarını sağla.
Robin Bennett

20

Zaten iyi cevaplar, sadece sizin için işe yarayabilecek farklı bir yaklaşım düşündüm.

Eklenecek anahtarları vermek yerine, web tarayıcılarında olduğu gibi ön uç uygulamasının geliştiricisi tarafından oluşturulup biçimlendirilmesi için istek başlığının ön uç uygulamasının adını içermesini isteyebilirsiniz. Bu şekilde ön uçlar farklı bir uygulama gibi görünmeye başlayabilirdi, ancak bunu yapmanın bir faydası olmayacaktı, bu olası görünmüyor. Sadece ön ucun kendisini tanımlamasına ve boş olmayan herhangi bir dize kabul etmesine izin verin.


Bir uygulamanın mülkiyeti değiştiyse, bu durum hayatı biraz zorlaştırır; örneğin, bizde depolanan API anahtarı ayrıntılarını güncelleyebiliriz, ancak uygulamanın bir kod değişikliği yapmasını gerektiren serbest biçimli metni kabul edersek.
Oli

1
@Oli Bir uygulamanın mülkiyeti değiştiyse ve (yeni) geliştirici, uygulamanın kimliğini güncellemenin uygun olacağını düşünürse (bir başkası onu koruduğundan dolayı gerçekten sahip olduğu), sorun ne olurdu? Sahiplik öncesi değişiklik ve sahiplik sonrası değişiklik arasında ayrım yapabilirsiniz, yalnızca bunları iki farklı uygulama olarak kabul edin. Yakında herhangi bir zamanda yeni bir sahibin başlığın adını fark etmesini beklemem.
Martin Maat

3
Bu benim işim. Müşterinin, uygulamanın adı ve / veya makinenin çalıştığı, sürüm vb. gibi diğer şeyleri çekmek için yansıma kullandığı bir yapı parametresine sahip olmalarını sağlayın. politika
Ewan

1
Örgütün sürüm kontrolü için ortak bir yaklaşımı varsa, örneğin herkes kodunu org'un GitHub sunucusunda tutuyorsa, her uygulamanın kendi deposuna ve oluşturulduğu taahhüt karesine bir URL göndermesini isteyin. Taahhüt karması, kod oluşturma sürecinin bir parçası olarak dahil edilebilir, bu nedenle geliştiricilerin herhangi bir şeyi güncellemelerine gerek yoktur. Repo URL'sine sahip olmak, sahibinin kim olduğunu görmenize olanak tanır ve belirli taahhütler almak sürümler arasındaki davranış farklarını fark etmenizi sağlar.
Caleb

@Caleb Eğer işler böyle merkezileşmiş olsaydı, OP muhtemelen bu problemi yaşamazdı. Anladığım kadarıyla, ön uç uygulama geliştiricileri, özel yazılım geliştirme yöntemleri ile OP için anonimdir.
Martin Maat

16

Kısacası:

İlk: kolaylaştırma ve faydalar; Gerekirse: sürtünme ve polis.

Biraz daha kelime

Kolaylaştırma : İlk önce, bir ekibin yeni bir API anahtarı edinmesini kolaylaştırın. Örneğin, yeni projelerin başlatılması için kurumsal prosedürlere bir hatırlatıcı ekleyin ve yeni bir anahtar talep etmek için gerekçelendirmek istemeden kolay kullanımlı bir hizmet sunun.

Yararları : Kendi API anahtarını kullanmanın ekip veya ürün sahibi için bir faydası olmasını sağlayın. Örneğin, uygulama kullanımına ilişkin bu anahtara göre geri bildirimde bulunun.

Sürtünme : Temel özelliğe bağlı olarak, örneğin, tuş belirli bir uygulama tanımlı etki alanına bağlıysa (örneğin, tuşların yeniden kullanılması tüm istenen hizmetlere erişim gerektirmeyebilir), sürtünme oluşturabilirsiniz.

Polislik : Son olarak, bazı polislik önlemlerini öngörmeniz gerekebilir. Örneğin, api fonksiyonlarının kullanımını api tuşuyla ve belirli bir sürenin ardından bir taban çizgisi oluşturmak için, taban çizgisi görünümünde beklenmeyen api parçalarının kullanımı hakkında sorgulama yapabilirsiniz. Veya bu gerçekçi değilse, kurumsal proje incelemesi kontrol listelerine geçerli bir anahtarın kullanıldığının doğrulanmasını ekleyin.

Not : API anahtarı politikanız konusunda çok açık olmanız gerekebilir: Yeni bir ana sürüm kendi API anahtarını ister mi? Ne çatalla ya da bir uygulama bölünmüşse? Ya başka bir ekip sorumluysa, vb ...


6

Genel olarak, geliştiricilerin "doğru olanı yapmalarını" sağlamanın en kolay yolu, bunu yapmalarını kolaylaştırmaktır.

Bu amaçla web sayfası / site veren bir API anahtarı oluşturmanızı tavsiye ederim. En basit haliyle, sadece bir giriş (ideal olarak kurumsal AD / LDAP'nize bağlı) ve sadece uygulama adını soran ve anahtarı veren sayfa olabilir.

Günün sonunda, anahtarları daha sonra her zaman iptal edebilirsiniz, bu nedenle sitenin tüm yapması gereken, anahtarı (kimin, kullanıcı adı) istediği ve onunla ne yapmak istedikleri (Uygulama Adı) istediği bilgileri kaydetmesidir. anahtarı daha sonra iptal et.

Biletleme sistemiyle benzer bir şey yapabilirsiniz, ancak günün sonunda bir anahtarı bir uygulamadan diğerine kopyalayıp yapıştırmak benim için çok kolay, bu yüzden kötü önlemek için yeni bir anahtar istemek gerçekten kolay olmalı davranışı.


1

Proaktif ol.

Olası geliştiricileri tanımlayın ve onlara benzersiz API anahtarlarını önceden güvenli bir kanalda verin. Yeni API anahtarları talep etmenin kolay bir yolunu sağlayın. Yeni API anahtarları isteyen yeni insanlara kolay bir yol sağlayın. Yeni stajyerler veya işe alımlar takıma katıldığında, açıklamadaki adımlarla onlara bir JIRA bileti veya benzeri bir "API anahtarı isteyin" verin.

Hangi API anahtarlarının kullanıldığını ve hangilerinin kullanılmadığını takip edin. Bob projede biletler sunmuş ancak API anahtarlarını kullanmamışsa, muhtemelen başkasının ödünç aldı.

Yönetim Desteği Var. Meraklı olmayan herhangi bir kurallar uydurma meraklı bir Nancy olmayın. Kelimenin tam anlamıyla Yönetimi, bunun önemli olduğuna ikna edin, sonra da grubu önemli olduğuna ikna eden onlardır. Herkesi ikna etmeye çalışmayın.

Ve en sinir bozucu ve tiranlığa eğilimli öneri: Yanlış kullanımın farkında olun ve aynı gün çökertin. Aynı saat en iyisidir. "Kötü Yaramaz Geliştirici" deme, "İşte uygun adımlar." Deme. Tekrar tekrar yaparlarsa, hatalı anahtarı devre dışı bırakın. Bu, hem Paylaştırıcıyı hem de Ödünç Alan'ı zorlaştırır ve paylaştırıcı gelecekte "Hayır, doğru şekilde yapın" diyecektir. Canlı projelerdeki anahtarları devre dışı bırakmaktan kaçının.


1

Geliştiricilerin API anahtarlarını dahili olarak paylaşmamalarına nasıl teşvik edebiliriz?

  • Self servis başvuru kaydı sonucunda anahtarları oluşturun .
  • Anahtarlar etkinleşmeden önce bir temas noktası isteyin .
  • Ve paylaşmalarını isteyin. (Hizmet şartları oluşturun ve / veya daha iyidir neden onlara kendileri için paylaşımına değil.)

Ayrıca, hız sınırlayıcı uygulamalısınız . Bu kendi içinde anahtar paylaşımını engelleyebilir. Sisteminizi kötü niyetli uygulamalara karşı bir ölçüde korur. (Ve düpedüz kötü niyetli olanlar.) Ve, erişilebilir trafikte büyük bir artıştan önce biraz bilgi sahibi olmanızı sağlar. (Kapasite eklemek için zaman vererek, umarım!

Ve hız sınırlamasıyla, bir uygulama daha yüksek bir limit gerektirdiğinde, anahtar için kayıtlı POC ile diyalog penceresini açar. Anahtarların paylaşılıp paylaşılmadığını sorma fırsatını elde edersiniz, bunun neden zararlı ve benzeri olduğunu açıklayın ve istenen oran sınırı değişiklikleri yerine uygun olduğunda ek anahtarlar önerebilirsiniz . Vb.


0

Özellikle ekipler paylaşılan bir derleme sistemi kullanıyorsa (veya en azından yeterince yaygın bir sistem kullanıyorsa), işleri yapmanın bir yolu, API anahtarları oluşturan ve veren bir iç sunucu oluşturmaktır (onu kullanan ürünle ilgili birkaç temel bilgi verilir) ). Ardından, her derleme için veya her sürüm güncellemesi için sunucudan yeni bir API anahtarı alan bir komut dosyası kullanın. Yerel geliştiriciler için de farklı bir anahtar edinmek üzere devs komut dosyasını çalıştırsın. (Mümkünse, bunu yapının bir parçası olarak otomatikleştirin, böylece düşünmeye bile gerek kalmazlar.)

Bu, üretimde QA veya dev olarak bir şey olup olmadığını ve problemlerin hangi versiyonda / inşada olduğunu söylemenize izin verir.


0

Yapabileceğiniz ilk ve en iyi şey, tuşları, uygulama adını kolay okunabilir bir biçimde içerecek şekilde biçimlendirmektir ve değiştirirseniz çalışmaz.

Takımların yanlış anahtar kullandığı açıksa, kullanmamaya çalışacaklardır.

Ardından, düzenli aralıklarla anahtarların kullanım sürelerinin dolması Bunu yine de yapmalısınız ve bir anahtarın son kullanma tarihi yaklaşırken, sahibi olan takıma yeni bir tane gönderebilirsiniz. Bir anahtar kullanan ekip, kendilerine ait olan takım olmalarını sağlamak için motive olur, böylece süresi dolduğunda yenisini alırlar.


1
Uygulamada anahtarların kullanım süresi sona erdiğinde evlat edinme başvurusu için çok büyük bir engel olabilir - daha sonra başları belaya gireceği için "fuggetaboutit" yazan yöneticileri görebiliyorum.
davidbak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.