XML Web-службы в Microsoft SQL Server 2005
Страница 7. Безопасность и аутентификация


 

Безопасность и аутентификация

К обеспечению безопасности разработчики Yukon должны были подойти особенно внимательно: в наше время факт взлома какой бы то ни было системы определяется только временем. Web-службы с точки зрения безопасности являются дополнительной возможностью атаки для хакеров, поэтому без разработки особых мер предосторожности здесь просто не обойтись. Какие же средства для обеспечения безопасности имеет Yukon?

  • Для доступа к Web-службе необходимо иметь учетную запись в операционной системе на компьютере, где расположен SQL Server. Это может быть локальная или доменная учетная запись.
  • Передача пароля и его хешированного представления ни в каком виде не осуществляется открыто. Учетные данные пользователя всегда шифруются либо на транспортном уровне (ssl), либо на уровне протокола (ntlm, kerberos).
  • Учетная запись, под которой вы подключаетесь к Web-службе в случае интегрированной аутентификации, или учетная запись SQL Server, данные которой переданы в заголовке пакета SOAP в случае смешанной аутентификации, должны иметь доступ на соединение с конечной точкой.

Краеугольным камнем безопасности является аутентификация — процесс передачи и проверки удостоверения пользователя. Под удостоверением обычно понимают имя пользователя и пароль, хотя это могут быть smart-карты, отпечатки пальцев и т.д. Конфиденциальность паролей никоим образом не должна подвергаться риску, поэтому в Yukon для протоколов, которые к перехвату паролей неустойчивы, использование шифрования на транспортном уровне с помощью ssl является обязательным. Это, безусловно, создает некоторые проблемы для пользователей Web-службы и усложняет поддержку, однако существенно снижает риск перехвата удостоверений.

Ниже приводятся типы аутентификации, которые поддерживаются конечными точками в Yukon.

  • Basic — базовая аутентификация, при которой имя пользователя и пароль передаются в заголовках https-пакетов. Пароль при этом не шифруется и присутствует в чистом виде в кодировке base64. Для данного типа аутентификации использование ssl является обязательным.
  • Digest — дайджест-аутентификация, при которой пароль пользователя передается в хешированном виде. По уровню конфиденциальности паролей этот тип мало чем отличается от предыдущего, так как атакующему все равно, действительно ли это настоящий пароль или только хеш от него: перехватив удостоверение, он все равно получает доступ к конечной точке. Для данного типа аутентификации использование ssl является обязательным.
  • Integrated — интегрированная аутентификация, при которой клиент и сервер общаются для выяснения подлинности друг друга с помощью протоколов NTLM или Kerberos. Этот тип аутентификации защищен от перехвата удостоверений пользователей, поэтому для него не требуется протокол ssl. Только при использовании данного типа аутентификации можно работать по https, во всех остальных случаях необходимо использовать httpss.

Кроме настройки типа аутентификация на уровне конечной точки, у нас есть возможность настроить тип учетной записи на уровне каждого отдельного Web-методa. Тип учетной записи может быть следующим.

  • Windows — в данном случае учетные данные пользователя, которые были получены при соединении с конечной точкой, должны представлять пользователя в SQL Server. Если такой учетной записи не существует, клиенту возвращается ошибка.
  • Mixed — в этом случае учетные данные пользователя, полученные в процессе соединения с конечной точкой, отбрасываются. Вместо них используются имя пользователя и пароль, которые переданы в заголовке soap-сообщения. Таким образом, в этом режиме пользователю не обязательно иметь учетную запись в SQL Server, которая была бы основана на учетной записи Windows. В таком режиме можно использовать всего одну учетную запись Windows для авторизации на уровне конечной точки для всех клиентов и специальные учетные данные для применения конкретных Web-методов. Так как имя пользователя и пароль передаются в заголовке в открытом виде, для данного режима использование ssl является обязательным.

Итак, перечислим действия, которые необходимо предпринять администратору, чтобы разрешить вызывать метод hello_world нашей Web-службы HelloFromYukon пользователю домена vasja.

  1. Создать учетную запись на сервере: create login [domain\vasja] from windows.
  2. Создать учетную запись пользователя в тестовой базе данных для учетной записи сервера: create user vasja for login [domain\vasja].
  3. Предоставить право на исполнение хранимой процедуры hello_world: grant execute on hello_world to vasja.
  4. Предоставить право на соединение с данной конечной точкой: grant connect on endpoint::HelloFromYukon to [domain\vasja]

 
« Предыдущая статья   Следующая статья »