إنتقل إلى المحتوى الرئيسي

المراقبة والتنبيه

ينطبق على:
AWS CloudWatchXKS Proxy LogsPerformance Monitoring

نظرة عامة​

تشمل المراقبة الفعّالة لـ AWS XKS ما يلي:

مقاييس CloudWatch

تتبّع أداء وكيل XKS وسلامته

سجلّات الوكيل

مراقبة عمليات الوكيل التفصيلية

سجلّات مدير المفاتيح

تتبّع عمليات المفاتيح عند المصدر

المراقبة الأمنية

اكتشاف الأنماط الشاذّة والوصول غير المصرّح به

مقاييس AWS CloudWatch​

المقاييس الرئيسية​

المقياسالوصفالعتبات
XksProxyLatencyالوقت الذي ينتظره AWS KMS لاستجابات الوكيلعادي: <50 مللي ثانية، تحذير: 50-100 مللي ثانية، حرج: >100 مللي ثانية
XksProxyCredentialAgeعمر بيانات اعتماد مصادقة الوكيلالتدوير كل 90 يومًا
NumberOfRequestsعدد طلبات KMSمراقبة الأنماط الشاذّة
UserErrorCountعدد الطلبات الفاشلةالتنبيه عند المعدلات المرتفعة
View XksProxyLatency MetricBASH
# View XksProxyLatency metric
aws cloudwatch get-metric-statistics \
  --namespace AWS/KMS \
  --metric-name XksProxyLatency \
  --dimensions Name=CustomKeyStoreId,Value=cks-1234567890abcdef0 \
  --start-time $(date -u -d '1 hour ago' '+%Y-%m-%dT%H:%M:%S') \
  --end-time $(date -u '+%Y-%m-%dT%H:%M:%S') \
  --period 300 \
  --statistics Average,Maximum,Minimum \
  --output table
Check Credential AgeBASH
# Check credential age
aws cloudwatch get-metric-statistics \
  --namespace AWS/KMS \
  --metric-name XksProxyCredentialAge \
  --dimensions Name=CustomKeyStoreId,Value=cks-1234567890abcdef0 \
  --start-time $(date -u -d '24 hours ago' '+%Y-%m-%dT%H:%M:%S') \
  --end-time $(date -u '+%Y-%m-%dT%H:%M:%S') \
  --period 3600 \
  --statistics Maximum \
  --output table

إنشاء تنبيهات CloudWatch​

Create High Latency AlarmBASH
aws cloudwatch put-metric-alarm \
  --alarm-name xks-high-latency \
  --alarm-description "Alert when XKS proxy latency exceeds threshold" \
  --metric-name XksProxyLatency \
  --namespace AWS/KMS \
  --statistic Average \
  --period 300 \
  --evaluation-periods 2 \
  --threshold 100 \
  --comparison-operator GreaterThanThreshold \
  --dimensions Name=CustomKeyStoreId,Value=cks-1234567890abcdef0 \
  --alarm-actions arn:aws:sns:us-east-1:123456789012:xks-alerts

لوحة معلومات CloudWatch​

Dashboard DefinitionJSON
{
"widgets": [
  {
    "type": "metric",
    "properties": {
      "metrics": [
        ["AWS/KMS", "XksProxyLatency", {"stat": "Average"}],
        ["...", {"stat": "Maximum"}]
      ],
      "period": 300,
      "stat": "Average",
      "region": "us-east-1",
      "title": "XKS Proxy Latency",
      "yAxis": {
        "left": {
          "min": 0,
          "max": 200
        }
      }
    }
  },
  {
    "type": "metric",
    "properties": {
      "metrics": [
        ["AWS/KMS", "NumberOfRequests", {"stat": "Sum"}]
      ],
      "period": 300,
      "stat": "Sum",
      "region": "us-east-1",
      "title": "Request Volume"
    }
  },
  {
    "type": "metric",
    "properties": {
      "metrics": [
        ["AWS/KMS", "UserErrorCount", {"stat": "Sum"}],
        [".", "SystemErrorCount", {"stat": "Sum"}]
      ],
      "period": 300,
      "stat": "Sum",
      "region": "us-east-1",
      "title": "Error Rates"
    }
  }
]
}
Apply DashboardBASH
aws cloudwatch put-dashboard \
  --dashboard-name XKS-Monitoring \
  --dashboard-body file://xks-dashboard.json

