

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

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

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. 已添加到数据库实例上选项组的 `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 代入此角色。这些权限策略定义此角色可以执行的操作。有关创建角色的更多信息，请参阅[创建将权限委派给 AWS 服务的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

对于本机备份和还原功能，可使用类似于本节中以下示例的信任关系和权限策略。在下面的示例中，我们使用服务委托人名称 `rds.amazonaws.com` 作为所有服务账户的别名。在其他示例中，我们指定 Amazon Resource Name (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`。

在信任关系中，请务必使用 `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.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开发人员指南](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) 中的*创建对称加密 KMS 密钥*。  
IAM 角色还必须是 KMS 密钥的密钥用户和密钥管理员，也就是说，必须在密钥策略中指定该密钥。有关更多信息，请参阅 [AWS Key Management Service开发人员指南](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) 中的*创建对称加密 KMS 密钥*。  
****  

```
{
  "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"
            ]
        }
    ]
}
```