【AWS Backup】バックアップポリシーを使ってOrganizations配下のリソースをバックアップしてみる

記事タイトルとURLをコピーする

2022年9月よりサーバーワークスにジョインしましたCI2部2課の三角です。

今回はAWS Backupのバックアップポリシーを使ってOrganizationsのOU配下のバックアップを取得したいと思います。
具体的な作業内容はOrganizationsの管理アカウントでAWSBackupのバックアップポリシーを作成し、配下のOUにバックアップポリシーを配布。
配布されたバックアップポリシーで配下のOUのリソースをバックアップする流れとなります。

バックアップポリシーとは

AWSドキュメントには以下のように紹介されています。
バックアップポリシーはOrganization内で使用するバックアップの設定を各OUにアタッチすることで OU毎にバックアップ設定を行うことができる機能です。

バックアップポリシーを使用すると、組織が必要とするあらゆるレベルでリソースのバックアップをきめ細かく制御できます。例えば、組織のルートにアタッチされたポリシーで、すべての Amazon DynamoDB テーブルをバックアップするよう指定できます。このポリシーには、デフォルトのバックアップ頻度を含めることができます。その後、各 OU の要件に従ってバックアップ頻度を上書きするバックアップポリシーを OU にアタッチできます。例えば、Developers OU ではバックアップ頻度を週に 1 回指定し、Production OU では 1 日に 1 回指定することができます。

docs.aws.amazon.com

今回はバックアップの対象としてEC2をバックアップします。
なお、AWS Backupでバックアップ可能なリソースにつきましては下記にリンクを記載いたしますのでご参照ください。

docs.aws.amazon.com

バックアップポリシーを設定してみる

子アカウントでIAMポリシー、IAMロールを作成する

実際にバックアップポリシーを設定してみましょう。 バックアップポリシーは下記のようなイメージです。
バックアップポリシーはOU、アカウント単位で配布することができますので 今回はOU単位でのバックアップポリシーの配布を行います。

前提条件として、バックアップポリシーを使用して子アカウントがバックアップを取得する為に、 子アカウント上で IAM ポリシーの作成とバックアップボールトが必要となります。
下記のページを参考にIAMポリシーを作成しましょう。

docs.aws.amazon.com

今回は「blog_AWSBackup_Org」という名前のIAMポリシーを作成していきます。 AWSコンソールから「Identity and Access Management (IAM)」→「ダッシュボード」→「ポリシー」→「ポリシーを作成」からIAMポリシーを作成します。
IAMポリシーの内容はJSONで記載します。 子アカウントで作成したIAMポリシーの中身は下記のとおりです。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ManageBackupPolicies",
            "Effect": "Allow",
            "Action": [
                "organizations:AttachPolicy",
                "organizations:CreatePolicy",
                "organizations:DeletePolicy",
                "organizations:DescribeAccount",
                "organizations:DescribeCreateAccountStatus",
                "organizations:DescribeEffectivePolicy",
                "organizations:DescribeOrganization",
                "organizations:DescribeOrganizationalUnit",
                "organizations:DescribePolicy",
                "organizations:DetachPolicy",
                "organizations:DisableAWSServiceAccess",
                "organizations:DisablePolicyType",
                "organizations:EnableAWSServiceAccess",
                "organizations:EnablePolicyType",
                "organizations:ListAccounts",
                "organizations:ListAccountsForParent",
                "organizations:ListAWSServiceAccessForOrganization",
                "organizations:ListCreateAccountStatus",
                "organizations:ListOrganizationalUnitsForParent",
                "organizations:ListParents",
                "organizations:ListPolicies",
                "organizations:ListPoliciesForTarget",
                "organizations:ListRoots",
                "organizations:ListTargetsForPolicy",
                "organizations:UpdatePolicy"
            ],
            "Resource": "*"
        }
    ]
}

IAMポリシーを作成できました。 次はIAMポリシーをIAMロールにアタッチしていきます。 今回はバックアップ用のIAMサービスロール「AWSBackupDefaultServiceRole」にIAMポリシー「blog_AWSBackup_Org」をアタッチします。
「ダッシュボード」→「ポリシー」→「ロール」→「AWSBackupDefaultServiceRole」で検索し「AWSBackupDefaultServiceRole」に移動します。
「許可を追加」から「ポリシーをアタッチ」を押下します。 「その他の許可ポリシー」で「blog_AWSBackup_Org」にて検索→「blog_AWSBackup_Org」をチェック→「ポリシーをアタッチ」を押下します。
これでIAMロールにIAMポリシーをアタッチできました。

