سامان: سامانه آموزش، مشاوره، استقرار و نگهداری نرم افزار

طرح سامان
سامانه آموزش، مشاوره، استقرار و نگهداری نرم افزار
 
نویسنده: مهندس محسن شفيعي
مدیر اجرايي طرح سامان پرنیان پردازش پارس
 
طرح سامان ایده و نتیجه همکاری مشترک انجمن آموزش های تخصصی آنات و شرکت پرنیان پردازش پارس است، اساس این طرح بر مبنای رفع مشکل های بی شمار موجود در حوزه دریافت مشاوره فنی مناسب در طول و پس از تکمیل فرآیند خرید، پیش از آغاز استقرار سیستم (بسترسازی در سازمان برای پذیرش سیستم) و در طی روند استقرار در سازمان و همچنین ارزیابی و رفع مشکلات احتمالی کاربرد سیستم و همچنین شناسایی دقیق نقاط مشکل ساز و ارائه راهکاریی جهت رفع این مشکلات بر اساس فرهنگ جاری سازمان است، همانگونه که تمام فعالان حوزه فناوری اطلاعات خصوصاً در حوزه نرم افزار اذعان دارند، عدم وجود راهکاری برای همفکری، بسترسازی و ارائه مشاوره های فنی لازم برای سازمان پیش از استقرار و همچنین بررسی رنم افزار و انجام ممیزی منظم و روال مند در حین و پس از استقرار نرم افزار مشکل عمده تمامی سازمان ها است که در نهایت و در بسیاری از موارد منجر به شکست پروژه و یا عدم استقرار کامل نرم افزار شده و سبب می شود سیستمی که قرار بود بخشی از دغدغه های سازمان را مرتفع سازد خود به یکی از دغدغه های اصلی سازمان تبدیل شده و نقطه ای است برای آغاز مشکلات جدید در سازمان و خصوصاً سرفصل جدیدی از ایرادگیری ها و به عنوان دلیلی روشن بر ناکارآمد بودن واحد فناوری اطلاعات برای مدیران خواهد بود.
سخن آغازین
ما براین عقیده ایم هر سازمان دارای شخصیت منحصر به فرد خود است و این شخصیت باید بر اساس یک نظارت دقیق بر اساس فاکنورهای مدیریتی شناسایی، اصلاح و به عبارتی تربیت شده، شکل گرفته و در مسیر مستقیم رشد و پیشرفت خود قرار گیرد، دقیقاً مشابه روند زندگی طبیعی انسانی با این تفاوت که فاکتورهای تأثیرگذار بر زندگی شخصی با فاکتورهای موثر در سازمان متفاوت بوده ولی قابل مقایسه و شبیه سازی هستند.
آموزش
این فاز از سال 1389 جزو فعالیت های اصلی انجمن آنات محسوب شده و با برگزاری بیش از ده ها دوره درون سازمانی این انجمن توانسته است، جلب رضایت گسترده مخاطبین خود در حوزه سازمانی را داشته باشد، در کنار تنوع دوره های آموزشی برگزار شده توسط آنات که به صورت انحصاری در حوزه نرم افزار بوده است مخاطبین گسترده ای را از سراسر ایران از پالایشگاه گاز شهید هاشمی نژاد سرخس تا شرکت های پتروشیمی جنوب از جمله مارون، آریا ساسول و ... میزبان برگزاری این دوره ها بوده اند و تماماً به اتفاق از خروجی این دوره ها ابراز رضایت داشته که گواهی های حسن انجام کار ارائه شده توسط این سازمان ها دلیل و تاییدی بر این ادعا است. ارائه آموزش های درون سازمانی نیز مانند سایر برخوردها و تعاملات با سازمان ها بسیار وابسته به فرهنگ سازمانی و نیازمند شناخت و داشتن تجربه کافی در این خصوص است تا بتواند بهترین نتیجه را برای سازمان به همراه داشته باشد. با این هدف در طرح سامان اقدام به برگزاری آموزش های تخصصی لازم در صورت تقاضای کارفرما خواهد شد و در کنار آن آموزش های لازم برای کاربری نرم افزار در فاز استقرار نیز با این هدف انجام خواهد شد.
مشاوره
عموماً در خرید سیستم های نرم افزاری پروسه خرید به صورت شکل1-1 است، روال کلی همانطور که در شکل مشخص شده است به این صورت خواهد بود که هر سازمان پس از اخذ تاییدیه نهایی و تعیین فاکتورهای مهمی از جمله حدود بودجه اقدام به دریافت اطلاعات محصولات موجود کرده و بر اساس اطلاعات اکتسابی و بر اساس ذهنیت افراد تصمیم ساز اقدام به خرید و سپس درخواست نصب و راه اندازی محصول در سازمان خواهند کرد، در حالیکه در همین نقطه مهمترین فاز یعنی انجام ارزیابی سازمان پیش از استقرار و ارائه راهکارهای لازم جهت راه اندازی و به عبارت ساده Initialized کردن نرم افزار در سازمان نادیده گرفته می شود. در طرح سامان هدف اصلی و یکی از فازهای مهم ارائه سند initialized نرم افزار در سازمان متقاضی است، این فاز پیش از آغاز نصب، بسته به اندازه سازمان و تعداد کارکنان زمان بندی خواهد شد، خروجی این فاز که در قالب سند Initialized مطرح می شود
شامل موارد زیر خواهد بود:
  1. ارزیابی کاربران نرم افزار و ارائه آموزش های عمومی در صورت نیاز بر اساس پیشنهاد مشاور
  2. ارزیابی روال های جاری سازمان و در صورت نیاز اصلاح آن ها به صورتی که برای استقرار نرم افزار و خود سازمان نتیجه بهینه را سبب شود.
  3. ارائه مستندات لازم برای تنظیم و پیکربندی ویژگی های نرم افزار بر اساس ویژگی های سازمان

همانطور که مشخص است سند initialized سازمان از هر دوجنبه سازمان و نرم افزار اقدام به آماده سازی و اصلاحات پیش از راه اندازی سیستم خواهد کرد و به اینصورت شرایط را برای استفاده و جایگذاری بهینه در سازمان مهیا می کند.
استقرار
پس از ارائه مستندات راه اندازی (initialized Document) در فاز قبلی و اصلاحات لازم بر اساس این سند، مرحله درخواست رسمی کارفرما از پیمانکار برای نصب و راه اندازی سیستم در سازمان است که بر اساس شکل2-1-تعیین خواهد شد که با زیر ساخت آماده شده این روش سریع تر با هزینه های کمتر و سرعت بیشتر شکل خواهد گرفت، هدف اصلی در این فاز نظارت دقیق بر استفاده صحیح، عملی و کاربردی نرم افزار توسط سازمان و رفع ایرادات و مشکلات احتمالی در این خصوص خواهد بود که ممکن است ناشی از عدم تصحیح کامل روال های سازمانی در فاز قبلی، مشکلات ناشی از مقاومت افراد و یا استفاده ناقص از امکانات نرم افزار(به هر دلیل) باشد.
مستند استقرار که سند خروجی این فاز خواهد بود شامل موارد زیر است:
  1. سرفصل آموزش نرم افزار که ممکن است بر اساس دانش و سطح تسلط کاربران اندکی متفاوت باشد.
    • لازم به یادآوری که بر اساس تجربه ثابت شده است آموزش مدیران در سازمان با آموزش کارکنان باید در سطوح مختلف و به صورت مجزا برنامه ریزی و اجرا شود.
  2. ممیزی نرم افزار که منجر به تولید خروجی های زیر خواهد بود:
    • بررسی میزان کاربردی بودن نرم افزار (در دو سطح کارکنان و مدیران)
    • برگزاری جلسات پرسش و پاسخ و رفع ایرادات و مشکلات کارکنان سازمان به صورت منظم
  3. سفارشی سازی به صورت موردی و بر اساس موافقت پیمانکار و تعهد کارفرما بر تامین هزینه ها
  4. ارائه راهکار جایگزین (Alternative Solution): برای مواردی که به هر دلیل نرم افزار خارج از سرویس دهی باشد: تا به این ترتیب به هر دلیلی که دسترسی به سیستم امکان پذیر نیست خللی در روال کاری روزمره سازمان بروز نکرده و تنها با یک سیستم جایگزین مناسب اقدام به ادامه فعالیت سازمان می شود.
  5. ارائه راهکار Recover نرم افزار تا در صورت بروز هرگونه مشکل بتوان با کمترین اثرات جانبی به بازگرداندن سیستم به وضعیت پایدار اقدام کرد. در صورت تایید کارفرما بر حسب نیاز می توان این طرح بازیابی نرم افزار به صورت جزیی از مستند کامل تر مدیریت ریسک براساس متدولوژیهای NIST800 و یا ISO 27005 اقدام کرد.
  6. ارائه دوره های آموزشی سطح بالا ویژه مدیران میانی به بالا در سازمان تا با حفظ رویکردهای مدیریت جذب این سطح از کارکنان در سازمان امکان پذیر شود.
  7. ارایه راهکارها و رویه های امنیت اطلاعات در حوزه نرم افزار خریداری شده بر اساس استاندارد ISO27001
  8. خدمات نگهداری در مدت استقرار شامل:
    • ارایه پشتیبانی تلفنی و رفع اشکالات از طریق ارتباط ریموت از ساعت 8 صبح الی 16 تمام روزهای کاری
    • ارایه خدمات پشتیبانی از طریق پورتال مشتریان از ساعت 8 صبح الی 16 تمام روزهای کاری
    • دسترسی به راهنمای آنلاین نرم افزار
    • نصب مجدد نرم افزار ها و انجام پیکربندی های مورد نیاز در صورت درخواست مشتری
