الدرس 10 من 24

أمان التخزين والبيانات

التشفير في الراحة والنقل

4 دقيقة للقراءة

التشفير غير قابل للتفاوض في أمان السحابة. كل إطار امتثال رئيسي يتطلبه، ومزودو السحابة الحديثون يجعلونه سهلاً تقريباً—ومع ذلك العديد من المؤسسات لا تزال تخطئ فيه.

التشفير في الراحة

خيارات تشفير AWS S3

الخيارإدارة المفاتيححالة الاستخدام
SSE-S3مُدار من AWS (مجاني)افتراضي، حماية أساسية
SSE-KMSمُدار من العميل في KMSمسار تدقيق، تدوير المفاتيح
SSE-Cيوفره العميلمتطلبات تحكم صارمة بالمفاتيح
من جانب العميلمُدار من العميلتشفير من طرف لطرف

تفعيل التشفير الافتراضي:

# تفعيل تشفير SSE-KMS الافتراضي على الـ bucket
aws s3api put-bucket-encryption --bucket my-bucket \
    --server-side-encryption-configuration '{
        "Rules": [{
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "aws:kms",
                "KMSMasterKeyID": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012"
            },
            "BucketKeyEnabled": true
        }]
    }'

سياسة مفتاح KMS لـ S3:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowS3Service",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:CallerAccount": "123456789012"
        }
      }
    }
  ]
}

خيارات تشفير Azure

الخيارإدارة المفاتيححالة الاستخدام
مُدار من Microsoftمُدار من Azureافتراضي
مفتاح مُدار من العميل (CMK)Azure Key Vaultمتطلبات الامتثال
تشفير مزدوجبنية تحتية + خدمةأمان عالي

تكوين تشفير CMK:

# إنشاء Key Vault ومفتاح
az keyvault create --name myKeyVault --resource-group myRG --location eastus
az keyvault key create --vault-name myKeyVault --name storageKey --protection software

# تكوين حساب التخزين مع CMK
az storage account update \
    --name mystorageaccount \
    --resource-group myRG \
    --encryption-key-name storageKey \
    --encryption-key-vault "https://myKeyVault.vault.azure.net/" \
    --encryption-key-source Microsoft.Keyvault

خيارات تشفير GCP

الخيارإدارة المفاتيححالة الاستخدام
مُدار من Googleمُدار من Googleافتراضي
مُدار من العميل (CMEK)Cloud KMSالامتثال
يوفره العميل (CSEK)العميل يحمل المفاتيحتحكم صارم

تكوين CMEK لـ Cloud Storage:

# إنشاء حلقة مفاتيح ومفتاح
gcloud kms keyrings create my-keyring --location=global
gcloud kms keys create my-key \
    --location=global \
    --keyring=my-keyring \
    --purpose=encryption

# إنشاء bucket مع CMEK
gcloud storage buckets create gs://my-encrypted-bucket \
    --default-encryption-key=projects/my-project/locations/global/keyRings/my-keyring/cryptoKeys/my-key

التشفير في النقل

متطلبات TLS

جميع خدمات السحابة الحديثة تفرض TLS، لكن يجب التأكد من أن العملاء يحترمونه:

AWS S3 - فرض HTTPS فقط:

{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "DenyHTTP",
    "Effect": "Deny",
    "Principal": "*",
    "Action": "s3:*",
    "Resource": [
      "arn:aws:s3:::my-bucket",
      "arn:aws:s3:::my-bucket/*"
    ],
    "Condition": {
      "Bool": {
        "aws:SecureTransport": "false"
      }
    }
  }]
}

Azure - طلب نقل آمن:

az storage account update \
    --name mystorageaccount \
    --resource-group myRG \
    --https-only true \
    --min-tls-version TLS1_2

GCP - TLS مفروض دائماً لـ Cloud Storage.

تجنب عبور الإنترنت العام تماماً:

AWS VPC Endpoint:

# Terraform - S3 VPC Gateway Endpoint
resource "aws_vpc_endpoint" "s3" {
  vpc_id       = aws_vpc.main.id
  service_name = "com.amazonaws.us-east-1.s3"

  route_table_ids = [
    aws_route_table.private.id
  ]

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [{
      Effect    = "Allow"
      Principal = "*"
      Action    = "s3:*"
      Resource  = ["arn:aws:s3:::my-bucket/*"]
    }]
  })
}

Azure Private Endpoint:

az network private-endpoint create \
    --name myStoragePrivateEndpoint \
    --resource-group myRG \
    --vnet-name myVNet \
    --subnet mySubnet \
    --private-connection-resource-id "/subscriptions/.../storageAccounts/mystorageaccount" \
    --group-id blob \
    --connection-name myConnection

أفضل ممارسات إدارة المفاتيح

تدوير المفاتيح

المزودالتدوير الافتراضيالتوصية
AWS KMSتلقائي (سنوي)تفعيل التدوير التلقائي
Azure Key Vaultيدوي افتراضياًتكوين التدوير التلقائي
GCP Cloud KMSيدويجدولة التدوير

التدوير التلقائي لـ AWS KMS:

aws kms enable-key-rotation --key-id 12345678-1234-1234-1234-123456789012

تدقيق الوصول للمفاتيح

# AWS - عرض استخدام مفتاح KMS في CloudTrail
aws cloudtrail lookup-events \
    --lookup-attributes AttributeKey=ResourceType,AttributeValue=AWS::KMS::Key

# Azure - تشخيصات Key Vault
az monitor diagnostic-settings create \
    --name KeyVaultDiagnostics \
    --resource "/subscriptions/.../vaults/myKeyVault" \
    --logs '[{"category": "AuditEvent", "enabled": true}]'

مصفوفة قرار التشفير

السيناريوفي الراحةفي النقلإدارة المفاتيح
بيانات عامةSSE-S3/افتراضيHTTPSمُدار من المزود
PII/PHISSE-KMS/CMKHTTPS + VPCمُدار من العميل
بيانات ماليةSSE-KMS/CMKPrivate Linkمُدار من العميل + HSM
سري للغايةمن جانب العميلPrivate Linkيوفره العميل

التالي، سنستكشف أنماط سياسة الوصول وكيفية منع الكشف العام العرضي. :::

مراجعة سريعة: كيف تجد هذا الدرس؟

اختبار

الوحدة 3: أمان التخزين والبيانات

خذ الاختبار
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.