Як можна відмовитися від спільного використання внутрішніх ключів API в компанії?


37

Ми працюємо над новою послугою - ця послуга потенційно може бути викликана безпосередньо з програм на пристроях користувача. Ці додатки будуть розроблені та підтримані декількома командами розробників з усієї організації, все залежно від даних, які ми надаємо.

Ми прагнемо визначити, які програми надсилають, які запити, щоб ми могли визначити схеми використання та відповідальних розробників. (Щоб уникнути сумнівів, автентифікація користувача обробляється окремо.)

Наше рішення - вимагати ключі API, по одній програмі - тоді ми маємо контактні дані для команди розробників.

Ми не хочемо, щоб ключі API були джерелом тертя, але ми стурбовані тим, що розробники поділять їх колегам в інших командах, тобто ми не можемо більше визначати трафік лише для однієї програми.

Як можна стимулювати розробників не ділитись ключами API внутрішньо?


5
Як ці команди отримають доступ до API? Через внутрішню мережу? Як правило, різні команди розміщуються в різних підмережах, щоб ви могли примусити мережу використовувати певний ключ API ... У будь-якому разі соціальне рішення полягає в тому, щоб сказати їм "важливо, щоб ви не ділилися цим ключем API не для безпеки, а тому що ми потрібні показники різних користувачів, щоб покращити її. Якщо хтось попросить вас, просто скажіть їм, щоб вони попросили нас, і ми з радістю та ефективно надамо їм ключ API ".
Джакомо Альзетта

3
Якщо ви не хочете, щоб люди ділилися ключами з колегами, спростіть увімкнути файл конфігурації, який ігнорується системою версій (щоб ключ ніколи не зафіксувався), а також спростіть створення нових ключів. Ніхто не буде заважати ділитися секретним ключем, якщо інший розробник може легко створити новий ключ самостійно. Проблема спільного використання особистих ключів зазвичай є проблемою, викликаною тим, що отримання нових ключів потребує часу.
Султан

Чи обмірковували ви потребувати реєстрації під час першого запуску програми? Він може відображати екран заставки, запитуючи контактні дані користувача (або будь-яку інформацію, яка вам потрібна), а потім видавати ключ API на місці.
Джон Ву

"Як можна стимулювати розробників не ділитися ключами API внутрішньо?" Простіше кажучи, прив’яжіть кожну клавішу до MAC-адреси мережевої карти (-ів) у комп’ютерах, які ними керують. Мережеві протоколи запобігають використанню одних і тих же MAC-адрес у одній і тій же мережі, щоб люди не могли використовувати одні і ті ж ключі знову і знову. Я зробив би це у відповідь, але наразі не маю відповіді на це.
Блерг

Цікаво, що я не бачу слова "обертання" (як при обертанні ключа - закінчення / обертання облікових даних) ніде на цій сторінці. Як тільки хтось отримує ключ, чи має він обмежений термін експлуатації, після якого його потрібно повертати з використання та замінювати новим? Якщо ні, то чому б і ні?
Michael - sqlbot

Відповіді:


76

Для того, щоб поділитися цими ключами між командами, команди повинні поговорити між собою, погодитися поділитися, а потім поділитися ними. На це потрібен час. Тож якщо команда може вимагати ключі API від вас швидше та простіше, не можна стимулювати ділитися.

І найпростіший спосіб запитувати ці ключі - це попередньо видалити їх. Припустимо, що ви знаєте всі інші команди, яким знадобляться ключі API, створіть їх і поділіться ними, перш ніж зробити послугу доступною для них.

Є ще один стимул, який ви можете запропонувати: підтримка налагодження. Ці команди бажають вашої допомоги, коли справи не працюють належним чином, коли вони інтегрують свою роботу з вашими послугами. Ці ключі API дозволяють відстежувати їх конкретні запити і таким чином допомагати налагоджувати те, що відбувається не так. Тож продайте це як причину ключів, а не « визначайте схеми використання та відповідальні розробники », що здається, ви шпигуєте за їх діяльністю.


2
Що стосується: спільного використання, в ідеальному світі ти маєш рацію - але ти вважаєш, що вони мають ідеальну інформацію (хоча я можу допомогти, спрямувавши їх на документи зі схеми, кореня кінцевої точки та будь-яких помилок) та спільного управління, і не реальність, де все, що вони можуть мати, є кінцевою точкою та деяким кодом, скопійованим з іншої команди, який їм пересилав старший менеджер.
Олі

3
Re: попереджаючи, ви абсолютно праві, нам слід наполегливо створювати та надсилати ключі зацікавленим сторонам. Те, що я не згадував, - це те, що деякі з цих програм використовують загальний фреймворк / інтерфейс, і ми, можливо, можемо напівавтоматично вводити або застосовувати унікальні ключі на цьому шарі, але це не стосується всіх програм.
Олі