نگهداری
مرحله بعد از استقرار در چرخه نرم افزار نگهداری سیستم مستقر شده است که با عناوینی چون گارانتی، نگهداری یا پشتیبانی از آن نام برده می شود. در طرح سامان برای این مرحله از چرخه حیات نرم افزار نیز راهکارهایی اندیشیده است تا کارفرما با آسودگی خاطر از سیستم مستقر شده بهره برداری نماید. بعد از انتقال سیستم به سازمان کارفرما و استقرار آن، استفاده از سیستم آغاز می شود بدیهی است که در حین کار با سیستم به دلایل مختلف خطایی در سیستم رخ دهد و یا در شیوه اجرای یک فرآیند نرم افزار و روال سازمان تفاوت دیدگاه بوجود آید. در این مواقع است که کارفرما نیاز به همراهی برای حل مشکلات دارد. خدمات اين بخش شامل موارد زير است:
  • رفع ایراد
    • ارایه پشتیبانی تلفنی و رفع اشکالات از طریق ارتباط از راه دور ) ساعت 8 صبح الی 16 تمام روزهای کاری(
    • ارایه خدمات پشتیبانی از طریق پورتال مشتریان از ساعت 8 صبح الی 16 تمام روزهای کاری
    • ارایه خدمات پشتیبانی اضطراری از طریق سامانه پیامک به شماره 30007957953033 از ساعت 8 صبح الی 23 همه روزهای هفته
    • اعزام کارشناس به صورت حضوري به محل کارفرما در صورت نیاز
  • ارتقا
    • دریافت رایگان نسخه های جدید نرم افزار تحت پلتفرم موجود
  • آموزش
    • آموزش مجدد نرم افزار
    • دریافت ویدئوهای آموزشی نرم افزار
    • دسترسی به راهنمای آنلاین نرم افزار
    • برگزاری جلسات پرسش و پاسخ
  • سرویس دوره ای
    • نصب مجدد نرم افزار ها و انجام پیکربندی های مورد نیاز در صورت درخواست مشتری
    • ممیزی دو ماهانه و بررسی میزان و نحوه استفاده از نرم افزار به منظور ایجاد زمینه بهره برداری هر چه بهتر از سیستم
جمع بندي
همانگونه که در مقدمه و خود مقاله به مشکلات پیش رو در زمینه پروژه های فناوری اطلاعات اشاره شد در طرح سامان به دنبال خارج کردن واحد فناوری اطلاعات در سازمان ها از یک سیاه چاله (در زمینه بودجه) و تبدیل آن به یک بخش راهبردی در سازمان هستیم.
​​​​​
 

مهندسي امنيت در web application(قسمت اول)

 
به کارگيري ملاحضات امنيتي در طي چرخه زندگي نرم افزار مي تواند امنيت نهايي نرم افزار وب را افزايش دهد . در اين بخش مراحل فعاليتهاي مربوط به امنيت بيان شده و يک روش کارا و موثر در طراحي ، پياده سازي و تست ارائه گرديده است . در اين بخش روشي ارائه مي گردد که امنيت برنامه هاي کاربردي تحت وب را با يکپارچه کردن امنيت و چرخه زندگي نرم افزار بهبود بخشد . ايده اي که در اين بخش ارائه مي گردد بر مبناي صدها سناريوي مشتريان در دنياي واقعي با محدوديت ها و ملاحضات امنيتي دنياي واقعي مي باشد .
مسير اثبات
سوالاتي که در امنيت نرم افزار تحت وب مطرح مي شود عبارتند از
  • آيا راهي وجود دارد که امنيت web application را از يک روش قابل تکرار افزايش دهيم ؟
  • آيا راهي وجود دارد که شاغلين را به مهارت هاي اثبات شده امنيت نرم افزار متصل کنيم ؟
  • آيا شيوه اي وجود دارد که بتواند بر اساس پروژه يا تيم scale up يا scale down شود ؟
  • آيا روشي وجود دارد که به صورت افزايشي قابل تطبيق باشد ؟
براي اينکه بتوان به درستي به موفقيت رسيد بايد ابتدا روشهاي خطا را شناخت . در اين مقاله ابتدا يک مجموعه از شيوه هايي که به درستي عمل نمي کند بررسي خواهد شد . سپس يک شيوه موفق تر معرفي مي گردد . اين شيوه مي تواند به سادگي براي سناريوهاي مختلف مناسب سازي شده و بسط داده شود . شيوه هايي که درست کار نمي کند در صورتي که چيزي شکسته نشده است آن را تعمير نکن . مساله اين است که ممکن است چيزهايي وجود داشته باشد که کار نمي کنند و يا اينکه کارايي لازم را ندارند ولي شما از آن اطلاع نداريد .اجازه دهيد که نگاهي به برخي از شيوه هاي شکست خورده و علت شکست آنها را بررسي کنيم .
شيوه Bolt-on
فلسفه اين شيوه اين است که ابتدا چيزي را بساز که کار کند و سپس آن را اصلاح کن . اين روش احتمالا معمول ترين روش براي امنيت مي باشد و تقريبا هميشه منجر به شکست يا عدم کارايي مي شود .
نتيجه اين روش اين است که در طي چرخه توليد نرم افزار از امنيت تا پايان که معمولا فاز تست مي باشد صرف نظر کن و سپس سعي کن که اشتباهات امنيتي را که قبلا در چرخه توليد رخ داده است برطرف کن . در اين شيوه فرض بر اين است که شما امنيت کافي مورد نياز را در پايان کار مي توانيد به دست آوريد .
عيب اصلي روش blot-on اين است که برخي از تصميمات بسيار مهم طراحي که بر روي امنيت تاثير گذار مي باشد در بقيه طراحي نرم افزار اثر آبشاري دارد . در صورتي که شما تصميمات ضعيف در ابتداي طراحي بگيرد شما در آينده مجبور به انتخاب هاي ناخواسته در آينده خواهيد شد . يا مجبور مي شويد که سطح امنيت نرم افزار را تنزل دهيد و يا اينکه deadline هاي پروژه را زير پا بگذاريد . در صورتي که شما تصميمات مهم امنيتي را در پايان توليد نرم افزار بگيريد چگونه مي توانيد مطمئن شويد که شما يک نرم افزار منطبق با اهداف خود پياده سازي و تست نموده ايد ؟
شيوه Do-it-all-up-front
عکس شيوه bolt-on شيوه do-it-all-upfront مي باشد . در اين شيوه شما سعي مي کنيد با همه نگراني هاي بالقوه امنيتي را در ابتدا برخورد کنيد .
اين شيوه ممکن است در دو سناريوي مختلف دچار شکست شود . نتوانيد اين کار را در ابتدا انجام دهيد و نا اميد شده و آن را رها کنيد .
فکر کنيد که همه موارد را تحت پوشش قرار داده ايد و ديگر سراغ امنيت نرويد تا زماني که يک آسيب پذيري را در يک محصول release شده مشاهده کنيد .
با وجود اينکه انجام ملاحظات امنيتي در ابتدا يک روش عاقلانه است اما نبايد انتظار داشت که همه چيز را پوشش دهد . زيرا اولا شما همه چيز را در ابتدا نمي دانيد . مهمتر از آن اين شيوه نمي تواند تصميماتي را که شما در طي چرخه زندگي نرم افزار مي گيريد و بر روي امنيت تاثير گذار مي باشد پيش بيني کند .
شيوه Big-bang
شبيه شيوه do-it-all-in front شيوه big-bang به شيوه اي گفته مي شود که شما در يک زمان تلاش و فعاليت زيادي را براي رسيدن به همه اهداف امنيتي خود انجام مي دهيد . بسته به اينکه شما در چه زماني اين تلاش را انجام مي دهيد شما قطعا مي توانيد به يک سري اهداف امنيتي برسيد .
يک سناريوي ممکن اين است که شما امنيت را تا فاز تست به تاخير بيندازيد و در اين فاز تلاش وسيعي را جهت ايجاد امنيت بر روي زير ساختي که ملاحضات امنيتي در آن لحاظ نشده است انجام دهيد .
روش buckshot
در اين روش شما سعي مي کنيد که خوشه اي از تکنيک هاي امنيتي را در برنامه کاربردي خود به کار بريد ، با اميد به اينکه به گونه اي مديريت را انجام دهيد که به بک هدف درست برسيد . در اين روش معمولا شما مواردي مانند اينکه کجا امن مي باشد ، کجا firewall داريم ، کجا از SSL استفاده مي کنيم را مي شنويد . در اين شيوه نشان دار کردن شما نمي دانيد هدفتان چيست و تلاش ها معمولا در يک مسير اشتباه و يا بدن سود انجام مي گيرد . مواظب افرادي که در زمينه امنيت تعصب دارند و همه کار را به سرعت بر روي ابزارهاي خود به کار مي برند بدون تهديدات واقعي که بايستي با آن مقابله کنند را بدانند . امنيت بيشتر لزوما به معني امنيت خوب نمي باشد . در واقع شما ممکن است يک trade off بين قابليت استفاده ، قابليت نگهداري ، performance و امنيت داشته باشيد .
ضرورتا شما نمي توانيد به امنيتي که مي خواهيد برسيد بدون اينکه يک هدف امنيتي خاص داشته باشيد . آتش گشودن دائم (حتي با اسلحه مناسب) موجب نمي شود که شما به هدفتان برسيد . شما چيزها را خواهيد کشت ولي چه کسي مي داند آنها چه چيزي هستند
شيوه all–or–nothing
در اين شيوه ممکن است شما هيچ کاري براي رسيدن به امنيت انجام نداده باشيد و حالا بخواهيد همه کار انجام دهيد . رسيدن به يک خرابي ممکن است دليلي باشد که شما بين اين دو شيوه سويچ کنيد .
روش هايي که کار مي کنند در صورتي که گذاشتن امنيت در بالاي برنامه کاربردي که در شيوه buckshot انجام شد نتايج موثري را ايجاد نمي کند چه شيوه اي کار مي کند ؟ پاسخ شيوه چرخه زندگي يا پختن امنيت در چرخه زندگي application مي باشد . با استفاده از اين روش شما امنيت را در چرخه توسعه نرم افزار به کار مي بريد به جاي آنکه آن را در در ابتدا ، بعد از يک اتفاق و يا به صورت تصادفي به کار ببريد . پختن امنيت در چرخه زندگي همچنين راهي براي ايجاد تعادل آن با ساير ويژگيها نظير performance ، flexibility و يا usability مي باشد .
چگونه مي توان اين کار را انجام داد . پاسخ اين سوال به اين صورت است که کدام يک از فعاليت هاي توسعه موثر ترين نتايج را در بر خواهد داشت .
بالاترين برگشت سرمايه
چگونه شما مي فهميد که از چه تکنينکي براي شکل دادن به نرم افزار در طي چرخه توليد استفاده کنيد ؟ با بالاترين نرخ بازگشت سرمايه به عنوان يک Baseline شروع مي کنيم . هر يک از شرکت هاي توسعه نرم افزار نوعي از اينگونه فعاليت ها را مستقل از تمرکز بر روي امنيت دارند .
  • راهبردهاي طراحي
  • مرور زيرساخت و طراحي
  • مرور کد
  • تست
  • مرور استقرار
راهبردهاي طراحي شامل توصيه هايي براي تيم توسعه مي باشد . اين توصيه ها تصميمات مهندسي کليدي را در بردارد (مانند مديريت استثنائات) و شامل توصيه هايي از فروشنده نرم افزار ، سياست هاي سازمان ، تجربيات صنعتي ، الگوها و ... مي باشد . اين يک فعاليت مهم در ROI مي باشد . زيرا چهارچوب نرم افزار را مشخص مي کند .
بررسي تحليل و طراحي کاري است که شامل طراحي براي نيازمنديهاي عملياتي ، نيازمنديهاي غيرعملياتي ، نيازمنديهاي تکنيکي و محدوديتها مي باشد که مي تواند به سادگي طرح کلي بر روي white board و يا شامل چندين مستند ، دياگرام و يا ارائه باشد . يک مرور تحليل و طراحي زماني مي تواند مفيد باشد که به اندازه کافي زود انجام شود تا بتواند به برنامه کاربردي شما شکل دهد .
مرور کد يک روش کاربردي و موثر براي پيدا کردن جنبه هاي کيفيت مي باشد . با وجود اينکه در برخي از زمينه ها شما مي توانيد ابزارهاي مرور کد پيدا کنيد مزيت مرور کد دستي بررسي مفهومي کد مي باشد .
تست يک فيدبک از نرم افزار قابل اجرا مي باشد . نرم افزار يا کار مي کند و يا کار نمي کند . فهميدن اينکه آيا نرم افزار درست کار مي کند مشکل تر است . حالت ايده آل اين است که شما يک قرارداد قابل اجرا بين کد و انواع مختلف نيازمندي ها و محدوديتها داشته باشيد .
اين مي تواند به شما کمک کند که شما به دنبال چه چيزي هستيد تا بتوانيد آن را تست کنيد .
رور استقرار ارزيابي برنامه کاربردي که بر روي زيرساخت مستقر گرديده است – جايي که لاستيک بر روي جاده قرار دارد آنجا جايي است که شما تاثير تنظيمات پيکربندي در برابر رفتار در حال اجرا را مي توانيد ارزيابي کنيد . مرور استقرار آخرين نقطه بررسي محصول مي باشد .
اين فعاليتها يک نرخ بازگشت سرمايه بالا را پيشنهاد مي کند که در صورتي که به درستي انجام گيرد در طي فرايند شکل نرم افزار را تحت تاثير قرار مي دهد .
مهندسي امنيت در فعاليت هاي baseline
شما مي توانيد يک سري فعالتيهاي موثر امنيت بر مبناي نرخ بالاي ROI ايجاد نمائيد . ولي به جاي اينکه امنيت را در فعاليتهاي موجود پراکنده کنيد آن را در فعاليتهاي خود ضرب کنيد . اين کار کمک مي کند که تلاشهاي امنيتي خود را بهينه نموده و يک چهارچوب لاغر براي بهبود مهندسي خود ايجاد نمائيد . با اثر گذاري امنيت در طي چرخه توسعه شما مي توانيد مجموعه اي از فعاليتهاي مرتبط با توسعه را پوشش دهيد .
جدول 1 فعاليتهاي کليدي امنيتي را در رابطه با فعاليتهاي استاندارد توسعه نشان مي دهد .
در بخش زير يک مجموعه از فعاليتهاي اصلي براي مهندسي امنيت آمده است :
  • اهداف
  • مدل سازي تهديد
  • راهبردهاي طراحي
  • مرور زيرساخت و طراحي
  • مرور کد
  • تست
  • مرور استقرار
اين فعاليتها يکديگر را تکميل نموده و اثر هم افزايي در امنيت نرم افزار دارند .
 
 

تشخیص خودکار روزهای تعطیل در سرویس دریافت روزنامه ها

سرویس خبرخوان جامع الکترونیکی پرنیان، مجموعه ای از دو Job روزانه قابل تنظیم در شیرپوینت هست که علاوه بر اخبار خبرگزاری‌ها، دریافت نسخه pdf روزنامه‌ها رو هم پشتیبانی می‌کنه. وب سایت روزنامه‌‌های مختلف، از روش‌های مختلفی برای در دسترس قرار دادن فایل‌های pdf روزنامه استفاده می‌کنند. بعضی از روزنامه‌ها از تاریخ روز استفاده می‌کنند، بعضی شماره روزنامه رو هم در آدرس قرار می‌دهند.

یکی از تنظیماتی که برای دریافت روزنامه‌ها وجود دارد شماره روزنامه است. فرض کنید آدرس pdf صفحه یک روزنامه‌ای به شکل روبرو باشد: http://www.newspaper.com/pdf/1003/p1.pdf که در آن عدد 1003 شماره روزنامه هست. نخستین بار که سرویس دریافت روزنامه شروع به کار می‌کنه لازمه تا شماره روزنامه روز رو بهش بدیم، بعد از اون هر روز بعد از دریافت روزنامه، برنامه خودش یکی به شماره روزنامه اضافه می‌کنه. از اونجایی که سرویس دریافت روزنامه‌، جمعه‌ها به صورت اتوماتیک کار نمی‌کنه تا زمانی که به تعطیلی برخورد نکنیم، مشکلی پیش نمیاد. اما وقتی یک تعطیلی موقت برای انتشار روزنامه به وجود بیاد و برنامه یکی به شماره روزنامه اضافه کنه، روزنامه روز بعد دریافت نخواهد شد چرا که شماره اشتباهی اضافه شده.

برای رفع این مورد، مدیر سیستم باید شماره روزنامه رو تصحیح می‌کرد و Job‌ مجدداً اجرا می‌شد. یک راه حل هم این بود که لیستی از روزهای تعطیل سال که روزنامه در اون روزها منتشر نمی‌شه رو به عنوان یکی از تنظیمات دریافت کنیم، اما روش بهتری رو انتخاب کردیم که حالا به عنوان یک ویژگی جدید به سرویس دریافت روزنامه اضافه شده: تشخیص خودکار روزهای تعطیل

با کمک روالی که به برنامه اضافه شده، برنامه می‌تونه به صورت خودکار تصمیم بگیره که چه زمانی باید به شماره روزنامه یکی اضافه بشه، این روال در صورتی که چند روز تعطیل پشت سر هم باشند هم باز هم درست عمل می‌کنه و در تمام مدت تعطیلات شماره روزنامه ثابت می‌مونه. به این ترتیب سرویس دریافت روزنامه پرنیان می‌تونه بدون وقفه و بدون نیاز به اصلاح تنظیمات یا دریافت لیست روزهای تعطیل، در همه تعطیلات پیش بینی شده و پیش بینی نشده به کار خودش ادامه بده و روزنامه‌ها رو دریافت و به پورتال شیرپوینتی اضافه کنه.
 

پتروشیمی مارون عضو جدید خانواده پرنیان

سیستم اتوماسیون اداری پرنیان مبتنی بر outlook و سیستم فرآیند ساز (BPMS) پرنیان در پتروشیمی مارون با موفقیت نصب و راه اندازی شد.
 
مجموعه های پیشرو در استفاده از فناوری اطلاعات عمدتا به این نتیجه رسیده اند که روشهای کلاسیک گرته برداری شده از نظام های کاغذی دیگر جوابگو نبوده و نه تنها باعث ایجاد چابکی در سازمان نمی شود. بلکه مانعی نیز بر سر راه می باشد. از این رو است که استقبال از محصولات خلاقانه پرنیان در حوزه های مختلف اعم از اتوماسیون اداری، پورتال، فرآیند ساز، هوش تجاری و .... رو به افزایش است.
 

فرآیند ساز در شیرپوینت

فرآیند ساز در شیرپوینت
به مجمع الجزائرBPMS خوش آمدید!
بخش های گوناگون سازمان های بزرگ را همچون جزایری در نظر بگیرید که برای ارتباط بین آنها نیاز به یک سرویس حمل و نقل جامع و پر هزینه است. سرویسی که به طور مستمر و زمانبری ا``فراد گوناگون سازمان از مدیریت گرفته تا درجات پایین تر را درگیر خود کرده و در آخر هم ممکن است هر شخصی سر از جزیره اشتباهی در آورد!
امروزه دو مبحث مهم و حیاتی سازمانی، یعنی مدیریت فرآیند کسب و کار و مدیریت اسناد چگونه در سازمان پایه ریزی می شود؟
نخبگان امروزه ایده های سازمانی زیادی دارند و از گفتن این ایده ها تا زمان پیاده سازی هراسی ندارند. اما مشکل بزرگ آنجایی جلوه می کند که تعریف جامعی برای گردش کار متناسب فرآیندهای مد نظر خود را نمی توانند ارائه دهند و حتی در صورت ارائه، در پیاده سازی آن با مشکلات عدیده ای مواجه می شوند. اینجاست که نیاز به یک موتور قدرتمند که در عین سادگی جامع ترین پاسخگوی نیاز شخص باشد، خود را نشان می دهد.
فرآیندساز شیرپوینت
امکان مدیریت مستندات و پیوست ها در چرخه انجام یک درخواست، از یک طرف با توجه به حجم داده و از طرف دیگر اهمیت بالایی که در تعریف سطوح دسترسی به هر کدام از این مدارک وجود دارد، می بایستی از طریقی امکان پذیر باشد. چرخش های پیچیده و طولانی فرآیندها با گام های متغیر که بر اساس ورودی های گوناگون جهت حرکت فرآیند تغییر می کند، همه و همه نیاز به طراحی سیستمی دارد که بتواند همه این مراحل را در عین سادگی با حداکثر یکپارچگی مجتمع نماید.
اهمیت گزارش گیری در یک سازمان به عقیده برخی کارشناسان به مراتب بالاتر از پروسه های پیش از آن است. چرا که مبنای پیشرفت یک سازمان بر اساس گزارشات زمانبندی شده و اعداد و ارقامی است که نتیجه آنها، معیاری بسیار حیاتی در تصمیم گیری ها و برنامه ریزی های یک سازمان است.
آیا به این نکته فکر کرده اید که می توانید بخش اعظمی از طراحی خود را در محیط ویندوز انجام دهید. طراحی ساده و در عین حال با امکانات بالای فرم های پایه در محیط ویندوز به جای طراحی در محیط وب که کمک زیادی به افزایش سرعت طراحی می کند. همه اینها از طریق ابزار بسیار قدرتمند اینفوپس (InfoPath 2010) فراهم شده، ابزاری بسیار قوی که ارتباط با بخش های گوناگون سیستم را حتی بدون نیاز به کد نویسی خاصی (در عین داشتن بستر مناسب کدنویسی و ارتباطات وب سرویسی قوی و در عین حال امن) میسر می سازد.
نگاهی کوتاه به برخی از مواردی که برای نخستین بار در شیرپوینت 2010 آمده است :
  1. گردش کارهای شیرپوینت 2010 بر پایه موتور گردش کاری که .Net Framework 3.5 فراهم می کند، پایه ریزی شده است.
  2. لیست و گردش کارهای سایت؛ علاوه بر لیست های شیرپوینت در حال حاضر می توانیم به خوبی برای سایت های شیرپوینتی گردش کار ایجاد کنیم. اینها به عنوان "Site Workflows" گردش کارهای سایت معرفی می شوند.
  3. SharePoint Designer 2010تغییر کرده است. مایکروسافت در نسخه 2010 خود محیط گرافیکی جذاب و جامعی جهت طراحی گردش کارها برای این ابزار فراهم کرده است. این گردش کارها می توانند مستقیما از طریق همین ابزار در سرور شیرپوینت مستقر شوند.
  4. طراحی گردش کارهای Out-of-Box(خارج از قالب) : یکی دیگر از مزایای گردش کار SharePoint Designer 2010 این است که به شما اجازه ویرایش گردش کار های خارج از قالبی را که در خلال شیرپوینت می آید را می دهد.
  5. User profile (پروفایل کاربر) در شیرپوینت: داده های پروفایل کاربر می تواند به مشخصه های شیرپوینت متصل شود. این امکان ما را قادر می سازد تا دسترسی مستقیم و بی واسطه ای به اطلاعات مربوط به پروفایل کاربر در گردش کار داشته باشیم.
  6. تغییر در رویدادهای لیست : شیر پوینت 2010 چهار Event Receiverجدید برای لیست های بر مبنای گردش کار اضافه کرده است. این چهار Event Receiver گردش کاری جدید شامل Starting ،Started ، Postponed و Completed می باشد. این موارد شبیه سایر Event Receiver های موجود در لیستها/کتابخانه ها کدهایی را بر روی سرور در پاسخ به یک رویداد اجرا می کنند.
  7. قالب های گردش کار : برای آسان سازی طراحی و پیاده سازی، Visual Studio 2010 شامل نوع پروژه ای از نوع Event Receivers شده است تا استفاده از گردش کار و رویداد ها را به طرز چشمگیری ساده تر نماید.
فرآیندساز شیرپوینت
اما بلوک های سازنده برای ساخت یک گردش کار چیست ؟ چه قوانین امنیتی روی گردش کار اعمال شود؟
Workflow Security Model (مدل امنیتی گردش کار)
از آنجایی که شیرپوینت 2010 یک سیستم مشترک رده سازمانی (enterprise-class collaborative system) است، امنیت و محتوای کاربر بخش هایی حیاتی از هر سلوشن هستند و گردش کارها نیز از این قاعده مستثنی نیستند. موارد زیر برخی از قواعد امنیتی در شیرپوینت 2010 هستند :
  1. گردش کارها به عنوان یک آغازگر اجرا می شوند : در حالت کلی محتوای امنیتی که یک گردش کار دارد، مربوط به شروع آن است، زمانی که یک گردش کاری با راه اندازی دستی آن یا اجرای عملیاتی که رویداد آن موجب آغاز گردش کاری می شود، آغاز می شود.
  2. گاهی اوقات شروع یک عملیات توسط شما نمی تواند وظیفه مورد نظر در یک گردش کار را اجرا نماید، چرا که آنها دسترسی به وظیفه مورد نظر را ندارند و یا اینکه شما نمی خواهید که آنها بر روی وظیفه کاری را انجام دهند. در اینگونه موارد شما می توانید وظیفه را در یک مرحله واسط قرار دهید که موجب می شود وظیفه شبیه کاربری که گردش کار را ایجاد کرده اجرا شود.
  3. گردش کارها سایت محور هستند : بدون استفاده از سفارشی سازی بیشتر، شما می توانید به آیتم ها (مانند لیستها و کتابخانه ها) تنها در سایتی که گردش کار در آن در حال اجراست، دسترسی داشته باشید.
مي توانيد به اين شکل تصور کنيد که Workflow، Step يا مجموعه ای از مراحل يک رویداد است که شامل مجموعه اي از اعمال (Action) و شروط (Conditions) مي باشد. زماني که يک گردش کار آغاز مي شود.
براي هر مرحله شروطي که ايجاد شده است، ارزيابي مي شود و سپس اعمالي که در نظر گرفته ايد، انجام مي شود. يک مرحله در گردش کار، مي تواند شامل هر تعداد از عملیاتی که شما در نظر گرفته ايد، باشد. از فرستادن ايميل گرفته تا ايجاد،کپي و يا حذف کردن آيتم هاي ليست و در واقع هیچ محدوديتي در اين مورد وجود ندارد.
توجه داشته باشيد که شرايط و قوانيني که در يک مرحله مشخص کرده ايد، قبل از رفتن به مرحله بعد پردازش مي شوند. پس دقت داشته باشيد که شرايطي (Condition) را که مي خواهيد در نظر بگيريد تا بر اساس آن در مرحله بعد انجام شود، حتماً در يک مرحله قرار دهيد.
نکته: گردش کار هميشه به يک ليست يا سند در شيرپوينت اختصاص داده مي شود. بنابراين قبل از ايجاد گردش کار، سايت شما بايد حتماً ليست يا سندي را در بر داشته باشد که بتوانيد گردش کار را به آن اختصاص دهيد.
اجزاء کلیدی گردش کار چه مواردی هستند ؟
چهار جزء کلیدی در یک گردش کار دیده می شود:
Event (رویداد):
چیزی که با روی دادن آن عملیاتی از نوع گردش کار آغاز می شود. چندین روش وجود دارد که گردش کارها آغاز شوند؛
هنگامی که یک کاربر یک درخواست دستی ایجاد می کند.(مانند کلیک بر روی شروع گردش کار)، هنگامی که یک آیتم (مانند آیتم لیست یا یک سایت) ایجاد می شود، یا هنگامی که یک آیتم تغییر می کند. هنگامی که یک گردش کار آغاز می شود، شما می توانید به کاربر فرمی را بدهید که داده ها را برای اجرای گردش کار جمع آوری کند.
Steps (مراحل):
Step ها مفاهیمی اساسی در ساختار و سازماندهی در داخل یک گردش کار هستند. یک مرحله شامل یک یا بیش از یک عملیات و به طور اختیاری یک یا چند شرط است. هر دو گزینه ساختار و تعداد مراحل کاملا وابسته به انتخاب شما خواهد بود. شما می توانید یک گردش کار One-Step(تک مرحله ای) بسازید که در آن یک مرحله شامل لیست بزرگی از عملیات خواهد بود. اگرچه، از دیدگاه سازمانی بهتر است مراحل اضافی به طور مجزا تعریف شوند.
Conditions (شرایط):
همانطور که در مورد گردش کارها فکر میکنید، شما با دو راهی ها و موارد زیادی که نیاز به تصمیم گیری درست از میان چندین هدف دارد، مواجه می شوید.همه اینها وابسته به چگونگی پردازش گردش اطلاعات توسط شیرپوینت خواهد بود. برای پیاده سازی منطق "if-then-else" در گردش کار خود، شما Condition(شروط) را به برنامه اضافه می کنید. یک شرط عبارتی است که اگر درست باشد، به موتور گردش کار می گوید تا یک وظیفه مرتبط یا گروهی از وظائف را اجرا نماید.
Actions (عملیات):
اگر مراحل در جایگاه Where (کجا؟) و شرایط در جایگاه When (چه هنگام؟) هستند، Action ها در حکم What (کدام؟) هستند. در واقع معرف قسمتی کلیدی و عملیاتی از داستان یک گردش کار هستند. یک عملیات می تواند هر چیزی باشد، اعم از کار با یک آیتم منصوب به گردش کار تا ارسال ایمیل به یک شخص خاص و یا ویرایش یک منبع داده دیگر
چگونه فرآیند ساز پرنیان خود را با امکانات جدید هماهنگ کرده است؟
فرآیند ساز پرنیان (Parnian Process Maker) با بکارگیری حداکثری از ویژگی های کلیدی عنوان شده در SharePoint2010 سعی کرده تا مجموعه واحدی را با حداکثر امکانات اساسی پایه ریزی کند. بکار گیری منطقی 4 جزء کلیدی گردش کار که در بالا عنوان شد، در عین سادگی، انعطاف پذیری بالایی را در طراحی فرم های گردش کار به طراحان و کاربران ارائه می دهد.
سیستمی مبتنی بر موتور قدرتمند و ��ریع Windows Workflow Foundation با انعطاف پذیری بالا در تعیین مسیر گردش کار که در هر زمان به شما امکان بازگشت به مراحل قبلی را داده و تفویض اختیار به سایر افراد در سازمان را برای شما به راحتی میسر می سازد.
طراحی و پیاده سازی ارتباطات متقابل بین واحدهای مختلف سازمان با قابلیت سازش پذیری با بسیاری از نرم افرارهای درون سازمانی که با بکارگیری وب سرویس های قدرتمند امکان ارتباط بین این واحد ها را مقدور می سازد.
سیستم گزارش گیری و اطلاع رسانی با ویژگی هایی چون ارسال ایمیل های اطلاع رسانی در خلال پروسه گردش فرم در کنار امکان ثبت پاراف و پیوست وجود دارد که کلیه مرحل در قالب بخشی به نام تاریخچه گردش کار جمع آوری شده و روال چرخش فرم تا لحظه جاری را با جزئیات در یک نمای درختی نمایش می دهد.
فرآیند ساز پرنیان به شما این امکان را می دهد که حتی بدون نیاز به تعریف دستی یک گردش کار و صرفا با تعیین یک بازه زمانی خاص، یک گردش به طور خودکار شروع به کار کرده و طی فواصل زمانی گوناگون در صورت نیاز، ادامه روند کار خود را نیز به صورت خودکار ادامه دهد. در همین راستا زمینه راحتی را برای اجرای گردش کار فرزند به معنای گردشی خاص که در خلال گردش اصلی استارت زده می شود، با امکان تعیین آیتم هایی که لازم است از هر سطح به دیگری منتقل شود را فراهم می کند.
 

معرفی BCS در شیرپوینت 2010

این پست بر اساس مجموعه ای از گفتگوها در خصوص قابلیتهای سرویس جدید ارتباطی کسب و کار (Business Connectivity Services (BCS)) شیرپوینت 2010 و آفیس 2010 نوشته شده است. 

در یک نگاه سطح بالا هدف از BCS، ایجاد ارتباط بین کاربر نهایی و داده های کسب و کار بر اساس نیاز شغلی و کاری اوست بدون اینکه نیاز باشد برنامه ای که در حال کار با آن است را ببندد و یا از آن خارج شود و وارد برنامه دیگری شود. این سرویس با این نگاه و تفکر ساخته شده است که برای کاربر نهایی مهم نیست که داده ها از کجا می آیند. به طور مثال او در کاری که در حال انجام آن است به اطلاعات کالاها نیاز دارد، خوب BCS این امکان را فراهم می کند که چه در محیط آفیس 2010 وچه در شیرپوینت 2010 شما به داده های تمامی منابع اطلاعاتی دیگر دسترسی دارید.

BCS نسخه تکامل یافته تر BDC شیرپوینت 2007 است. که قابلیتهای شیرپوینتی را به عنوان بستری جهت توسعه برنامه های کاربردی ترکیبی افزایش می دهد. قابلیتهای تکمیلی، سرویسها و ابزارهای BCS باعث سهولت در توسعه ارتباطی یکپارچه و عمیق با سرویسها و منابع داده خارجی می شود. با استفاده از BCS، شیرپوینت 2010 و آفیس 2010 را قادر می سازد تا به منابع اطلاعاتی نرم افزارهای دیگر مانند مالی، پرسنلی، کالا، اتوماسیون و ...

 

تفاوتهای BCS در شیرپوینت 2010 نسبت به جوانی هایش (BDC) در شیرپوینت 2007
موجودیتهای
BDC، وب پارتها و ستونهایی از نوع BDC در لیستها همه و همه به منظور ایجاد یک ارتباط فقط خواندنی با سیستمهای خارجی طراحی شده بودند. اما BCS یکپارچگی عمیق تری را مستقیما درون شیرپوینت 2010 و آفیس 2010 با منابع داده خارجی و به قابلیت خواندن/نوشتن فراهم می کند. در یک کلام BDC یک ارتباط یک طرفه در شیرپوینت 2007 است ولی BCS یک ارتباط دو طرفه هم در شیرپوینت 2010 و هم در آفیس 2010

ویژگیهای کلیدی BCS

تعدادی از قابلیتهای کلیدی BCS به شرح ذیل است:

  • خواندن/نوشتن: با استفاده از BCS می توان از طریق شیرپوینت 2010 و آفیس 2010 داده های منابع خارجی را نمایش، ایجاد، به روز رسانی و یا حذف کرد.
  • گزینه های بیشتر برای اتصال: علاوه بر امکان اتصال به پایگاه داده و وب سرویس، امکان اتصال به سرویسهای WCF نیز فراهم شده است. همچنین می توان کد خاصی را از طریق .Net Assembly Connector به منظور کنترل داده ی در حال انتقال اضافه نمایید.
  • ابزارهای طراحی و سفارشی سازی:سرمایه گذاری کلان روی SharePoint Designer 2010 و Visual Studio 2010 امکان ایجاد و سفارشی سازی راهکارهای اتصال را بدون کد نویسی و یا با کد نویسی فراهم کرده است. راه حلهای ترکیبی توسط تیم ها با به کار گیری ابزارهای مختلف ایجاد می شوند و این باعث تولید سریعتر و ساده تر برنامه های کاربردی می گردد.
  • یکپارچه سازی بهتر با ابزارهای کلاینت: نمایش داده های منابع خارجی به صورت داده های درونی لیستهای شیرپوینت و سپس اتصال آنها به Outlook و SharePoint Workspace. سفارشی سازی فرمهای InfoPath برای افزودن منطقهای کسب و کار به شیرپوینت و SharePoint Workspace(فضای کاری شیرپوینت). سفارشی سازی Outlook برای تامین نماها، فرمها، دکمه های روی ریبون و یا نمایش داده های مفهمومی در نوار وظیفه - همه و همه بدون نوشتن کد!
  • کار به صورت آنلاین و آفلاین: داده های خارجی در کش پایگاه داده SQL CE که همراه با مجموعه آفیس 2010 نصب می شود، ذخیره می گردند. در زمانی که اتصال شبکه قطع می شود. کش به صورت خودکار به مد آفلاین می رود. و زمانی که اتصال مجددا برقرار می شود. BSC داده هایی که در ممنابع خارجی تغییر کرده اند را به صورت اتوماتیک همگام سازی می کند.
  • چرخه زندگی برنامه ها: با استفاده از تکنیک ClickOnce راهکارهای ترکیبی شیرپوینتی را روی ماشینهای مجهز به آفیس 2010 نصب کنید. کاربران نهایی می توانند به روز رسانی برنامه ها را به راحتی دریافت نمایند.

معماری BCS

در تصویر زیر یک نمای شماتیک از معماری BCS را در ارتباط با شیرپوینت 2010 و آفیس 2010 مشاهده می کنید.

Business Connectivity Services

 

راه اندازي سيستم گزارشگيري از ترافيک زون (هاستينگ شيرپوينت فارسي)

همانطور که در پست راه اندازی پورتال مشتریان پيش از اين وعده داده بوديم، سيستم گزارشگيري از ترافيک زون براي مشتريان زون (هاستينگ شيرپوينت فارسي)​ راه اندازي شد.

 مشتريان محترم زون(هاستينگ شيرپوينت فارسي)، مي‌توانند از اين پس از طريق پورتال مشتريان، از ميزان مصرف ترافيک روزانه خود آگاه شوند

 

خبرهای خوش شیرپوینت 2013 برای برنامه نویسان – قسمت اول




عنوان یک توسعه دهنده نرم افزار یکی از جنبه هایی که همیشه در نسخه جدید نرم افزارها و تکنولوژی های مرتبط با حوزه نرم افزار برایم مهم بوده، امکاناتی است که برای برنامه نویسان در نظر گرفته می شود. سالهاست که شرکت های نرم افزاری به تولید محصولاتی با قابلیت توسعه توسط برنامه نویسان مشغولند و همواره API های نرم افزاری خود را در این جهت بهبود می بخشند.
در این جنبه از محصولات نرم افزاری، فرقی نمی کند که از یک مرورگر و Add one ها و Extension هایش صحبت می کنیم یا یک پلتفرم موبایل و App های آن. در هر حال گسترش بازار و تجارت و کسب و کار شرکت های بزرگ با کیفیت و کمیت برنامه هایی که توسط برنامه نویسان خارج از این شرکت ها نوشته می شود ارتباط مستقیم دارد.
مایکروسافت همواره یکی از پیشروترین شرکت های نرم افزاری در این خصوص بوده است. اغلب محصولات مهم و اصلی مایکروسافت از سیستم عامل گرفته تا IDE تولید نرم افزار، از Mail Server گرفته تا خانواده آفیس و ... SDK های مربوط به خود را دارند که همواره با مجموعه بی نظیری از مستندات فنی شامل راهنماها و نمونه کدها برای ارائه یک پکیج کامل برای برنامه نویسان ارائه می شوند. شیرپوینت نیز به عنوان یکی از محصولات راهبردی مایکروسافت از نخستین نسخه های خود API های مختلفی جهت کار به برنامه نویسان عرضه کرده است.
اهمیت API شیرپوینت به گونه ای است که اغلب در نزد برنامه نویسان از شیرپوینت به اینگونه یاد می شود: شیرپوینت یک محصول Open Source نیست اما همه کارهایی که مایکروسافت در آن انجام می دهد از طریق یک مجموعه API قدرتمند در اختیار همه قرار گرفته است!
جالب است بدانید مجموعه DLLهایی که Object Model شیرپوینت را تشکیل می دهند، دارای توابع و کلاس هایی هستند که برنامه نویسان را قادر می سازند تا کارهایی انجام دهند که در حالت عادی و از طریق خود User Interface شیرپوینت قابل انجام نیست.
امکانات برنامه نویسی شیرپوینت 2013
در مقاله قبلی به برخی از امکانات جدیدی که در شیرپوینت 2013 اضافه شده است اشاره کردیم. در این مقاله می خواهیم در خصوص امکانات که مایکروسافت در شیرپوینت 2013 در اختیار برنامه نویسان قرار داده است صحبت کنیم.
پیش از شروع این مبحث، خوب است بدانید که به روز رسانی صورت گرفته در شیرپوینت در Object Model آن نیز اعمال می شود. به عنوان مثال هنگامی که سرویس پکی برای شیرپوینت ارائه می شود، این سرویس پک DLL های اصلی شیرپوینت نظیر Microsoft.SharePoint.dll را نیز تحت تاثیر قرار می دهد که به شکل مستقیم باعث بهبود یا افزایش توان عملکرد برای برنامه نویسان می شود. در شیرپوینت 2013 نیز مایکروسافت گام بسیار بزرگی برای هماهنگ کردن API های ارائه شده برای شیرپوینت با استانداردها و فناوری های روز برداشته که در این مقاله به آن ها اشاره کوتاهی خواهیم داشت.
برنامه نویسی ابری
در مقاله پیشین از یکی از امکانات معرفی شده برای شیرپوینت 2013 یعنی فروشگاه برنامه یا App Store برای شیرپوینت صحبت کردیم. مایکروسافت امکانات خوبی برای توسعه برنامه های مختلف ابری در شیرپوینت ایجاد کرده است. مفاهیم قدیمی و پایه ای شیرپوینت نظیر لیست ها نیز به گونه ای از App ها تبدیل شده اند. همانطور که در تصویر زیر پیداست مایکروسافت راه های مختلفی برای host کردن این برنامه ها ایجاد کرده است.
social broadcasting
ارائه و پشتیبانی از REST
شیرپوینت 2013 بخشی از قابلیت های خود را در قالب سرویس های REST ارائه داده است. به کمک این سرویس شما می توانید با فراخوانی url هایی به شکل REST، عملیاتی نظیر مشاهده، انجام عملیات CRUD (افزودن، خواندن، به روز رسانی و حذف)، همگام سازی برنامه های کلاینت با سرور شیرپوینت، نسخه بندی و ... برای برنامه نویسان ممکن می سازد.
API جدید برای Client و Server
اینکه از کدامیک از روش های ارائه شده مایکروسافت برای کار با API های شیرپوینت استفاده می کنید به سه فاکتور اساسی زیر مرتبط است:
  1. نوع برنامه
  2. مهارت های برنامه نویسی شما
  3. نوع دستگاهی که برنامه شما روی آن اجرا خواهد شد
شکل زیر API های مایکروسافت را به صورت طبقه بندی شده بر اساس نوع راهکار نمایش می دهد، همانطور که از شکل پیداست برای کار با شیرپوینت و داده های آن روش های زیر وجود دارد:
  1. Server Side Object Model: شامل DLL های سروری شیرپوینت نظیر Microsoft.SharePoint.dll است که در گذشته نیز بیشترین حجم برنامه ها با استفاده از این API ها تولید می شده است
  2. Client Object Model: شامل DLL هایی است که برای استفاده در برنامه های کلاینتی (مانند برنامه های ویندوزی یا کنسول که در کامپیوتری غیر از سرور شیرپوینت اجرا می شوند و باید با شیرپوینت و داده های آن تعامل داشته باشند) مورد استفاده قرار می گیرند.
  3. Silverlight Client Object Model: همانطور که از نامش پیداست Object Model مخصوص استفاده در برنامه های توسعه داده شده با Silverlight است. این نوع Object Model که برای اولین بار در شیرپوینت 2010 معرفی شد، در نسخه 2013 شیرپوینت بهبودهای قابل ملاحظه ای داشته است.
  4. JavaScript Object Model: مایکروسافت در شیرپوینت 2010 جاوااسکریپت های مورد استفاده در شیرپوینت را نیز به صورت دسته بندی و کلاسه شده در اختیار برنامه نویسان قرار داد تا از طریق این Object Model بتوانند با کمک کدهای جاوا اسکریپتی که در صفحات شیرپوینتی قرار می دهند با شیرپوینت و داده هایش ارتباط برقرار کنند، همانطور که در تصویر زیر پیداست از این روش برای تولید App ها برای شیرپوینت و Office می توان استفاده کرد.
  5. REST/OData Endpoints همان��ور که به صورت مختصر در بخش REST توضیح داده شد در این روش با استفاده از فراخوانی url های عملیات های مختلف را در ارتباط با شیرپوینت می توان انجام داد. از این نوع API برای تولید برنامه های موبایلی در پلتفرم هایی نظیر Android و iOS می توان استفاده نمود
  6. Mobile Silverlight API : این API نیز که در شیرپوینت 2013 معرفی شده است مخصوص تولید برنامه هایی با استفاده از Silverlight برای Windows Phone پلتفرم موبایل مایکروسافت می باشد.
social broadcasting
Remote Event Receiver
یکی از راهکارهای قدیمی در مجموعه راهکارهای شیرپوینت Event Handler یا Event Receiver ها هستند. به کمک Event Handler ها می توانید رویدادهای مختلفی که در سطح لیست، آیتم های لیست یا سایت شما واقع می شوند را مدیریت کرده و برای آن ها کد بنویسید.
در شیرپوینت 2013، یک مفهوم گسترش یافته از Event Handler ها به نام Remote Event Receiver معرفی شده است که به کمک آن می توان رویدادهای مختلف در شیرپوینت را مدیریت کرد. تفاوت عمده این Event Receiver ها در این است که می توانند با component های ریموت شیرپوینت نیز کار کنند.
امکانات اجتماعی
همانطور که در مقاله "شیرپوینت 2013: نسخه جدید محصول قدرتمند مایکروسافت برای سازمان ها" که در شماره 115 زمان تحول به چاپ رسیده است اشاره شد، یکی از ویژگی هایی که به واسطه خریداری شرکت yammer (از شرکت های پیشرو در عرضه امکانات اجتماعی برای سازمان ها) در شیرپوینت 2013 دیده می شود، بهبود ویژگی های اجتماعی شیرپوینت است.
social broadcasting
سایر امکانات
مجموعه امکاناتی که در شیرپوینت 2013 برای برنامه نویسان فراهم شده است آن قدر متنوع هستند که پرداختن به آن ها و معرفی این امکانات در یک مقاله امکان پذیر نیست. در مقاله بعدی به بخش دیگری از امکانات مربوط به برنامه نویسی در شیرپوینت 2013 می پردازیم از جمله امکانات برنامه نویسی موبایل که برای اولین بار در شیرپوینت 2013 معرفی شده اند. همچنین به معرفی ابزارهای مختلف برای کار توسعه شیرپوینت و بهبودهایی که در آن ها ایجاد شده است خواهیم پرداخت.
 

روزهای پر کار پرنیان

  در این چند ماه اخیر، روزهای پرکاری را در پرنیان پشت سر گذاشتیم، تکمیل و بهبود ویژگی‌های محصولات اصلی شرکت، ارائه راهکارها و انجام پروژه‌های جدید، پشتیبانی کارهای قدیمی و ...
به جز این‌ها تغییر محل شرکت و جذب همکاران جدید و آموزش و به کارگیری آن‌ها در پروژه‌های مختلف هم به مشغله روزمره پرنیانی‌ها افزوده شده بود. به همه دوستان و همکارانم در پرنیان به خاطر کسب موفقیت‌های گوناگون و تلاش‌های بی وقفه‌شان در این مدت تبریک و خسته نباشید عرض می‌کنم.

به دوستانی هم که مطالب وبلاگ پرنیان را دنبال می‌کنند هم مژده می‌دهم که باز هم مثل گذشته همراه شما خواهیم بود و از راهکارها، اخبار و تازه‌های پرنیان برایتان خواهیم گفت.

 

مهندسي امنيت در web application(قسمت دوم)

 
اهداف
 
فعاليت اهداف امنيت يک فعاليت واضح است که به شما کمک مي کند تا حدود و محدوديتهاي امنيت نرم افزار خود را مشخص نمائيد . بنابراين شما مي توانيد تلاشهاي خود را اولويت بندي نمائيد و بر مبناي trade off ها عمل کنيد . ا
امنيت يک ويژگي کيفيت است که بايستي با ساير ويژگيهاي کيفيت بالانس شود . شما بايستي در ابتدا مشخص کنيد که امنيت براي يک پروژه خاص چقدر مهم است . معرفي کردن اهداف امنيتي به شما کمک مي کند تا بدانيد که چه کاري و در چه زماني از ديد امنيت انجام دهيد .
نقطه ابتدا اين است که شما مشخص کنيد که چه چيزي مي خواهيد رخ ندهد . به عنوان مثال شما نمي خواهيد داده يک مشتري براي مشتري ديگر فاش شود . براي اين فعاليت شما بايستي مشخص کنيد که چه چيزي درون حوزه امنيت اطلاعات شما مي باشد . اين کار به شما کمک مي کند که در مورد confidentially ، integrity و availability (CIA) فکر کنيد .
براي مشخص کردن اهداف امنيتي به سوالات زير پاسخ دهيد
  • چه داده اي از client را بايستي محافظت کنيد ؟ آيا برنامه کاربردي شما کد کاربري و رمز عبور ، اطلاعات جزئي حساب کاربري ، سابقه و transaction مالي دارد يا خير ؟
  • آيا شما يک نيازمندي امنيتي پذيرفته شده نظير سياست گذاري امنيتي ، قوانين محرمانگي ، قواعد و استانداردهاي پذيرفته شده داريد يا خير؟
  • آيا شما نياز داريد که از دارايي هاي معنوي سازمان مانند شهرت ، اطلاعات محرمانه تجاري يا دانش سازماني محافظت کنيد يا خير ؟ دو تکنيک وجود دارد که مي تواند به شما کمک کند تا اهداف امنيت خود را بيان کنيد . يک روش ساده استفاده از ماتريس نقش ها مي باشد که شامل نقشها ، اشيائي که بر روي آنها عمل مي کنند و ميزان دسترسي مي باشد . روش ديگر اين است که نيازمنديهاي عملياتي و سپس نيازمندي هاي CIA مرتبط با هر کدام از آنها مشخص گردد .
  • راهبرد زير کمک مي کند تا اهداف امنيتي خودتان را مشخص نمائيد .
  • از يک سناريو براي تنظيم حدود استفاده کنيد . آيا نيازمنديهاي عملياتي خارج از scope مي باشد ؟
  • اهداف خود را به نيازمنديها و محدوديتها تبديل کنيد .
  • برعکس براي اينکه از اشتباهات عمومي در زمان تعريف اهداف امنيت جلوگيري شود.
  • سعي نکنيد که همه اهداف امنيت خود را در ابتدا شکل دهيد . در ابتدا فقط به مواردي بپردازيد که در طراحي تاثير دارد .
  • هيچ گاه مستندي ايجاد نکنيد که هيچ کس استفاده نمي کند يا حتي به آن نگاه نمي کند . شما بايد مستنداتي را ايجاد کنيد که براي مرحله بعدي به آن نياز داريد . بقيه چيزها مي تواند يک checklist باشد .
  • اگر اهداف مهم هستند آنها را تبديل به آيتم هاي کاري نمائيد.
مدل سازي تهديد
شما نياز داريد که با تهديدات سيستم خود آشنا باشيد . بنابراين شما خواهيد دانست که آيا مکانيزم امنيت موثر مي باشد يا خير . مدل سازي تهديد تکنيکي است که شما مي توانيد براي شکل دادن به طراحي نرم افزار خود استفاده نمائيد و به شما جهت تصميمات آگاهانه در مورد مسائل کليدي امنيت کمک مي کند . در فرم ساده يک مدل تهديد يک representation سازمان يافته از تهديدات ، حملات و آسيب پذيري هاي مرتبط با سيستم شما مي باشد .
در طي طراحي يک مدل سازي موثر به شما کمک مي کند که به سرعت سناريوهاي what if خود را تکميل کنيد . مدت طولاني قبل از اينکه يک اقدام هزينه بر را انجام دهيد شما به سادگي ارزيابي مي کنيد که آيا راه درستي را مي رويد يا خير .
در عمل ما مي بينيم که اکثر فعاليت هاي مدل سازي تهديد ، مدل تهديد زير ساخت را از مدل تهديد برنامه کاربردي جدا مي کنند . در برخي از کمپاني تهديدات شبکه ، سرورها ، desktop ها و برنامه هاي کاربردي از يکديگر جدا مي شود که باعث مي شود ارتباط و مالکيت بهتر بيان گردد . عنصر کليدي اين است که اشتراک مهم بين برنامه کاربردي و زير ساخت را بيان نمائيم . هم اکنون مدل تهديد زير ساخت به عنوان يک ورودي براي مدل تهديد برنامه کاربردي مي باشد .
 راهبرد زير کمک مي کند تا مدل تهديد را بسازيد .
  •  مدل تهديد را به صورت افزايشي ارائه کنيد . در مدل به چيزهايي که مي دانيد ، چيزهايي که نمي دانيد و چيزهايي که نياز است که بعدا بدانيد توجه کنيد .
  •  از شيوه مبتني بر سوال استفاده کنيد . زماني که شما تهديدات ، حملات و آسيب پذيري ها را بيان مي کنيد پرسيدن سوالات بهتر مي تواند شما را به جوابهاي بهتر راهنمايي کند .
  • از مدل تهديد براي معرفي کردن اينکه چه کدي بايد prototype و تست شود استفاده کنيد . مدل تهديد بايستي تصميمات مهندسي داراي ريسک بالا را آشکار سازد که کانديداهاي مهمي براي اولويت بندي جهت prototype و يا تست مي باشد .
  • از تکنيک هاي متعارف استفاده کنيد . شما مي توانيد از تکنيک هاي متعارف مانند آناليز use case ها ، آناليز جريان داده ، شيوه هاي مبتني بر پرسش ، ماتريس نقش ها و طوفان مغزي استفاده نمائيد .
  • از چهارچوب هاي مبتني بر الگو استفاده کنيد . اين الگوها مجرايي از دانش فرد خبره به سمت توسعه دهنده نرم افزار مي باشد که مي تواند فکر وي را شکل دهد .
  • فعاليت مدل سازي تهديد خود را به دوره هاي از پيش تعيين شده تقسيم کنيد .
  • آسيب پذيري ها را بر مبناي مدل تهديد خود شناسايي نمائيد . مهمترين خروجي قابل عمل از مدل سازي تهديد ، ليست آسيب پذيري هاي قابل حمله مي باشد . از اشتباهات عمومي زير اجتناب کنيد : همه کارها را در ابتدا انجام ندهيد .
  • از مدل سازي تهديد به عنوان يک راه حل معجزه آسا استفاده نکنيد . اين يک فعاليت کليدي مي باشد ولي نمي تواند جايگزين مرور امنيت زيرساخت و طراحي يا مرور کد گردد.
  • مدل سازي تهديد خود را آنقدر سنگين و رسمي نکنيد که در طي توسعه نرم افزار قابل استفاده نباشد .
  • چيزي به خارج از تهديدات و حملات در مدل سازي تهديد توضيح ندهيد . براي اطلاعات بيشتر Threat Modeling Web Applications در http://msdn.com/ ThreatModeling را ببينيد . به عنوان مثال مدل تهديد مربوط به تهديد cryptography در web application به صورت زير مي باشد : معرفي تهديدات امنيتي با سوالات زير انجام مي شود :

    چه الگوريتم يا تکنيک رمز نگاري استفاده مي کنيد ؟

    آيا از الگوريتم رمز نگاري شخصي خود استفاده مي کنيد ؟

    چرا از اين الگوريتم خاص استفاده مي کنيد ؟

    طول کليد رمزنگاري چقدر است و چگونه از آن حفاظت مي کنيد ؟

    چند وقت به چند وقت کليدها تغيير مي کند ؟

    چگونه کليدهاي رمز نگاري توزيع مي شود ؟ رمز نگاري را با مشاهده اين تهديدات عمومي مرور کنيد.

    استفاده از يک الگوريتم رمزنگاري شخصي

    استفاده از الگوريتم اشتباه و يا داراي کليد کوتاه

راهبرد طراحي
ايا تيم توسعه نرم افزار شما از قوانين ، نمونه ها و الگوهاي طراحي امنيت نرم افزار اثبات شده استفاده مي کنند ؟ اگر شما از برخي از اينها استفاده نکنيد شانس کمتري براي موفقيت خواهيد داشت . فعاليت راهبردهاي امنيت جايي است که شما پيشنهادات مربوط به طراحي امنيت را جستجو کرده ، جمع آوري مي کنيد و به صورتي مفيد که براي تيم توسعه شما مناسب مي باشد سازماندهي مي کنيد .
يک راهبرد مناسب که بيشتر از فقط يک توصيه مي باشد . اين که از input validation استفاده کنيد يک ايده خوب است ولي يک راهبرد مناسب نمي باشد . اجازه دهيد که اين ايده را به چيزي تبديل کنيم که قابل عمل باشد
  •  کجا آن را انجام دهيم : به validate کردن ورودي کاربر در سمت client اعتماد نکنيد . از آن استفاده کنيد تا تعداد رفت و برگشت ها به سرور را کاهش دهيد ، ولي به امنيت آن اعتماد نکنيد .
  • چرا : کد هاي سمت سرور بايستي validation خود را انجام دهند زيرا حمله کننده ممکن است کد هاي سمت client را دور زده يا آنها را تغيير دهد .
  • چگونه : از شيوه اجازه دادن allow بر روي رد کردن deny استفاده کنيد . بدليل اينکه تقريبا غيرممکن است که شما بتوانيد همه انواع مختلف ورودي هايي بد را مشخص کنيد . به جاي آن مي توانيد چيزي که يک ورودي خوب شبيه آن مي باشد مشخص کنيد و بر اساس آن فيلتر را انجام دهيد . يک راه موثر براي محاسبه موفقيت راهبردها اين است که آيا آنها ما را به نتيجه مي رساند و آيا قابل تکرار مي باشد .
در اينجا چيزهايي را که بايد در زمان ساختن راهبرد طراحي دنبال کنيد آمده است :
  •  از دسته بندي ها براي قالب بندي فضاي مساله و سازماندهي اطلاعات استفاده کنيد .
  • از شيوه چه کاري بايد انجام دهيم ، چرا و چگونه استفاده کنيد . براي هر راهبردي که مي خواهيد تيم توسعه شما دنبال کنند آن را در يک کار قابل انجام با قوانين و مثالهايي به صورت کد در صورت امکان خلاصه نمائيد .
  •  از کلمات ساده استفاده کنيد مانند انجام دهيد ، انجام ندهيد ، بايد ، نبايد و ... . اين به توصيف راهبرد کمک مي کند .
  • توضيح دهيد که چه زماني اين راهبرد مناسب مي باشد و چه زماني مناسب نمي باشد .
  •  از راهبردهايي که هوشمندانه و قابل درک مي باشد استفاده کنيد . اين واضح به نظر مي رسد اما ممکن است در به سادگي در تله مستند کردن چيزهايي بيفتيد که همه آن را مي دانند . بيشتر توجه خود را صرف اطلاعاتي کنيد که غافلگير کننده مي باشد . اشتباهاتي که بايستي از آن اجتناب کنيد.
  •  همه راهبردها را در ابتدا ايجاد نکنيد . بر روي آنهايي تمرکز کنيد که تاثير فوري بر روي نيازمندي ها و هر تکنولوژي اي که در حال ارزيابي آن هستيد و يا از آن استفاده مي کنيد دارد .
  • چرخ را از نو اختراع نکنيد . راهبردهاي امنيت زيادي در حال حاضر وجود دارد . آيتم کليدي اين است که آن را پيدا کرده و به چيزي تبديل کنيد که تيم شما بتوانند بر روي آن عمل کنند .
  •  راهبردهاي خود را در مستنداتي که هرگز از آن استفاده نمي کنيد زنداني نکنيد . شما نياز داريد که بهترين رسانه براي راهبردهاي خود را با جا دادن آنها در فعاليت ها و گردش کار ها تعيين نمائيد .
  • با استفاده از اين قوانين ساده شما مي توانيد راهبردهايي را ايجاد کنيد که قابل عمل کردن باشند . به شما بگويد که چه کاري انجام دهيد ، چرا بايد آن را انجام دهيد و چگونه بر اساس آن عمل کنيد . مرور زيرساخت و طراحي شما ممکن است در حال حاضر يک سري مرور بر روي طراحي انجام دهيد . احتمالا در فعاليت جاري مرور طراحي خود امنيت را پراکنده کرده ايد .
مساله اي که در اين شيوه وجود دارد دو مورد زير مي باشد :
  • شما بيش از حد مرور طراحي موجود خود را پيچيده کرده ايد .
  • شما تاثير و کارايي پيدا کردن جنبه هاي امنيتي را محدود کرده ايد .
اشتباه نکنيد : مرور طراحي کلي مي تواند موثر باشد و آنها قطعا جايگاه خود را دارند اما آنها هيچ گاه نتيجه اي را که يک مرور طراحي با تمرکز بر روي امنيت را نخواهند داشت . زماني که شما يک فعاليت را براي يک دامنه مساله خاص بهينه مي کنيد شما مي توانيد چيزهاي زايد آن را حذف کنيد تا به کارايي بالاتر برسيد .
در مورد دقتي که با حذف کردن هر چيزي که غير مرتبط مي باشد به دست آمده باشد . زماني که شما بر روي امنيت متمرکز مي شويد به صورت تصادفي بر روي ساير ويژگيهاي کيفيت متمرکز نمي شويد مگر اينکه يک اشتراک مستقيم وچود داشته باشد . يک مثال براي زماني که امنيت و performance با هم اشتراک دارند اين است که در صورتي که مي خواهيد از يک راه حل SSL استفاده کنيد نيازمندي امنيت ممکن است به شما بگويد که شما مي توانيد از راه حل نرم افزاري استفاده کنيد يا نياز به استفاده از راه حل سخت افزاري داريد .
چيزي که در مورد مرور زيرساخت و طراحي مهم است اين است که چيزهايي را که مي دانيد ، چيزهايي را که نمي دانيد و چيزهايي را که در آينده بايستي بدانيد را مشخص کنيد . شما بايد يک بالانس برقرار کنيد که آيا راه حل سريعتر اين است که در مورد يک مساله فکر کنيد و يک تئوري داشته باشيد يا اينکه آن را بسازيد و تست و ارزيابي کنيد . بهترين چيز در مورد مرور زيرساخت و طراحي امنيت اين است که شما به صورت موثر حوزه تست هايي را که مي خواهيد انجام دهيد مشخص نمائيد و آنها را اولويت بندي کنيد .
مهمترين مرحله ابتدايي مرور اين است که ابتدا از پايان در ذهن خود شروع کنيد . نيازي نيست که همه جزئيات را در نظر بگيريد بلکه بايستي چيزهايي را که براي تصميماتي که در حال حاضر مي خواهيد بگيريد مهم است در نظر بگيريد . همچنين ممکن است شما دياگرام مربوط به سيستم خود را به شيوه هاي گوناگون تهيه نمائبد . در صورتي که آن بر روي whiteboard نصب گردد مي تواند مفيد باشد . يک چيز جالب در مورد whiteboard اين است که شما را مجبور مي کند که فقط چيزهايي را که مهم است بياوريد چه متوجه اينم مساله باشيد و چه نباشيد . يک راهبرد مناسب زماني که يک ارائه بصري از سيستم را نشان مي دهيد اين است که بر روي لايه منطقي و اشتراک آن با توپولوژي فيزيکي تمرکز کنيد . اگر شما مي توانيد نشان دهيد که چه چيزي استقرار پيدا کرده است و کجا روش صحيحي را انتخاب کرده ايد .
بهترين چيز بعدي که شما مي توانيد نشان دهيد جنبه هاي کليدي مرتبط با امنيت برنامه کاربردي مي باشد ، مانند authentication ، authorization ، validation ورودي و داده و ... .هر کدام از اين جنبه ها بر روي طراحي برنامه کاربردي تاثير گذار مي باشد .
يک راه مناسب جهت اينکه به سرعت مشخص کنيم که بر روي چه جايي براي حداکثر امنيت تمرکز کنيم اين است که سوالاتي بپرسيم که نتيجه آنها تصميماتي با ريسک بالا مي باشد . به عنوان مثال:
  • چگونه شما درخواست کننده منابع front end ، لايه مياني و لايه back end را تصديق اصالت مي کنيد ؟
  • چگونه سطح دسترسي درخواست دهنده منابع front end ، لايه مياني و back end را مشخص مي کنيد ؟
  • چگونه اصالت را جريان مي دهيد ؟ ايا اصالت درخواست دهنده اوليه را به منابع back end تغيير مي دهيد و يا از يک trusted proxy به جاي درخواست دهنده استفاده مي کنيد) • چگونه ورودي ها را validate مي کنيد . آيا از يک روتين متمرکز براي handle کردن ورودي کاربر استفاده مي کنيد ؟
  • چگونه مطمئن مي شويد که زماني که استثنائي رخ داد اطلاعات حساس را فاش نمي کنيد ؟
  • چگونه عمليات حساس سازماني خود را audit مي کنيد ؟ اين نوع سوالات مشخص مي کند که در آينده چه چيزي را بايد بررسي کنيد . بر اساس اين سوالات شما مي توانيد بفهميد که چقدر در مورد طراحي بايستي نگران باشيد .
