Hayat
سكريبت تدقيق وتحصين لمنصة Google Cloud ~
ماذا يعني "Hayat"؟
حسنًا، واجهت صعوبة في العثور على اسم فريد، بصراحة. "Hayat" هي كلمة تركية تعني "حياة" في الإنجليزية وهي أيضًا اسم ابنت أخي. هل أنت مستعد لمقابلتها؟
😍 😍 😍
Hayat هو سكريبت تدقيق وتحصين لخدمات منصة Google Cloud مثل:
- إدارة الهوية والوصول
- التسجيل والمراقبة
- الشبكات
- الأجهزة الافتراضية
- التخزين
- مثيلات Cloud SQL
- عناقيد Kubernetes
في الوقت الحالي.
إدارة الهوية والوصول
- تأكد من استخدام بيانات اعتماد تسجيل الدخول المؤسسية بدلاً من حسابات Gmail.
- تأكد من وجود مفاتيح حسابات الخدمة المُدارة من GCP فقط لكل حساب خدمة.
- تأكد من أن حساب الخدمة ليس لديه صلاحيات مسؤول.
- تأكد من عدم تعيين مستخدمي IAM لدور مستخدم حساب الخدمة على مستوى المشروع.
- تأكد من تدوير المفاتيح المُدارة من المستخدم/الخارجية لحسابات الخدمة كل 90 يومًا أو أقل.
- تأكد من فرض فصل المهام عند تعيين الأدوار المتعلقة بحسابات الخدمة للمستخدمين.
التسجيل والمراقبة
- تأكد من تكوين المصارف (sinks) لجميع إدخالات السجل.
- تأكد من تمكين إصدار الكائنات (object versioning) على دلاء السجل (log-buckets).
الشبكات
- تأكد من عدم وجود الشبكة الافتراضية في المشروع.
- تأكد من عدم وجود الشبكات القديمة (legacy networks) للمشروع.
- تأكد من تمكين DNSSEC لـ Cloud DNS.
- تأكد من عدم استخدام RSASHA1 لمفتاح توقيع المفتاح (key-signing key) في Cloud DNS DNSSEC.
- تأكد من عدم استخدام RSASHA1 لمفتاح توقيع النطاق (zone-signing key) في Cloud DNS DNSSEC.
- تأكد من تقييد الوصول إلى RDP من الإنترنت.
- تأكد من تقييد الوصول إلى SSH من الإنترنت.
- تأكد من تمكين الوصول الخاص من Google (Private Google Access) لجميع الشبكات الفرعية في VPC.
- تأكد من تمكين سجلات تدفق VPC لكل شبكة فرعية في VPC.
الأجهزة الافتراضية
- تأكد من أن المثيلات لم يتم تكوينها لاستخدام حساب الخدمة الافتراضي مع وصول كامل إلى جميع واجهات برمجة تطبيقات Cloud.
- تأكد من تمكين "حظر مفاتيح SSH على مستوى المشروع" (Block Project-wide SSH keys) لمثيلات VM.
- تأكد من تمكين oslogin للمشروع.
- تأكد من عدم تمكين "الاتصال بالمنافذ التسلسلية" (Enable connecting to serial ports) لمثيل VM.
- تأكد من عدم تمكين إعادة توجيه IP على المثيلات.
- تأكد من تشفير أقراص VM للأجهزة الافتراضية الحرجة باستخدام مفاتيح التشفير المقدمة من العميل (CSEK).
التخزين
- تأكد من أن دلو Cloud Storage لا يمكن الوصول إليه بشكل مجهول أو عام.
- تأكد من تمكين التسجيل لدلو Cloud Storage.
خدمات قواعد بيانات Cloud SQL
- تأكد من أن مثيل قاعدة بيانات Cloud SQL يتطلب استخدام SSL لجميع الاتصالات الواردة.
- تأكد من أن مثيلات Cloud SQL ليست مفتوحة للعالم.
- تأكد من أن مثيل قاعدة بيانات MySQL لا يسمح لأي شخص بالاتصال بصلاحيات إدارية.
- تأكد من أن مثيل قاعدة بيانات MySQL لا يسمح بتسجيل الدخول كجذر (root) من أي مضيف.
Kubernetes Engine
- تأكد من تعيين Stackdriver Logging إلى "ممكّن" على عناقيد Kubernetes Engine.
- تأكد من تعيين Stackdriver Monitoring إلى "ممكّن" على عناقيد Kubernetes Engine.
- تأكد من تعيين التفويض القديم (Legacy Authorization) إلى "معطل" على عناقيد Kubernetes Engine.
- تأكد من تمكين الشبكات المعتمدة الرئيسية (Master authorized networks) على عناقيد Kubernetes Engine.
- تأكد من تكوين عناقيد Kubernetes مع التصنيفات (Labels).
- تأكد من تعطيل واجهة الويب/لوحة التحكم الخاصة بـ Kubernetes.
- تأكد من تمكين "إصلاح العقدة التلقائي" (Automatic node repair) لعناقيد Kubernetes.
- تأكد من تمكين ترقيات العقدة التلقائية (Automatic node upgrades) على عقد عناقيد Kubernetes Engine.
- تأكد من استخدام نظام التشغيل المحسّن للحاويات (Container-Optimized OS - cos) كصورة عقدة لعناقيد Kubernetes Engine.
- تأكد من تعطيل المصادقة الأساسية (Basic Authentication) على عناقيد Kubernetes Engine.
- تأكد من تمكين سياسة الشبكة (Network policy) على عناقيد Kubernetes Engine.
- تأكد من إنشاء عنقود Kubernetes مع تمكين شهادة العميل (Client Certificate).
- تأكد من إنشاء عنقود Kubernetes مع تمكين نطاقات IP البديلة (Alias IP ranges).
- تأكد من تمكين وحدة التحكم في سياسة أمان البودات (PodSecurityPolicy) على عناقيد Kubernetes Engine.
- تأكد من إنشاء عنقود Kubernetes مع تمكين العنقود الخاص (Private cluster).
- تأكد من تعيين الوصول الخاص من Google (Private Google Access) على الشبكات الفرعية لعنقود Kubernetes Engine.
- تأكد من عدم استخدام حساب الخدمة الافتراضي للوصول إلى المشروع في عناقيد Kubernetes.
- تأكد من إنشاء عناقيد Kubernetes بنطاقات وصول محدودة لحساب الخدمة للوصول إلى المشروع.
المتطلبات
تم كتابة Hayat بلغة bash باستخدام gclock وهو متوافق مع Linux و OSX.
الاستخدام
git clone https://github.com/DenizParlak/Hayat.git && cd Hayat && chmod +x hayat.sh && ./hayat.sh
يمكنك استخدامه مع وظائف محددة، على سبيل المثال إذا كنت تريد فحص عنقود Kubernetes فقط:
./hayat.sh --only-k8s
لقطات الشاشة