IAMポリシーを割り当てたIAMロールはバックアップポリシー作成時に必要となりますのでメモしましょう。 なお、今回アタッチしたIAMロール「AWSBackupDefaultServiceRole」はサービスロールとなりますので 「service-role/AWSBackupDefaultServiceRole」でメモします。

子アカウントでバックアップボールトを作成する

子アカウントでバックアップボールトを作成します。
バックアップボールト名はバックアップポリシー作成時に必要となりますのでメモしておきましょう。

Organizationの管理アカウントでバックアップポリシー、クロスアカウントモニタリングをオンにする

今度はOrganizationsの管理アカウントでバックアップポリシー、クロスアカウントモニタリングをオンにします。
管理アカウントにログインし、AWS Backup→クロスアカウントモニタリングから バックアップポリシー、クロスアカウントモニタリングをオンにします。

Organizationの管理アカウントでバックアップポリシーを作成する

Organizationsの管理アカウントでバックアップポリシーを作成していきます。
AWS Backup→バックアップポリシー→バックアップポリシーを作成からバックアップポリシーを作成していきます。

バックアッププランではバックアップを取得するリージョンを設定する必要があります。 今回は東京リージョンのリソースをバックアップする為、東京リージョンを設定します。

バックアップルールではバックアップポリシーを適用するバックアップボールトやバックアップの頻度などを設定することができます。
ここで子アカウントのバックアップボールト名を入力します。
私は動作確認のために開始時刻を1時間後の16時に設定しましたが開始時刻がUTC(世界共通時)であることに気づかず時間を無駄にしたので 気を付けましょう。

リソースの割り当てではリソースのタグ設定とバックアップに使用するIAMロールを指定します。
ここで子アカウントでIAMポリシーをアタッチしたIAMロール「service-role/AWSBackupDefaultServiceRole」を指定します。
リソースタグキーとタグ値は、この値が設定されたリソースをバックアップ対象とする項目です。

バックアップポリシーが作成できました。

バックアップポリシーをOUにアタッチする

バックアップポリシーを作成しましたが、OUや子アカウントにバックアップポリシーがアタッチされていない状態の為、 バックアップポリシーをOUに割り当てます。
AWS Backup→バックアップポリシー→作成したポリシー→ターゲット→アタッチを実施します。 今回はSandboxOUにバックアップポリシーをアタッチします。

バックアップポリシーのアタッチが完了しました。
これでSandboxOU配下のアカウント内で特定のタグを付与したリソースをバックアップすることが可能となります。

子アカウントでバックアップポリシーを確認してみる

Organizationsの管理アカウントでバックアップポリシーを設定しましたが 子アカウントではどのように表示されるのか確認してみたいと思います。
子アカウントでAWS Backup→バックアッププランでバックアップポリシーを確認することができます。

バックアッププランの内容を確認してみます。 Organizations から配布されたポリシーは編集、削除できない旨のメッセージが表示されています。

動作確認

バックアップポリシーの設定が完了したのでバックアップの動作確認をしてみましょう。
今回は子アカウントで下記のようなEC2インスタンスを作成しました。
バックアップポリシーのリソースの割り当てで設定した「タグキー:org」「タグ値:backup」をEC2インスタンスに設定しています。

この状態でしばらく放置してからAWS Backupのバックアップボールトを確認してみます。

バックアップを取得できています!やった!!!

さいごに

Organizationsの管理アカウントから配下OUの子アカウントに対してバックアップポリシーを設定し、バックアップさせることができました。
組織単位でリソースのバックアップを管理できるのでOrganizationsを使用する際は是非使っていきたい機能ですね。 最後に詰まったポイントや注意点を下記に纏めておきます。

  1. 子アカウントで前提条件となるIAMポリシーを作成する必要がある。
  2. 作成したIAMポリシーをバックアップ用の権限があるIAMロールにアタッチする必要がある
  3. 子アカウント側でバックアップボールトを作成する必要がある。
  4. バックアップポリシーはリージョンごとに作成する必要がある。
  5. バックアップポリシーで設定する対象のバックアップボールトの名称を間違えないよう注意する。
  6. バックアップポリシーのバックアップ開始時刻はUTCなので注意する。
  7. リソース割り当てのタグをバックアップ対象のリソースに付与する必要がある。
  8. バックアップポリシーはOUにアタッチしないと使用できないので注意する。

三角悠生(執筆記事の一覧)

CI2部2課

2022年9月入社。バイクが好き。主に初心者向けの記事を書いていきます。