共享数据库快照 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

共享数据库快照

使用 Amazon RDS,您可以按以下方式共享手动数据库快照:

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

  • 共享未加密的手动数据库快照可允许经授权的 Amazon 账户直接从快照还原数据库实例,无需复制数据库实例再从中进行还原。但是,您无法从共享并且加密的数据库快照中恢复数据库实例。您可以改为创建数据库快照副本,并从该副本还原数据库实例。

注意

要共享自动数据库快照,请通过复制自动快照来创建手动数据库快照,然后共享该副本。此过程也适用于 Amazon Backup 生成的资源。

有关复制快照的更多信息,请参阅复制数据库快照。有关从数据库快照还原数据库实例的更多信息,请参阅从数据库 快照还原

您可以与最多 20 个其他 Amazon 账户共享手动快照。

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

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

  • 如果数据库快照使用具有永久选项或持久选项的选项组,则不能共享,但具有 Timezone 和/或 OLS 选项的 Oracle 数据库实例除外。

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

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

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

    Oracle Enterprise Edition

    Oracle Standard Edition

    Oracle Standard Edition One

    Oracle Standard Edition Two

    对于 Oracle 数据库实例,您可以复制具有选项 TimezoneOLS(或两者)的共享数据库快照。为此,在复制数据库快照时,指定一个包含这些选项的目标选项组。OLS 选项仅对于运行 Oracle 12.2 或更高版本的 Oracle 数据库实例具有永久性和持久性。有关这些选项的更多信息,请参阅 Oracle 时区Oracle Label Security

共享公有快照

您也可以将未加密的手动快照作为公有快照进行共享,这样所有 Amazon 账户均可使用此快照。当以公有快照形式共享快照时,确保不要将您的私有信息包含在公有快照之中。

公开共享快照时,它会授予所有 Amazon 账户复制快照并从中创建数据库实例的权限。

您不需要为其他账户拥有的公有快照的备份存储付费。您只需为您拥有的快照付费。

如果您复制公有快照,则您拥有该副本。您需要为快照副本的备份存储付费。如果您从公有快照创建数据库实例,则需要为该数据库实例付费。有关 Amazon RDS 定价信息,请参阅 Amazon RDS 产品页

您只能删除您拥有的公有快照。要删除共享或公有快照,务必登录到拥有快照的 Amazon 账户。

查看其他 Amazon 账户拥有的公有快照

您可以在 Amazon RDS 控制台的 Snapshots (快照) 页面的 Public (公有) 选项卡上查看特定Amazon区域中其他账户拥有的公有快照。您的快照(由您账户拥有的快照)不会显示在此选项卡上。

要查看公有快照
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择快照

  3. 选择 Public (公有) 选项卡。

    此时将显示公有快照。您可以在 Owner (拥有者) 列中查看哪个账户拥有公有快照。

    注意

    您可能需要通过选择 Public snapshots (公有快照) 列表右上角的齿轮图标来修改页面首选项,才能看到此列。

查看您拥有的公有快照

您可以使用以下 Amazon CLI 命令(仅限 Unix)查看特定 Amazon 区域中 Amazon 账户的公有快照。

aws rds describe-db-snapshots --snapshot-type public --include-public | grep account_number

如果您有公共快照,则返回的输出与以下示例类似。

"DBSnapshotArn": "arn:aws:rds:us-east-1:123456789012:snapshot:mysnapshot1", "DBSnapshotArn": "arn:aws:rds:us-east-1:123456789012:snapshot:mysnapshot2",
注意

您可能会看到 DBSnapshotIdentifierSourceDBSnapshotIdentifier 的重复条目。

共享加密的快照

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

  1. 与您希望允许其访问快照的任何账户共享用于加密快照的 Amazon KMS key。

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

  2. 使用Amazon Web Services Management Console、Amazon CLI 或 Amazon RDS API 与其他账户共享加密的快照。

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

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

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

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

允许访问 Amazon KMS key

为了另一 Amazon 账户复制通过您的账户共享的加密数据库快照,您与之共享快照的账户必须有权访问加密该快照的 Amazon KMS key。

允许另一个 Amazon 账户访问 KMS 密钥的密钥策略。您使用 KMS 密钥策略中作为 Principal 共享的 Amazon 账户的 Amazon Resource Name (ARN) 更新它。然后,您允许 kms:CreateGrant 操作。

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

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

