امنیت ArcGIS for Server-موسسه چشم انداز-آموزش کاربردی GIS و RS
داده، اطلاعات و اپلیکیشنها کارمندهای دیجیتالی اداره هستند. وقتی این موارد گسترش مییابند و با گرههای موجود در اداره ارتباط برقرار میکنند دادههای مورد تبادل در خطر قرار میگیرند. امنیت داده بخش اساسی و مهم یک محصول است. احراز هویت، امنیت سنج و یا محاسبه کنندهی امنیت نیست، ولی یکی از نیازهای ضروری یک محصول است. احراز هویت تضمین میکند که کسی حق دسترسی به دادهها را ندارد مگر اینکه مجوز داشته باشد. در فصل قبلی با پیادهسازی تکنیک کلاستربندی، GIS سرویسها را روی ماشینها توزیع کردیم تا کارآمدتر اجرا شوند. این GIS سرویسها باید در مقابل دسترسیهای غیر مجاز ایمن باشند. مجموعهای از مکانیسمها و ترفندهای امنیتی برای محافظت از GIS سرویسها وجود دارند که باید پیکربندی شوند. دو مجموعهی GIS server tier و web server tier برای پیکربندی احراز هویت و امنیت وجود دارد. GIS-tier یک مجموعهی توکار است که ArcGIS for Server آن را مدیریت میکند و از تکنولوژی ArcGIS برای احراز هویت استفاده میکند. در حالی که Web-tier از مکانیسمهای احراز هویت وب سرور اختصاصی استفاده میکند. در این فصل امنیت ArcGIS for Server را با استفاده از این متدها پیادهسازی میکنیم.
جداول نقش و کاربر
قبل از وارد شده به مبحث GIS-tier و Web-tier ابتدا باید جداول نقش و کاربر را توضیح دهیم. ArcGIS for Server، برای فراهم کردن امنیت داده و شبکه، درخواستهایی که به GIS سرویسها ارسال میشوند را شناسایی و تعیین میکند. این کار با اعطای وظایف به کاربری که متوسط ارجاعات و درخواستها را دارد، انجام میشود. سپس سرور درخواستها را احراز هویت میکند و دسترسی یا عدم دسترسی به GIS سرویسها را بر اساس وظایف تخصیص دادهشده مشخص میکند. سرور برای این کار به دو جدول نیاز دارد. 1- جدول کاربر 2- جدول وظایف.
پیکربندی جداول وظایف و کاربر توسط مخزن وظایف و کاربران بهصورت دستی انجام میشود. سرور این مخزن را نگهداری میکند و یا اینکه این مخزن را به دامنهی ویندوز متصل میکند.
GIS server tier با ArcGIS امنیت
متد علامت ArcGIS for Server یک مکانیسم امنیتی توکار است که درخواستهای ارسالی به GIS سرویسها را احراز هویت میکند. Esri متد احراز هویت را باید بهصورتی فراهم کند که به یک محصول موجود وابسته نباشد و این متد مستقل کار کند.
نحوهی کارکرد این متد بهصورت زیر است:
1- مشتری درخواستی برای استفاده از یک GIS سرویس ایجاد میکند.
2- ArcGIS for Server به مشتری پیام میدهد که نام کاربری و رمز را وارد کند.
3- مشتری نام کاربری و رمز را وارد میکند. سپس سرور نام کاربری و رمز مشتری را روی مخزن کاربر بررسی و شناسایی میکند.
4- اگر نام کاربری و رمز درست وارد شده باشند، سرور نام کاربری، رمز و تاریخ انقضای علامت را با هم ترکیب میکند و استاندارد رمز گذاری پیشرفته را اعمال میکند. این استاندارد با استفاده از یک کلید، ترکیب نام کاربری، رمز و تاریخ انقضای علامت را بهصورت یک رشته متنی در میآورد. حال به این رشتهی متنی رمزگذاری شده ” علامت ” گفته میشود.
5- علامت تا زمان منقضی شدن درخواست به درخواست پیوست میشود.
نمودار زیر این فرآیند را نشان میدهد:
دو نمونه علامت وجود دارد: 1- کوتاه مدت 2- بلند مدت. علامت کوتاه مدت دورهی انقضای نسبتاً کوتاهتری دارند. هنگام تولید یک علامت اگر دورهی انقضاء مشخص نشود، بهصورت پیشفرض کوتاه مدت به علامت اعمال میشود. اعتبار علامت کوتاه مدت بر اساس دقیقه محاسبه میشود در حالی که برای بلند مدت بر اساس روز میباشد. از آنجا که اعتبار علامت کوتاه مدت به سرعت تمام میشود، امنیت بالاتری نسبت به علامت بلندمدت دارند. در علامت کوتاه مدت مشتری باید به کرات احراز هویت شود که ممکن است مشتری را در محیطی با امنیت پائین، اذیت کند.
فعال سازی امنیت علامت ArcGIS
برای پیکربندی امنیت ArcGIS for Server باید از علامتهای ArcGIS و جداول توکاراستفاده کنیم. وارد ArcGIS for Server Manager شوید و نام کاربری و رمز مدیر اولیه را وارد کنید. روی سربرگ Security کلیک کنید و مراحل زیر را دنبال کنید:
1- در صفحهی تنظیمات، در قسمت Configuration Settings برای ویرایش تنظیمات، علامت مداد را کلیک کنید.
2- در پنجرهی ظاهر شده، Users and roles from ArcGIS Server’s built-in store را انتخاب کنید. با استفاده از این گزینه ArcGIS for Server وظایف و کاربران را مدیریت میکند. با این گزینه وظایف و کاربران را بهصورت دستی وارد و نگهداری میکنید.
3- Next و سپس finish را بزنید.
در قسمت Configuration Settings دو گزینهی User Store و Role Store را میبینید. User Store جدول کاربر است که شامل همهی کاربران GIS است و Role Store که جدول وظایف و نقشها است که شامل وظایف پیکربندیشده در ArcGIS for Server است. هر دوی این گزینه از مخزن توکار ArcGIS Server استفاده میکنند. گزینههای Authentication Tier و Authentication Mode توسط علامت ArcGIS در GIS-tier تنظیم میشوند.
اضافه کردن وظایف و کاربران جدید
امنیت سرور را با استفاده از علامت تنظیم کردیم اما باید کار بیشتری انجام دهیم. از آنجا که هیچ نقش و کاربری نداریم باید آنها را اضافه کنیم.
سربرگ Security را بزنید. سپس سربرگ Users را برای مشاهدهی مخزن کاربر بزنید. هیچ کاربری وجود ندارد. پس روی New User کلیک کنید. در فرم ظاهر شده در فیلد Username عبارت gisuser01 را وارد کنید. فیلدهای رمز و ایمیل را نیز پر کنید. یک جعبهی خاکستری میبینید که مربوط به نقش است و با توجه به اینکه هنوز هیچ نقش ای تعیین نکردهایم، این جعبه خالی است؛ اما بعداً که به کاربر یک نقش تخصیص دهیم این جعبه با آن نقش پر خواهد شد. روی Create کلیک کنید.
حال باید یک نقش ایجاد کنیم و آن را به کاربری که اکنون ایجاد کردیم، اضافه کنیم. سربرگ Security را کلیک کنید و سربرگ Roles را کلیک کنید. روی دکمهی New Role کلیک کنید. در فرم ظاهر شده در فیلد Role Name عبارت View_Parcels را وارد کنید و در فیلد Description عبارت Ability to view the parcels service را وارد کنید. سه نوع نقش وجود دارد. Administrator، Publisher و User.Administrator نقشی است که همهی مجوزهای مدیر را به سایت سرور میدهد. هر کاری که مدیر اولیهی سایت میتواند انجام دهد، کاربر با نقش Administrator نیز میتواند انجام دهد. نقش publisher به کاربران توانایی انتشار سرویسها را میدهد. نقش user که یک نقش سفارشی و قابل تنظیم است. معمولاً اپلیکیشنها از این نوع نقش استفاده میکنند. در این مثال قصد داریم از این نوع نقش استفاده کنیم. از دکمهی رادیویی Role type گزینهی User را انتخاب کنید. کاربر gisuser01 را که قبلاً ایجاد کردیم در لیست زیرین میبینید. روی آیکونکلیک کنید تا این نقش به کاربر gisuser01 داده شود. سپس Create را بزنید.
امنیت GIS سرویسها
اگرچه امنیت را روی ArcGIS for Server ایجاد کردیم اما هیچگونه امنیت و مکانیسم احراز هویت روی GIS سرویسها اعمال نکردهایم. هر مشتری بهصورت پیشفرض به همهی سرویسها دسترسی دارد. میخواهیم با تخصیص مجموعهای از نقشها، امنیت GIS سرویسها را تامین کنیم. به سرویس Parcels میرویم و میخواهیم فقط افرادی که نقش View_Parcels را دارند این سرویس را ببینند. برای این کار مراحل زیر را دنبال کنید:
1- ArcGIS for Server Manager را بازکنید. 2- به سربرگ Services بروید. همانطور که میبینید در سرویس Parcels، آیکون قفل بهصورت باز است که نشان میدهد این سرویس امنیت ندارد و همه به آن دسترسی دارند. 3- برای اعمال امنیت به سرویس، روی آیکون قفل کلیک کنید. فرم Edit Permissions ظاهر میشود. بهصورت پیشفرض امنیت روی Public تنظیم شده است. 4- گزینهی Private, available only to selected users را فعال کنید و
5- View_Parcels را به نقشهای سرویس اضافه کنید. وقتی به یک سرویس هیچ نقشی تخصیص داده نشود، فقط منتشردهندگان و مدیران میتوانند سرویس را ببینند. مدیر اولیهی سایت نیز میتواند سرویس را ببیند.
باید دقت کنید که به چه کسانی نقش publisher را میدهید؛ زیرا کاربران با نقش publisher میتوانند سرویسها را ببینند و ویرایش و حذف کنند. میتوانیم سطوح مدیریتی مختلفی را به نقشهای ArcGIS for Server اضافه کنیم. با این کار کنترل امنیتی بیشتری خواهیم داشت.
تنها میتوانیم نقشهای امنیتی را به یک سرویس تخصیص دهیم؛ اما اگر میخواهیم یک کاربر منفرد یک سرویس را مشاهده و بخواند، باید یک نقش ایجاد کنیم و آن کاربرمنفرد را به آن نقش تخصیص دهیم و سپس آن نقش را به سرویس تخصیص دهیم.
اتصال به یک سرویس ایمن
حال میخواهیم به سرویس ایمن از طریق ArcMap متصل شویم. از آنجائی که سرویس ایمن است، برای ایجاد اتصال به نام کاربری و رمز نیاز داریم. ArcMap را بازکنید. از درخت catalog موجود در سمت راست پنجره، گرهی GIS Servers را بازکنید و روی Add ArcGIS Server دو بار کلیک کنید. از یک سرویس جدید استفاده خواهیم کرد، پس گزینهی Use GIS services را انتخاب کنید و روی Next کلیک کنید. در فرم ظاهر شده آدرس Server URL را وارد کنید. در قسمت Authemtication کاربری که میخواهید به سرور متصل شود را تعیین کنید. مطابق تصویر زیر کاربر gisuser01 را برای اتصال به سرور مشخص کنید.
روی Finish کلیک کنید تا اتصال برقرار شود. نام اتصال را به gisuser01@GIS-SERVER01 تغییر دهید.
روی اتصال جدیدی که ساختید دو بار کلیک کنید و سرویس Parcels را به محیط ArcMap دراگ کنید. لایهی پارسلها بهصورت احراز هویت شده است و فقط کاربران با نقش Administrator، Publisher و کاربر gisuser01 این سرویس را میتوانند ببینند. برای بررسی این موضوع که فقط کاربران مذکور مجوز دیدن این سرویس را دارند، ArcGIS for Server Manager را بازکنید. یک کاربر جدید به نام gisuser02 ایجاد کنید. هیچ نقشی به این کاربر تخصیص ندهید. به ArcMap باز گردید و برای این کاربر یک اتصال با نام gisuser02@GIS-SERVER01 ایجاد کنید. روی این اتصال دو بار کلیک کنید. حال سرویس Parcels را نمیتوانید ببینید.
اگر بخواهید از این سرویسها در کد نویسی استفاده کنید، سرور پیامی مبنی بر واردکردن نام کاربری و رمز را نشان خواهد داد. در فصل سه در بخش ” استفاده از GIS سرویسها” با استفاده از ArcGIS JavaScript API به یک GIS سرویس متصل شدیم. هنگامیکه سرویس ایمن را میخواهید در کد نویسی استفاده کنید، سرور با سوال ” چه کسی هستید؟ لطفاً نام کاربری و رمز را وارد کنید” به استقبال شما میآید. یک نمونه کد به نام OnlineMode.html در مسیر 7364EN_07_Files\AGSA\Code وجود دارد. این فایل را در ویرایشگر متنی بازکنید. برای اجرای این فایل باید به اینترنت متصل شوید.
<html>
<header>
<scriptsrc=”https://js.arcgis.com/3.5/”></script>
<link rel=”stylesheet”
href=”https://js.arcgis.com/3.5/js/dojo/dijit/themes/claro/claro.
css”>
<script>
dojo.require(“esri.map”);
functionstartup()
{
var map = new esri.Map(“MapCanvas”);
var layer = new
esri.layers.ArcGISDynamicMapServiceLayer(“https://GISSERVER01:6080/arcgis/rest/services/Parcels/MapServer”);
map.addLayer(layer);
}
dojo.addOnLoad(startup);
</script>
</header>
<body>
<div id =”MapCanvas” style = “height: 100%;width:100%” ></div>
</body>
</html>
کد بالا محتویات فایل را نشان میدهد. اگر کد بالا را با کدهایی که در فصل 3 نوشتید مقایسه کنید، میبینید که یک فایل سبک جدید به نام claro.css اضافه شده است. با استفاده از این فایل میتوانید فرمی که نام کاربری و رمز را میگیرد سبک کنید.
اگر به اینترنت متصل شوید و فایل را اجرا کنید، فرمی ظاهر میشود تا نام کاربری و رمز را وارد کنید زیرا این فایل میخواهد به یک سرویس ایمن دسترسی پیدا کند.
با استفاده از gisuser01 مجوز دسترسی به منابع داده خواهد شد؛ اما اگر برای دسترسی به منابع برنامهای دارید، میتوانید تکه کد دیگری در نظر بگیرید تا کاربر را با پیامها و اعلانها خسته نکنید، پس یک علامت کوتاه مدت تولید میکند و هر بار که صفحه را مجدداً بارگذاری میکنید، این علامت از بین میرود.
برگرفته از کتاب نصب، اجرا و مدیریت Arc GIS for server
نویسنده: دکتر محمد بافقی زاده
نشر: انتشارات اکادمیک