ایجاد پشتیبان گیری امن برای جداول DynamoDB با Terraform
![ایجاد پشتیبان گیری امن برای جداول DynamoDB با Terraform 1 ایجاد پشتیبان گیری امن برای جداول DynamoDB با Terraform](https://nabfollower.com/blog/wp-content/uploads/2024/07/ایجاد-پشتیبان-گیری-امن-برای-جداول-DynamoDB-با-Terraform-780x470.png)
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: منابع خود را تعریف کنید
برای دستیابی به پشتیبان گیری ایمن باید چندین منبع تعریف کنیم:
- 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 به شما این امکان را می دهد که برنامه پشتیبان را برای برآورده کردن نیازهای خود سفارشی کنید. با پیروی از مراحل ذکر شده در بالا، می توانید یک سیستم پشتیبان امن راه اندازی کنید که نیازهای حفاظت از داده های سازمان شما را برآورده کند.