
cloud-custodian v0.9.52.0
محرك قواعد لأمن السحابة وتحسين التكاليف والحوكمة، DSL في yaml للسياسات للاستعلام والتصفية واتخاذ الإجراءات على الموارد
Cloud Custodian (c7n)
Cloud Custodian، المعروف أيضًا باسم c7n، هو محرك قواعد لإدارة حسابات وموارد السحابة العامة. يسمح للمستخدمين بتعريف سياسات لتمكين بنية تحتية سحابية مُدارة بشكل جيد، آمنة ومُحسّنة من حيث التكلفة. يُوحّد العديد من البرامج النصية المؤقتة التي تستخدمها المؤسسات في أداة خفيفة ومرنة، مع مقاييس وتقارير موحّدة.
يمكن استخدام Custodian لإدارة بيئات AWS وAzure وGCP من خلال ضمان الامتثال في الوقت الفعلي لسياسات الأمان (مثل التشفير ومتطلبات الوصول)، وسياسات الوسوم، وإدارة التكاليف عبر جمع القمامة للموارد غير المستخدمة وإدارة الموارد خارج ساعات العمل.
يدعم Custodian أيضًا تشغيل السياسات على أصول البنية التحتية كرمز لتقديم ملاحظات مباشرة على محطات عمل المطورين أو داخل خطوط أنابيب CI.
تُكتب سياسات Custodian في ملفات تكوين YAML بسيطة تتيح للمستخدمين تحديد سياسات على نوع مورد (EC2, ASG, Redshift, CosmosDB, PubSub Topic) وتُبنى من مفردات من المرشحات والإجراءات.
يتكامل مع قدرات الحوسبة بدون خادم (serverless) الأصلية لكل مزود لتوفير تطبيق فوري للسياسات مع توفير مدمج. أو يمكن تشغيله كوظيفة cron بسيطة على خادم لتنفيذها على مجموعات كبيرة موجودة.
Cloud Custodian هو مشروع CNCF في مرحلة الحضانة، ويقوده مجتمع يضم مئات المساهمين.
الميزات
- دعم شامل لخدمات وموارد السحابة العامة مع مكتبة غنية من الإجراءات والمرشحات لبناء السياسات.
- تشغيل السياسات على أصول البنية التحتية كرمز (terraform، إلخ).
- يدعم التصفية التعسفية للموارد بشروط منطقية متداخلة.
- تشغيل تجريبي (Dry run) لأي سياسة لرؤية ما ستفعله.
- يقوم تلقائيًا بتوفير وظائف serverless ومصادر الأحداث (AWS CloudWatchEvents, AWS Config Rules, Azure EventGrid, GCP AuditLog & Pub/Sub، إلخ).
- مخرجات مقاييس أصلية لدى مزود السحابة للموارد التي تطابق سياسة.
- مخرجات منظمة إلى تخزين كائنات سحابي أصلي للموارد التي تطابق سياسة.
- استخدام ذاكرة تخزين مؤقت ذكي لتقليل استدعاءات API.
- دعم استخدام حسابات/اشتراكات/مشاريع متعددة.
- مُجرب في المعارك - قيد الإنتاج في بعض بيئات السحابة الكبيرة جدًا.
الروابط
التثبيت السريع
يتم نشر Custodian على pypi كمجموعة من الحزم ذات البادئة c7n، وهو متاح أيضًا كصورة Docker.
$ python3 -m venv custodian
$ source custodian/bin/activate
(custodian) $ pip install c7n
الاستخدام
الخطوة الأولى لاستخدام Cloud Custodian (c7n) هي كتابة ملف YAML يحتوي على السياسات التي تريد تشغيلها. تحدد كل سياسة نوع المورد الذي ستعمل عليه السياسة، ومجموعة من المرشحات التي تتحكم في الموارد التي ستتأثر بهذه السياسة، والإجراءات التي ستتخذها السياسة على الموارد المطابقة، ووضع يتحكم في كيفية تنفيذ السياسة.
أفضل أدلة البدء هي الدروس التعليمية الخاصة بمزود السحابة.
كمثال سريع، فيما يلي بعض نماذج السياسات لموارد AWS.
- سيفرض أن دلو S3 لا يحتوي على وصول عبر الحسابات ممكّنًا.
- سينهي أي مثيل EC2 تم إطلاقه حديثًا وليس لديه وحدة تخزين EBS مشفرة.
- سيقوم بوسم أي مثيل EC2 لا يحتوي على الوسوم التالية: "Environment"، "AppId"، وإما "OwnerContact" أو "DeptID" ليتم إيقافه بعد أربعة أيام.
policies:
- name: s3-cross-account
description: |
Checks S3 for buckets with cross-account access and
removes the cross-account access.
resource: aws.s3
region: us-east-1
filters:
- type: cross-account
actions:
- type: remove-statements
statement_ids: matched
- name: ec2-require-non-public-and-encrypted-volumes
resource: aws.ec2
description: |
Provision a lambda and cloud watch event target
that looks at all new instances and terminates those with
unencrypted volumes.
mode:
type: cloudtrail
role: CloudCustodian-QuickStart
events:
- RunInstances
filters:
- type: ebs
key: Encrypted
value: false
actions:
- terminate
- name: tag-compliance
resource: aws.ec2
description: |
Schedule a resource that does not meet tag compliance policies to be stopped in four days. Note a separate policy using the`marked-for-op` filter is required to actually stop the instances after four days.
filters:
- State.Name: running
- "tag:Environment": absent
- "tag:AppId": absent
- or:
- "tag:OwnerContact": absent
- "tag:DeptID": absent
actions:
- type: mark-for-op
op: stop
days: 4
يمكنك التحقق من صحة واختبار وتشغيل Cloud Custodian باستخدام السياسة المثال بهذه الأوامر:
# Validate the configuration (note this happens by default on run)
$ custodian validate policy.yml
# Dryrun on the policies (no actions executed) to see what resources
# match each policy.
$ custodian run --dryrun -s out policy.yml
# Run the policy
$ custodian run -s out policy.yml
يمكنك تشغيل Cloud Custodian عبر Docker أيضًا:
# Download the image
$ docker pull cloudcustodian/c7n
$ mkdir output
# Run the policy
#
# This will run the policy using only the environment variables for authentication
$ docker run -it \
-v $(pwd)/output:/home/custodian/output \
-v $(pwd)/policy.yml:/home/custodian/policy.yml \
--env-file <(env | grep "^AWS\|^AZURE\|^GOOGLE") \
cloudcustodian/c7n run -v -s /home/custodian/output /home/custodian/policy.yml
# Run the policy (using AWS's generated credentials from STS)
#
# NOTE: We mount the ``.aws/credentials`` and ``.aws/config`` directories to
# the docker container to support authentication to AWS using the same credentials
# credentials that are available to the local user if authenticating with STS.
$ docker run -it \
-v $(pwd)/output:/home/custodian/output \
-v $(pwd)/policy.yml:/home/custodian/policy.yml \
-v $(cd ~ && pwd)/.aws/credentials:/home/custodian/.aws/credentials \
-v $(cd ~ && pwd)/.aws/config:/home/custodian/.aws/config \
--env-file <(env | grep "^AWS") \
cloudcustodian/c7n run -v -s /home/custodian/output /home/custodian/policy.yml
أداة custodian cask tool هي ثنائي Go يوفر واجهة أمامية شفافة لـ Docker تحاكي واجهة سطر الأوامر العادية لـ custodian، ولكنها تعتني تلقائيًا بتركيب وحدات التخزين.
راجع الوثائق للحصول على معلومات إضافية، أو تواصل على Gitter.
مساعدة خاصة بمزود السحابة
للحصول على إرشادات محددة لـ AWS وAzure وGCP، تفضل بزيارة صفحة البدء ذات الصلة.