يوضح هذا الدليل كيف يمكن لعملاء ClickHouse Cloud الاستفادة من التحكم في الوصول المستند إلى الأدوار للمصادقة مع Amazon Simple Storage Service (S3) والوصول إلى بياناتهم بأمان. قبل التعمق في إعداد الوصول الآمن إلى S3، من المهم فهم آلية عمل ذلك. في ما يلي نظرة عامة على كيفية تمكّن خدمات ClickHouse من الوصول إلى حاويات S3 الخاصة من خلال افتراض دور داخل حساب AWS الخاص بالعملاء.

يتيح هذا النهج للعملاء إدارة جميع عمليات الوصول إلى حاويات S3 الخاصة بهم من مكان واحد (سياسة IAM للدور الذي تم افتراضه) من دون الحاجة إلى مراجعة جميع سياسات الحاويات لإضافة أذونات الوصول أو إزالتها. في القسم أدناه، ستتعلّم كيفية إعداد ذلك.
احصل على ARN لدور IAM الخاص بخدمة ClickHouse
-
سجّل الدخول إلى حسابك في ClickHouse Cloud.
-
حدّد خدمة ClickHouse التي تريد إنشاء التكامل معها
-
حدّد علامة التبويب الإعدادات
-
مرّر إلى أسفل الصفحة حتى تصل إلى قسم معلومات أمان الشبكة
-
انسخ قيمة معرّف دور الخدمة (IAM) الخاصة بالخدمة، كما هو موضّح أدناه.

إعداد IAM Assume Role
يمكن إعداد IAM Assume Role بإحدى الطريقتين التاليتين:
النشر باستخدام CloudFormation stack
-
سجّل الدخول إلى AWS account الخاص بك من خلال متصفح الويب باستخدام IAM user لديه permission لإنشاء دور IAM وإدارته.
-
انتقل إلى CloudFormation URL التالي لملء CloudFormation stack.
-
أدخِل (أو الصق) معرّف دور الخدمة (IAM) الخاص بخدمتك، والذي حصلت عليه سابقًا، في حقل الإدخال بعنوان "ClickHouse Instance Roles" ويمكنك لصق معرّف دور الخدمة تمامًا كما يظهر في Cloud Console.
-
أدخِل اسم حاوية S3 الخاصة بك في حقل الإدخال بعنوان "Bucket Names". إذا كان Bucket URL الخاص بك هو
https://ch-docs-s3-bucket.s3.eu-central-1.amazonaws.com/clickhouseS3/، فسيكون اسم الـ حاوية هوch-docs-s3-bucket.
- اضبط CloudFormation stack. في ما يلي معلومات إضافية عن هذه Parameters.
| Parameter | Default Value | Description |
|---|---|---|
| RoleName | ClickHouseAccess-001 | اسم الدور الجديد الذي سيستخدمه ClickHouse Cloud للوصول إلى حاوية S3 الخاصة بك. |
| Role Session Name | * | يمكن استخدام Role Session Name باعتباره secret مشتركًا لتوفير حماية إضافية للـ حاوية الخاصة بك. |
| ClickHouse Instance Roles | قائمة مفصولة بفواصل بأدوار دور IAM الخاصة بخدمة ClickHouse التي يمكنها استخدام تكامل S3 الآمن هذا. | |
| Bucket Access | Read | يحدد مستوى الوصول إلى الـ حاويات المُدخلة. |
| Bucket Names | قائمة مفصولة بفواصل بأسماء الـ حاويات التي سيكون لهذا الدور حق الوصول إليها. ملاحظة: استخدم اسم الـ حاوية، وليس ARN الكامل للـ حاوية. |
-
حدّد مربع الاختيار I acknowledge that AWS CloudFormation might create IAM resources with custom names.
-
انقر زر Create stack في أسفل اليمين
-
تأكد من اكتمال CloudFormation stack بدون error.
-
حدّد الـ Stack الذي أُنشئ حديثًا، ثم حدّد علامة التبويب Outputs في CloudFormation stack
-
انسخ قيمة RoleArn لهذا integration، فهي ما تحتاجه للوصول إلى حاوية S3 الخاصة بك.

أنشئ دور IAM يدويًا
-
سجّل الدخول إلى حساب AWS الخاص بك عبر متصفح الويب باستخدام IAM user لديه permission لإنشاء دور IAM وإدارته.
-
انتقل إلى IAM Service Console
-
أنشئ دور IAM جديدًا باستخدام سياسة IAM وسياسة الثقة التاليتين. استبدل
{ClickHouse_IAM_ARN}بـ IAM Role Arn الخاص بـ ClickHouse instance لديك.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "{ClickHouse_IAM_ARN}"
},
"Action": "sts:AssumeRole"
}
]
}سياسة IAM
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::{BUCKET_NAME}"
],
"Effect": "Allow"
},
{
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::{BUCKET_NAME}/*"
],
"Effect": "Allow"
}
]
}- انسخ IAM Role Arn الجديد بعد إنشائه، فهو ما ستحتاج إليه للوصول إلى حاوية S3 الخاصة بك.
الوصول إلى حاوية S3 الخاصة بك باستخدام الدور ClickHouseAccess
يتيح لك ClickHouse Cloud تحديد extra_credentials كجزء من دالة الجدول S3.
فيما يلي مثال على كيفية تشغيل استعلام باستخدام الدور الذي أُنشئ حديثًا والمنسوخ أعلاه.
DESCRIBE TABLE s3('https://s3.amazonaws.com/BUCKETNAME/BUCKETOBJECT.csv','CSVWithNames',extra_credentials(role_arn = 'arn:aws:iam::111111111111:role/ClickHouseAccessRole-001'))فيما يلي مثال على استعلام يستخدم role_session_name كسرّ مشترك للاستعلام عن البيانات من حاوية.
إذا لم تكن قيمة role_session_name صحيحة، فستفشل هذه العملية.
DESCRIBE TABLE s3('https://s3.amazonaws.com/BUCKETNAME/BUCKETOBJECT.csv','CSVWithNames',extra_credentials(role_arn = 'arn:aws:iam::111111111111:role/ClickHouseAccessRole-001', role_session_name = 'secret-role-name'))التحكم المتقدم في الإجراءات
لفرض تحكم أكثر صرامة في الوصول، يمكن تقييد سياسة الحاوية بحيث لا تقبل إلا الطلبات الصادرة من نقاط نهاية VPC الخاصة بـ ClickHouse Cloud باستخدام الشرط aws:SourceVpce. للحصول على نقاط نهاية VPC الخاصة بمنطقة ClickHouse Cloud، افتح الطرفية وشغّل:
# Replace <your-region> with your ClickHouse Cloud region
curl -s https://api.clickhouse.cloud/static-ips.json | jq -r '.aws[] | select(.region == "<your-region>") | .s3_endpoints[]'ثم أضِف قاعدة منع إلى سياسة IAM باستخدام نقاط النهاية التي تم إرجاعها:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:List*",
"s3:Get*"
],
"Resource": [
"arn:aws:s3:::{BUCKET_NAME}",
"arn:aws:s3:::{BUCKET_NAME}/*"
]
},
{
"Sid": "VisualEditor3",
"Effect": "Deny",
"Action": [
"s3:GetObject"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": [
"{ClickHouse VPC ID from your S3 region}",
"{ClickHouse VPC ID from your S3 region}",
"{ClickHouse VPC ID from your S3 region}"
]
}
}
}
]
}لمزيد من التفاصيل حول الوصول إلى نقاط النهاية لخدمات ClickHouse Cloud، راجع عناوين IP في Cloud.