Amazon Web Services ブログ

Amazon RDS for Microsoft SQL Server で、クロスアカウントのネイティブバックアップおよびリストアを設定する

Amazon Relational Database Service (Amazon RDS) は、Microsoft SQL Server データベースのネイティブバックアップおよびリストアをサポートしています。複数の AWS アカウントがある場合、Amazon RDS インスタンスと Amazon Simple Storage Service (Amazon S3) バケットが同じ AWS リージョンにあれば、これらのアカウント間でネイティブバックアップおよびリストアを実行することができます。これらの手順を進める前に、この要件を理解しておくことが重要です。

この記事では、Amazon RDS for SQL Server でクロスアカウントのネイティブバックアップおよびリストアを実行するために必要なアクセス許可とポリシーを設定する方法について説明します。この手順では、これらのリソースを含む以下の AWS アカウントがあることを前提としています。

  • アカウント A – Amazon RDS for SQL Server インスタンス
  • アカウント B – Amazon S3 バケット

すべての設定は、S3 バケットが存在するアカウント B で行う必要があります。アカウント B で以下の作業を行います。

  1. IAM ポリシーを作成する。
  2. ロールを作成し、信頼ポリシーを設定する。
  3. S3 バケットポリシーを作成する。

タスク 1: IAM ポリシーを作成する

ポリシーを作成するには、AWS Identity and Access Management (IAM) コンソールを開きます。

  1. IAM ダッシュボードで、新しいポリシーの作成を選択します。ポリシーに、「CrossAccountSetup」という名前を付けます。
  2. JSON 形式を選択し、以下のアクセス許可ポリシーの例を含め、bucket_name を RDS SQL Server と同じリージョンにある S3 バケットの名前で置き換えます。
    {
        "Version": "2012-10-17",
        "Statement":
        [
            {
            "Effect": "Allow",
            "Action":
                [
                    "s3:ListBucket",
                    "s3:GetBucketLocation"
                ],
            "Resource": "arn:aws:s3:::bucket_name"
            },
            {
            "Effect": "Allow",
            "Action":
                [
                    "s3:GetObject",
                    "s3:PutObject",
                    "s3:ListMultipartUploadParts",
                    "s3:AbortMultipartUpload"
                ],
            "Resource": "arn:aws:s3:::bucket_name/*"
            }
        ]
    }
    

このポリシーは、S3 バケットが存在する他のアカウントで設定した点を除いて、ネイティブセットアップに使用したものと同じポリシーです。詳細については、Amazon RDS ユーザーガイドネイティブバックアップおよびリストアの IAM ロールを手動で作成するを参照してください。

ポリシーは、IAM コンソールに次のように表示されます。

  1. [Review policy] を選択し、次に [Create policy] を選択します。

タスク 2: ロールを作成し、信頼ポリシーを設定する

次に、ネイティブバックアップおよびリストアで使用する新しい IAM ロールを作成し、信頼ポリシーを設定します。

  1. IAM コンソールで、[Roles] を選択し、次に [Create role] を選択します。[Another AWS account] を選択します。
  1. タスク 1 で作成したポリシーを検索します (この場合は、CrossAccountSetup)。リストで、ポリシー名を選択します。
  1. 次に示すように、ロール名 (たとえば、RDSCrossAccountRole) とロールの説明を入力します。

ロールを作成すると、信頼ポリシーが有効になっていること、次の信頼ポリシーの例のようになっていることを確認できます。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam:: AccountA-RDS:root"
      },
      "Action": "sts:AssumeRole",
      "Condition": {}
    }
  ]
}

信頼ポリシーが前述のポリシーのように見えるアカウント A からアカウント B へのルートアクセスを提供しない場合は、RDS だけにアクセスを許可するようにポリシーを編集することをお勧めします。

以下は、Amazon RDS のネイティブバックアップおよびリストアの信頼ポリシーの例です (推奨される信頼の設定)。

{
  "Statement": {
    "Effect": "Allow",
    "Principal": { "Service": "rds.amazonaws.com" },
    "Action": "sts:AssumeRole",
    "Condition":
    { "StringEquals": { "sts:ExternalId":"AccountA-RDS" } }
  }
  }

詳細については、Amazon RDS ユーザーガイドネイティブバックアップおよびリストアの IAM ロールを手動で作成するを参照してください。

タスク 3: S3 バケットポリシーを設定する

次のステップは、アカウント A がバケットにアクセスできるように S3 バケットとそのポリシーを設定することです。バケットを作成するか、既存のバケットを使用することができます。ただし、バケットが Amazon RDS インスタンスと同じ AWS リージョンにあることを確認します。

  1. Amazon S3 コンソールで、ポリシーを作成したいバケットを選択します。[Permissions] を選択し、次に [Bucket Policy] を選択します。
  2. RDS がバックアップおよびリストアのために S3 バケットにアクセスできるようにするには、次のバケットポリシーを含めます。
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "Permission to cross account",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::123456789012:root"
                },
                "Action": "s3:*",
                "Resource": [
                    "arn:aws:s3:::AccountB-S3BucketName",
                    "arn:aws:s3:::AccountB-S3BucketName/*"
                ]
            }
        ]
    }
    

ポリシーは、バケットポリシーエディタに次のように表示されます。

これらの手順を完了したら、この S3 バケット名 (アカウント B) を、RDS SQL Server インスタンス (アカウント A) で使用されているオプショングループにリンクされている IAM ポリシーにリソースとして手動で追加する必要があります。これで、Amazon RDS SQL Server ネイティブバックアップおよびリストアにクロスアカウント S3 バケットを使用する準備が整いました。

詳細については、Amazon RDS ユーザーガイドネイティブバックアップおよびリストアの IAM ロールを手動で作成するを参照してください。

クロスリージョンのレプリケーション

バックアップファイルが異なるリージョンにある場合はどうなるか、という疑問が発生します。 このシナリオでは、クロスリージョンのレプリケーションを設定する必要があります。これを行う方法については、ブログ記事の Amazon S3 のクロスリージョンのレプリケーションを参照してください。

クロスリージョンのレプリケーションは、異なるリージョンにバックアップをオフロードする災害対策 (DR) 戦略として機能します。また、これらのバックアップは、災害発生時にはそのリージョンまたはローカルに復元することもできます。

ソースバケットから 1 つの送信先バケットにだけオブジェクトをレプリケーションすることができます。有効にした後、レプリケーションは S3 バケットで新しく作成されたオブジェクトに対して機能します。Amazon S3 がオブジェクトをレプリケーションした後、そのオブジェクトを再度レプリケーションすることはできません。

詳細については、Amazon S3 開発者ガイドクロスリージョンのレプリケーションを参照してください。

まとめ

この記事では、Amazon RDS for SQL Server でクロスアカウントのネイティブバックアップおよびリストアを実行するために必要な設定について簡単に説明しています。RDS インスタンスと S3 バケットが同じ AWS リージョンにある場合は、複数の AWS アカウント間でネイティブバックアップおよびリストアを実行することができます。

ネイティブバックアップおよびリストアの詳細については、Amazon RDS ユーザーガイドMicrosoft SQL Server のネイティブバックアップおよびリストアのサポートを参照してください。


著者について

Kirthi Vishal は、アマゾン ウェブ サービスのサポートエンジニアです。彼は、RDS および RDS-SQLServer の内容領域専門家であり、顧客と協力して Relational Database Services に関するガイダンスおよび技術支援を提供し、AWS を使用する際のソリューションの価値の向上を支援しています。