共享 Amazon EBS 快照 - Amazon EBS

共享 Amazon EBS 快照

如果您想与其他 AWS 账户共享快照,可以修改快照的权限。您可以与所有其他 AWS 账户共享快照,或者您可以私下与您指定的个人 AWS 账户共享快照。您已授权的用户可以使用您共享的快照来创建自己的 EBS 卷,同时您的原始快照不受影响。

重要

共享快照时,您可以让其他人访问快照上的所有数据。仅与您信任的人共享所有快照数据的快照。

要防止公开共享您的快照,您可以启用快照的阻止公开访问权限。有关更多信息,请参阅阻止公开访问 AMI

共享快照之前

共享快照时需考虑以下事项:

  • 如果为此区域阻止公开访问快照,将阻止尝试公开共享快照的行为。仍然可以私下共享快照。

  • 快照受限于在其中创建它们的区域。要与其他区域共享快照,请将快照复制到该区域,然后分享副本。有关更多信息,请参阅复制 Amazon EBS 快照

  • 您无法共享使用默认 AWS 托管式密钥 加密的快照。您只能共享使用客户托管密钥加密的快照。有关更多信息,请参阅 AWS Key Management Service 开发人员指南中的创建密钥

  • 您只能公开共享未加密的快照。

  • 共享加密快照时,还必须共享用于加密快照的客户托管密钥。有关更多信息,请参阅共享 KMS 密钥

共享快照

您可以使用本节介绍的方法之一共享快照。

Console
共享快照
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 选择快照,然后依次选择 Actions(操作)、Modify Permissions(修改权限)。

  4. 请指定快照的权限。Current setting(当前设置)表示快照的当前共享权限。

    • 要与所有AWS账户公开共享快照,选择 Public(公有)。

    • 要与特定AWS账户私下共享快照,选择 Private(私有)。然后,在共享账户部分中,选择添加账户,接着输入要与之共享的账户的 12 位账户 ID(不带连字符)。

  5. 选择 Save changes(保存更改)

AWS CLI

使用快照的 createVolumePermission 属性指定快照的权限。要使快照公开可用,请将组设置为 all。要将快照与特定 AWS 账户共享,请将用户设置为 AWS 账户的 ID。

公开共享快照

使用 modify-snapshot-attribute 命令。

对于 --attribute,请指定 createVolumePermission。对于 --operation-type,请指定 add。对于 --group-names,请指定 all

$ aws ec2 modify-snapshot-attribute --snapshot-id 1234567890abcdef0 --attribute createVolumePermission --operation-type add --group-names all
私密共享快照

使用 modify-snapshot-attribute 命令。

对于 --attribute,请指定 createVolumePermission。对于 --operation-type,请指定 add。对于 --user-ids,请指定要与之共享快照的 AWS 账户的 12 位 ID。

$ aws ec2 modify-snapshot-attribute --snapshot-id 1234567890abcdef0 --attribute createVolumePermission --operation-type add --user-ids 123456789012
Tools for Windows PowerShell

使用快照的 createVolumePermission 属性指定快照的权限。要使快照公开可用,请将组设置为 all。要将快照与特定 AWS 账户共享,请将用户设置为 AWS 账户的 ID。

公开共享快照

使用 Edit-EC2SnapshotAttribute 命令。

对于 -Attribute,请指定 CreateVolumePermission。对于 -OperationType,请指定 Add。对于 -GroupName,请指定 all

PS C:\> Edit-EC2SnapshotAttribute -SnapshotId 1234567890abcdef0 -Attribute CreateVolumePermission -OperationType Add -GroupName all
私密共享快照

使用 Edit-EC2SnapshotAttribute 命令。

对于 -Attribute,请指定 CreateVolumePermission。对于 -OperationType,请指定 Add。对于 UserId,请指定要与之共享快照的 AWS 账户的 12 位 ID。

PS C:\> Edit-EC2SnapshotAttribute -SnapshotId 1234567890abcdef0 -Attribute CreateVolumePermission -OperationType Add -UserId 123456789012

共享 KMS 密钥

