يوضح هذا الدليل كيفية إجراء مصادقة آمنة مع Google Cloud Storage (GCS) والوصول إلى بياناتك عبر ClickHouse Cloud.
المقدمة
يتصل ClickHouse Cloud بخدمة GCS باستخدام مفاتيح HMAC (Hash-based Message Authentication Code) المرتبطة بحساب خدمة في Google Cloud. يوفّر هذا النهج وصولًا آمنًا إلى حاويات تخزين GCS الخاصة بك من دون تضمين بيانات الاعتماد مباشرةً في استعلاماتك.
كيف يعمل ذلك:
- تنشئ حساب خدمة في Google Cloud مع أذونات GCS المناسبة
- تُنشئ مفاتيح HMAC لحساب الخدمة هذا
- تزوّد ClickHouse Cloud ببيانات اعتماد HMAC هذه
- يستخدم ClickHouse Cloud بيانات الاعتماد هذه للوصول إلى حاويات تخزين GCS الخاصة بك
يتيح لك هذا النهج إدارة جميع عمليات الوصول إلى حاويات تخزين GCS عبر سياسات IAM على حساب الخدمة، مما يسهّل منح حق الوصول أو سحبه من دون تعديل سياسات كل حاوية تخزين على حدة.
المتطلبات الأساسية
لمتابعة هذا الدليل، ستحتاج إلى:
- خدمة ClickHouse Cloud نشطة
- مشروع Google Cloud مع تفعيل Cloud Storage
- أذونات لإنشاء حسابات خدمة وإنشاء مفاتيح HMAC في مشروع GCP الخاص بك
الإعداد
إنشاء حساب خدمة في Google Cloud
- في Google Cloud Console، انتقل إلى IAM & Admin → Service Accounts

- انقر على
Service accountsفي القائمة الجانبية اليسرى، ثم انقر علىCreate service account:

أدخل اسمًا ووصفًا لحساب الخدمة، على سبيل المثال:
Service account name: clickhouse-gcs-access (or your preferred name)
Service account description: Service account for ClickHouse Cloud to access GCS bucketsانقر على Create and continue

امنح حساب الخدمة دور Storage Object User:

يوفّر هذا الدور إذن القراءة والكتابة لكائنات GCS
انقر على Continue، ثم Done
دوّن عنوان البريد الإلكتروني الخاص بحساب الخدمة:

منح حساب الخدمة إذن الوصول إلى حاوية التخزين
يمكنك منح الإذن إمّا على مستوى المشروع أو على مستوى حاوية تخزين فردية.
الخيار 1: منح الإذن إلى حاويات تخزين محددة (موصى به)
- انتقل إلى
Cloud Storage→Buckets - انقر على حاوية التخزين التي تريد منح الإذن لها
- انتقل إلى علامة التبويب
Permissions - ضمن "Permissions"، انقر على
Grant accessللهوية التي أُنشئت في الخطوات السابقة - في حقل "New principals"، أدخل البريد الإلكتروني لحساب الخدمة
- حدِّد الدور المناسب:
- Storage Object User للوصول للقراءة والكتابة
- Storage Object Viewer للوصول للقراءة فقط
- انقر على
Save - كرر ذلك لأي حاويات تخزين إضافية
الخيار 2: منح الإذن على مستوى المشروع
- انتقل إلى
IAM & Admin→IAM - انقر على
Grant access - أدخل البريد الإلكتروني لحساب الخدمة في حقل
New principals - حدِّد Storage Object User (أو Storage Object Viewer لوصول القراءة فقط)
- انقر على SAVE
أنشئ مفاتيح HMAC لحساب الخدمة
انتقل إلى Cloud Storage → Settings → Interoperability:

إذا لم يظهر قسم "Access keys"، فانقر على Enable interoperability access
ضمن "Access keys for service accounts"، انقر على Create a key for a service account:

