الانتقال إلى المحتوى الرئيسي
يوفر استخدام AWS RDS قاعدة بيانات PostgreSQL مُدارة لـ Gorbit. يغطي هذا الدليل المصادقة الأساسية ومصادقة IAM للأمان المحسّن.

الدليل

1

إنشاء مثيل PostgreSQL RDS

انتقل إلى وحدة تحكم Amazon RDS وأنشئ قاعدة بيانات PostgreSQL جديدة.
  • انقر Create database
  • اختر PostgreSQL كنوع المحرك
  • اختر Standard create كطريقة إنشاء
  • اختر إصدار PostgreSQL المفضل لديك
  • اختر قالب Production أو Dev/Test حسب الحاجة
2

تكوين إعدادات قاعدة البيانات

قم بإعداد معرف قاعدة البيانات وبيانات الاعتماد وتكوين المثيل.الإعدادات:
  • اضبط DB instance identifier وصفياً مثل gorbit-prod-db
  • اضبط Master username (مثلاً، postgres)
  • اضبط Master password قويًا وأكده
تكوين المثيل:
  • اختر Instance class مناسب (مثلاً، db.t3.micro للاختبار، db.t3.medium للإنتاج)
  • قم بتكوين حجم Storage وفعّل التوسع التلقائي إذا لزم الأمر
احفظ بيانات اعتماد قاعدة البيانات بشكل آمن - ستحتاجها لتكوين Gorbit.
3

تكوين الاتصال والأمان

قم بإعداد الوصول إلى الشبكة ومجموعات الأمان لقاعدة البيانات.
  • اختر VPC و Subnet group
  • قم بتكوين VPC security group للسماح بالوصول من مثيل Gorbit الخاص بك
  • اضبط Public access على “No” للإنتاج (موصى به)
  • اختر Availability Zone المفضل لديك
انقر Create database لتشغيل مثيل RDS.
4

تكوين متغيرات بيئة Gorbit

بمجرد تشغيل مثيل RDS، قم بتكوين Gorbit للاتصال به.احصل على تفاصيل قاعدة البيانات من وحدة تحكم RDS:
  • Endpoint: موجود في تفاصيل مثيل RDS
  • Port: عادةً 5432
  • Database name: اسم قاعدة البيانات أو postgres إذا كنت تستخدم الافتراضي
لنشر Docker، أضف هذه المتغيرات إلى ملف .env:
USE_IAM_AUTH=false
POSTGRES_HOST=<your-rds-endpoint>
POSTGRES_PORT=5432
POSTGRES_DB=<your-database-name>
POSTGRES_USER=<your-master-username>
POSTGRES_PASSWORD=<your-master-password>
لنشر EKS، أضف هذه إلى ملف values.yaml:
auth:
  secrets:
    POSTGRES_PASSWORD: "<your-master-password>"
configMap:
  USE_IAM_AUTH: "false"
  POSTGRES_HOST: "<your-rds-endpoint>"
  POSTGRES_PORT: "5432"
  POSTGRES_DB: "<your-database-name>"
  POSTGRES_USER: "<your-master-username>"
سيتصل Gorbit الآن بمثيل PostgreSQL RDS باستخدام بيانات الاعتماد هذه.

اختياري: تفعيل مصادقة IAM

للأمان المحسّن، يمكنك تفعيل مصادقة قاعدة بيانات IAM بدلاً من استخدام كلمات مرور ثابتة. يتيح هذا لـ Gorbit الاتصال باستخدام بيانات اعتماد IAM قصيرة العمر.
1

تفعيل مصادقة IAM على RDS

انتقل إلى مثيل RDS في وحدة تحكم AWS وفعل مصادقة IAM.
  • اذهب إلى مثيل PostgreSQL RDS
  • انقر Modify
  • تحت Database authentication، فعّل IAM database authentication
  • انقر Continue، ثم Apply immediately
2

إنشاء مستخدم قاعدة بيانات IAM

اتصل بقاعدة البيانات وأنشئ مستخدمًا لمصادقة IAM.باستخدام بيانات الاعتماد الرئيسية، قم بتشغيل أوامر SQL هذه:
CREATE ROLE gorbituser LOGIN;
GRANT rds_iam TO gorbituser;
ALTER ROLE gorbituser WITH NOINHERIT;
GRANT CREATE ON DATABASE <your-db-name> TO gorbituser;
GRANT USAGE ON SCHEMA public TO gorbituser;
GRANT CREATE ON SCHEMA public TO gorbituser;
3

تكوين سياسة IAM

أنشئ سياسة IAM للسماح باتصالات قاعدة البيانات.احصل على DbiResourceId أو DbClusterResourceId:
aws rds describe-db-instances \
  --db-instance-identifier <your-db-instance-name> \
  --region <your-region>
أنشئ سياسة IAM هذه، املأ region و account-id و resource-id، وأرفقها بدور مثيل EC2:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "rds-db:connect",
      "Resource": "arn:aws:rds-db:<region>:<account-id>:dbuser:<resource-id>/gorbituser"
    }
  ]
}
4

تحميل شهادة SSL

حمّل حزمة شهادة CA لـ RDS للاتصالات الآمنة.
wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem
شهادة SSL مطلوبة لكي تعمل مصادقة IAM بشكل صحيح.
5

تكوين Gorbit لمصادقة IAM

حدّث متغيرات البيئة لاستخدام مصادقة IAM.لنشر Docker، أضف هذه المتغيرات إلى ملف .env:
USE_IAM_AUTH=true
AWS_REGION=<your-region>
POSTGRES_HOST=<your-rds-endpoint>
POSTGRES_PORT=5432
POSTGRES_DB=<your-database-name>
POSTGRES_USER=gorbituser
ثبت شهادة SSL في ملف docker-compose.yml:
docker-compose-prod.yml
services:
  api_server:
    volumes:
      - ./rds-combined-ca-bundle.pem:/app/bundle.pem:ro
لنشر Kubernetes، أضف هذه إلى ملف values.yaml:
configMap:
  USE_IAM_AUTH: "true"
  AWS_REGION: "<your-region>"
  POSTGRES_HOST: "<your-rds-endpoint>"
  POSTGRES_PORT: "5432"
  POSTGRES_DB: "<your-database-name>"
  POSTGRES_USER: "gorbituser"
أنشئ سر لشهادة SSL وثبتها:
kubectl create secret generic bundle-pem-secret --from-file=rds-combined-ca-bundle.pem
بعد ذلك، سنثبت الشهادة في جميع حاوياتنا في ملف values.yaml.انتقل عبر كل حاوية واستبدل volumes و volumeMounts الفارغة بالتالي:
volumes:
- name: rds-ca
    secret:
      secretName: bundle-pem-secret

volumeMounts:
  - name: rds-ca
    mountPath: "/app/bundle.pem"
    subPath: bundle.pem
    readOnly: true
6

إعادة تشغيل Gorbit

أعِد تشغيل مثيل Gorbit لتطبيق التغييرات.
Docker
docker compose -f docker-compose.dev.yml -p gorbit-stack up -d --build --force-recreate
kubectl
kubectl rollout restart deployment
لمزيد من التفاصيل، راجع وثائق مصادقة IAM لـ AWS RDS.