Mengamankan WMS dari akses yang tidak sah?

21

Dalam sebuah proyek, pelanggan menginginkan gambar-gambar WMS diamankan dari akses yang tidak sah.

Apa solusi umum untuk menyadarinya?

Apakah mereka kompatibel dengan standar OGC?

Mnementh
sumber

Jawaban:

17

Spesifikasi OGC hanya mengamanatkan penggunaan http. Jika sudah sesuai dengan http, seharusnya tidak apa-apa.

Beberapa metode yang mungkin:

  • Otentikasi Dasar HTTP (kata sandi dikirim sebagai teks biasa, mungkin memiliki dukungan klien terbatas)
  • HTTP Digest Authentication (lebih aman, mungkin memiliki dukungan klien terbatas)
  • Memfilter alamat IP klien (mudah diimplementasikan tetapi tidak terlalu aman).
  • URL rahasia. Gunakan GUID untuk menghasilkan URL yang tidak dapat ditebak. Anggap klien akan merahasiakan URL. Jauh lebih mudah bagi pengguna untuk digunakan daripada entri kata sandi. Dukungan klien terjamin.
Matthew Snape
sumber
11

Posting OGC ini dari tahun 2005 mengatakan:

Tidak ada aspek keamanan khusus yang merupakan bagian dari Spesifikasi Antarmuka OGC WMS / WFS / WCS. Sebaliknya, keamanan dan otentikasi paling baik ditangani pada lapisan lain di tumpukan pemrosesan.

Kirk Kuykendall
sumber
4

Jika keamanan melalui ketidakjelasan cukup untuk tujuan Anda, Anda mungkin mengonfigurasi ekstensi palsu untuk layer:

Cukup gunakan koordinat di sisi lain Bumi. Lapisan masih akan muncul di daftar lapisan, permintaan masih akan mungkin tetapi jika pengguna cukup memilihnya dalam perangkat lunak GIS dan pilih "zoom to layer" dia tidak akan melihat apa-apa dan mungkin berpikir bahwa lapisan ini hanya kosong atau tidak kerja. Aplikasi yang mengetahui perluasan layer yang benar harus tetap dapat mengaksesnya.

Saya sudah melihat solusi ini diterapkan pada beberapa situs WMS, tetapi mungkin tidak sepenuhnya memenuhi standar OGC karena server mengembalikan perluasan yang salah.

Nama
sumber
3

Anda dapat meminta pengguna terhubung ke WMS melalui HTTP yang diamankan oleh VPN. Ini menempatkan lapisan keamanan pada tingkat jaringan IP, tetapi tentu saja menambah kompleksitas.

mwalker
sumber
2

Dengan asumsi Anda memiliki yang berikut ini:

Anda bisa membuat api_keystabel dengan access_tokendan expires_atkolom. Kemudian tambahkan parameter querystring &api_key=my_unique_key. Mapfile Anda untuk tileindex ( lihat contoh ) akan dikonfigurasikan seperti ini:

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

Idenya adalah aplikasi terpisah Anda yang mengotentikasi pengguna ke database akan memperbarui api_keystabel, mengatur access_tokenhash MD5 dan menjaga expires_atkolom diperbarui ke beberapa titik di masa depan.

Atau, Anda dapat mem-proxy lalu lintas ke kerangka kerja terpisah yang menangani otentikasi WMS / OWS dan proksi pengguna yang berwenang ke Mapserver internal. Berikut adalah daftar yang diperoleh dari pos ke milis mapserver-pengguna , yang merupakan daftar diperluas / diringkas dari apa yang orang lain telah jawab untuk pertanyaan ini.

Jika Anda pernah memutuskan untuk menggunakan Geoserver, lihatlah modul AuthKey .

Pete
sumber