برنامه نویسی

ایجاد پشتیبان گیری امن برای جداول DynamoDB با Terraform

Summarize this content to 400 words in Persian Lang
ایجاد جداول DynamoDB با استفاده از Terraform ساده است، اما اطمینان از پشتیبان گیری ایمن از این جداول برای حفاظت و بازیابی داده ها بسیار مهم است. در این پست وبلاگ، من شما را از طریق پیکربندی پشتیبان‌گیری امن برای جداول DynamoDB خود، ذخیره آن‌ها در یک طاق امن AWS با استفاده از Terraform راهنمایی می‌کنم. علاوه بر این، پیکربندی عبارت cron که برای زمان‌بندی این پشتیبان‌گیری‌ها استفاده می‌شود را توضیح خواهم داد.

راهنمای گام به گام برای ایمن کردن پشتیبان‌گیری DynamoDB با Terraform

مرحله 1: منابع خود را تعریف کنید

برای دستیابی به پشتیبان گیری ایمن باید چندین منبع تعریف کنیم:

AWS Backup Vault: یک انبار امن برای ذخیره نسخه های پشتیبان.

کلید KMS: برای رمزگذاری نسخه های پشتیبان.

طرح پشتیبان AWS: تعیین می کند چه زمانی و چند وقت یکبار پشتیبان تهیه شود.

انتخاب پشتیبان AWS: مشخص می کند از کدام منابع نسخه پشتیبان تهیه شود.

نقش IAM: مجوزهای لازم را به سرویس AWS Backup می دهد.

مرحله 2: پیکربندی Terraform را ایجاد کنید

در اینجا الگوی پیکربندی Terraform برای تنظیم پشتیبان‌گیری امن برای جداول DynamoDB است.

# Define KMS Key for Backup Vault Encryption
resource “aws_kms_key” “backup_vault_key” {
description = “KMS key for backup vault encryption”
}

# Define AWS Backup Vault
resource “aws_backup_vault” “source_backup_vault” {
name = “source-backup-vault”
kms_key_arn = aws_kms_key.backup_vault_key.arn
}

# Define AWS Backup Plan
resource “aws_backup_plan” “dynamodb_backup_plan” {
name = “dynamodb-backup”

rule {
rule_name = “daily-backup”
target_vault_name = aws_backup_vault.source_backup_vault.name
schedule = “cron(0 12 * * ? *)” # Daily at 12 PM UTC

lifecycle {
delete_after = 30 # Retain for 30 days
}
}
}

# Define AWS Backup Selection
resource “aws_backup_selection” “dynamodb_backup_selection” {
plan_id = aws_backup_plan.dynamodb_backup_plan.id
name = “dynamodb-backup-selection”
iam_role_arn = aws_iam_role.backup_role.arn

resources = [
“”
] }

