ایجاد و مدیریت Policyها در Microsoft Azure- بخش اول
مرداد 13, 1403 1403-05-13 10:05ایجاد و مدیریت Policyها در Microsoft Azure- بخش اول
ایجاد و مدیریت Policyها در Microsoft Azure- بخش اول
به زبان ساده می توان گفت منظور از Governance تعریف یک چارچوب و محدوده برای یک سازمان است. در واقع در Governance یک سری قاعده و قانون برای گردش اطلاعات تعریف می کنیم. در حوزه Governance در محیط Azure Cloud دو موضوع مطرح می شود:
- Azure Policy ها
- Tagها روی Resource ها
در این مقاله Azure Policy ها را مورد بررسی قرار می دهیم. اولین چیزی که به ذهن می آید این است که آیا Azure Policyها همان Group Policy ها در سرویس Active Directory است؟ پاسخ این است که ارتباطی بین این دو مفهوم وجود ندارد. در واقع Group Policyهای موجود در شبکه on-premises تلفیقی از پالسی ها، دسترسی ها، مجوزها و موارد دیگر است که با استفاده از آن ها می توانید userها، computerها، groupها و غیره را مدیریت کنید. در واقع Group Policy ها در شبکه دامین تلفیقی از Azure Policyها، RBACها و یک سری قابلیت های دیگر است. به طور کلی هدف Group Policyها و Azure Policy ها و RBACها مدیریت شبکه و کنترل دسترسی ها است.
Azure Policy به شما اجازه می دهد تا یک سری قانون (rule) تعریف کنید و آن را بر روی ساختار Azure اعمال کنید و تمامی resource هایی که قرار است ساخته شوند و منابعی که در حال حاضر وجود دارد مدیریت شوند و طبق چارچوب مشخص شده توسط Azure Policy ها کار کنند. این rule ها به دو صورت اعمال می شود: شما می توانید مشخص کنید که rule به صورت مانیتورینگ کار کند و در صورت نقض قانون مشخص شده اعمال نماید. همچنین می توانید مشخص نمایید که rule به صورت Enforced باشد و حتماً اجرا شود. به عنوان مثال می توانید مشخص کنید هنگامی که قرار است یک ماشین مجازی (VM) ساخته شود فقط در یک بازه قیمتی مشخص ایجاد شود یا مثلاً در لوکیشن South Central US ساخته شود. شما می توانید از policy های پیش فرض Azure استفاده نمایید (built-in policies) یا می توانید policy های مخصوص به خود را بسازید (Custom policies).
در واقع تعاریف مربوط به custom policy ها همان ARM template ها هستند که policy را تعریف می کنند. هنگامی که کاربران قصد دارند به پورتال Azure متصل شوند به ساختار ARM متصل می شوند و به واسطه ARM به پورتال Azure دسترسی دارند. هنگامی که شما Policy ایجاد می کنید (Custom Policy) در واقع یک ARM Template ایجاد می کنید که دستورات در قالب یک JSON File نوشته و ذخیره می شوند و سپس کدهای JSON بر روی ساختار Azure اعمال می شود.
مقایسه Azure Policy با RBAC
Azure Policy و Role-based Access control (RBAC) هر دو برای کنترل Governance در محیط Azure مورد استفاده قرار می گیرند. همچنین هر دو برای روش هایی را برای کنترل دسترسی ایجاد می کنند که در اینجا تفاوت هایی وجود دارد. تمرکز Azure Policy بر Resource Property هایی است که برای منابع موجود یا منابعی که قرار است ایجاد شود وجود دارد. در واقع در Azure Policy دسترسی ها براساس resource property ها تعریف می شود.
آموزش کامل Microsoft Azure در دوره آژور Az-900 , آژور Az-140
منظور از resource property ها ویژگی هایی مانند اندازه ماشین مجازی، region ماشین مجازی، مشخصات ماشین مجازی و موارد دیگر است. در واقع مبنای تعریف Policy ویژگی یا property مربوط به هر resource است. در RBAC تمرکز بر اقدامات user در Scope های مختلف است؛ یعنی User می تواند یک سری از کارها را انجام دهد و یک سری از کارها را نمی تواند انجام دهد.
Azure Policy Object ها
وقتی با Policy ها کار می کنیم با سه مفهوم ذیل مواجه هستیم:
- Policy Definition: یک تک پالسی است که تنها روی یک موضوع خاص متمرکز شده است. این object همانند یک تک پالسی در Group Policy ها در شبکه Active Directory است.
- Initiative Definition: این آیتم مشابه Group Policy objects است که مجموعه ای از چندین policy definitionها است که در کنار یکدیگر قرار گرفته اند تا یک هدف معین را انجام دهند. به عنوان مثال می توانیم یک Initiative Definition ایجاد کنیم تا نیاز مانیتورینگ را برطرف کنیم. به عنوان نمونه دیگر می توانیم مجموعه ای از پالسی های امنیتی را گردآوری می کنیم و آن ها را تحت عنوان یک Initiative Definition در حوزه Security ایجاد می کنیم. در این وضعیت تمامی پالسی های موجود در این مجموعه به طور خودکار اعمال می شوند. Initiative Definition ها دارای rule های built-in هستند و هم به صورت شخصی قابل ساخت هستند.
- Assignments: در ساختار Active Directory، Group Policy ها به خودی خود اثربخش نیستند و می بایست آن را به object هایی مثل OU، Domain، Site و غیره لینک کنیم تا computerها، userها و غیره تحت تاثیر قرار بگیرند و سیاست های مورد نظر ما اعمال شود. در Azure Policy فرآیند لینک پالسی ها به صورت Assign کردن انجام می شود. منظور از Assign کردن اعمال کردن است.
برخی از نمونه پالسی های built-in در Azure در ذیل معرفی شده است:
- Allowed Resource Type: در این پالسی می توانید انواع resource هایی که قابل ساخته شدن (deploy) است را معرفی نمایید و سپس resourceهای دیگر قابل ساختن نباشد.
- Allowed Locations: در این پالسی تعیین می کنید که resourceها در چه locationهایی قابل ساختن است.
- Allowed Virtual Machine SKUs: در این پالسی اندازه ماشین های مجازی مانند قدرت پردازشی، فضای حافظه و فضای ذخیره سازی مشخص می شود و تنها ماشین های مجازی در اندازه مشخص شده قابلیت ساخته شدن را دارد.
- Add a tag to resources: در این پالسی مشخص می کنید که هر resource ای که ایجاد می شود به طور خودکار به آن tag اختصاص داده شود.
- Not allowed resource type: در این پالس لیست resourceهایی که اجازه ساخته شدن (deploy) ندارند را مشخص می کنید.
در ذیل برخی از نمونه Initiative definitionها معرفی شده است:
- Monitor unencrypted SQL Database in Microsoft Defender for cloud: مجموعه ای از پالسی ها برای مانیتور کردن سرور ها و دیتابیس های رمزنگاری نشده SQL مورد استفاده قرار می گیرد.
- Monitor OS vulnerabilities in Microsoft Defender for Cloud: مجموعه ای از پالسی هایی است که برای مانیتور کردن سرورهایی مورد استفاده قرار می گیرد که از پیکربندی اولیه تبعیت نمی کنند.
کار با پالسی ها در محیط Microsoft Azure
در نوار جستجو در پورتال Azure عبارت policy را تایپ می کنیم تا به بخش Policyها دسترسی پیدا کنیم.

