[アップデート]AWS Backupで組織レベルでバックアップインデックスを作成できるようになりました
お疲れさまです。とーちです。
AWS Backup で、バックアップポリシー内でのバックアップインデックスの作成がサポートされるようになったというアップデートがありました。これにより、組織レベルでバックアップインデックスを自動作成できるようになります。実際に試してみたので紹介します。
今回のアップデートはバックアップポリシーとバックアップインデックスの2つの要素を理解する必要があるのでこれらをまず簡単に解説します。
そもそもバックアップポリシーとは?
バックアップポリシーは AWS Organizations で組織内のアカウントのAWS Backupによる バックアッププラン を統一的に作成するためのものです。
バックアップポリシーを特定のOUに対して設定するとそのOUの配下のAWSアカウント全てで同じバックアッププランが作成されます。
バックアップポリシーでは、バックアッププランに関連する以下のような要素をポリシーとして定義し、設定することができます。
- バックアッププラン
- バックアップルール
- リソースの割り当て
- バックアッププランのタグ
- アドバンスドバックアップ設定
詳しくは以下の記事もご参照ください。
バックアップインデックスでできること
複数のバックアップを検索して特定のファイルまたはオブジェクトを見つけることができます。ファイル名、作成時間、サイズなどの 1 つまたは複数のフィルターに基づいて検索条件を指定できます。
探している特定のファイルまたはオブジェクトを特定したら、完全バックアップを復元するのではなく、それらの項目だけを Amazon S3 バケット等に復元することを選択できます。これにより、全てのファイル、オブジェクトをリストアしなくて済むので、復旧時間を短縮できるというわけです。
バックアップインデックスの作り方ですが、手動でバックアップを作成する 「オンデマンドバックアップ」実施時に指定するほか、スケジュールでバックアップジョブを作成する 「バックアッププラン」
の設定の中にもインデックス作成のオプションがあります。
以下の記事を見ると具体的な使用のイメージができるかと思います。
今回のアップデートについて
バックアップポリシーとバックアップインデックスの2つの要素についてざっと理解できたところで、今回のアップデートの説明です。
今回のアップデートでは、バックアップポリシー内でバックアップインデックスの作成がサポートされたというものになります。
これはつまり、バックアップポリシーで記載するバックアッププランの設定でインデックス作成オプションが使用できるようになったということです。
これにより、バックアップポリシーをアタッチすれば、対象のOU内で Amazon S3 バックアップまたは Amazon EBS スナップショットのバックアップインデックスが自動で作成されるようになりました。
実際に試してみる
それではさっそくやってみましょう。
バックアップポリシーを作成する際の流れは以下の記事が大変参考になります。
上記の記事では、管理アカウントも含めて一律のバックアッププランを作成していますが、今回はメンバーアカウント上でインデックス有効設定のバックアッププラン作成が確認できれば良いので、管理アカウント上でのボールトやIAMロールの作成は割愛しています。
作業の流れ
今回の作業の流れは以下の通りです
-
メンバーアカウントでの事前準備
- AWS Backup用のIAMロールを作成
-
管理アカウントでの設定
- バックアップポリシー等のAWS Backupのクロスアカウント管理設定を有効化
- バックアップポリシーの作成・アタッチ
-
メンバーアカウントでの実行・確認
- バックアップ対象にタグ付け
- バックアップインデックスが作成されることを確認
1. メンバーアカウントでIAMロールの設定
AWS Backupでのバックアップ作成に関する権限について詳細は以下を参照ですが、AWSBackupServiceRolePolicy〜で始まるポリシーを付けておけばOKです。
- https://docs.aws.amazon.com/aws-backup/latest/devguide/backup-search.html#backup-search-access
- https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/security-iam-awsmanpol.html
今回は以下の設定でIAMロールを作成しました
IAMロール名: OrganizationBackupManagement-Role
許可ポリシー:
- AWSBackupServiceRolePolicyForBackup
- AWSBackupServiceRolePolicyForIndexing
- AWSBackupServiceRolePolicyForItemRestores
- AWSBackupServiceRolePolicyForRestores
- AWSBackupServiceRolePolicyForS3Backup
- AWSBackupServiceRolePolicyForS3Restore
信頼ポリシー:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "backup.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
2. 管理アカウントでの設定
2-1. バックアップポリシーの有効化
まず管理アカウントで作業します。
バックアップポリシーが有効になっていない場合は Organizations
の画面から有効にしましょう。
続いて AWS Backup
の画面に移動し、設定からクロスアカウントモニタリングを有効にします。(こちらの画面からでもバックアップポリシーを有効化できたことに後から気づきました)
この設定により、メンバーアカウントのバックアップジョブの状況を管理アカウントから一元的に確認できるようになるので、とりあえず有効にしておいたほうが良いと思います。
2-2. バックアップポリシーの作成
続いて AWS Backup
の画面から、バックアップポリシーを作成します。
バックアップポリシーはビジュアルエディタまたはJSONで作成することができますが、ビジュアルエディタではまだインデックス作成の有無を指定できないようでした。そのためJSONで作成する必要があります。
JSONでのバックアッププラン構文
JSONでバックアッププランを書く際の構文ですが以下のようになっています。
{
"plans": {
"PlanName": {
"rules": { ... }, // バックアップの実行方法とタイミングを定義
"regions": { ... }, // 対象リソースが存在するリージョンを定義
"selections": { ... }, // バックアップ対象のリソースを定義 (タグまたはARNで指定)
"advanced_backup_settings": { ... }, // 詳細設定 (オプション)
"backup_plan_tags": { ... } // プラン自体のタグ (オプション)
}
}
}
バックアップポリシーの継承制御
またバックアップポリシーでは、親OUでポリシーを設定すると、その配下の子OUにも自動的にポリシーが引き継がれます。この継承の動作を制御するために @@assign
、@@append
、@@none
といった演算子が用意されています。
@@assign
、@@append
演算子は各設定項目で使用します。例:"regions": { "@@assign": [ "ap-northeast-1" ] }
@@none
については少し使い方が特殊なので、公式ドキュメントの記載例を参考にしたほうが良いと思います。
それぞれの演算子の意味合いは以下のようになっています
演算子 | 動作 | 具体例 |
---|---|---|
@@assign |
子OUで親の設定を完全に上書き | 親:東京リージョン 子:大阪リージョン → 結果:大阪リージョンのみ |
@@append |
子OUで親の設定に値を追加 | 親:東京リージョン 子:大阪リージョン → 結果:東京+大阪リージョン |
@@none |
子OUでの設定変更を禁止 | 親:東京リージョン 子:変更不可 → 結果:東京リージョンのみ |
バックアップポリシーの設定例
今回は以下のような設定にしてみました。毎時でバックアップを取得、バックアップ対象には特定のタグ(dataType:PII or dataType:RED)がついたAWSリソースを指定しています。
また、index_actions
の箇所で今回のアップデート内容であるバックアップインデックスの作成を指定しています。
{
"plans": {
"PII_Backup_Plan": {
"regions": {
"@@assign": [
"ap-northeast-1"
]
},
"rules": {
"Hourly": {
"schedule_expression": {
"@@assign": "cron(0 0/1 ? * * *)"
},
"start_backup_window_minutes": {
"@@assign": "60"
},
"complete_backup_window_minutes": {
"@@assign": "120"
},
"lifecycle": {
"move_to_cold_storage_after_days": {
"@@assign": "180"
},
"delete_after_days": {
"@@assign": "270"
},
"opt_in_to_archive_for_supported_resources": {
"@@assign": "false"
}
},
"target_backup_vault_name": {
"@@assign": "Default"
},
"index_actions": {
"resource_types": {
"@@assign": [
"EBS",
"S3"
]
}
}
}
},
"selections": {
"tags": {
"datatype": {
"iam_role_arn": {
"@@assign": "arn:aws:iam::$account:role/OrganizationBackupManagement-Role"
},
"tag_key": {
"@@assign": "dataType"
},
"tag_value": {
"@@assign": [
"PII",
"RED"
]
}
}
}
}
}
}
}
上記のJSONをJSON入力欄に記載し、適当なポリシー名をつけ、バックアップポリシーを作成します。
2-3. バックアップポリシーのアタッチ
続いてバックアップポリシーを組織のOU等にアタッチします。AWS Backup
の画面からもアタッチすることができました。
アカウント単位でもアタッチできるようなのでLogArchiveにアタッチしてみました。
LogArchiveアカウントで見てみるとちゃんとバックアップポリシーで指定した通りのバックアッププランが作成されていました。
ルールを見るとバックアップインデックスもしっかり有効になっています。
3. メンバーアカウントでの実行・確認
3-1. バックアップ対象のタグ付け
バックアップ対象にタグ付けをします。今回はTerraformのstate管理用S3バケットに対してタグ付けをしました。
3-2. バックアップジョブの実行確認
しばらく経ってから見てみると、バックアップジョブが正常終了したことが確認できました。(少し時間を置いたので3回ほど実行されてます)
3-3. バックアップインデックスを使った検索の実行
バックアップインデックスが作成されたので、メンバーアカウントで検索を試してみます。
復旧ポイントARNとオブジェクトキーを指定して検索しました。
検索ジョブが完了しました。ちゃんと目的のオブジェクトを検索できてますね。
まとめ
というわけで、AWS Backup Search でバックアップポリシー内でのバックアップインデックス作成がサポートされた新機能の紹介でした。
組織レベルでバックアッププランを作成できるバックアップポリシーは、災害対策等を目的として設定していたという方もいらっしゃると思います。バックアップインデックスも作成できるようになったことで、特定のファイルのみを素早く復元できるようになりました。これにより、災害復旧時やコンプライアンス対応がより効率的に行えるようになったのではないでしょうか。
以上、とーちでした。