حدّد حساب الخدمة الذي أنشأته سابقًا (على سبيل المثال clickhouse-gcs-access@your-project.iam.gserviceaccount.com)
انقر على Create key:

سيُعرَض مفتاح HMAC. احفظ كلاً من Access Key وSecret فورًا - فلن تتمكن من عرض الـ secret مرة أخرى.
تظهر مفاتيح مثال أدناه:
Access Key: GOOG1EF4YBJVNFQ2YGCP3SLV4Y7CMFHW7HPC6EO7RITLJDDQ75639JK56SQVD
Secret: nFy6DFRr4sM9OnV6BG4FtWVPR25JfqpmcdZ6w9nVاستخدام HMAC keys مع ClickHouse Cloud
يمكنك الآن استخدام بيانات اعتماد HMAC للوصول إلى GCS من ClickHouse Cloud. ولهذا، استخدم table function الخاصة بـ GCS:
SELECT *
FROM gcs(
'https://storage.googleapis.com/clickhouse-docs-example-bucket/epidemiology.csv',
'GOOG1E...YOUR_ACCESS_KEY',
'YOUR_SECRET_KEY',
'CSVWithNames'
);استخدم أحرف البدل مع ملفات متعددة:
SELECT *
FROM gcs(
'https://storage.googleapis.com/clickhouse-docs-example-bucket/*.parquet',
'GOOG1E...YOUR_ACCESS_KEY',
'YOUR_SECRET_KEY',
'Parquet'
);مصادقة HMAC في ClickPipes for GCS
تستخدم ClickPipes مفاتيح HMAC (Hash-based Message Authentication Code) للمصادقة مع Google Cloud Storage.
- حدِّد
CredentialsضمنAuthentication methodأثناء إعداد ClickPipe - أدخِل بيانات اعتماد HMAC التي حصلت عليها في الخطوات السابقة

يجب أن تكون مفاتيح HMAC مرتبطة بحساب خدمة لديه الدور roles/storage.objectViewer، والذي يتضمن:
storage.objects.list: لسرد الكائنات في الحاويةstorage.objects.get: لجلب الكائنات/قراءتها
أفضل الممارسات
استخدم حسابات خدمة منفصلة لبيئات مختلفة
أنشئ حسابات خدمة منفصلة لبيئات التطوير وstaging والإنتاج. على سبيل المثال:
clickhouse-gcs-dev@project.iam.gserviceaccount.comclickhouse-gcs-staging@project.iam.gserviceaccount.comclickhouse-gcs-prod@project.iam.gserviceaccount.com
يتيح لك ذلك إلغاء الوصول بسهولة لبيئة محددة من دون التأثير على البيئات الأخرى.
طبّق مبدأ أقل الامتيازات
امنح فقط الحد الأدنى المطلوب من الأذونات:
- استخدم Storage Object Viewer للوصول بنمط القراءة فقط
- امنح حق الوصول إلى حاويات تخزين محددة بدلًا من منحه على مستوى المشروع بأكمله
- فكّر في استخدام شروط على مستوى حاوية التخزين لتقييد الوصول إلى مسارات محددة
دوِّر مفاتيح HMAC بانتظام
نفِّذ جدولًا زمنيًا لتدوير المفاتيح:
- أنشئ مفاتيح HMAC جديدة
- حدِّث إعدادات ClickHouse بالمفاتيح الجديدة
- تحقَّق من عملها باستخدام المفاتيح الجديدة
- احذف مفاتيح HMAC القديمة
راقب الوصول باستخدام Cloud Audit Logs
فعِّل Cloud Audit Logs وراقبها لـ Cloud Storage:
- انتقل إلى IAM & Admin → Audit Logs
- ابحث عن Cloud Storage في القائمة
- فعِّل
Admin ReadوData ReadوData Write logs - استخدم هذه السجلات لمراقبة أنماط الوصول واكتشاف الحالات غير المعتادة