أمان التخزين والبيانات
التشفير في الراحة والنقل
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.
VPC Endpoints / Private Link
تجنب عبور الإنترنت العام تماماً:
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/PHI | SSE-KMS/CMK | HTTPS + VPC | مُدار من العميل |
| بيانات مالية | SSE-KMS/CMK | Private Link | مُدار من العميل + HSM |
| سري للغاية | من جانب العميل | Private Link | يوفره العميل |
التالي، سنستكشف أنماط سياسة الوصول وكيفية منع الكشف العام العرضي. :::