2014-12-30 3 views
1

У нас есть api_key, api_secret для доступа к различным внешним сервисам. Это текущая архитектура/модель.Как защитить ключи API от кражи при совершении удаленных вызовов

пользователей (идентификатор, электронная почта ...) user_service_configs (идентификатор, user_id, api_key, api_secret)

Автономное приложение вызывает автономную службу, работающие на той же машине и проходами (user_id, api_key, api_secret) на проводе , Отдельная служба выполняет удаленный вызов внешней службы с использованием переданной информации. Ключ/секретные значения зависят от пользователя, поэтому он будет отличаться для всех. Я бы хотел, чтобы кто-то не следил за этими ценностями и не крал их.

Что было бы идеальным дизайном для управления этими api_key/secret (s). Должен ли я просто передать user_id и выполнить поиск базы данных на сервере, чтобы получить api_key/secret (s) или что еще я могу сделать, чтобы сделать это безопасным.

ответ

0

Чтобы решить основной вопрос в заголовке «Как защитить ключи API от кражи при выполнении удаленных вызовов», я бы рекомендовал использовать TLS/SSL. Соединение HTTPS с удаленной службой гарантирует, что любые конфиденциальные данные, такие как ключи API, переданные по кабелю, будут зашифрованы до конца. Это защитит от атак типа «человек в середине», когда злоумышленник может иметь доступ к проводу.

Боюсь, я недостаточно понимаю вашу архитектуру, чтобы еще больше помочь в управлении ключами/секретами API.

+0

Удаленная служба не принадлежит нам, и некоторые из них по-прежнему не защищены, это то, что я не могу контролировать. Я ищу, чтобы выяснить, как управлять ключами в среде приложения. – Rpj

+0

Хорошо, поэтому, если я правильно понимаю, ваша забота - это больше о защите ключей/секретов API, хранящихся на компьютере, на котором размещены автономные приложения и службы. Можете ли вы рассказать подробнее о своем окружении? Например, это серверная среда Windows/Linux или мобильное приложение? Похоже, что ключи/секреты API хранятся в базе данных прямо сейчас для каждого пользователя. Где находится эта база данных? –

+0

База данных MySQL размещается в экземпляре RDS. Сервер (ы) запускаются в экземплярах EC2 на основе AMI на основе AMI. В настоящее время ключи api хранятся в виде обычного текста в определенной таблице. – Rpj

Смежные вопросы