در اينجا چگونگي ايجاد يک مرور زيرساخت و طراحي آمده است :
  • براي امنيت مرور خاص آن را انجام دهيد .
  • مديريت زمان را بر روي مرور طراحي امنيت انجام دهيد . شما زمان نامحدودي نداريد . بر اساس اولويت ها زمان بندي و اقدام کنيد .
  • از شيوه مبتني بر سوال استفاده کنيد .
  • مرور امنيت خود را به بسته هاي کوچک تري قسمت بندي کنيد . به عنوان مثال بخش حساس روال و يا مکانيزم مانند validation ورودي و داده را مرور کنيد .
  • مرور طراحي را به عنوان دروازه اي براي ورود به گردش کار روزانه قرار دهيد . اين کار باعث مي شود که خطاها راحت تر در طي مرور و تحليل استاتيک کشف گردد .
  • در اينجا چگونگي اجتناب از برخي از خطاهاي عمومي آمده است.
  • مرور مربوط به زيرساخت و طراحي امنيت را خيلي دير انجام ندهيد . اين کار باعث مي شود که جلوي اشتباهات بزرگ خيلي زود تر گرفته شود .
  • مرور مربوط به طراحي امنيت را با مرور کلي انجام ندهيد و آن را به صورت مجزا انجام دهيد .
  • درگير چيزهاي کوچک نشويد . شما نياز داريد که مشکلات بزرگ که اثر آبشاري دارند را پيدا کنيد.
