こんにちは、やまぐちです。
概要
今回は、AWS Backup のバックアップポリシーを委任先の AWS アカウントから操作するまでをご紹介いたします。
委任先の AWS アカウントでバックアップポリシーを操作するために必要なことは以下となります。
- 管理アカウントで、AWS Backup クロスアカウント管理設定内の以下機能をオンにする
- バックアップポリシー
- 委任された管理者
- 委任された管理者に、委任先の AWS アカウントを登録する
- 委任ポリシーの作成
- バックアップ取得アカウントでバックアップボールトを作成
AWS Organizations を利用した統合と委任について
AWS Backup は、AWS Organizations と統合することが可能です。
docs.aws.amazon.com
統合すると、バックアップポリシーを OU や AWS アカウントへ適用してバックアッププランを簡単に作成できます。
各 AWS アカウントでバックアッププランを作成せずとも、管理アカウントから適用ができる形になります。
ただし、バックアップポリシーは管理アカウントからでしか作成や適用ができません。
AWS Organizations を利用したことある方は何となく察していただいているかと思いますが、委任することで委任先のアカウントからバックアップポリシーの操作が可能となります。

やってみる
では、実際に AWS Backup の委任からバックアップポリシーの作成・適用までを実施していきたいと思います。
AWS Backup の委任
まずは、管理アカウントから AWS Backup に移動して「設定」へ移ります。
「クロスアカウント管理」内の以下設定を「オン」にします。
- バックアップポリシー
- 委任された管理者
次に、委任したい AWS アカウントを指定して委任された管理者を登録します。
「委任された管理者」に委任した AWS アカウントが表示されていれば設定完了です!

委任ポリシーの作成
次に、委任ポリシーを作成して、委任先の AWS アカウントでバックアップポリシーを作成できるようにします。
委任ポリシーを作成しない場合、以下のようにバックアップポリシーの作成やアタッチ等の操作ができない状態となります。

ポリシーの保存に失敗しました。 You don't have permissions to access this resource.
ということで、委任ポリシーを作成していきます。
管理アカウントから AWS Organizations に移動します。
「設定」へ移ります。
「AWS Organizations の委任された管理者」内の「委任」を押下します。
委任ポリシーを作成する画面が出てくるので、バックアップポリシーに関する権限を記載します。
ポリシーの設定例を以下に記載しておきます。
バックアップポリシーの作成、編集、削除、AWS アカウントや OU へのアタッチ・デタッチが実施できる内容になっています。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::委任先のAWSアカウントID:role/操作を許可するIAMロール名" }, "Action": [ "organizations:CreatePolicy", "organizations:UpdatePolicy", "organizations:AttachPolicy", "organizations:DetachPolicy", "organizations:DeletePolicy" ], "Resource": [ "arn:aws:organizations::*:policy/o-組織ID/backup_policy/*", "arn:aws:organizations::管理アカウント:account/o-組織ID/*", "arn:aws:organizations::管理アカウント:ou/o-組織ID/*", "arn:aws:organizations::管理アカウント:root/o-組織ID/*" ] } ] }
※すでに SCP に関する委任ポリシーを適用している場合は、ポリシーを追記する形で対応します。
バックアップポリシーの作成
上記まで完了しましたら、委任された AWS アカウントにログインして早速バックアップポリシーを作成してみます。
AWS Backup に移動して、「バックアップポリシーを作成」を押下します。
「ポリシー名」と「ポリシーの説明」を入力します。
バックアップポリシーはビジュアルエディタと JSON の2パターンで定義ができます。
ビジュアルエディタでは複数のプランを設定できなかったりするので、個人的には JSON での定義がベストだと考えています。
ただし、ポリシーサイズは 10000 文字以内に定義する必要がある点は注意が必要です。
今回は、以下の内容でバックアップポリシーを作成したいと思います。
{ "plans": { "aws-backup-plan-test": { "regions": { "@@assign": [ "ap-northeast-1" ] }, "rules": { "aws-backup-rule-test": { "schedule_expression": { "@@assign": "cron(0 8 * * ? *)" }, "start_backup_window_minutes": { "@@assign": "60" }, "complete_backup_window_minutes": { "@@assign": "120" }, "target_backup_vault_name": { "@@assign": "yamaguchi-backup-vault" }, "lifecycle": { "delete_after_days": { "@@assign": "1" } } } }, "selections": { "tags": { "aws-backup-selection-test": { "iam_role_arn": { "@@assign": "arn:aws:iam::$account:role/service-role/AWSBackupDefaultServiceRole" }, "tag_key": { "@@assign": "AWSBackup" }, "tag_value": { "@@assign": [ "test" ] } } } } } } }
補足情報として、target_backup_vault_nameで指定しているボールトは、このバックアップポリシーを適用する AWS アカウントで事前に作成しておく必要があります。
「ポリシーを作成」を押下すると、バックアップポリシーが作成されました!

バックアップポリシーのアタッチ
バックアップポリシーの作成まで完了したので、バックアップポリシーを AWS アカウントにアタッチします。
ターゲットから「アタッチ」を押下します。
バックアップポリシーを適用させたい OU/ AWS アカウントを選択して、アタッチします。
ターゲットに対象の AWS アカウントが追加されたことを確認します。

バックアップ対象の AWS アカウントからバックアッププランを確認する
バックアップポリシーを適用した AWS アカウントへログインして、バックアッププランが作成されているかを確認します。
バックアッププランを見ると、JSON で定義したバックアッププランが作成されていました!
バックアッププラン内のバックアップルールやリソース割り当ても、意図した通り作成されていました。



バックアップ取得の実行時間になると、バックアップジョブも実行されました。
まとめ
今回は、AWS Backup を委任してバックアップポリシーを作成・アタッチするまでを実施してみました。
委任ポリシーの適用やバックアップを取得する AWS アカウント内でボールトを事前作成するなど注意点がございました。
どなたかのお役に立てれば幸いです。
それでは、またどこかで~