تخطَّ إلى المحتوى

CloudQuery - جرد أصول السحابة كـ SQL

CloudQuery - جرد أصول السحابة كـ SQL

CloudQuery هو إطار عمل قائم على المكونات الإضافية مفتوح المصدر يستخرج التكوين من موفري السحابة واجهات برمجية SaaS (AWS و GCP و Azure و Kubernetes و GitHub والمزيد) وتحميله إلى وجهة — في الأساس PostgreSQL — حتى تتمكن من الاستعلام عن البنية التحتية الكاملة باستخدام SQL. تستخدمها فريق الأمان والمنصة لجرد الأصول وإدارة الموقف وأدلة الامتثال والإجابة على “ما الذي نملكه فعلاً قيد التشغيل؟” مع استعلام بدلاً من نقرة على لوحة التحكم.

العمارة

المكونالدور
Source pluginسحب البيانات من واجهة برمجية (aws, gcp, azure, k8s, github, …)
Destination pluginكتابة البيانات إلى متجر (postgresql, bigquery, sqlite, file, …)
Syncتشغيل واحد يستخرج من المصادر ويحمل إلى الوجهات
Configملفات YAML توضح المصادر والوجهات

التثبيت

الطريقةالأمر
Homebrewbrew install cloudquery/tap/cloudquery
Scriptcurl -L https://github.com/cloudquery/cloudquery/releases/latest/download/cloudquery_linux_amd64 -o cloudquery && chmod +x cloudquery
Dockerdocker run ghcr.io/cloudquery/cloudquery:latest
التحققcloudquery --version

التكوين

# aws-to-postgres.yaml
kind: source
spec:
  name: aws
  path: cloudquery/aws
  version: "VERSION"
  destinations: ["postgresql"]
  tables: ["aws_ec2_instances", "aws_s3_buckets", "aws_iam_*"]
---
kind: destination
spec:
  name: postgresql
  path: cloudquery/postgresql
  version: "VERSION"
  spec:
    connection_string: "postgresql://user:pass@localhost:5432/cq"

الأوامر الأساسية

الأمرالوصف
cloudquery sync config.yamlتشغيل مزامنة (استخراج → تحميل)
cloudquery sync aws.yaml pg.yamlدمج ملفات تكوين متعددة
cloudquery init --source aws --destination postgresqlقالب التكوين
cloudquery tables config.yamlقائمة الجداول التي تقدمها المصدر
cloudquery migrate config.yamlتطبيق الهجرات الموسومة فقط
cloudquery plugin install config.yamlتثبيت مسبق للمكونات الإضافية
cloudquery --log-level debug sync ...سجل تفصيلي

الاستعلام عن الجرد

بمجرد المزامنة، استعلام باستخدام SQL عادي:

-- دلاء S3 العام
SELECT name, region FROM aws_s3_buckets
WHERE block_public_acls = false;

-- EC2 الحالات التي تفتقد علامة مطلوبة
SELECT instance_id, region FROM aws_ec2_instances
WHERE tags->>'Owner' IS NULL;

-- مستخدمو IAM بدون MFA
SELECT user_name FROM aws_iam_users
WHERE mfa_active = false;

-- عبر السحابة: عدد الحوسبة حسب المزود
SELECT 'aws' AS cloud, count(*) FROM aws_ec2_instances
UNION ALL SELECT 'gcp', count(*) FROM gcp_compute_instances;

المكونات الإضافية للمصدر الشائعة

Pluginيغطي
cloudquery/awsEC2, S3, IAM, VPC, RDS, Lambda, …
cloudquery/gcpCompute, Storage, IAM, GKE, …
cloudquery/azureVMs, Storage, AAD, …
cloudquery/k8sPods, Deployments, RBAC, …
cloudquery/githubRepos, members, branch protection
cloudquery/cloudflare, okta, gcpموقف SaaS

الجدولة و CI

الطريقةكيف
Cronتشغيل cloudquery sync في الجدول الزمني
CI pipelineمزامنة ثم تشغيل فحوصات سياسة SQL، الفشل في الانتهاكات
Incrementalالعديد من الجداول تدعم المزامنة الزيادة لتقليل التكلفة
Policiesالاقتران مع استعلامات SQL كضوابط الامتثال

سير العمل المشتركة

# تحديث الجرد الليلي في Postgres
cloudquery sync aws.yaml gcp.yaml azure.yaml postgres.yaml

# استكشاف محلي سريع في SQLite (لا يوجد خادم قاعدة بيانات)
cloudquery sync aws.yaml sqlite.yaml
sqlite3 cq.db "SELECT name FROM aws_s3_buckets"

# قائمة ما يكشفه مصدر AWS قبل المزامنة
cloudquery tables aws.yaml

CloudQuery مقابل الطرق الأخرى

الجانبCloudQuerySteampipeأسطر أوامر أصلية
النموذجمزامنة إلى DB، ثم SQLSQL مباشرة على واجهات برمجيةإجراء لكل مكالمة
الأفضل لـالجرد والسجل والانضمام بالحجماستعلامات حية مخصصةبحث لمرة واحدة
الاستمرارنعم (قاعدة البيانات الخاصة بك)وقت الاستعلامبلا
الانضمام عبر السحابةنعمنعميدوي

الموارد