رخدادنگاری با Auditing کوبرنتیز ستون
رخدادنگاری یا Audit Logging یکی از روشهای افزایش امنیت و مشاهدهپذیری سیستمهای ابری است. رخدادنگاری کوبرنتیز همهی رخدادهای کلاستر کوبرنتیز را به ترتیب زمانی با دادههای لازم برای بررسی امنیتی فراهم میکند. این رخدادها ممکن است توسط کاربران انجام شده باشد یا سرویسهایی که از API کوبرنتیز استفاده میکنند و یا به طور خودکار توسط control-plane کلاستر رخ داده باشد. جمعآوری این لاگها این امکان را به ادمین کلاستر میدهد تا به پاسخ این سوالها در مورد کلاستر برسد:
- چه رخدادهایی در کلاستر اتفاق افتاده است؟
- زمان دقیق هر رخداد کی بوده است؟
- چه کسی (یا سرویسی) آغازگر رخداد بوده؟
- جزئیات (قابل تنظیم توسط ادمین) رخداد چه بوده است؟
در کوبرنتیز ستون، این قابلیت به شکل مدیریتشده، به درخواست شما قابل فعالسازی است. کافی است یک پایانهی الاستیکسرچ (Elasticsearch Endpoint) راهاندازی نمایید و به تیم پشتیبانی ستون اطلاع دهید تا پس از فعالسازی این قابلیت، تمام رخدادهای API Server های ماشینهای کنترلپلین (Control Plane Nodes)، در کلاستر شما به این پایانه ارسال شود. توجه نمایید که سرویس Audit Logging کوبرنتیز در حال حاضر تنها با Elasticsearch API سازگار است؛ البته میتوانید با ابزارهایی از این API استاندارد پشتیبانی میکنند، مانند ابزار OpenSearch نیز استفاده نمایید. این ابزارها معمولا قابلیتهای کارآمدی برای جستجو و تحلیل لاگهای سیستم فراهم میآورند.
پایانهی Elasticsearch شما باید از داخل شبکهی کلاستر کوبرنتیز شما در دسترس باشد. پیشنهاد میشود آن را در یکی از مرکز دادههای (Datacenter) ستون، ترجیحا در همان مرکز دادهای که کلاستر شما در آن قرار دارد، استقرار دهید تا از دسترسیپذیری بهینهی شبکهی ستون بهرمند شوید.
پس از استقرار پایانهی Elasticsearch خود، نیاز است تا اطلاعاتی که در ادامه میآید در اختیار تیم پشتیبانی قرار دهید تا در اسرع وقت این سرویس برای شما فعال شود. در ادامه نمونهای از این اطلاعات و توضیح هر بخش به اختصار آمده است.
- سیاست رخدادنگاری (Audit Policy) را میتوانید یکی از چهار حالت اشاره شده را انتخاب کنید. برای اطلاع بیشتر از هر یک از این سطوح میتوانید به این مستند مراجعه کنید. این چهار سطح به اختصار عبارت است از:
- None: هیچ رخدادی ضبط و ارسال نمیشود.
- Metadata: مشخصات (metadata) هر رخداد شامل شناسهی کاربر، عمل انجام شد، زمان و… ارسال میشود اما بدنه درخواست و پاسخ (Request and Response Body) ارسال نمیشود. این سیاست، سبکترین حالت رخدادنگاری است که کلیات هر رخداد را ثبت میکند.
- Request: مشخصات درخواست و بدنهی آن ضبط و ارسال میشود.
- RequestResponse: کاملترین حالت رخدادنگاری است که مصرف حافظه و پردازندهی بیشتری دارد اما بسته به میزان استفاده از کلاستر، نیازمند پایانهی Elasticsearch بزرگتر و بهینهتری است.
- ورودی Index، یک index-template از شما میگیرد که syntax آن مشابه syntax های الگوی شناسهی Logstash و elasticsearch است و به شما در مدیریت حجم لاگهای خود در هر شناسه، کمک میکند. برای آشنایی بیشتر با index-template میتوانید به این مستند رجوع کنید. برای مثال در صورت حذف قسمت %d از الگوی شناسه (Index Pattern) لاگها با الگوهای ماهانه ذخیره میشوند.
- ارسال اطلاعات مذکور در قالب فایل، به منزلهی پذیرش شرایط این مستند توسط کاربر است.
- ستون برای ارسال رخدادها در سرویس کوبرنتیز، SLA ارائه نمیدهد، همچنین مسئولیت اختلال پایانهی Elasticsearch نیز بر عهدهی کاربر است.
- با توجه به اینکه راهکار Elasticsearch توسط کاربر نگهداری میشود، تخصیص منابع کافی مانند فضای ذخیرهسازی، پردازنده و حافظه، بر عهدهی کاربر است. توصیه میشود با توجه به حجم و سطح رخدادها در کلاستر خود حتما پارامتر Retention را برای جایگزینی رخدادهای جدید با رخدادهای قدیمی تنظیم نمایید تا در صورت پر شدن ظرفیت دیسک، ارسال رخدادها متوقف نشود.
- مدیریت کنترلپلین و Addon های کلاستر بر عهدهی سرویس کوبرنتیز ستون است، در راستای افزایش شفافیت و اعتماد شما، رخدادهای مربوط به آن برای کاربران ارسال میشود اما کاربر نمیتواند نسبت به انجام عملیات نگهداری ستون محدودیتی ایجاد نماید.