SysAdmin Anywhere Облачный сервис для удаленного администрирования рабочих станций Игорь Маркин / [email protected] Андрей Калганов / [email protected] http://www.ria-media.net Идея Создать сервис для удаленного управления компьютерами: • Доступ к компьютеру, в целях безопасности, не должен быть открыт из интернета • Управление компьютером должно быть возможно из любого места • Компьютер должен быть доступен в режиме онлайн Реализация Для реализации необходим посредник, который: • Поддерживает постоянный защищенный канал с удаленным компьютером • Обеспечивает доступ к консоли управления • Пересылает запросы и ответы Windows Azure Почему Windows Azure? • Знакомая платформа • Легкое масштабирование • Балансировщик нагрузки • Разделение ролей • Хранилище • SQL Azure Архитектура Silverlight Web Role SQL Azure WPF, Win32 WP7 Worker Role Storage Worker Role Клиенты Администраторы Регистрация Биллинг Storage SQL Azure Worker Role WCF: ConcurrencyMode = Multiple, InstanceContextMode = Single Клиенты Клиенты Клиенты Администраторы Администраторы Администраторы Client Id Session Id Customer Id Session Key Callback Channel Admin Id Session Id Customer Id Session Key Callback Channel Передача данных Авторизация Обмен ассиметричными ключами(RSA) Передача симметричного ключа(AES) Авторизация (SHA256) Передача данных Сериализация JSON Сжатие(ZIP) Шифрование (AES) Что не подошло? Очереди (queues) • Ответ может превысить максимальный размер для сообщения • Можно служебную информацию оставить в сообщении, а текст ответа записать в BLOB. В сообщении указать ссылку на BLOB • При ссылке на BLOB, если сообщение удалено по тайм-ауту, BLOB остается Что не подошло? Очереди (queues) Что не подошло? Таблицы (tables) • Только три ключевых поля (PrimaryKey, RowKey и Timestamp) • При использовании в запросе других полей, большее время на запрос • Может оказаться, что этих полей пока еще нет и из-за этого происходит исключение • Трудно привыкнуть после опыта работы с SQL Спасибо за внимание! Идеи и предложения по реализации SysAdmin Anywhere: [email protected]