共享 Amazon DocumentDB 集群快照
在 Amazon DocumentDB 中,您可以共享手动集群快照,这些快照可以由授权的 AWS 账户复制。您可以共享加密或未加密的手动快照。共享未加密的快照时,授权的 AWS 账户可以直接从快照还原集群,而不用创建快照的副本并通过它来还原。但是,您无法从共享并且加密的快照还原集群。您可以改为创建集群的副本并通过该副本来还原集群。有关复制快照的更多信息,请参阅复制 Amazon DocumentDB 集群快照。
注意
您无法共享 Amazon DocumentDB 自动集群快照。解决方法是通过复制自动快照来创建手动快照,然后共享该副本。有关复制快照的更多信息,请参阅复制 Amazon DocumentDB 集群快照。有关从快照还原集群的更多信息,请参阅从集群快照还原。
您可以与最多 20 个其他 AWS 账户共享手动快照。您也可以将未加密的手动快照作为公有快照进行共享,这样所有账户均可使用此快照。当以公有快照形式共享快照时,确保不要将您的私有信息包含在任何公有快照之中。
与其他 AWS 账户共享手动快照,并且使用 AWS CLI 或 Amazon DocumentDB API 从共享的快照还原集群时,您必须指定共享快照的 Amazon 资源名称 (ARN) 作为快照标识符。
共享加密的快照
以下限制适用于共享加密快照:
您无法公开共享加密的快照。
如果某个快照已使用共享该快照的账户的默认 AWS KMS 加密密钥进行加密,则您无法共享该快照。
按照以下步骤共享加密的快照。
与您希望允许其访问快照的任何账户共享用于加密快照的 AWS Key Management Service (AWS KMS) 加密密钥。
可以通过将其他 AWS 账户添加到 AWS KMS 密钥策略来与其共享 AWS KMS 加密密钥。有关更新密钥策略的详细信息,请参阅 https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html 中的在 AWS KMS 中使用密钥策略AWS Key Management Service Developer Guide。有关创建密钥策略的示例,请参阅本主题下文中的 创建 IAM 策略来启用加密快照的复制功能。
使用 AWS CLI(如下所示)与其他账户共享加密的快照。
允许访问 AWS KMS 加密密钥
为使另一 AWS 账户复制通过您的账户共享的加密快照,您与之共享快照的账户必须有权访问用来加密快照的 AWS KMS 密钥。要允许另一账户访问 AWS KMS 密钥,请使用您要与之共享的账户的 ARN 将 AWS KMS 密钥的密钥策略更新为 AWS KMS 密钥策略中的委托人。然后允许 kms:CreateGrant
操作。
在您向某个账户提供对 AWS KMS 加密密钥的访问权限后,要复制您加密的快照,该账户必须创建 AWS Identity and Access Management (IAM) 用户(如果还没有此用户的话)。此外,该账户还必须将 IAM 策略附加到 IAM 用户,以允许此用户使用您的 AWS KMS 密钥复制加密的快照。由于 AWS KMS 安全限制,此账户必须是 IAM 用户,且不能是 AWS 根账户。
在以下密钥策略示例中,用户 123451234512 是 AWS KMS 加密密钥的所有者。用户 123456789012 是要与之共享密钥的账户。此更新的密钥策略向该账户提供了对 AWS KMS 密钥的访问权限。它的做法是,将用户 123456789012 的根 AWS 账户身份的 ARN 包含为策略的委托人,然后允许 kms:CreateGrant
操作。
{
"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 复制已使用 us-west-2 区域中的 AWS 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: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 KMS在 中使用密钥策略。AWS Key Management Service Developer Guide
共享快照
要共享快照,请使用 Amazon DocumentDB modify-db-snapshot-attribute
操作。可以使用 --values-to-add
参数为有权还原手动快照的 AWS 账户添加 IDs 列表。
以下示例允许两个 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"
]
}
]
}
}