共享加密快照时,还必须共享用于加密快照的客户托管密钥。您可以在创建客户托管密钥时或以后的某个时间向客户托管密钥应用跨账户权限。

必须为正在访问加密快照的共享客户托管密钥用户授予对密钥执行以下操作的权限:

  • kms:DescribeKey

  • kms:CreateGrant

  • kms:GenerateDataKey

  • kms:GenerateDataKeyWithoutPlaintext

  • kms:ReEncrypt

  • kms:Decrypt

提示

为遵循最小特权原则,请不要允许对 kms:CreateGrant 拥有完全访问权限。而是仅当 AWS 服务代表用户创建授权时,才使用 kms:GrantIsForAWSResource 条件键以允许用户在 KMS 密钥上创建授权。

有关如何控制对客户托管密钥的访问权限的更多信息,请参阅 AWS Key Management Service 开发人员指南中的使用 AWS KMS 中的密钥策略

要使用 AWS KMS 控制台共享客户托管密钥
  1. https://console.aws.amazon.com/kms 打开 AWS KMS 控制台。

  2. 要更改 AWS 区域,请使用页面右上角的 Region selector(区域选择器)。

  3. 在导航窗格中,选择客户托管密钥

  4. 别名列中,选择用于加密快照的客户托管密钥的别名(文本链接)。密钥详细信息将在新页面中打开。

  5. 密钥政策部分中,您会看到政策视图默认视图。策略视图显示密钥策略文档。默认视图显示密钥管理员密钥删除密钥使用其他 AWS 账户几个部分。如果您在控制台中创建了策略,但尚未对其进行自定义,则会显示默认视图。如果默认视图不可用,则需要在策略视图中手动编辑策略。有关更多信息,请参阅 AWS Key Management Service 开发人员指南中的查看密钥策略(控制台)

    使用策略视图或默认视图(具体取决于您可以访问哪个视图)向策略添加一个或多个 AWS 账户 ID,如下所示:

    • (策略视图)选择编辑。将一个或多个 AWS 账户 ID 添加到以下语句:"Allow use of the key""Allow attachment of persistent resources"。选择 Save changes(保存更改)。在以下示例中,会将 AWS 账户 ID 444455556666 添加到策略中。

      { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/KeyUser", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/KeyUser", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}} }
    • (默认视图)向下滚动到其他 AWS 账户。选择添加其他 AWS 账户,并按提示输入 AWS 账户 ID。要添加其他账户,选择 Add another AWS account(添加其他亚马逊云科技账户)并输入 AWS 账户 ID。添加完所有 AWS 账户后,选择 Save changes(保存更改)。

查看与您共享的快照

您可以使用以下方法之一查看与您共享的快照。

Console
使用控制台查看共享快照
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 筛选列出的快照。在屏幕的左上角,选择以下选项之一:

    • 私有快照 – 仅查看与您私下共享的快照。

    • 公有快照 – 仅查看与您公开共享的快照。

AWS CLI
使用命令行查看快照权限

使用 describe-volume-attribute 命令。

Tools for Windows PowerShell
使用命令行查看快照权限

使用 Get-EC2SnapshotAttribute 命令。

使用与您共享的快照

使用共享的未加密快照

按 ID 或描述查找共享快照。有关更多信息,请参阅查看与您共享的快照。您可以像使用账户中拥有的任何其他快照一样使用此快照。例如,您可以从快照中创建卷或将卷复制到其他区域。

使用共享的已加密快照

按 ID 或描述查找共享快照。有关更多信息,请参阅查看与您共享的快照。在您的账户中创建共享快照的副本,并使用您拥有的 KMS 密钥对副本进行加密。然后,您可以使用副本创建卷,也可以将其复制到不同的区域。

确定共享快照的用途

您可以使用 AWS CloudTrail 监控是否已复制与他人共享的快照或使用它来创建卷。在 CloudTrail 中登录以下事件:

  • SharedSnapshotCopyInitiated – 正在复制共享快照。

  • SharedSnapshotVolumeCreated – 正在使用共享快照创建卷。

有关使用 CloudTrail 的更多信息,请参阅使用 AWS CloudTrail 记录 Amazon EC2 和 Amazon EBS API 调用