

# 针对本机备份和还原进行设置
<a name="SQLServer.Procedural.Importing.Native.Enabling"></a>

要设置本机备份和还原，您需要三个组件：

1. 用于存储备份文件的 Amazon S3 存储桶。

   您必须将 S3 存储桶用于备份文件，然后上传您要迁移到 RDS 的备份。如果您已有一个 Amazon S3 存储桶，则可以使用它。如果没有，则可以[创建存储桶](https://docs.amazonaws.cn/AmazonS3/latest/userguide/CreatingaBucket.html)。或者，您可以选择在使用 `SQLSERVER_BACKUP_RESTORE` 添加 Amazon Web Services 管理控制台 选项时为自己创建新的存储桶。

   有关使用 S3 的信息，请参阅 [Amazon Simple Storage Service 用户指南](https://docs.amazonaws.cn/AmazonS3/latest/userguide/)

1. 用于访问存储桶的 Amazon Identity and Access Management (IAM) 角色。

   如果您已有一个 IAM 角色，则可以使用它。您可以选择在使用Amazon Web Services 管理控制台添加 `SQLSERVER_BACKUP_RESTORE` 选项时为自己创建新的 IAM 角色。或者，您可以手动创建一个新的角色。

   如果您想要手动创建新的 IAM 角色，请使用下一部分中介绍的方法。如果要将信任关系和权限策略附加到现有 IAM 角色，请执行相同操作。

1. 已添加到数据库实例上选项组的 `SQLSERVER_BACKUP_RESTORE` 选项。

   要在数据库实例上启用本机备份和还原，请将 `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 代入此角色。这些权限策略定义此角色可以执行的操作。有关创建角色的更多信息，请参阅[创建将权限委派给 Amazon 服务的角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create_for-service.html)。

对于本机备份和还原功能，可使用类似于本节中以下示例的信任关系和权限策略。在下面的示例中，我们使用服务委托人名称 `rds.amazonaws.com` 作为所有服务账户的别名。在其他示例中，我们指定 Amazon Resource Name (ARN) 以标识我们在信任策略中授予访问权限的其他账户、用户或角色。

我们建议在基于资源的信任关系中使用 [https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全局条件上下文键，以此限制服务对特定资源的权限。这是防范[混淆代理问题](https://docs.amazonaws.cn/IAM/latest/UserGuide/confused-deputy.html)最有效的方法。

您可以使用这两个全局条件上下文键并让 `aws:SourceArn` 值包含账户 ID。在这种情况下，当 `aws:SourceAccount` 值和 `aws:SourceArn` 值中的账户使用相同策略语句时，确保二者使用相同的账户 ID。
+ 如果您想对单个资源进行跨服务访问，请使用 `aws:SourceArn`。
+ 如果您想允许该账户中的任何资源与跨服务使用操作相关联，请使用 `aws:SourceAccount`。

在信任关系中，请务必使用 `aws:SourceArn` 全局条件上下文键和访问角色资源的完整 ARN。对于本机备份和还原，请确保同时包含数据库选项组和数据库实例，如以下示例所示。

**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.amazonaws.cn/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/*"
        }
    ]
}
```