Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

分享数据库快照或数据库群集快照

使用 Amazon RDS,您也可以共享手动数据库快照或数据库群集快照。共享快照的方式如下所述。

  • 共享手动数据库快照或数据库群集快照 (无论是否加密) 可允许经授权的 AWS 账户复制快照。

  • 共享未加密的手动数据库快照可允许经授权的 AWS 账户直接从快照还原数据库实例,无需复制数据库实例再从中进行还原。不支持加密的手动数据库快照。

  • 共享手动数据库群集快照 (无论是否加密) 可允许经授权的 AWS 账户直接从快照还原数据库群集,无需复制数据库群集再从中进行还原。

注意

要共享自动化数据库快照或数据库群集快照,请进行复制以生成手动版本,然后共享该副本。

有关复制快照的更多信息,请参阅复制数据库快照或数据库群集快照。有关从数据库快照还原数据库实例的更多信息,请参阅从数据库快照中还原。有关从数据库群集快照还原数据库群集的更多信息,请参阅 备份和还原 Aurora 数据库群集

您可以与最多 20 个其他 AWS 账户共享手动快照。您也可以将未加密的手动快照作为公有快照进行共享,这样所有 AWS 账户均可获得此快照。以公有快照形式共享快照时应谨慎,不要将您的私有信息包含在任何公有快照之中。

与其他 AWS 账户共享手动快照时存在以下限制:

  • 当使用 AWS Command Line Interface (AWS CLI) 或 Amazon RDS API 从共享的快照还原数据库实例或数据库群集时,您必须指定共享快照的 Amazon 资源名称 (ARN) 作为快照标识符。

  • 您无法共享使用了包含永久或持续性选项的选项组的数据库快照。

    不能从选项组中移除永久选项。若为数据库实例指定了包含持续性选项的选项组,则不能从数据库实例中移除这些选项组。

    下表列出了永久和持续性选项及其相关的数据库引擎。

    选项名称 持续的 永久的 数据库引擎
    TDE Microsoft SQL Server 企业版
    TDE Oracle Enterprise Edition
    TDE_HSM Oracle Enterprise Edition
    时区

    Oracle Enterprise Edition

    Oracle Standard Edition

    Oracle Standard Edition One

共享加密的快照

您可共享使用 AES-256 加密算法“静态”加密的数据库快照或数据库群集快照 (如加密 Amazon RDS 资源中所述)。为此,您必须执行以下步骤:

  1. 与您希望允许其访问快照的任何账户共享用于加密快照的 AWS Key Management Service (AWS KMS) 加密密钥。

    可将另一 AWS 账户添加到 KMS 密钥策略,来与该账户共享 AWS KMS 加密密钥。有关更新密钥策略的详细信息,请参阅 AWS KMS 开发人员指南中的密钥策略。有关创建密钥策略的示例,请参阅本主题下文中的允许访问 AWS KMS 加密密钥

  2. 使用 AWS 管理控制台、AWS CLI 或 Amazon RDS API 与其他账户共享加密的快照。

这些限制适用于共享加密快照:

  • 您无法公开共享加密的快照。

  • 您无法共享使用透明数据加密 (TDE) 加密的 Oracle 或 Microsoft SQL Server 快照。

  • 如果快照已使用共享该快照的 AWS 账户的默认 AWS KMS 加密密钥进行加密,则您无法共享该快照。

允许访问 AWS KMS 加密密钥

为了另一 AWS 账户复制通过您的账户共享的加密数据库快照或数据库群集快照,您与之共享快照的账户必须有权访问加密快照的 KMS 密钥。若要允许另一 AWS 账户访问 AWS KMS 密钥,请更新 KMS 密钥的密钥策略,将您要与之共享的 AWS 账户的 ARN 作为 KMS 密钥策略中的 Principal,然后允许 kms:CreateGrant 操作。

在向 AWS 账户提供对 KMS 加密密钥的访问权后,要复制加密的快照,该 AWS 账户必须创建 AWS Identity and Access Management (IAM) 用户 (如果该账户没有此用户)。此外,该 AWS 账户还必须将 IAM 策略挂载到 IAM 用户,以允许此用户使用您的 KMS 密钥复制加密的数据库快照。由于 KMS 安全限制,此账户必须是 IAM 用户,不能是 AWS 根账户。

在下面的密钥策略示例中,用户 111122223333 是 KMS 加密密钥的所有者,而用户 444455556666 是要与之共享密钥的账户。通过包含用户 444455556666 的 AWS 根账户身份的 ARN 作为策略的 Principal,以及通过允许 kms:CreateGrant 操作,此更新的密钥策略为 AWS 账户提供了访问 KMS 密钥的权限。

{ "Id": "key-policy-1", "Version": "2012-10-17", "Statement": [ { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws-cn:iam::111122223333:user/KeyUser", "arn:aws-cn:iam::444455556666:root" ]}, "Action": [ "kms:CreateGrant", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws-cn:iam::111122223333:user/KeyUser", "arn:aws-cn:iam::444455556666:root" ]}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}} } ] }

创建 IAM 策略来启用加密快照的复制功能

一旦外部 AWS 账户有权访问您的 KMS 密钥,AWS 账户的所有者可创建一个策略来允许为该账户创建的 IAM 用户能够复制使用 KMS 密钥加密的快照。