بخش Overview
در بخش Overview نمای کلی از policy ها نمایش داده می شود.

بخش Compliance
در بخش Compliance گزارشی از policy definition ها و Initiative policy ها ارایه داده می شود که چند درصد منابع موجود با پالسی های تنظیم شده سازگار و چند درصد ناسازگار است.

بخش Getting Started
در این بخش مروری بر اطلاعات و شورت کات ها ارایه می شود.

بخش Remediation
منظور از Remediation بازیابی است. به عنوان مثال فرض کنید یک سری دستگاه وجود دارد که با پالسی های ست شده سازگار نیستند. در واقع هدف این است که با ایجاد یک سری ساز و کارها دستگاه هایی که با پالسی ها سازگاری ندارند به طور خودکار سازگار شوند.
بخش Events
در این بخش رخدادها و آیتم های مرتبط با آن ها نمایش داده می شود.

بخش Definitions
در این بخش Policy Definitions ها وجود دارد که با استفاده از آیتم + Policy Definition می توانید یک تک پالسی جدید (custom policy) ایجاد کنید.

همچنین با استفاده از آیتم + Initiative Definition می توانید مجموعه ای از Definition Policyها تعریف کنید که در واقع یک policy template ایجاد می کنید که حاوی پالسی های متعددی است. در پایین صفحه نیز لیستی از Built-in policy definitionها و built-in initiative policyها نمایش داده می شود.

