Захист WMS від несанкціонованого доступу?


21

У проекті замовник хоче, щоб зображення WMS були захищені від несанкціонованого доступу.

Які загальні рішення для цього зрозуміти?

Чи сумісні вони зі стандартами OGC?

Відповіді:


17

Специфікація OGC передбачає лише використання http. Якщо він сумісний http, це повинно бути добре.

Деякі можливі методи:

  • Основна автентифікація HTTP (пароль, надісланий як звичайний текст, може мати обмежену підтримку клієнта)
  • Перевірка автентичності HTTP (більш безпечна, можливо, обмежена підтримка клієнта)
  • Фільтр IP-адреси клієнта (простий у виконанні, але не особливо безпечний).
  • Секретна URL-адреса. Використовуйте GUID, щоб генерувати URL, який не можна зрозуміти. Передбачає, що клієнти зберігатимуть URL-адресу в секреті. Користувач набагато простіший у використанні, ніж введення пароля. Гарантована підтримка клієнтів.

11

У цій публікації OGC від 2005 року сказано:

Немає конкретних аспектів безпеки, які є частиною специфікацій інтерфейсу OGC WMS / WFS / WCS. Натомість безпеку та автентифікацію найкраще обробляти на іншому шарі стека обробки.


4

Якщо безпеки через неясність достатньо для ваших цілей, ви можете налаштувати помилкове розширення для шару:

Просто використовуйте координати з іншого боку Землі. Шар все ще відображатиметься у списку шарів, запити все ще будуть можливі, але якщо користувач просто вибере його у програмному забезпеченні GIS та вибере "масштабування до шару", він нічого не побачить і може подумати, що цей шар просто порожній або не робота. Додаток, що знає правильне розширення шару, все ще повинен мати доступ до нього.

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


3

Ви можете вимагати, щоб користувачі підключалися до WMS через HTTP, захищений VPN. Це ставить рівень безпеки на рівень мережі IP, але, безумовно, додає складності.



2

Якщо у вас є таке:

Ви можете створити api_keysтаблицю з access_tokenта expires_atстовпцями. Потім додайте параметр запиту рядка &api_key=my_unique_key. Ваш Mapfile для tileindex ( див. Приклад ) буде налаштовано приблизно так:

DATA "geom FROM (
  SELECT
   my_table.geom,
   my_table.gid,
  api_keys.access_token
  FROM my_table
  CROSS JOIN api_keys
  WHERE ST_Intersects(geom, !BOX!) and api_keys.expires_at > now()
) AS subquery USING UNIQUE gid USING SRID=4326"
FILTER "access_token = '%api_key%'
VALIDATION
  'api_key' '^[a-zA-Z0-9\_\-]{33}$'
  'default_api_key' ''
END

Ідея полягає у тому, що ваше окреме додаток, яке автентифікує користувачів до бази даних, оновило б api_keysтаблицю, встановивши access_tokenхеш md5 і expires_atоновивши стовпець до деякого моменту в майбутньому.

Крім того, ви можете проксі-трафік до окремої основи, яка обробляє автентифікацію WMS / OWS та надає проксі-сервіси авторизованим користувачам до внутрішнього сервера Mapserver. Ось список, отриманий з публікації до списку розсилки користувачів серверів mapserver , який є розширеним / узагальненим списком того, що відповіли інші на це запитання.

Якщо ви коли-небудь вирішите використовувати Geoserver, подивіться на модуль AuthKey .


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