Amazon EBS スナップショットの共有 - Amazon Elastic Compute Cloud

Amazon EBS スナップショットの共有

スナップショットのアクセス許可を変更することで、他の AWS アカウントとスナップショットを共有できます。スナップショットをすべての AWS アカウントに対してパブリックに共有することも、個人の AWS アカウントを指定してプライベートで共有することもできます。許可を受けたユーザーは、共有するスナップショットを使用して自分の EBS ボリュームを作成できますが、元のスナップショットは影響を受けません。

重要

スナップショットを共有すると、スナップショットのすべてのデータに他人がアクセスできるようになります。スナップショットの共有は、自分のスナップショットデータすべてを委託できる人とだけ行ってください。

スナップショットを共有する前に

スナップショットの共有には、次の考慮事項が適用されます。

  • スナップショットは、スナップショットが作成されたリージョンに制限されます。別のリージョンとスナップショットを共有するには、そのリージョンにスナップショットをコピーして、そのコピーを共有します。詳細については、「Amazon EBS スナップショットのコピー」を参照してください。

  • デフォルトの AWS マネージドキー で暗号化されたスナップショットを共有することはできません。共有できるのは、カスタマーマネージド型キーを使用して暗号化されたスナップショットだけです。詳細については、AWS Key Management Service デベロッパーガイドの「キーの作成」を参照してください。

  • 暗号化されていないスナップショットのみをパブリックに共有できます。

  • 暗号化されたスナップショットを共有する場合は、スナップショットの暗号化に使用するカスタマーマネージド型キーも共有する必要があります。詳細については、「KMS キーの共有」を参照してください。

スナップショットの共有

スナップショットを共有するには、このセクションで説明されているいずれかの方法を使用します。

Console

スナップショットを共有するには

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[スナップショット] を選択します。

  3. スナップショットを選択し、[アクション] リストから [Modify Permissions (権限の変更)] を選択します。

  4. スナップショットを公開するか、次のように特定の AWS アカウントと共有します。

    • スナップショットを公開するには、[Public] を選択します。

    • 1 つ以上の AWS アカウントでスナップショットを共有するには、[Private] (プライベート) を選択し、AWS アカウントの ID をハイフンなしで [AWS Account Number] (AWS アカウント番号) フィールドに入力して、[Add Permission] (アクセス権限の追加) を選択します。追加の AWS アカウントでこの手順を繰り返します。

  5. [Save] を選択します。

AWS CLI

スナップショットのアクセス許可は、スナップショットの createVolumePermission 属性を使用して指定します。スナップショットを公開するには、グループを all に設定します。スナップショットを特定の AWS アカウントと共有するには、そのユーザーを AWS アカウントの ID に設定します。

スナップショットをパブリックに共有するには

次のいずれかのコマンドを使用します。

  • modify-snapshot-attribute (AWS CLI)

    --attribute で、createVolumePermission を指定します。--operation-type で、add を指定します。--group-names で、all を指定します。

    $ aws ec2 modify-snapshot-attribute --snapshot-id 1234567890abcdef0 --attribute createVolumePermission --operation-type add --group-names all
  • Edit-EC2SnapshotAttribute (AWS Tools for Windows PowerShell)

    -Attribute で、CreateVolumePermission を指定します。-OperationType で、Add を指定します。-GroupName で、all を指定します。

    PS C:\> Edit-EC2SnapshotAttribute -SnapshotId 1234567890abcdef0 -Attribute CreateVolumePermission -OperationType Add -GroupName all

スナップショットをプライベートに共有するには

次のいずれかのコマンドを使用します。

  • modify-snapshot-attribute (AWS CLI)

    --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
  • Edit-EC2SnapshotAttribute (AWS Tools for Windows PowerShell)

    -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:ReEncrypt

  • kms:Decrypt

カスタマーマネージド型キーへのアクセスの制御方法については、AWS Key Management Service デベロッパーガイドの「AWS KMS でのキーポリシーの使用」を参照してください。

