

# ネイティブバックアップおよび復元のセットアップ
<a name="SQLServer.Procedural.Importing.Native.Enabling"></a>

ネイティブバックアップおよび復元をセットアップするには、3 つのコンポーネントが必要です。

1. バックアップファイルを保存する Amazon S3 バケット。

   バックアップファイルに使用する S3 バケットを用意してから、RDS に移行するバックアップをアップロードする必要があります。Amazon S3 バケットが既にある場合はそれを使用できます。バケットがない場合、[バケットを作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html)できます。または、`SQLSERVER_BACKUP_RESTORE` を使用して AWS マネジメントコンソール オプションを追加するときに新しいバケットの作成を選択することもできます。

   S3 を使用する方法の詳細については、「[Amazon Simple Storage Service ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)」を参照してください。

1. バケットにアクセスするための AWS Identity and Access Management (IAM) ロール。

   IAM ロールが既にある場合はそれを使用できます。AWS マネジメントコンソール を使用して `SQLSERVER_BACKUP_RESTORE` オプションを追加する際に、新しい IAM ロールの作成を選択することもできます。または、手動で新しいロールを作成することもできます。

   手動で新しい IAM ロールを作成する場合は、次のセクションで示されている方法を使用します。既存の IAM ロールに信頼関係ポリシーとアクセス許可ポリシーをアタッチする場合は、同じ操作を行います。

1. DB インスタンスのオプショングループに追加された `SQLSERVER_BACKUP_RESTORE` オプション。

   DB インスタンスでネイティブバックアップおよび復元を有効にするには、DB インスタンスのオプショングループに `SQLSERVER_BACKUP_RESTORE` オプションを追加します。詳細と手順については、「[SQL Server のネイティブバックアップおよび復元のサポート](Appendix.SQLServer.Options.BackupRestore.md)」を参照してください。

## ネイティブバックアップおよび復元用の IAM ロールの手動作成
<a name="SQLServer.Procedural.Importing.Native.Enabling.IAM"></a>

ネイティブバックアップおよび復元用の新しいIAM ロールを手動で作成したい場合、作成することが可能です。その場合、 Amazon RDS サービスから Amazon S3 バケットに許可を委任する役割を作成します。IAM ロールを作成するときは、信頼関係とアクセス権限ポリシーをアタッチします。信頼関係により、RDS はこのロールを引き受けることができます。許可ポリシーは、このロールが実行できるアクションを定義します。ロールの作成の詳細については、「[AWS のサービスにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)」を参照してください。

ネイティブバックアップおよび復元機能では、このセクションの例と同様の信頼関係ポリシーおよびアクセス許可ポリシーを使用します。次の例では、すべてのサービスアカウントのエイリアスとしてサービスプリンシパル名 `rds.amazonaws.com` を使用します。他の例では、Amazon リソースネーム (ARN) を指定して、信頼ポリシーでアクセス許可を付与している別のアカウント、ユーザー、またはロールを特定します。

リソースベースの信頼関係では [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) および [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) のグローバル条件コンテキストキーを使用して、サービスに付与する特定のリソースへのアクセス許可を制限することをお勧めします。これは、[混乱した使節の問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)に対する最も効果的な保護方法です。

両方のグローバル条件コンテキストキーを使用し、`aws:SourceArn` 値にアカウント ID を含めます。この場合は、`aws:SourceAccount` 値と `aws:SourceArn` 値のアカウントは、同じステートメントで使用する場合、同じアカウント ID を使用する必要があります。
+ 単一リソースに対するクロスサービスアクセスが必要な場合は `aws:SourceArn` を使用します。
+ そのアカウント内の任意のリソースをクロスサービス使用に関連付けることを許可する場合、`aws:SourceAccount`を使用します。

信頼関係では、ロールにアクセスするリソースの完全な ARN を持つ `aws:SourceArn` グローバル条件コンテキストキーを必ず使用してください。ネイティブバックアップおよび復元では、次の例に示すように、DB オプショングループと DB インスタンスの両方を含めるようにしてください。