下面的示例显示了一个可挂载到 AWS 账户 444455556666 的 IAM 用户的策略,该策略使 IAM 用户能够复制 AWS 账户 111122223333 中已使用 us-west-2 区域中的 KMS 密钥 c989c1dd-a3f2-4a5d-8d96-e793d082ab26 加密的共享快照。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUseOfTheKey", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant", "kms:RetireGrant" ], "Resource": ["arn:aws-cn:kms:us-west-2:111122223333:key/c989c1dd-a3f2-4a5d-8d96-e793d082ab26"] }, { "Sid": "AllowAttachmentOfPersistentResources", "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["arn:aws-cn:kms:us-west-2:111122223333:key/c989c1dd-a3f2-4a5d-8d96-e793d082ab26"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ] }

有关更新密钥策略的详细信息,请参阅 AWS KMS 开发人员指南中的密钥策略

AWS 管理控制台

使用 Amazon RDS 控制台,您可以与最多 20 个 AWS 账户共享手动数据库快照或数据库群集快照。您还可以使用该控制台停止与一个或多个账户共享手动快照。

通过使用 Amazon RDS 控制台来共享手动数据库快照或数据库群集快照

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 在导航窗格中,选择 Snapshots

  3. 对于 Filter,选择 Manual Snapshots

  4. 选中您要共享的手动快照对应的复选框。

  5. 选择 Snapshot Actions,然后选择 Share Snapshot

  6. DB Snapshot Visibility 选择以下一个选项。

    • 如果源数据库群集未加密,选择 Public 允许所有 AWS 账户从您的手动数据库快照还原数据库实例,或选择 Private 仅允许您指定的 AWS 账户从手动数据库快照还原数据库实例。

      警告

      如果将 DB Snapshot Visibility 设置为 Public,则所有 AWS 账户均可从您的手动数据库快照还原数据库实例,并且可访问您的数据。请勿将包含私有信息的任何手动数据库快照作为 Public 共享。

    • 如果源数据库群集加密,由于已加密的快照无法公开共享,DB Snapshot Visibility 将设为 Private

  7. 对于 AWS Account ID,键入您想要允许从您的手动数据库快照还原数据库实例或数据库群集的账户的 AWS 账户标识符,然后选择 Add。重复操作以加入其他 AWS 账户标识符,最多可包含 20 个 AWS 账户。

    如果您在许可账户列表中错加了某个 AWS 账户标识符,可以选择错误 AWS 账户标识符右侧的 Delete 将其从列表中删除。

     允许 AWS 账户还原手动数据库快照
  8. 为您想要允许还原手动快照的所有 AWS 账户添加标识符以后,选择 Save 保存您的更改。

停止与 AWS 账户共享手动数据库快照或数据库群集快照

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 在导航窗格中,选择 Snapshots

  3. 对于 Filter,选择 Manual Snapshots

  4. 选中您要停止共享的手动快照对应的复选框。

  5. 选择 Snapshot Actions,然后选择 Share Snapshot

  6. 要取消某 AWS 账户的权限,请从授权账户列表中选择该账户的 AWS 账户标识符所对应的 Delete

     允许 AWS 账户还原手动数据库快照
  7. 选择 Save 以保存您的更改。

API

您也可以使用 Amazon RDS API 与其他 AWS 账户共享手动数据库快照或数据库群集快照。为此,请为数据库实例调用 ModifyDBSnapshotAttribute 操作,或为 Amazon Aurora 数据库群集调用 ModifyDBClusterSnapshotAttribute 操作。为 AttributeName 指定 restore,并使用 ValuesToAdd 参数添加有权还原手动快照的 AWS 账户的 ID 列表。

要将手动快照设为公有并允许所有 AWS 账户还原,请使用值 all。但请注意,若任何手动快照包含您不想向所有 AWS 账户公开的私有信息,则不要添加 all 值。此外,由于此类快照不支持公开共享,请不要为已加密的快照指定 all

要取消某个 AWS 账户的共享权限,请使用 ModifyDBSnapshotAttributeModifyDBClusterSnapshotAttribute 操作,同时将 AttributeName 设置为 restore 并添加 ValuesToRemove 参数。要将手动快照标记为私有,请将值 allrestore 属性的值列表中移除。

以下示例允许两个 AWS 账户标识符 123451234512123456789012 还原名为 manual-snapshot1 的数据库快照,并移除 all 属性值以将该快照标记为私有。

https://rds.us-west-2.amazonaws.com/ ?Action=ModifyDBSnapshotAttribute &AttributeName=restore &DBSnapshotIdentifier=manual-snapshot1 &SignatureMethod=HmacSHA256&SignatureVersion=4 &ValuesToAdd.member.1=123451234512 &ValuesToAdd.member.2=123456789012 &ValuesToRemove.member.1=all &Version=2014-10-31 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20150922/us-west-2/rds/aws4_request &X-Amz-Date=20150922T220515Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=ef38f1ce3dab4e1dbf113d8d2a265c67d17ece1999ffd36be85714ed36dddbb3

要列出被允许还原某快照的所有 AWS 账户,请使用 DescribeDBSnapshotAttributesDescribeDBClusterSnapshotAttributes API 操作。

相关主题