وبلاگ پرنیان پردازش پارس

مقالات آموزش اتوماسیون اداری و شیرپوینت، فیلم های آموزشی، آخرین اخبار و دیگر مطالب مرتبط با دنیای نرم افزارهای سازمانی

اطلاعات بیشتر »

مهندسي امنيت در 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.) ببينيد .
 

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

سرویس خبرخوان جامع الکترونیکی پرنیان، مجموعه ای از دو 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 با انعطاف پذیری بالا در تعیین مسیر گردش کار که در هر زمان به شما امکان بازگشت به مراحل قبلی را داده و تفویض اختیار به سایر افراد در سازمان را برای شما به راحتی میسر می سازد.
طراحی و پیاده سازی ارتباطات متقابل بین واحدهای مختلف سازمان با قابلیت سازش پذیری با بسیاری از نرم افرارهای درون سازمانی که با بکارگیری وب سرویس های قدرتمند امکان ارتباط بین این واحد ها را مقدور می سازد.
سیستم گزارش گیری و اطلاع رسانی با ویژگی هایی چون ارسال ایمیل های اطلاع رسانی در خلال پروسه گردش فرم در کنار امکان ثبت پاراف و پیوست وجود دارد که کلیه مرحل در قالب بخشی به نام تاریخچه گردش کار جمع آوری شده و روال چرخش فرم تا لحظه جاری را با جزئیات در یک نمای درختی نمایش می دهد.
فرآیند ساز پرنیان به شما این امکان را می دهد که حتی بدون نیاز به تعریف دستی یک گردش کار و صرفا با تعیین یک بازه زمانی خاص، یک گردش به طور خودکار شروع به کار کرده و طی فواصل زمانی گوناگون در صورت نیاز، ادامه روند کار خود را نیز به صورت خودکار ادامه دهد. در همین راستا زمینه راحتی را برای اجرای گردش کار فرزند به معنای گردشی خاص که در خلال گردش اصلی استارت زده می شود، با امکان تعیین آیتم هایی که لازم است از هر سطح به دیگری منتقل شود را فراهم می کند.
 

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

بعد از ارایه نسخه Preview آفیس و شیرپوینت 2013 و با توجه به گستردگی بازار استفاده از این محصولات و امکان توسعه Add-on و Web Part و... برای آنها، مایکروسافت نیز مانند اپل تصمیم گرفته است فروشگاهی جهت عرضه App (اپ)های مربوط به این محصولات آماده نماید. برای شروع با برگزاری مسابقه ای در این خصوص از همه توسعه دهندگان دعوت شده است تا ایده های خود را به صورت App عرضه نمایند.
 
برای شرکت در این مسابقه باید app مورد نظر را تا 20 نوامبر 2012 در سایت sellerdashboard.microsoft.com بارگذاری نمود. جوایز این مسابقه برای نفر اول 10 هزار دلار جایزه نقدی به علاوه امکان ملاقات با یکی از مدیران مایکروسافت و گرفتن مشاوره از یکی از مدیران تیم برنامه نویسی مایکروسافت است.
پرنیان نیز به عنوان برترین ارایه کننده محصولات فارسی مبتنی بر شیرپوینت در این مسابقه شرکت می نماید.
 

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

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

تیم فنی پرنیان پردازش پارس
 