1
@Ewan, якщо ви просто відключите доступ до заданого ключа, всі користувачі будуть бігти до вас - не потрібно їх переслідувати. І тоді ви можете дати їм унікальні ключі :)
Олексій Левенков

15
Попереднє видалення має приймати таку форму: при зверненні до API без ключа створюється повідомлення про помилку із посиланням на сторінку, де ви подаєте заявку на отримання ключа. Не чекайте, що хтось прочитає документацію. Стимули не працюють, коли про них ніхто не знає.
candied_orange

1
Якщо повідомлення про помилки або журнали налагодження автоматично надсилаються електронною поштою на адресу, пов’язану з ключем, кожен, хто захотів, щоб дані отримали стимул використовувати свій власний ключ - і кожен, кому поділився ключ, мав би стимул відстежувати особу, яка ним поділилася. і змусити їх зупинитися.
Робін Беннетт

20

Хороші відповіді вже, я просто думав про інший підхід, який може чи не може працювати для вас.

Замість того, щоб видавати ключі, ви можете вимагати, щоб заголовок запитів містив ім'я переднього додатка, який повинен бути створений та відформатований розробником програми на передньому кінці, як це роблять веб-браузери. Таким чином, передні кінці все ще можуть претендувати на інше застосування, але не буде користі для цього, що здається малоймовірним. Просто нехай передній кінець ідентифікує себе і прийме будь-яку непусту рядок.


Це може зробити життя дещо складнішим, якби право власності на додаток змінилося - наприклад, ми могли просто оновити деталі ключових даних API, що зберігаються на нашому кінці, але якщо ми приймемо текст вільної форми, який вимагає від програми змінити код.
Олі

1
@Oli Якщо право власності на додаток зміниться, і (новий) розробник вважатиме за доцільне оновити особу програми (яка вона справді є, оскільки її підтримує хтось інший), у чому проблема? Ви можете розмежовувати зміни до власності та зміни власності, лише розглядати їх як дві різні програми. Я б не очікував, що будь-який новий власник незабаром помітить це ім’я у заголовку.
Мартін Мейт

3
Це я і роблю. у клієнта є параметр побудови, який називає додаток та / або використовувати відображення для витягування інших речей, таких як машина, на якій він працює, його версії тощо. Ключовим моментом є можливість звітувати, коли люди НЕ слідкують за вашим api політика
Еван

1
Якщо організація має загальний підхід до контролю версій, наприклад, кожен зберігає свій код на GitHub-сервері org, кожен додаток повинен надсилати URL-адресу на його репо-репортаж та хеш-файлу, з якого він був побудований. Хеш комітів може бути включений до коду як частина процесу збирання, тому розробникам не потрібно нічого оновлювати. Наявність URL-адреси репо дозволяє вам побачити, хто є власником, а отримання конкретних комісій дозволить вам помітити відмінності в поведінці між версіями.
Калеб

@Caleb Якби такі речі були централізовані, то ОП, ймовірно, не мала б цієї проблеми. З того, що я розумію, розробники прикладних програм є анонімним лотом до ОП, з приватними способами розробки програмного забезпечення.
Мартін Мейт

16

Коротко:

По-перше: полегшення та переваги; При необхідності: тертя та поліція.

Ще кілька слів

Полегшення . По-перше, спростіть команду отримати новий ключ API. Наприклад, додайте нагадування у корпоративних процедурах для запуску нових проектів та запропонуйте просту у користуванні послугу, щоб запитувати нові ключі, не вимагаючи пояснення.

Переваги . Зробіть власний ключ API корисним для команди або власника продукту. Наприклад, запропонуйте відгуки про використання додатків на основі цього ключа.

Тертя : залежно від ключової функції, ви можете створювати тертя, наприклад, якщо ключ пов'язаний із визначеним додатком доменом сомом (тобто повторне використання ключів не обов'язково надасть доступ до всіх бажаних послуг).

Поліцейські дії : Нарешті, можливо, вам потрібно буде передбачити деякі заходи поліції. Наприклад, ви можете відстежувати використання функцій api клавішею api та через певний час встановити базову лінію, запитуючи про використання частин api, яких не очікується з огляду на базову лінію. Або якщо це не реально, просто включіть у контрольні списки огляду корпоративного проекту підтвердження того, що був використаний дійсний ключ.

Зауваження : можливо, вам буде потрібно дуже чітко ознайомитись з ключовою політикою API: Чи потрібна нова нова версія власного ключа API? Що з виделкою, або якщо додаток розділено? що робити, якщо інша команда відповідає тощо.


6

Як правило, найпростіший спосіб змусити розробників "зробити все правильно" - це зробити їх легким для цього.