**Example ネイティブバックアップおよび復元のためのグローバル条件コンテキストキーによる信頼関係の例**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": [
                        "arn:aws:rds:Region:0123456789:db:db_instance_identifier",
                        "arn:aws:rds:Region:0123456789:og:option_group_name"
                    ],
                    "aws:SourceAccount": "0123456789"
                }
            }
        }
    ]
}
```

次の例では、ARN を使用してリソースを指定しています。ARN の使用の詳細については、「[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)」を参照してください。

**Example 暗号化をサポートしないネイティブバックアップおよび復元のためのアクセス許可ポリシーの例**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
        "Effect": "Allow",
        "Action":
            [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
        },
        {
        "Effect": "Allow",
        "Action":
            [
                "s3:GetObjectAttributes",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
            ],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

**Example 暗号化をサポートするネイティブバックアップおよび復元のアクセス許可ポリシー**  
バックアップファイルを暗号化する場合は、アクセス権限ポリシーに暗号化キーを含めます。暗号化キーの詳細については、*AWS Key Management Service デベロッパーガイド*の「[開始方法](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html)」を参照してください。  
バックアップを暗号化するには、対称暗号化 KMS キーを使用する必要があります。Amazon RDS は非対称 KMS キーをサポートしていません。詳細については、*AWS Key Management Service デベロッパーガイド*の「[非対称 KMS キーを作成する](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)」を参照してください。  
IAM ロールは、KMS キーのキーユーザーおよびキー管理者であることも必要です。つまり、キーポリシーで指定する必要があります。詳細については、*AWS Key Management Service デベロッパーガイド*の「[非対称 KMS キーを作成する](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)」を参照してください。  
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessToKey",
      "Effect": "Allow",
      "Action": [
        "kms:DescribeKey",
        "kms:GenerateDataKey",
        "kms:Encrypt",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id"
    },
    {
      "Sid": "AllowAccessToS3",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
    },
    {
      "Sid": "GetS3Info",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectAttributes",
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListMultipartUploadParts",
        "s3:AbortMultipartUpload"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
    }
  ]
}
```

**Example 暗号化をサポートしないアクセスポイントを使用したネイティブバックアップおよび復元のアクセス許可ポリシー**  
S3 アクセスポイントを使用するために必要なアクションは、S3 バケットの場合と同じです。リソースパスは、S3 アクセスポイント ARN パターンと一致するように更新されます。  
RDS はプライベート VPC を発行しないため、アクセスポイントは **[ネットワークオリジン: インターネット]** を使用するように設定する必要があります。RDS インスタンスからの S3 トラフィックは、プライベート VPC を通過するため、パブリックインターネットを経由しません。  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
                ],
            "Resource": [
            "arn:aws:s3:us-east-1:111122223333:accesspoint/amzn-s3-demo-ap",
            "arn:aws:s3:::underlying-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObjectAttributes",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
                ],
                "Resource": [
                "arn:aws:s3:us-east-1:111122223333:accesspoint/amzn-s3-demo-ap/*",
                    "arn:aws:s3:::underlying-bucket/*"
                    ]
                }
            ]   
}
```

**Example 暗号化をサポートしないディレクトリバケットのアクセスポイントを使用したネイティブバックアップおよび復元のアクセス許可ポリシー**  
ディレクトリバケットは汎用バケットとは異なる[セッションベースの認可メカニズム](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-authenticating-authorizing.html)を使用するため、ネイティブバックアップ復元に必要なアクセス許可はバケットレベルの「s3express:CreateSession」アクセス許可のみです。オブジェクトレベルのアクセスを設定するには、[ディレクトリバケットのアクセスポイント](https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-points-directory-buckets-policies.html)を使用する必要があります。  
RDS はプライベート VPC を発行しないため、アクセスポイントは **[ネットワークオリジン: インターネット]** を使用するように設定する必要があります。RDS インスタンスからの S3 トラフィックは、プライベート VPC を通過するため、パブリックインターネットを経由しません。  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
        "Effect": "Allow",
        "Action": "s3express:CreateSession",
        "Resource": 
            [
                "arn:aws:s3express:us-east-1:111122223333:accesspoint/amzn-s3-demo-accesspoint--use1-az6--xa-s3",
                "arn:aws:s3express:us-east-1:111122223333:bucket/amzn-s3-demo-bucket--use1-az6--x-s3"
            ]
        }
    ]
}
```