تسجيل وكيل XKS​

تكوين تسجيل الوكيل​

Proxy Logging ConfigurationYAML
logging:
level: info # debug, info, warn, error
format: json
output: /var/log/duokey-xks-proxy/proxy.log
rotation:
  max_size: 100MB
  max_age: 30
  max_backups: 10
  compress: true

# Log specific components
components:
  authentication: debug
  encryption: info
  routing: info
  health: warn

تحليل السجلّات​

Analyze Proxy LogsBASH
# Count requests by operation
cat /var/log/duokey-xks-proxy/proxy.log | \
  jq -r '.operation' | sort | uniq -c

# Average latency by backend
cat /var/log/duokey-xks-proxy/proxy.log | \
  jq -r 'select(.backend != null) | "\(.backend) \(.duration_ms)"' | \
  awk '{sum[$1]+=$2; count[$1]++} END {for (b in sum) print b, sum[b]/count[b]}'

# Failed requests in last hour
cat /var/log/duokey-xks-proxy/proxy.log | \
  jq -r 'select(.status == "error" and .timestamp > "'$(date -u -d '1 hour ago' '+%Y-%m-%dT%H:%M:%S')'")'

شحن السجلّات إلى CloudWatch​

CloudWatch Logs Agent ConfigurationJSON
{
"logs": {
  "logs_collected": {
    "files": {
      "collect_list": [
        {
          "file_path": "/var/log/duokey-xks-proxy/proxy.log",
          "log_group_name": "/aws/xks/proxy",
          "log_stream_name": "{instance_id}",
          "timestamp_format": "%Y-%m-%dT%H:%M:%S"
        }
      ]
    }
  }
}
}

مراقبة الشبكة​

Monitor Network LatencyBASH
#!/bin/bash
# Monitor round-trip time to XKS proxy

PROXY_HOST="xks-proxy.example.com"
LOG_FILE="/var/log/xks-network-monitor.log"

while true; do
  TIMESTAMP=$(date -u '+%Y-%m-%dT%H:%M:%S')
  RTT=$(curl -o /dev/null -s -w '%{time_total}' https://$PROXY_HOST/health)
  RTT_MS=$(echo "$RTT * 1000" | bc)

  echo "$TIMESTAMP,$RTT_MS" >> $LOG_FILE

  # Alert if RTT exceeds threshold
  if (( $(echo "$RTT_MS > 100" | bc -l) )); then
      echo "WARNING: High latency detected: ${RTT_MS}ms" | \
          aws sns publish \
              --topic-arn arn:aws:sns:us-east-1:123456789012:xks-alerts \
              --subject "XKS High Latency Alert"
  fi

  sleep 60
done
Monitor TLS Certificate ExpirationBASH
#!/bin/bash
# Check XKS proxy TLS certificate expiration

PROXY_HOST="xks-proxy.example.com"
CERT_EXPIRY=$(echo | openssl s_client -servername $PROXY_HOST \
  -connect $PROXY_HOST:443 2>/dev/null | openssl x509 -noout -enddate | \
  cut -d= -f2)

EXPIRY_EPOCH=$(date -d "$CERT_EXPIRY" +%s)
CURRENT_EPOCH=$(date +%s)
DAYS_UNTIL_EXPIRY=$(( ($EXPIRY_EPOCH - $CURRENT_EPOCH) / 86400 ))

echo "Certificate expires in $DAYS_UNTIL_EXPIRY days"

if [ $DAYS_UNTIL_EXPIRY -lt 30 ]; then
  echo "WARNING: Certificate expires soon!" | \
      aws sns publish \
          --topic-arn arn:aws:sns:us-east-1:123456789012:xks-alerts \
          --subject "XKS Certificate Expiration Warning"
fi

المراقبة الأمنية​

التكامل مع AWS CloudTrail​

Query CloudTrail for XKS EventsBASH
# Query CloudTrail for XKS-related events
aws cloudtrail lookup-events \
  --lookup-attributes \
      AttributeKey=ResourceName,AttributeValue=cks-1234567890abcdef0 \
  --start-time $(date -u -d '24 hours ago' '+%Y-%m-%dT%H:%M:%S') \
  --query 'Events[*].{
      Time:EventTime,
      User:Username,
      Event:EventName,
      Resource:Resources[0].ResourceName
  }' \
  --output table