به عنوان مثال Initiative Definition با عنوان Audit machines with insecure password security settings حاوی 9 مورد policy definition است که به بررسی تنظیمات امنیتی ماشین هایی می پردازد که پسورد آن ها امن نیست.

با استفاده از بخش فیلتر می توانید پالسی ها را براساس definition، Initiative یا هر دو مرتب کنید.

از آیتم Category در بخش فیلتر می توانید حوزه مربوط به پالسی ها را مشخص نمایید.

با استفاده از آیتم Scope می توانید پالسی ها را براساس Subscriptionهای موجود مرتب نمایید.

با کلیک بر روی علامت سه نقطه کادر ذیل باز می شود که می توانید Subscriptionهای مورد نظر خود را انتخاب نمایید.

ایجاد پالسی جدید
در اکثر مواقع می توانید از Policy Definitionها یا Initiative Definitionهای پیش فرض استفاده نمایید چرا که هدف شما از ایجاد پالسی را تامین می کنند. با کلیک بر روی آیتم + Policy Definition یک پالسی جدید ایجاد می کنیم. با این کار کادر ذیل باز می شود.

در این کادر آیتم های ذیل را مشخص می کنیم:
Definition Location: در این بخش می بایست محل اعمال policy definition را مشخص کنیم.

Name: در این فیلد نام policy definition را قرار می دهیم.
Description: در این فیلد توضیحاتی برای پالسی مورد نظر وارد می کنیم.
Category: با استفاده از این آیتم می توانیم یک دسته بندی جدید ایجاد کنیم یا از دسته بندی های موجود استفاده کنیم.

Policy Rule: در این قسمت کد Json مربوط به پالسی ساخته شده نمایش داده می شود.

همانطور که قبلاً گفتیم زمانی که شما درخواستی به Azure portal ارسال می کنید این درخواست ابتدا به بخش ARM ارایه می شود. سپس ARM پیش از عملیاتی کردن درخواست مورد نظر آن را با پالسی های موجود چک می کند که آیا اقدام مورد نظر انجام شود یا نشود. حال پالسی های موجود و تعریف شده از دید Azure همین کدهای JSON است. با استفاده از Azure Policy Github می توانید به کدهای JSON مرتبط با پالسی های دسترسی پیدا کنید.
https://github.com/Azure/azure-policy

در نهایت با کلیک بر روی Save می توانید پالسی مورد نظر را ایجاد نمایید.

ملاحظه می شود که پالسی مورد نظر ایجاد شده است که قابل ویرایش است.

مشاهده می شود که پالسی Test ایجاد شده در لیست پالسی ها نمایش داده می شود که با استفاده از سه نقطه می توانید به آیتم های مختلف دسترسی پیدا نمایید.

- View definition: با استفاده از این آیتم می توانید محتوای پالسی را مشاهده کنید.
- Assign: با استفاده از این آیتم می توانیم پالسی را به محل مورد نظر اعمال کنید.
- Edit definition: با استفاده از این آیتم می توانید پالسی را ویرایش کنید.
- Duplicate definition: با استفاده از این آیتم می توانید یک نسخه دیگر از پالسی مورد نظر ایجاد کنید.
Delete definition: با استفاده از این آیتم می توانید پالسی را حذف کنید
تهیه کننده: محمدرضا برجسته