暗号化された RDS for SQL Server でクロスリージョン自動バックアップとリストアをやってみる

暗号化された RDS for SQL Server でクロスリージョン自動バックアップとリストアをやってみる

Clock Icon2025.05.05

コーヒーが好きな emi です。

RDS for SQL Server の BCP 対策を検討する中で、クロスリージョン自動バックアップとリストアの検証をおこないました。
本ブログでは検証手順を共有します。

ポイント

  • 暗号化された RDS for SQL Server でも実装可能
    • 自動バックアップ送信先リージョンの KMS キーを指定することに注意
  • SQL Server Standard Edition でもサポートされる(Enterprise Sdition じゃなくても OK)
  • 自動バックアップ送信先リージョンで PITR が可能
  • Secrets Manager でマスターパスワードを管理している場合でも、送信先リージョンでリストアするとセルフマネージド管理に変わる
    • 必要に応じてマスターパスワードの管理方法は再設定する必要がある
  • 参考情報▼

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_ReplicateBackups.html

https://dev.classmethod.jp/articles/amazon-rds-encrypted-cross-region-automated-backups/

構成図

AD 環境ではない WORKGROUP 環境で検証しました。
encrypted-sqlserver-rds-cross-region-backup-restore_1

0. 事前準備

VPC を作成しておいてください。今回は私の検証環境にあらかじめ作成しておいた VPC を使用します。
DB サブネットグループも作成しておきました。

1. 東京リージョンで RDS for SQL Server の作成

まずは東京リージョンで RDS for SQL Server を作成します。
encrypted-sqlserver-rds-cross-region-backup-restore_41

今回はマネジメントコンソールから作成します。標準作成で SQL Server Standard Edition を選択し、エンジンバージョンは SQL Server 2022 16.00.4185.3.v1 を選択しました。
encrypted-sqlserver-rds-cross-region-backup-restore_2

パスワードは Secrets Manager で管理することにしました。ストレージは画像のように設定します。
encrypted-sqlserver-rds-cross-region-backup-restore_3

可用性、接続は以下のように設定します。
encrypted-sqlserver-rds-cross-region-backup-restore_4

認証やモニタリングは以下のように設定します。
encrypted-sqlserver-rds-cross-region-backup-restore_5

パラメーターグループとオプショングループはデフォルトのものをそのまま指定しました。
バックアップに 「バックアップレプリケーション」 の項目があり、ここでクロスリージョン自動バックアップを設定できるのですが、今回は後で設定するのでチェックしないで進めました。
暗号化を有効にし、KMS キーは AWS 管理の aws/rds を指定します。他は以下のように設定します。
encrypted-sqlserver-rds-cross-region-backup-restore_6

作成します。
encrypted-sqlserver-rds-cross-region-backup-restore_7

15 分程度待ち、RDS for SQL Server が出来ました。
encrypted-sqlserver-rds-cross-region-backup-restore_8

メンテナンスとバックアップタブは以下のようになっています。
encrypted-sqlserver-rds-cross-region-backup-restore_9

2. クロスリージョン自動バックアップを設定

クロスリージョン自動バックアップを設定します。
encrypted-sqlserver-rds-cross-region-backup-restore_42

画面左のナビゲーションペインメニューで 「自動バックアップ」 を選択し、「現在のリージョン」 タブを見ると、作成した RDS for SQL Server が表示されます。チェックした状態で 「アクション」 をクリックし、「クロスリージョンレプリケーションを管理」 をクリックします。
encrypted-sqlserver-rds-cross-region-backup-restore_10

バックアップレプリケーションにチェックし、送信先リージョンを選択します。今回は大阪リージョンを指定します。

KMS キーの ARN を入力する必要があるのですが、大阪リージョンに KMS を作成していないので、
encrypted-sqlserver-rds-cross-region-backup-restore_11

以下のように大阪リージョンで KMS コンソールを開くと KMS キーがありません。
encrypted-sqlserver-rds-cross-region-backup-restore_13