اكتشاف النشاط غير المعتاد​

Detect AnomaliesBASH
#!/bin/bash
# Detect unusual patterns in XKS usage

# Spike in failed requests
FAILED_COUNT=$(cat /var/log/duokey-xks-proxy/proxy.log | \
  jq -r 'select(.timestamp > "'$(date -u -d '5 minutes ago' '+%Y-%m-%dT%H:%M:%S')'"
      and .status == "error")' | wc -l)

if [ $FAILED_COUNT -gt 50 ]; then
  echo "ALERT: Unusual spike in failed requests: $FAILED_COUNT in 5 minutes"
fi

# Requests from unexpected IPs
KNOWN_IPS="52.94.133.0/24,52.95.0.0/16"
UNKNOWN_IPS=$(cat /var/log/duokey-xks-proxy/proxy.log | \
  jq -r '.source_ip' | sort -u | \
  grep -v -f <(echo $KNOWN_IPS | tr ',' '\n'))

if [ -n "$UNKNOWN_IPS" ]; then
  echo "ALERT: Requests from unknown IPs: $UNKNOWN_IPS"
fi

استراتيجيات التنبيه​

التنبيهات الحرجة (إجراء فوري)​

التنبيهالمُطلِقالإجراء
تعذّر الوصول إلى وكيل XKS3 حالات فشل متتالية في فحص السلامةاستدعاء مهندس المناوبة
فشل المصادقة>10 حالات فشل مصادقة خلال 5 دقائقإشعار فريق الأمن
زمن استجابة شديدمتوسط >200 مللي ثانية لمدة 10 دقائقإشعار فريق العمليات

تنبيهات التحذير (تتطلب تحقيقًا)​

التنبيهالمُطلِقالإجراء
زمن استجابة مرتفعمتوسط >100 مللي ثانية لمدة 15 دقيقةإرسال بريد إلكتروني لفريق العمليات
انتهاء صلاحية الشهادة<30 يومًا حتى انتهاء الصلاحيةإرسال بريد إلكتروني لفريق الأمن
معدل خطأ مرتفعمعدل الخطأ >5% لمدة 10 دقائقإرسال بريد إلكتروني لفريق العمليات

التنبيهات الإعلامية (للتوعية)​

التنبيهالمُطلِقالإجراء
عمر بيانات الاعتمادبيانات اعتماد أقدم من 60 يومًاتذكير بالبريد الإلكتروني للتدوير
ارتفاع الاستخدامحجم الطلبات ضعف الخط الأساسي المعتادإرسال بريد إلكتروني لفريق العمليات

أفضل ممارسات المراقبة​

قائمة تحقق المراقبة

وضع خطوط أساسجمع المقاييس لمدة أسبوع إلى أسبوعين لتحديد الخطوط الأساسية التشغيلية العادية
إنشاء أدلة تشغيليةتوثيق إجراءات الاستجابة لكل نوع من أنواع التنبيهات
مراجعة منتظمةمراجعة أسبوعية للمقاييس، وتحديث شهري للعتبات
اختبار المراقبةاختبار التنبيهات بانتظام عبر محاكاة حالات الفشل

إعداد تقارير الامتثال​

Generate Monthly Compliance ReportBASH
#!/bin/bash
# Generate monthly XKS compliance report

MONTH=$(date -u -d 'last month' '+%Y-%m')
REPORT_FILE="xks-compliance-report-$MONTH.txt"

echo "DuoKey AWS XKS Compliance Report - $MONTH" > $REPORT_FILE
echo "==========================================" >> $REPORT_FILE
echo "" >> $REPORT_FILE

# Key Operations Summary
echo "Key Operations Summary:" >> $REPORT_FILE
aws cloudtrail lookup-events \
  --lookup-attributes AttributeKey=ResourceType,AttributeValue=AWS::KMS::Key \
  --start-time $(date -u -d "$MONTH-01" '+%Y-%m-%dT%H:%M:%S') \
  --end-time $(date -u -d "$MONTH-01 +1 month" '+%Y-%m-%dT%H:%M:%S') \
  --query 'Events[*].EventName' | \
  jq -r '.[]' | sort | uniq -c >> $REPORT_FILE

الخطوات التالية​