{ "Id": "key-policy-1", "Version": "2012-10-17", "Statement": [ { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"Amazon": [ "arn:aws:iam::111122223333:user/KeyUser", "arn:aws: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": {"Amazon": [ "arn:aws:iam::111122223333:user/KeyUser", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}} } ] }

创建 IAM 策略以启用加密快照的复制

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

下面的示例显示了一个可附加到 Amazon 账户 444455556666 的 IAM 用户的策略,该策略使 IAM 用户能够复制 Amazon 账户 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: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:kms:us-west-2:111122223333:key/c989c1dd-a3f2-4a5d-8d96-e793d082ab26"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ] }

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

共享快照

您可以使用 Amazon Web Services Management Console、Amazon CLI 或 RDS API 共享数据库快照。

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

使用 Amazon RDS 控制台共享手动数据库 快照
  1. 登录Amazon Web Services Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择快照

  3. 选择要共享的手动快照。

  4. 对于 Actions(操作),请选择 Share snapshot(共享快照)。

  5. DB snapshot visibility (数据库快照可见性) 选择以下一个选项。

    • 如果源未加密,选择 Public(公有)以允许所有 Amazon 账户从您的手动数据库快照还原数据库实例,或选择 Private(私有)以仅允许您指定的 Amazon 账户从手动数据库快照还原数据库实例

      警告

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

    • 如果源已加密,由于已加密的快照无法公开共享,DB snapshot visibility (数据库快照可见性) 将设为 Private (私密)

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

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

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

停止与某个 Amazon 账户共享手动数据库快照
  1. 登录Amazon Web Services Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择快照

  3. 选择要停止共享的手动快照。

  4. 选择 Actions(操作),然后选择 Share snapshot(共享快照)。

  5. 要取消某 Amazon 账户的权限,请从授权账户列表中选择该账户的 Amazon 账户标识符所对应的 Delete (删除)

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

要共享数据库快照,请使用 aws rds modify-db-snapshot-attribute 命令。使用 --values-to-add 参数添加有权还原手动快照的 Amazon 账户的 ID 列表。

例 与单个账户共享快照

以下示例使 Amazon 账户标识符 123456789012 能够还原名为 db7-snapshot 的数据库快照。

对于 Linux、macOS 或 Unix:

aws rds modify-db-snapshot-attribute \ --db-snapshot-identifier db7-snapshot \ --attribute-name restore \ --values-to-add 123456789012

对于 Windows:

aws rds modify-db-snapshot-attribute ^ --db-snapshot-identifier db7-snapshot ^ --attribute-name restore ^ --values-to-add 123456789012
例 与多个账户共享快照

以下示例使两个 Amazon 账户标识符(111122223333444455556666)能够还原名为 manual-snapshot1 的数据库快照。

对于 Linux、macOS 或 Unix:

aws rds modify-db-snapshot-attribute \ --db-snapshot-identifier manual-snapshot1 \ --attribute-name restore \ --values-to-add {"111122223333","444455556666"}

对于 Windows:

aws rds modify-db-snapshot-attribute ^ --db-snapshot-identifier manual-snapshot1 ^ --attribute-name restore ^ --values-to-add "[\"111122223333\",\"444455556666\"]"
注意

使用 Windows 命令提示符时,必须在 JSON 代码中转义双引号 ("),方法是使用反斜杠 (\) 作为其前缀。

要从列表中删除 Amazon 账户标识符,请使用 --values-to-remove 参数。

例 停止共享快照

以下示例禁止 Amazon 账户 ID 444455556666 还原快照。

对于 Linux、macOS 或 Unix:

aws rds modify-db-snapshot-attribute \ --db-snapshot-identifier manual-snapshot1 \ --attribute-name restore \ --values-to-remove 444455556666

对于 Windows:

aws rds modify-db-snapshot-attribute ^ --db-snapshot-identifier manual-snapshot1 ^ --attribute-name restore ^ --values-to-remove 444455556666

要列出能够用于还原快照的 Amazon 账户,请使用 describe-db-snapshot-attributes Amazon CLI 命令。

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

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

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

要列出有权还原快照的所有 Amazon 账户,请使用 DescribeDBSnapshotAttributes API 操作。