大阪リージョンで AWS 管理の KMS キーを作成します。

大阪リージョンで KMS キーの作成

以下ブログを参考に CloudShell から AWS CLI で KMS キーを作成します。
https://dev.classmethod.jp/articles/tsnote-how-to-create-aws-managed-key/

aws kms describe-key --key-id alias/aws/rds --region <リージョン名>

今回は大阪リージョンなので、以下コマンドを CloudShell で実行しました。

aws kms describe-key --key-id alias/aws/rds --region ap-northeast-3

▼実行結果

~ $ aws kms describe-key --key-id alias/aws/rds --region ap-northeast-3
{
    "KeyMetadata": {
        "AWSAccountId": "123456789012",
        "KeyId": "3b895a70-c632-4c6b-a15b-1d0xxxxxxxxxx",
        "Arn": "arn:aws:kms:ap-northeast-3:123456789012:key/3b895a70-c632-4c6b-a15b-1d0xxxxxxxxxx",
        "CreationDate": "2025-05-02T02:59:12.771000+00:00",
        "Enabled": true,
        "Description": "Default key that protects my RDS database volumes when no other key is defined",
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "Enabled",
        "Origin": "AWS_KMS",
        "KeyManager": "AWS",
        "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
        "KeySpec": "SYMMETRIC_DEFAULT",
        "EncryptionAlgorithms": [
            "SYMMETRIC_DEFAULT"
        ],
        "MultiRegion": false
    }
}
~ $ 

encrypted-sqlserver-rds-cross-region-backup-restore_14

大阪リージョンで AWS 管理の KMS キーができました。
encrypted-sqlserver-rds-cross-region-backup-restore_15

作成した大阪リージョンの KMS キーの ARN をコピーします。
encrypted-sqlserver-rds-cross-region-backup-restore_16

RDS 自動バックアップの画面に戻り、コピーした KMS キーの ARN を入力します。
encrypted-sqlserver-rds-cross-region-backup-restore_17

自動バックアップのレプリケーション設定ができました。
KMS キーの作成中 RDS の設定タブを開きっぱなしにしていてエラーになった方は、ブラウザを再読み込みするとうまくいきます。
encrypted-sqlserver-rds-cross-region-backup-restore_18

左が東京リージョンで、右が大阪リージョンのコンソール画面です。
大阪リージョン側で 「レプリケート済み」 タブを見ると、レプリケートされてきた自動バックアップが確認できます。
encrypted-sqlserver-rds-cross-region-backup-restore_19

3. 大阪リージョンにレプリケートしたバックアップから PITR する

大阪リージョンにレプリケートされた自動バックアップから、ポイントインタイムリカバリ(Point In Time Recovery、PITR)をおこないます。
encrypted-sqlserver-rds-cross-region-backup-restore_43

大阪リージョンにレプリケートされた自動バックアップを開き、アクションから 「特定時点への復元」 をクリックします。
encrypted-sqlserver-rds-cross-region-backup-restore_20

復元する時刻を選択できます。
encrypted-sqlserver-rds-cross-region-backup-restore_21

ちなみに、DB エンジンは Standard Edition から変更できず、
encrypted-sqlserver-rds-cross-region-backup-restore_22

ライセンスモデルも License Included から変更できません。
encrypted-sqlserver-rds-cross-region-backup-restore_23

インスタンスタイプは東京リージョンのものとは違うものに変更できます。
encrypted-sqlserver-rds-cross-region-backup-restore_24

マルチ AZ 配置やストレージの設定も東京リージョンのものとは違う構成に変更できます。
encrypted-sqlserver-rds-cross-region-backup-restore_25

大阪リージョンの VPC を選択します。今回は検証なのでパブリックサブネットしかないデフォルト VPC を選択してしまいましたが、本番環境の場合は VPC を要件に応じて作成してください。
他の設定は画像を参照ください。
encrypted-sqlserver-rds-cross-region-backup-restore_26