براي اطلاعات بيشتر Security Architecture and Design Review for Web Applications را در http://msdn.microsoft.com/library/en-us/dnnetsec/html/THCMCh05.asp ببينيد .
مرور کد
چه روشي براي پيدا کردن مشکلات امنيتي از مرور کد بهتر است . مرور امنيت کد اين نيست که بررسي کنيم که آيا کد کار مي کند يا خير . اجرا کد اين را به شما مي گويد . اين کار به شما مي گويد که آيا کد اهداف امنيتي را برآورده مي کند يا خير . مرور کد بر اساس امنيت به شما اجازه مي دهد تا يک آناليز مفهومي بر روي کد انجام دهيد .
اين مهم است که در ذهن خود نگه داريد که برخي از گزينه هاي امنيت درباره ساخت کد يا نمونه اثبات شده مي باشد و ساير گزينه ها در مورد ريسک هاي کسب و کار مي باشد .
خبره هاي امنيت 4 مرحله را براي مرور امنيت کد استفاده مي کنند .
  1. مشخص کردن اهداف امنيت مرور کد
  2. انجام دادن scan اوليه : اين کار شامل انجام يک آناليز استاتيک براي پيدا کردن مجموعه اي از نتايج و بهبود دانش خود در مورد اينکه چه جايي بيشتر احتمال دارد مشکلات را زماني که کد را دقيق تر مرور مي کنيد پيدا کنيد .
  3. مرور بيشتر کد جهت مشکلات امنيتي : اينجا جايي است که کد را به طور کامل بررسي مي کنيد تا آسيب پذيري هاي آن را پيدا کنيد . شما مي توانيد از نتايج مرحله 2 استفاده نمائيد تحليل خود را بر روي قسمت هاي خاصي متمرکز کنيد . در اينجا از روش هايي نظير کنترل و آناليز dataflow مي توان استفاده کرد .
  4. براي مشکلات امنيتي که خاص زيرساخت شما مي باشد کد را مرور کنيد . اين مرحله در صورتي که شما مکانيزم امنيتي خود را پياده سازي کرده ايد بسيار مهم مي باشد (يا هر امکاني را که براي رفع يک مشکل امنيت خود پياده سازي نموده ايد)