AWS KMS コンソールを使用してカスタマーマネージド型キーを共有するには

  1. AWS KMS コンソール (https://console.aws.amazon.com/kms) を開きます。

  2. AWS リージョンを変更するには、ページの右上隅にあるリージョンセレクターを使用します。

  3. ナビゲーションペインで、[カスタマー管理型のキー] を選択します。

  4. [エイリアス] 列で、スナップショットの暗号化に使用したカスタマーマネージド型キーのエイリアス (テキストリンク) を選択します。キーの詳細が新しいページで開きます。

  5. [キーポリシー] セクションに、ポリシービューまたはデフォルトビューのいずれかが表示されます。ポリシービューは、キーポリシードキュメントを表示します。デフォルトビューは、[Key administrators] (キー管理者)、[Key deletion] (キーの削除)、[Key Use] (キーの使用)、[Other AWS accounts] (その他の AWS アカウント) の各セクションを表示します。デフォルトビューは、コンソールでポリシーを作成し、それをカスタマイズしていない場合に表示されます。デフォルトビューが使用できない場合は、ポリシービューでポリシーを手動で編集する必要があります。詳細については、AWS Key Management Service デベロッパーガイドの「キーポリシーの表示 (コンソール)」を参照してください。

    アクセスできるビューに応じて、ポリシービューまたはデフォルトビューのいずれかを使用し、次に示すように 1 つ以上の AWS アカウント ID をポリシーに追加します。

    • (ポリシービュー) [編集] を選択します。1 つ以上の 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}} }
    • (デフォルトビュー) [Other AWS accounts] (その他の AWS アカウント) まで下にスクロールします。[Add other AWS accounts] (別の AWS アカウントを追加) を選択し、プロンプトに従って AWS アカウント ID を入力します。別のアカウントを追加するには、[Add another AWS account] (別の AWS アカウントを追加する) を選択し、AWS アカウント ID を入力します。すべての AWS アカウントを追加したら、[Save changes] (変更の保存) を選択します。

自分と共有されているスナップショットを表示する

自分と共有されているスナップショットは、次のいずれかの方法で表示できます。

Console

コンソールを使用して、共有されているスナップショットを表示するには

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[スナップショット] を選択します。

  3. リストされたスナップショットをフィルターします。画面の左上隅で、次のいずれかのオプションを選択します。

    • [プライベートスナップショット] — プライベートで共有されているスナップショットのみを表示します。

    • [パブリックスナップショット] — パブリックに共有されているスナップショットのみを表示します。

AWS CLI

コマンドラインを使用してスナップショットに関するアクセス許可を表示するには

以下のいずれかのコマンドを使用します。

共有されているスナップショットを使用する

暗号化されていない共有スナップショットを使用するには

ID または説明で共有スナップショットを見つけます。詳細については、「自分と共有されているスナップショットを表示する」を参照してください。このスナップショットは、アカウント内で所有している、他のスナップショットと同じように使用できます。例えば、スナップショットからボリュームを作成したり、別のリージョンにコピーしたりすることができます。

暗号化された共有スナップショットを使用するには

ID または説明で共有スナップショットを見つけます。詳細については、「自分と共有されているスナップショットを表示する」を参照してください。アカウントに共有スナップショットのコピーを作成し、所有している KMS キーを使用して、そのコピーを暗号化します。その後、コピーを使用してボリュームを作成したり、別のリージョンにコピーしたりできます。

共有するスナップショットの使用方法を決定する

AWS CloudTrail を使用して、他のユーザーと共有しているスナップショットがコピーされているか、ボリュームの作成に使用されているかをモニタリングできます。次のイベントが CloudTrail に記録されます。

  • SharedSnapshotCopyInitiated — 共有スナップショットをコピーしています。

  • SharedSnapshotVolumeCreated — ボリュームを作成するために共有スナップショットを使用しています。

CloudTrail の使用の詳細については、「AWS CloudTrail による Amazon EC2 および Amazon EBS の API 呼び出しのログ記録」を参照してください。