バックアップの設定はここでは変更できませんでした。
encrypted-sqlserver-rds-cross-region-backup-restore_27

15 分程度待つと、大阪リージョンで RDS for SQL Server インスタンスを復元することができました。
encrypted-sqlserver-rds-cross-region-backup-restore_28

ブラウザタブを並べて、東京リージョンのインスタンスと大阪リージョンで復元したインスタンスを比較します。左が東京リージョンで、右が大阪リージョンです。
インスタンスのエンドポイントが変わっています。
encrypted-sqlserver-rds-cross-region-backup-restore_29

接続タブを見ると、マスターパスワードの設定が違っています。東京リージョンでは Secrets Manager 管理としましたが、大阪リージョンは Secrets Manager 利用になっていません。
encrypted-sqlserver-rds-cross-region-backup-restore_30

変更から見てみると、セルフマネージドになっていました。この画面はキャンセルで閉じます。
encrypted-sqlserver-rds-cross-region-backup-restore_31

4. 大阪リージョン RDS インスタンスのパスワード確認

大阪リージョンで復元した RDS for SQL Server インスタンスのマスターパスワードは何でしょうか?

大阪リージョンで復元した RDS for SQL Server インスタンスに接続してみるために、大阪リージョンで EC2(Windows Server 2022)を構築し、フリートマネージャーを使って接続テストをおこないます。
encrypted-sqlserver-rds-cross-region-backup-restore_1

EC2 と RDS のセキュリテイグループを設定しておいてください。RDS のセキュリテイグループのインバウンドルールで、EC2 のセキュリテイグループからの MSSQL(ポート 1433)を許可しておきます。

フリートマネージャーでリモートデスクトップ接続します。
encrypted-sqlserver-rds-cross-region-backup-restore_32

SQL Server に接続するために、 SQL Server Management Studio (SSMS) をインストールしておきます。

Windows Server 2022 で Edge を使い、以下のダウンロードページを開いてください。

https://learn.microsoft.com/ja-jp/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16

encrypted-sqlserver-rds-cross-region-backup-restore_33

ダウンロードページで、日本語版の SSMS をダウンロードします。
encrypted-sqlserver-rds-cross-region-backup-restore_34

デフォルトのディレクトリにインストールします。
encrypted-sqlserver-rds-cross-region-backup-restore_35

2 分程度でインストールが完了します。
encrypted-sqlserver-rds-cross-region-backup-restore_36

SSMS を開きます。
encrypted-sqlserver-rds-cross-region-backup-restore_37

接続情報として、東京リージョンの Secrets Manager 画面を開き、東京リージョンの RDS for SQL Server のシークレット情報を取得しておきます。
encrypted-sqlserver-rds-cross-region-backup-restore_38

SSMS で以下のように入力します。

  • Server name:大阪リージョンで復元した RDS for SQL Server のエンドポイント
  • Authentication:SQL Server Authentication
  • Login:東京リージョンの Secrets Manager から取得した情報
  • Password:東京リージョンの Secrets Manager から取得した情報
  • Trust server certificate にチェックする

encrypted-sqlserver-rds-cross-region-backup-restore_39

接続できました。大阪リージョンで復元した RDS for SQL Server インスタンスのマスター認証情報は、東京リージョンの情報がセルフマネージド形式で使える状態であることが確認できました。
encrypted-sqlserver-rds-cross-region-backup-restore_40

必要に応じて Secrets Manager や Systems Manager のパラメーターストアの利用をご検討ください。

おわりに

本記事への質問やご要望については画面下部のお問い合わせ「DevelopersIO について」からご連絡ください。記事に関してお問い合わせいただけます。

参考

https://dev.classmethod.jp/articles/amazon-rds-mysql-mariadb-dr-capabilities-cross-region-automated-backups/

https://repost.aws/ja/knowledge-center/rds-automated-snapshot-retain-longer

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html

https://dev.classmethod.jp/articles/try-rds-sqlserver-windows-auth/

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.