با وجود اينکه آناليز استاتيک براي پيدا کردن الگوهايي که بايد به دنبال آن باشيد مفيد مي باشد آناليز مفهومي و دانستن اهداف امنيت کليدي هستند تا بدانيد که چگونه شروع کنيد ، چگونه پ��ش برويد و چه زماني کار شما انجام شده است .
چيزهايي که بايد در زمان مرور کد به آن توجه کنيد
  • زمان خود را بودجه بندي کنيد . بنابراين شما مي توانيد به درستي بر مبناي اولويت بندي ها عمل کنيد .
  • اهداف را تنظيم کنيد ولي مدت زيادي درگير اين کار نشويد . اهداف به شما با تعيين حدود و محدوديتها کمک مي کنند ولي آنها خودشان نهايي نيستند . هر زمان که نياز است آنها را اصلاح کنيد .
  • از چک ليست هاي شخصي استفاده کنيد الگوي اشتباهات خود را پيدا کنيد و از يک checklist براي از بين بردن آنها استفاده نمائيد .
  • براي اينکه از اشتباهات عمومي جلوگيري شود مرور کد مربوط به امنيت را همزمان با مرور کد عادي انجام ندهيد . براي اطلاعات بيشتر بخش How To: Perform Security Code Review for Managed Code (BaselineActivity) را در http://msdn.microsoft.com/library/en-us/dnpag2/html/paght000027.asp ببينيد.
