View a markdown version of this page

Amazon DocumentDB 集群快照共享 - Amazon DocumentDB

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon DocumentDB 集群快照共享

使用 Amazon DocumentDB,您可以按以下方式共享手动集群快照:

  • 共享手动群集快照,无论是加密的还是未加密的,都允许授权 AWS 账户复制快照。

  • 共享手动群集快照,无论是加密的还是未加密的,都使授权 AWS 账户能够直接从快照中恢复群集,而不是复制集群并从中恢复。

注意

要共享自动集群快照,请通过复制自动快照来创建手动集群快照,然后共享该副本。此过程也适用于 AWS 备份生成的资源。

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

与他人共享手动快照并使用 AWS CLI 或 Amazon DocumentDB API 从共享快照恢复集群时,必须将共享快照的亚马逊资源名称 (ARN) 指定为快照标识符。 AWS 账户

共享加密的快照

以下限制适用于共享加密快照:

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

  • 您无法共享使用共享快照的账户的默认 AWS KMS 加密密钥加密的快照。

按照以下步骤共享加密的快照。

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

    通过将其他 AWS 账户添加到密钥策略,您可以与其他账户共享 AWS KMS 加密 AWS KMS 密钥。有关更新密钥策略的详细信息,请参阅AWS Key Management Service 开发人员指南中的在 AWS KMS 使用密钥策略。有关创建密钥策略的示例,请参阅本主题下文中的 创建 IAM 策略以启用加密快照的复制

  2. 使用如下所示与其他账户共享加密快照。 AWS CLI

允许访问 AWS KMS 加密密钥

AWS 账户 要让其他人复制从您的账户共享的加密快照,您与之共享快照的账户必须有权访问加密快照的 AWS KMS 密钥。要允许其他账户访问 AWS KMS 密钥,请使用您在密钥策略中 AWS KMS 作为委托人共享的账户的 ARN 更新该 AWS KMS 密钥的密钥政策。然后允许 kms:CreateGrant 操作。

在向账户授予 AWS KMS 加密密钥访问权限后,要复制加密快照,该账户必须创建 AWS Identity and Access Management (IAM) 用户(如果没有)。此外,该账户还必须向该 IAM 用户附加 IAM 策略,允许该用户使用您的 AWS KMS 密钥复制加密快照。该账户必须是 IAM 用户,并且由于 AWS KMS 安全限制而不能成为根 AWS 账户 身份。

在以下密钥策略示例中,用户 123451234512 是加密密钥的所有者。 AWS KMS 用户 123456789012 是要与之共享密钥的账户。此更新后的密钥政策允许账户访问 AWS KMS 密钥。它通过将用户 123456789012 的根 AWS 账户 身份的 ARN 作为策略的委托人并允许该操作来实现这一点。kms:CreateGrant

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

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

当外部 AWS 账户 有权访问您的 AWS KMS 密钥时,该账户的所有者可以创建策略,允许为该账户创建的 IAM 用户复制使用该 AWS KMS 密钥加密的加密快照。

以下示例显示了可以为 AWS 账户 123456789012 附加到 IAM 用户的策略。该策略允许 IAM 用户从账户 123451234512 中复制共享快照,该快照已c989c1dd-a3f2-4a5d-8d96-e793d082ab26在 us-west-2 区域使用 AWS KMS 密钥进行加密。

JSON
{ "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:123451234512:key/c989c1dd-a3f2-4a5d-8d96-e793d082ab26"] }, { "Sid": "AllowAttachmentOfPersistentResources", "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["arn:aws:kms:us-west-2:123451234512:key/c989c1dd-a3f2-4a5d-8d96-e793d082ab26"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ] }

有关更新密钥政策的详细信息,请参阅 AWS Key Management Service 开发人员指南中的在 AWS KMS中使用密钥政策

共享快照

您可以使用或以下方式共享 Amazon DocumentDB 手动集群快照( AWS 管理控制台 或自动快照的副本): AWS CLI

Using the AWS 管理控制台

要使用共享快照 AWS 管理控制台,请完成以下步骤:

  1. 登录并打开 Amazon DocumentDB 控制台 AWS 管理控制台,网址为https://console.aws.amazon.com/docdb

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

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

  4. 操作下拉菜单中,选择“共享”。

  5. 数据库快照可见性选择以选项之一。

    • 如果源未加密,请选择 P ublic 以允许所有 AWS 账户从您的手动快照还原集群。或者选择 P ri vate,仅允许您指定的 AWS 账户从手动快照还原集群。

      警告

      如果您将数据库快照可见性设置为 P ublic,则所有 AWS 账户都可以从您的手动快照恢复集群并有权访问您的数据。请勿将包含私有信息的任何手动集群快照作为公有共享。

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

      注意

      已使用默认值加密的快照 AWS KMS key 无法共享。

  6. 在 “AWS 账户 ID” 中 AWS ,输入您想要允许其从手动快照还原集群的账户的账户标识符,然后选择 “添加” 。重复此操作以添加其他 AWS 账户标识符,最多 20 个 AWS 账户。

    如果您在向允许的账户列表中添加 AWS 账户标识符时出错,则可以通过选择错误账户标识符右侧的 AWS “删除” 将其从列表中删除。

    图:共享快照首选项
  7. 为要允许还原手动快照的所有 AWS 账户添加标识符后,选择保存以保存您的更改。

Using the AWS CLI

要使用共享快照 AWS CLI,请使用 Amazon DocumentDB modify-db-snapshot-attribute 操作。使用--values-to-add参数添加有权恢复手动快照 AWS 账户 的 ID 列表。

以下示例允许两个 AWS 账户 标识符 123451234512 和 123456789012 恢复名为的快照。manual-snapshot1它还会删除 all 属性值以将该快照标记为私有。

对于 Linux、macOS 或 Unix:

aws docdb modify-db-cluster-snapshot-attribute \ --db-cluster-snapshot-identifier sample-cluster-snapshot \ --attribute-name restore \ --values-to-add '["123451234512","123456789012"]'

对于 Windows:

aws docdb modify-db-cluster-snapshot-attribute ^ --db-cluster-snapshot-identifier sample-cluster-snapshot ^ --attribute-name restore ^ --values-to-add '["123451234512","123456789012"]'

此操作的输出将类似于下文。

{ "DBClusterSnapshotAttributesResult": { "DBClusterSnapshotIdentifier": "sample-cluster-snapshot", "DBClusterSnapshotAttributes": [ { "AttributeName": "restore", "AttributeValues": [ "123451234512", "123456789012" ] } ] } }

要从列表中移除 AWS 账户 标识符,请使用--values-to-remove参数。以下示例阻止 AWS 账户 ID 123456789012 恢复快照。

对于 Linux、macOS 或 Unix:

aws docdb modify-db-cluster-snapshot-attribute \ --db-cluster-snapshot-identifier sample-cluster-snapshot \ --attribute-name restore \ --values-to-remove '["123456789012"]'

对于 Windows:

aws docdb modify-db-cluster-snapshot-attribute ^ --db-cluster-snapshot-identifier sample-cluster-snapshot ^ --attribute-name restore ^ --values-to-remove '["123456789012"]'

此操作的输出将类似于下文。

{ "DBClusterSnapshotAttributesResult": { "DBClusterSnapshotIdentifier": "sample-cluster-snapshot", "DBClusterSnapshotAttributes": [ { "AttributeName": "restore", "AttributeValues": [ "123451234512" ] } ] } }