در قسمت قبل این مقاله در خصوص برخی قابلیت هایی که در شیرپوینت 2013 ایجاد شده یا بهبود یافته اند صحبت کردیم. در این قسمت به صورت مشخص در خصوص دو بخش Business Connectivity Service و Business Intelligence و بهبودها و امکانات جدید این دو بخش در شیرپوینت 2013 صحبت خواهیم کرد.
امکانات جدید برنامه نویسی برای Business Connectivity Service
در تمام سازمان ها، داده ها بر روی منابع اطلاعاتی مختلفی ذخیره می شوند. یکی از کارکردهای پورتالهای سازمانی، یکپارچه سازی دسترسی به داده ها و گزارشات و آمارهای مختلف روی آنهاست.
شیرپوینت از سالیان دور امکاناتی را برای کار با داده های خارجی در اختیار کاربران و برنامه نویسان قرار داده، BDC ها در شیرپوینت 2007 و سرویس Business Connectivity در شیرپوینت 2010 هر دو هدف مشترکی را دنبال می کنند.
در شیرپوینت 2010 برای اتصال به یک منبع داده خارجی، 3 گزینه وجود داشت: WCF، SQL Server و .NET Assembly . اما در شیرپوینت 2013 گزینه OData نیز به این مجموعه اضافه شده است.
OData یا Open Data Protocol یک پروتکل برای کوئری زدن و به روز رسانی داده هاست که به شکل های مختلف از جمله از طریق Http یا JSON می توان از آن استفاده کرد. شیرپوینت 2013 علاوه بر پشتیبانی از OData، روش های مختلفی برای احراز هویت (Authentication) در آن را نیز پشتیبانی می کند از جمله احراز هویت کاربر ناشناس (Anonymous)، احراز هویت Basic و Windows Authentication و احراز هویت سفارشی (Custom Authentication)
social broadcasting
در تکمیل پشتیبانی از OData، شیرپوینت 2013 همچنین به صورت خودکار توانایی ایجاد BDC Model ها بر اساس OData را دارد، در این حالت شما نیاز نیست نگران نوع منبع داده، نحوه احراز هویت و نحوه تعامل با منبع داده خارجی باشید. همچنین به منظور تنوع در استفاده از قابلیت های OData دستوراتی نیز به powershell شیرپوینت در این خصوص افزوده شده است که مدیران سیستم می توانند از آن ها برای کار با OData استفاده کنند.
علاوه بر OData، یکی از قابلیت های جدید و بسیار جالب شیرپوینت 2013 در مبحث Business Connectivity، قابلیت Event Listener است که به کمک آن شیرپوینت می تواند رویدادهایی که منجر به تغییر بر روی داده های منبع داده خارجی می شود را برای برنامه نویسان قابل دسترس کند تا برای این رویدادها کدهای سفارشی تهیه کنند. این قابلیت به توسعه بیشتر و استفاده منعطف از قابلیت های منبع داده خارجی کمک بسیار زیادی می کند.
علاوه بر برنامه نویسان، در شیرپوینت 2013 کاربران عادی نیز می توانند از قابلیت مربوط به رویدادها بر روی منبع داده خارجی استفاده کنند و برای خود هشدارهای سفارشی روی External List ها تعریف کنند. این نخستین بار در شیرپوینت است که چنین امکانی برای کاربران نهایی فراهم می شود. به این ترتیب می توان از قدرت alert های شیرپوینت برای دریافت notification بر روی منابع داده غیرشیرپوینتی نیز استفاده کرد.
حالا که صحبت از External List ها شد، خوب است بدانید که مایکروسافت در شیرپوینت 2013 بهبودهایی نیز در performance لیست های خارجی ایجاد کرده است. بیشتر این بهبودها، از طریق افزو��ن امکان صفحه بندی، فیلتر کردن داده ها و مرتب کردن اطلاعات خارجی در سمت داده خارجی و قبل از ارسال اطلاعات به شیرپوینت است، به این ترتیب وقتی شما در حال مشاهده صفحه ای از داده ها در شیرپوینت هستید، داده ها به شکل بهینه ای از منبع داده خارجی به شیرپوینت منتقل می شوند.
علاوه بر بهبودهای اشاره شده، با مشخص کردن حد رکوردها در BDC، کاربر امکان مشخص کردن تعداد رکوردهایی که در هر صفحه از لیست خارجی نمایش داده می شود را نیز دارا خواهد بود.
یکی دیگر از قابلیت هایی که به لیست های خارجی در شیرپوینت 2013 اضافه شده و جزء تفاوتهای لیست های عادی و لیست های خارجی در شیرپونت 2010 محسوب می شد قابلیت export کردن داده های لیست خارجی به اکسل است. البته این export یک طرفه است و هنوز قابلیت import از اکسل به یک لیست خارجی اضافه نشده است (قابلیت import از اکسل در لیست های معمولی در شیرپونت 2010 نیز وجود داشت). همچنین وقتی اطلاعات به اکسل ارسال می شوند در واقع نمایی از داده هایی که در حال مشاهده آنها بر روی مرورگر هستیم به اکسل فرستاده می شود با همان ترتیب و با همان فیلترها و روال کار در شیرپوینت 2013 مانند ارسال به اکسل قدیمی که همه داده ها را ارسال می کرد نیست.
امکانات جدید Business Intelligence در شیرپوینت 2013
شیرپوینت، حوزه هوش سازمانی را از طریق چند سرویس به کاربران خود ارائه می کند. در حوزه هوش سازمانی اکسل یا Excel BI با چند ویژگی جدید روبرو هستیم. In-Memory BI Engine که قابلیت آنالیز میلیون ها ردیف را می دهد و به صورت کامل با نرم افزار کلاینتی اکسل نیز سازگار و یکپارچه است. Power View Add-in برای اکسل و گزارشات PivotTable از جمله دیگر بهبودهای Excel BI در شیرپوینت 2013 هستند.
در حوزه اکسل سرویس، که یکی از بخش های مهم شیرپوینت بوده و هست نیز قابلیت هایی جدیدی اضافه شده که به کاربران و برنامه نویسان در استفاده بهتر و سریعتر از قابلیت های هوش سازمانی مایکروسافت کمک می کند. از جمله این قابلیت های جدید می توان به بهبودهایی در مشاهده داده ها، تعیین SQL Server Analysis Service مورد نظر از سوی مدیر سیستم، به روز رسانی در الگوی سایت مرکز هوش سازمانی (BI Center) در مجموعه الگوهای سایت شیرپوینت اشاره کرد.
اما یکی از بیشترین به روز رسانی ها در حوزه BI در بخش PerformancePoint Service صورت گرفته است. در ادامه کارهایی که مایکروسافت در حوزه یکپارچگی و آسان کردن دسترسی به داده های شیرپوینت از طریق برنامه های موبایل انجام داده، نمایش کامل و بدون نقص داده های داشبوردهای مدیریتی بر روی iPad یکی از جدیدترین امکاناتی است که مایکروسافت به مجموعه PerformancePoint افزوده است. همچنین در این حوزه، یک قابلیت بسیار کاربردی به نام Dashboard Migration اضافه شده که به کاربران این امکان را می دهد که تمام یک داشبورد مدیریتی از جمله صفحات aspx آن را به یک کاربر یا سرور یا مجموعه سایت دیگر منتقل کنند، علاوه بر این امکان، با استفاده از قابلیت هایی که به powershell افزوده شده امکان انتقال داده ها بین داشبوردها نیز به وجود آمده است.
در حوزه هوش سازمانی، یکی از جدیدترین دستاوردهای مایکروسافت که در شیرپونت 2010 معرفی شد، Visio Service بود. در شیرپوینت 2013 نیز بهبودهایی هر چند اندک در حوزه Visio Service اتفاق افتاده از جمله افزایش حجم کش که به صورت یک تنظیم در Central Administration درآمده است، اضافه کردن دستورات جدید مختص Visio به powershell و پشتیبانی از توضیحات (comment) بر روی اشکال visio.
امکانات بیشتر و راه توسعه در شیرپوینت 2013
در مقالات دیگری، به زوایای دیگری از حوزه برنامه نویسی در شیرپوینت 2013 خواهیم پرداخت. با وجود اینکه شیرپوینت 2013 هنوز به نسخه نهایی نرسیده، اما پرنیان پردازش پارس به عنوان برترین ارائه کننده راهکارهای مبتنی بر شیرپوینت در ایران، به سرعت در حالت مطالعه بر روی به روز رسانی برنامه ها برای ارائه در شیرپوینت 2013 است.
 

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

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

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

 