تست امنیت
صحبت در مورد تست امنيت معمولا بر روي تست نفوذ تمرکز دارد . اين روش مي تواند روش white box باشد که شما عملکرد داخلي را مي دانيد و يا روش black box باشد که شما عملکرد داخلي را نمي دانيد . تست black box عمدتا شامل تست مقادير مرزي ، تزريق ورودي بد رفتار و تست مشکلات شناخته شده مي باشد . شواهد زيادي وجود دارد که تست white box براي پيدا کردن مشکلات امنيتي بسيار مناسب تر مي باشد .
 يکي از شکايت هايي که عموما شنيده مي شود اين است که تست امنيت نا محدود است و نمي توان گفت که چه زماني اين کار انجام شده است . مشکل اين است که ما مي خواهيم به يک امنيتي کيفي به اتدازه کافي خوب برسيم . براي performance شما مي توانيد زمان پاسخ را محاسبه نمائيد . ولي براي امنيت مشکل است که confidentiality ، integrity و availability را محاسبه نمائيد . شاخص اينکه چگونه شروع کنيد ، چگونه جلو برويد و کي کار را به اتمام برسانيد به اهداف امنيت شما برمي گردد . موثرترين و کاراترين تست امنيت چرخيدن اطراف اهداف امنيتي و مدل تهديد مي باشد . اين کار منافع تست اکتشافي را نفي نمي کند . براي اين کار زماني که نرم افزار به قدر کافي از لحاظ امنيتي قوي شد معمولا در صنعت از يک third party جهت تست نفوذ به صورت white box و black box استفاده مي شود .