З цією метою я б запропонував створити веб-сторінку / сайт, що видає ключ API. У своєму найпростішому вигляді це може бути лише логін (ідеально прив’язаний до вашого корпоративного AD / LDAP) та сторінка, яка просто запитує назву програми та видає ключ.

Зрештою, ви завжди можете відкликати ключі пізніше, тому все, що вам дійсно потрібно зробити, це записати, хто (ім’я користувача) запитав ключ і що (ім’я програми) вони хочуть зробити з ним - разом з будь-якою інформацією, необхідною для відкликають ключ пізніше.

Ви можете зробити щось подібне із системою продажу квитків, але наприкінці дня мені дуже просто скопіювати та вставити ключ з однієї програми в іншу, тому запитувати новий ключ потрібно дуже просто, щоб уникнути поганого поведінка.


1

Будьте проактивними.

Заздалегідь визначте ймовірних розробників та надайте їм унікальні ключі API у захищеному каналі. Надайте простий спосіб запиту нових ключів API. Забезпечте простий спосіб для нових людей, які вимагають нових ключів API. Коли нові ординатори або наймачі приєднуються до команди, надайте їм квиток JIRA або подібний «Попросити ключ API», виконуючи кроки в описі.

Слідкуйте за тим, які ключі API були використані, а які - ні. Якщо Боб подав квитки в проект, але він не використовував свої ключі API, він, ймовірно, позичив чужі.

Мати підтримку керівництва. Не будьте Носі Ненсі, збираючись будь-яких правил, які не мають значення. Буквально переконайте керівництво, що це важливо, і тоді вони переконують групу, що це важливо. Не працюйте над тим, щоб переконати всіх.

І найприємніша та схильна до тиранії пропозиція: Будьте в курсі зловживань, і в цей же день виламіть. Та сама година найкраща. Не кажіть, що «Bad Naughty Developer» скажіть «Ось правильні кроки». Якщо вони роблять це неодноразово, вимкніть неправильно використаний ключ. Це турбує і Пайора, і того, хто позичив, і в майбутньому пайовик скаже «Ні, роби це правильно». Уникайте відключення ключів, які перебувають у проектах, що живуть


1

Як можна стимулювати розробників не ділитись ключами API внутрішньо?

  • Створення ключів у результаті реєстрації додатків для самообслуговування .
  • Потрібна точка дотику, перш ніж ключі активуються.
  • І попросіть їх не ділитися. (Створити умови обслуговування і / або сказати їм , чому це краще для них , щоб не розділити.)

Вам також слід запровадити обмеження ставок . Це само по собі може відмовити спільному користуванню клавішами. Він певною мірою захищає вашу систему від зловживань. (І прямо шкідливі.) І це гарантує, що ви будете дещо поінформовані перед масовим збільшенням справного трафіку. (Даю вам час на додавання потужності, сподіваюся!)

І з обмеженням швидкості, коли програма вимагає більш високої межі, вона відкриває діалог з POC, зареєстрованим для ключа. Ви отримуєте можливість запитати, чи поділяються ключі, поясніть, чому це шкідливо і так далі, і ви можете запропонувати додаткові ключі, коли це доречно замість запитуваних змін ліміту тарифу. І т.д.


0

Один із способів зробити те, особливо якщо команди використовують спільну систему збирання (або хоча б достатньо поширену) - це налаштувати внутрішній сервер, який створює та видає ключі API (з урахуванням кількох основних бітів інформації про продукт, що використовує його ). Потім використовуйте скрипт, який захоплює новий ключ API від сервера для кожної збірки або для кожного оновлення версії. Дозвольте розробникам запустити сценарій, щоб отримати інший ключ також для своїх локальних збірок. (Де це можливо, автоматизуйте це як частину збірки, щоб їм навіть не потрібно було думати про це.)

Це дозволить вам сказати, чи було це щось у виробництві, QA або dev, і в якій версії / побудові почалися проблеми.


0

Перше і найкраще, що ви можете зробити - це відформатувати клавіші так, щоб вони містили ім'я програми у легко читабельній формі, а не працювали, якщо ви їх змінили.

Якщо це очевидно, коли команди використовують неправильний ключ, вони намагатимуться цього не робити.

Потім періодично закінчуйте термін дії клавіш. Ви повинні це зробити в будь-якому випадку , і коли ключ наближається до закінчення терміну дії, ви можете надіслати новий команді, яка йому належить. Команда, яка використовує ключ, потім буде мотивована, щоб переконатися, що вони є тією командою, яка володіє ним, так що вони отримають новий, коли термін його дії закінчиться.


1
на практиці, хоча термін дії ключів може бути занадто сильним перешкодою для прийняття програми - я можу побачити, що менеджери говорять "fuggetaboutit", оскільки це буде просто проблема пізніше.
davidbak
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.