مهندسي امنيت در 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 فعاليتهاي کليدي امنيتي را در رابطه با فعاليتهاي استاندارد توسعه نشان مي دهد .
در بخش زير يک مجموعه از فعاليتهاي اصلي براي مهندسي امنيت آمده است :
  • اهداف
  • مدل سازي تهديد
  • راهبردهاي طراحي
  • مرور زيرساخت و طراحي
  • مرور کد
  • تست
  • مرور استقرار
اين فعاليتها يکديگر را تکميل نموده و اثر هم افزايي در امنيت نرم افزار دارند .
 
 

ارتقا سرویس هاستینگ شیرپوینت فارسی

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

3pco.org و 3pco.ir و parnianportal.com

پرنیان که تاسیس شد ما هم مثل دیگران دامنه ثبت کردیم و خوب سعی کردیم دامنه ای ثبت کنیم که هم کوتاه باشد و هم نشان دهنده نام شرکت. لذا دامنه های 3pco.org و 3pco.ir را ثبت کردیم.

Parnian Pardazesh Pars Corporation à PPP Corporation à 3P Corporation à 3PCo

این هم فرمول مشخص شدن  نام دامنه های پرنیان، اما به مرور متوجه شدیم که اعلام آدرس سایت شرکت مخصوصا از پشت تلفن برای مشتریان کاری بس دشوار است.

فرض کنید شما از کسی بپرسید آدرس سایتتون؟ و در پاسخ بشنوید "تری پی کو" !!!

خلاصه تصمیم دوستان بر این شد که یک دامنه دیگر نیز ثبت کنیم که هر چند طولانی باشد ولی اعلام آن ساده باشد. و چنین شد که parnianportal.com برگزیده شد که هم  تلفظ آن ساده تر است و هم متفاوت، تفاوت هم در ظاهر و هم در نوع خدمات انشالله.

امروز دو دامنه 3pco.ir و 3pco.org را redirect کردیم  روی parnianportal.com، البته هنوز مواردی در این سایتها هست که به پورتال پرنیان منتقل نشده، که آن انجام خواهد شد به لطف دوستان.

 

آخرین نظرات

Comment RSS