تست استقرار
استقرار زماني است که برنامه کاربردي شما در بر روي زير ساخت مشتري قرار گرفت . بنابراين مرور استقرار آخرين فرصت براي بررسي امنيت مي باشد . با وجود اينکه اولين عموما اولين بار نيست که استقرار يک برنامه کاربردي را انجام مي دهيد اما در عمل به نظر مي رسد که چنين است . چون در بسياري از مواقع دچار همان مشکلاتي مي شويم که در مرور استقرار قبلي نيز دچار آن شده ايم . يک برنامه کاربردي ممکن است رفتارهاي متفاوتي در طي فرايند توسعه و توليد در سناريوهاي مختلف داشته باشد . گاهي توسعه دهنده محدوديتهاي infrastructure را نمي داند .
گاهي نرم افزار برخي از سياست هاي سازمان را که در طي مسير گم شده است نقض مي کند . گاهي نرم افزار با يک حساب کاربري داراي سطح دسترسي بالاتر تست مي شود و در زمان استقرار به درستي با حساب کاربري که داراي دسترسي پايين تري مي باشد . گاهي برنامه کاربردي بر روي يک سرور باز ساخته و تست مي شود و زماني که بر روي يک سرور به بسته شده استقرار مي يابد اجرا نمي شود .
تست استقرار شما بايستي بسياري از غافلگيري ها را تا حد ممکن از بين ببرد . شما ممکن است دست کم يک محيط اجرا قبل از ارائه محصول نهايي داشته باشيد . در حالت ايده آل شما سيکل هاي ساخت را قبلا در زمان توسعه نرم افزار داريد که بر اساس آن مي توانيد رفتار نرم افزار را در محيط اجرا حدس بزنيد . کدي که بر روي ماشين developer در يک شرايط خاص اجرا مي شود ممکن است در محيط مشتري به شکل ديگري اجرا شود . اين يک چيز عمومي مي باشد نه يک استثناء . کد هايي که به صورت امن در طي توسعه معمولا با Web Server و Database بر روي يک ماشين اجرا مي شوند ممکن است به اين خوبي در محيط مشتري اجرا نشود .
معمولا تعداد زيادي اجزاي قابل انتقال با گزينه هاي پيگربندي وجود دارد که مي تواند بر روي رفتار نرم افزار شما در محيط اجرا تاثير بگذارد .
در صورتي که شما دکمه ها ، کليد ها ، تنظيمات و يا وضعيت هاي متعددي داريد دسته بندي انها مي تواند به شما کمک کند . يک ليست flat از تنظيمات ممکن است شما را دچار اشتباه نمايد .
به عنوان مثال يک دسته بندي براي حساب کاربري ممکن است به صورت زير باشد :
  • حسابهاي کاربري حداقل دسترسي را دارند
  • استفاده از سياست password هاي قوي اجباري مي باشد .
  • جدا کردن سطح دسترسي ها اجباري مي باشد .