# Define IAM Role for Backup
resource “aws_iam_role” “backup_role” {
name = “backup-role”

assume_role_policy = jsonencode({
Version = “2012-10-17”,
Statement = [
{
Effect = “Allow”,
Principal = {
Service = “backup.amazonaws.com”
},
Action : “sts:AssumeRole”
}
] })

inline_policy {
name = “backup-policy”

policy = jsonencode({
Version = “2012-10-17”,
Statement = [
{
Effect = “Allow”,
Action = [
“dynamodb:CreateBackup”,
“dynamodb:DeleteBackup”,
“dynamodb:DescribeBackup”,
“dynamodb:ListBackups”,
“dynamodb:ListTables”,
“dynamodb:RestoreTableFromBackup”,
“dynamodb:ListTagsOfResource”,
“dynamodb:StartAwsBackupJob”,
“dynamodb:RestoreTableFromAwsBackup”
],
Resource = “*”
},
{
Effect = “Allow”,
Action = [
“backup:StartBackupJob”,
“backup:StopBackupJob”,
“backup:TagResource”,
“backup:UntagResource”
],
Resource = “*”
}
] })
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیح پیکربندی

کلید KMS: این منبع aws_kms_key یک کلید KMS را تعریف می کند که برای رمزگذاری پشتیبان های ذخیره شده در صندوق پشتیبان استفاده می شود.
AWS Backup Vault: این طاق aws_backup_vault با استفاده از کلید KMS برای رمزگذاری، نسخه های پشتیبان را به صورت ایمن ذخیره می کند.
طرح پشتیبان گیری AWS: این aws_backup_plan برنامه کارهای پشتیبان را برنامه ریزی می کند. در این مثال، پشتیبان‌گیری‌ها برنامه‌ریزی شده‌اند که روزانه در ساعت 12 بعد از ظهر UTC اجرا شوند و به مدت 30 روز نگهداری شوند.
انتخاب پشتیبان AWS: این انتخاب aws_backup_selection مشخص می کند که از کدام منابع (جدول DynamoDB) نسخه پشتیبان تهیه شود.
نقش IAM: این نقش aws_iam_role به AWS Backup مجوزهای لازم برای ایجاد، حذف، توصیف و فهرست کردن نسخه‌های پشتیبان، و همچنین مدیریت برچسب‌ها و بازیابی جداول را می‌دهد.

کار کرون و پیکربندی آن

عبارت cron در aws_backup_plan منبع برنامه زمانبندی کارهای پشتیبان را مشخص می کند. در اینجا خلاصه ای از نحوه عملکرد عبارت cron آورده شده است:

schedule = “cron(0 12 * * ? *)”

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

0: فیلد اول دقیقه (0) را مشخص می کند.

12: فیلد دوم ساعت (12 PM UTC) را مشخص می کند.

*: فیلد سوم روز ماه (هر روز) را مشخص می کند.

*: قسمت چهارم ماه (هر ماه) را مشخص می کند.

?: قسمت پنجم روز هفته (هر روز از هفته) را مشخص می کند.

*: فیلد ششم سال را مشخص می کند (فیلد اختیاری، هر سال).

در این مثال، کار پشتیبان گیری برنامه ریزی شده است که هر روز در ساعت 12 بعد از ظهر UTC اجرا شود.

نتیجه

با استفاده از Terraform، می‌توانید راه‌اندازی پشتیبان‌گیری امن برای جداول DynamoDB خود را به‌طور خودکار انجام دهید، و اطمینان حاصل کنید که داده‌های شما به صورت ایمن ذخیره شده و به راحتی قابل بازیابی هستند. این رویکرد از نقش‌های پشتیبان‌گیری AWS، رمزگذاری KMS و IAM برای ارائه یک راه‌حل پشتیبان قوی استفاده می‌کند. علاوه بر این، استفاده از عبارات cron به شما این امکان را می دهد که برنامه پشتیبان را برای برآورده کردن نیازهای خود سفارشی کنید. با پیروی از مراحل ذکر شده در بالا، می توانید یک سیستم پشتیبان امن راه اندازی کنید که نیازهای حفاظت از داده های سازمان شما را برآورده کند.

ایجاد جداول DynamoDB با استفاده از Terraform ساده است، اما اطمینان از پشتیبان گیری ایمن از این جداول برای حفاظت و بازیابی داده ها بسیار مهم است. در این پست وبلاگ، من شما را از طریق پیکربندی پشتیبان‌گیری امن برای جداول DynamoDB خود، ذخیره آن‌ها در یک طاق امن AWS با استفاده از Terraform راهنمایی می‌کنم. علاوه بر این، پیکربندی عبارت cron که برای زمان‌بندی این پشتیبان‌گیری‌ها استفاده می‌شود را توضیح خواهم داد.

راهنمای گام به گام برای ایمن کردن پشتیبان‌گیری DynamoDB با Terraform

مرحله 1: منابع خود را تعریف کنید

برای دستیابی به پشتیبان گیری ایمن باید چندین منبع تعریف کنیم:

  1. AWS Backup Vault: یک انبار امن برای ذخیره نسخه های پشتیبان.
  2. کلید KMS: برای رمزگذاری نسخه های پشتیبان.
  3. طرح پشتیبان AWS: تعیین می کند چه زمانی و چند وقت یکبار پشتیبان تهیه شود.
  4. انتخاب پشتیبان AWS: مشخص می کند از کدام منابع نسخه پشتیبان تهیه شود.
  5. نقش IAM: مجوزهای لازم را به سرویس AWS Backup می دهد.

مرحله 2: پیکربندی Terraform را ایجاد کنید

در اینجا الگوی پیکربندی Terraform برای تنظیم پشتیبان‌گیری امن برای جداول DynamoDB است.

# Define KMS Key for Backup Vault Encryption
resource "aws_kms_key" "backup_vault_key" {
  description = "KMS key for backup vault encryption"
}

# Define AWS Backup Vault
resource "aws_backup_vault" "source_backup_vault" {
  name        = "source-backup-vault"
  kms_key_arn = aws_kms_key.backup_vault_key.arn
}

# Define AWS Backup Plan
resource "aws_backup_plan" "dynamodb_backup_plan" {
  name = "dynamodb-backup"

  rule {
    rule_name         = "daily-backup"
    target_vault_name = aws_backup_vault.source_backup_vault.name
    schedule          = "cron(0 12 * * ? *)" # Daily at 12 PM UTC

    lifecycle {
      delete_after = 30 # Retain for 30 days
    }
  }
}

# Define AWS Backup Selection
resource "aws_backup_selection" "dynamodb_backup_selection" {
  plan_id      = aws_backup_plan.dynamodb_backup_plan.id
  name         = "dynamodb-backup-selection"
  iam_role_arn = aws_iam_role.backup_role.arn

  resources = [
    ""
  ]
}

# Define IAM Role for Backup
resource "aws_iam_role" "backup_role" {
  name = "backup-role"

  assume_role_policy = jsonencode({
    Version = "2012-10-17",
    Statement = [
      {
        Effect = "Allow",
        Principal = {
          Service = "backup.amazonaws.com"
        },
        Action : "sts:AssumeRole"
      }
    ]
  })

  inline_policy {
    name = "backup-policy"

    policy = jsonencode({
      Version = "2012-10-17",
      Statement = [
        {
          Effect = "Allow",
          Action = [
            "dynamodb:CreateBackup",
            "dynamodb:DeleteBackup",
            "dynamodb:DescribeBackup",
            "dynamodb:ListBackups",
            "dynamodb:ListTables",
            "dynamodb:RestoreTableFromBackup",
            "dynamodb:ListTagsOfResource",
            "dynamodb:StartAwsBackupJob",
            "dynamodb:RestoreTableFromAwsBackup"
          ],
          Resource = "*"
        },
        {
          Effect = "Allow",
          Action = [
            "backup:StartBackupJob",
            "backup:StopBackupJob",
            "backup:TagResource",
            "backup:UntagResource"
          ],
          Resource = "*"
        }
      ]
    })
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیح پیکربندی

  1. کلید KMS: این منبع aws_kms_key یک کلید KMS را تعریف می کند که برای رمزگذاری پشتیبان های ذخیره شده در صندوق پشتیبان استفاده می شود.

  2. AWS Backup Vault: این طاق aws_backup_vault با استفاده از کلید KMS برای رمزگذاری، نسخه های پشتیبان را به صورت ایمن ذخیره می کند.

  3. طرح پشتیبان گیری AWS: این aws_backup_plan برنامه کارهای پشتیبان را برنامه ریزی می کند. در این مثال، پشتیبان‌گیری‌ها برنامه‌ریزی شده‌اند که روزانه در ساعت 12 بعد از ظهر UTC اجرا شوند و به مدت 30 روز نگهداری شوند.

  4. انتخاب پشتیبان AWS: این انتخاب aws_backup_selection مشخص می کند که از کدام منابع (جدول DynamoDB) نسخه پشتیبان تهیه شود.

  5. نقش IAM: این نقش aws_iam_role به AWS Backup مجوزهای لازم برای ایجاد، حذف، توصیف و فهرست کردن نسخه‌های پشتیبان، و همچنین مدیریت برچسب‌ها و بازیابی جداول را می‌دهد.

کار کرون و پیکربندی آن

عبارت cron در aws_backup_plan منبع برنامه زمانبندی کارهای پشتیبان را مشخص می کند. در اینجا خلاصه ای از نحوه عملکرد عبارت cron آورده شده است:

schedule = "cron(0 12 * * ? *)"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • 0: فیلد اول دقیقه (0) را مشخص می کند.
  • 12: فیلد دوم ساعت (12 PM UTC) را مشخص می کند.
  • *: فیلد سوم روز ماه (هر روز) را مشخص می کند.
  • *: قسمت چهارم ماه (هر ماه) را مشخص می کند.
  • ?: قسمت پنجم روز هفته (هر روز از هفته) را مشخص می کند.
  • *: فیلد ششم سال را مشخص می کند (فیلد اختیاری، هر سال).

در این مثال، کار پشتیبان گیری برنامه ریزی شده است که هر روز در ساعت 12 بعد از ظهر UTC اجرا شود.

نتیجه

با استفاده از Terraform، می‌توانید راه‌اندازی پشتیبان‌گیری امن برای جداول DynamoDB خود را به‌طور خودکار انجام دهید، و اطمینان حاصل کنید که داده‌های شما به صورت ایمن ذخیره شده و به راحتی قابل بازیابی هستند. این رویکرد از نقش‌های پشتیبان‌گیری AWS، رمزگذاری KMS و IAM برای ارائه یک راه‌حل پشتیبان قوی استفاده می‌کند. علاوه بر این، استفاده از عبارات cron به شما این امکان را می دهد که برنامه پشتیبان را برای برآورده کردن نیازهای خود سفارشی کنید. با پیروی از مراحل ذکر شده در بالا، می توانید یک سیستم پشتیبان امن راه اندازی کنید که نیازهای حفاظت از داده های سازمان شما را برآورده کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا