Аутентификация и авторизация
Безопасность кода защищает нормальную, повседневную эксплуатацию приложения, инструмента или демона. Когда Ваш код находится под осадой, но что происходит? Часто важно знать не только, что делает пользователь, но также и кто пользователь и разрешают ли пользователю сделать это. Это - то, где аутентификация и авторизация играет роль.
Аутентификация
- “Если Вы будете знать себя, но не Вашего врага, поскольку каждая победа получила Вас, то также потерпит поражение”.
— Сунь Цзы, Искусство войны
При обеспечении программного обеспечения первой вещью, которую необходимо сделать, является находка способ отличить друга от противника. Этот процесс вызывают аутентификацией.
В компьютерной безопасности аутентификация проверяет идентификационные данные пользователя или службы. Аутентификация обычно служит одной из двух целей:
Как предшественник авторизации, идентифицируя объект запроса, чтобы определить, должен ли тот объект иметь разрешение выполнить работу
Для создания журнала аудита путем журналирования, кто выполнил работу так, чтобы вина могла быть брошена, когда что-то повреждается
Три типа аутентификации наиболее распространены:
Аутентификация локального пользователя. Проверка идентификационных данных пользователя обычно выполняется операционной системой как первый шаг в авторизации. Если Ваш код выполняет как обычный пользователь, пределы операционной системы, что Ваш код может сделать на основе полномочий того пользователя. Ваш код может также попросить у операционной системы идентификационных данных пользователя для контроля целей.
Аутентификация сетевого узла. Проверка подлинности удаленного сервера часто необходима — например, чтобы определить, безопасно ли отправить данные кредитной карты в определенный веб-сайт. (Цифровые сертификаты, описанные в следующей главе, являются распространенным способом достигнуть этого.)
Аутентификация удаленных пользователей. Пользователи часто аутентифицируются удаленными серверами при выполнении определенных задач. Аутентификация пользователя удаленно требует, чтобы Ваш код отправил учетные данные в некоторой форме, такой как пароль, cookie или цифровой сертификат.
Авторизация
Авторизация является процессом, которым объект, такой как пользователь или сервер получает разрешение выполнить ограниченную работу. Термин также часто используется для обращения вправо себя, поскольку в “Солдате имеет авторизацию ввести топливную цистерну команды”.
Различие между аутентификацией и авторизацией является несколько тонким. Часто, простой факт, что у пользователя есть учетная запись, означает, что пользователь разрешен сделать что-то, когда аутентификация и авторизация является той же вещью. Однако в более сложных системах, различие становится более очевидным.
Рассмотрите компьютер с двумя пользователями. Каждый пользователь известен системе. Поэтому оба пользователя могут каждый войти в систему компьютера, и он аутентифицирует их. Однако никакой пользователь не разрешен изменить файлы других, и в результате никакой пользователь не может сделать так.
Подробные данные авторизации зависят от того, используете ли Вы iOS или OS X.
В iOS пользователь может установить код доступа (который по умолчанию является четырехразрядным персональным идентификационным номером) предотвратить неправомерное использование устройства. После ввода этого кода доступа пользователь устройства, как предполагают, разрешен использовать устройство. Кроме того, каждое приложение снабжено цифровой подписью и может поэтому аутентифицироваться операционной системой. Поэтому нет никакой аутентификации пользователя или авторизации APIs в iOS.
В OS X существует несколько уровней авторизации:
Если (полное шифрование диска) FileVault 2 включено, компьютер требует, чтобы пароль дешифровал загрузочный том.
Если автоматический вход в систему отключен, OS X выводит на экран экран входа в систему после начальной загрузки.
Когда пользователь выходит из системы, OS X также выводит на экран экран входа в систему.
Если надлежащий флажок в предпочтительной области Системы безопасности проверяется, OS X выводит на экран экран входа в систему при пробуждении от сна или при отъезде экранной заставки.
Когда приложение или инструмент запрашивают доступ к заблокированной цепочке для ключей, пароль требуется.
Если приложение или потребности инструмента поднятые полномочия, требуется пароль администратора.
Некоторые приложения могут ограничить доступ к частям их функциональности через Authorization Services API.
Кроме того, и на OS X и на iOS, некоторые приложения могут потребовать, чтобы Вы вошли в систему удаленного сервера, поочередно выполняющего аутентификацию и авторизацию.
Узнавать больше
Для более подробного концептуального обзора аутентификации и авторизации в OS X считайте Аутентификацию, Авторизацию и Руководство по Полномочиям.
Можно также узнать о другом Apple и сторонних книгах безопасности в Других Ресурсах Безопасности.