با استفاده از اين روش شما مي توانيد به سرعت قواعد مورد قبول ، محدوديت هاي زير ساخت ، توصيه هاي فروشنده و ... را اعمال نمائيد . اين کار همچنين قابليت چک کردن مرور استقرار را تکرارپذيرتر مي کند . اينجا چيزهايي را که در زمان ساختن يک مرور استقرار بايستي به آنها توجه کنيد آمده است :
  • بايستي چک ليست هايي خود را به روز نگه داريد . در طي زمان محيط ، قواعد مورد قبول و زيرساخت تغيير مي کند و check list هاي شما نياز به نگهداري دارد
  • فقط به check list ها نپردازيد و آن را با تفکر و تحليل مفهومي جايگزين نکنيد .
  • براي اطلاعات بيشتر Security Deployment Review Index را در http://msdn.microsoft.com / library/en-us/dnpag2/html/ SecurityDeploymentReviewIndex.asp ببينيد .
چهار چوب هاي امنيت وب
مشکلات با الگوي خاص بارها و بارها براي ما رخ مي دهد .
چهارچوب هاي امنيت وب (http://msdn.microsoft.com/library/en-us/dnpag2/html/TMWAcheatsheet.asp) به شما کمک خواهد کرد که مشکلات تکراري را دسته بندي کنيد
اين کار تاثير فعاليت هاي امنيت را افزايش مي دهد . در اينجا يک دسته بندي از چهارچوب امنيت وب ايجاد آمده است .
  • اعتبارسنجي ورودي و داده
  • Authorization
  • Authentication
  • مديريت پيکربندي
  • رمز نگاري
  • داده هاي حساس
  • مديرت استثنائات
  • مديريت session
  • مميزي و log
اين مجموعه از دسته بندي ها تکرار شده در طي زمان پايدار گرديده است . زيرا اينها دلايل ريشه اي وقوع مشکلات امنيتي هستند . براي اطلاعات بيشتر Cheat Sheet: Web ApplicationSecurity Frame را در http://msdn.microsoft.com/library/en-us/dnpag2/html/ TMWAcheatsheet.asp.) ببينيد .
 

آخرین نظرات

Comment RSS