为什么我的跨账户复制在 AWS Backup 中失败?

2 分钟阅读
0

我想就为什么我的跨账户复制任务失败进行故障排除。

简短描述

要对跨账户复制失败进行故障排除,请验证以下配置:

  • 确认您的源账户和目标账户属于同一 AWS组织。
  • 验证资源类型是否支持指定的 AWS 区域中的跨账户复制。
  • 验证您的源账户备份的加密标准。
  • 验证源 AWS Key Management Service(AWS KMS)密钥策略是否允许目标账户。
  • 验证目标保管库访问策略是否允许源账户。
  • 验证 AWS 组织标签策略配置。

解决方法

源账户和目标账户必须属于同一 AWS 组织

如果您的源账户和目标账户不在同一 AWS 组织中,您可能会看到以下错误:

“复制任务失败。源账户和目标账户必须是同一组织的成员。”

跨账户复制支持的资源类型和 AWS 区域

验证跨账户备份是否支持您的资源,以及您选择的 AWS 区域是否提供跨账户备份功能:

如果您的资源不支持同时执行跨区域和跨账户备份的单一复制操作,则您可能会看到以下错误:

“无法为 RDS 资源启动从 us-west-2 到 us-east-1 的复制任务。提供的资源类型不支持该功能。”

以下服务不支持同时执行跨区域和跨账户备份的单一复制操作。您可以选择跨区域或跨账户备份:

  • Amazon Relational Database Service(Amazon RDS)
  • Amazon Aurora
  • Amazon DocumentDB(与 MongoDB 兼容)
  • Amazon Neptune

对于 Amazon DynamoDB,您必须启用含 AWS Backup 高级功能的 DynamoDB,才能执行跨账户备份。

源 AWS Backup 加密

对于并非完全由 AWS Backup 管理的资源,备份使用与源资源相同的 KMS 密钥。

对于完全由 AWS Backup 管理的资源,使用备份保管库的加密密钥对备份进行加密。

有关其他详细信息,请参阅 AWS Backup 中的备份加密

并非完全由 AWS Backup 管理的资源不支持使用 AWS 托管 KMS 密钥进行跨账户复制。有关并非完全由 AWS Backup 管理的资源列表,请参阅按资源划分的功能可用性

如果您的跨账户备份任务因使用 AWS 托管 KMS 密钥而失败,则您可能会看到如下错误:

“复制任务失败,因为目标备份保管库是使用默认备份服务托管密钥加密的。无法复制此保管库的内容。只能复制使用客户主密钥(CMK)加密的备份保管库的内容。”

-或-

“无法共享使用 AWS 托管 CMK 加密的快照。请指定另一个快照。(服务: AmazonEC2;状态代码: 400;错误代码: InvalidParameter;请求 ID:;代理:null)”

您无法更改资源的加密密钥。您必须使用其中一个备份来重新创建资源。然后,在恢复过程中,您可以将资源的加密密钥更改为 AWS KMS 客户自主管理型密钥。更改加密密钥后,您可以对资源执行备份和跨账户复制。

源 KMS 密钥策略

要在跨账户复制期间执行所需的加密操作,源账户 KMS 密钥策略必须在 KMS 密钥策略上允许目标账户。对于并非完全由 AWS Backup 管理的资源,源 KMS 密钥是资源 KMS 密钥。对于完全由 AWS Backup 管理的资源,源 KMS 密钥是备份保管库密钥。

如果源账户 KMS 密钥策略不允许目标账户,则您会看到如下错误:

“源快照 KMS 密钥不存在、未启用或您无权访问它”

-或-

“AMI 快照复制失败,出现错误: 给定的密钥 ID 不可访问。您必须拥有默认 CMK 的 DescribeKey 权限。”

要解决上述错误,您必须在源 KMS 密钥策略上允许目标账户。这将允许目标账户从源账户拉取备份。

要在 KMS 密钥策略上允许目标账户,请使用与以下示例类似的密钥策略:

**注意:**要使用此策略,请将 SourceAccountID 替换为您的源账户 AWS 账户 ID。此外,将 DestinationAccountID 替换为您的目标账户 AWS 账户 ID。

{
  "Version": "2012-10-17",
  "Id": "cab-kms-key",
  "Statement": [
    {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::SourceAccountID :root"
      },
      "Action": "kms:*",
      "Resource": "*"
    },
    {
      "Sid": "Allow use of the key",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::SourceAccountID :root",
          "arn:aws:iam::DestinationAccountID:root"
        ]
      },
      "Action": [
        "kms:DescribeKey",
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext"
      ],
      "Resource": "*"
    },
    {
      "Sid": "Allow attachment of persistent resources",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::SourceAccountID:root",
          "arn:aws:iam::DestinationAccountID:root"
        ]
      },
      "Action": [
        "kms:CreateGrant",
        "kms:ListGrants",
        "kms:RevokeGrant"
      ],
      "Resource": "*",
      "Condition": {
        "Bool": {
          "kms:GrantIsForAWSResource": "true"
        }
      }
    }
  ]
}

目标保管库访问策略

如果未将目标 AWS Backup 保管库与源账户共享,则您可能会看到以下错误:

“尝试调用 AWS Backup 服务时访问被拒绝”

要解决此错误,请在目标保管库访问策略上允许您的源账户。以下示例策略在目标保管库访问策略上允许您的源账户:

**注意:**要使用此策略,请将 SourceAccountID 替换为您的源 AWS 账户 ID。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::SourceAccountID:root"
      },
      "Action": "backup:CopyIntoBackupVault",
      "Resource": "*"
    }
  ]
}

AWS 组织标签策略

通常,AWS Backup 会将标签从资源复制到您的恢复点。例如,当您备份 Amazon Elastic Block Store(Amazon EBS)卷时,AWS Backup 会将标签复制到生成的快照中。有关详细信息,请参阅将标签复制到备份上

如果您的跨账户备份任务因密钥策略而失败,则您可能会看到如下错误:

“由于内部故障,我们无法将资源标签复制到您的备份”

-或-

“标签策略不允许以下标签密钥的指定值:‘xyz’”

这些错误可能与 AWS 组织的标签策略相关,在该组织中,源和目标 AWS账户均添加为成员账户。如果您使用的是标签策略,请验证以下内容是否存在可能阻止跨账户备份的问题:

  • 确保您的标签遵循最佳实践
  • 验证添加到您的资源的标签是否与标签策略中描述的标签完全匹配。
AWS 官方
AWS 官方已更新 10 个月前
没有评论