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. ナビゲーションペインで、[Snapshots] を選択します。

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

  4. スナップショットの権限を指定します。[Current setting] (現在の設定) は、スナップショットの現在の共有権限を示します。

    • スナップショットをすべての AWS アカウントに公開し、共有するには、[Public] (公開) を選択します。

    • スナップショットを特定の AWS アカウントと共有するには、[Private] (プライベート) を選択します。次に、[Sharing accounts] (アカウントの共有) セクションで、[Add account] (アカウントの追加) を選択し、共有するアカウントの 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. AWS KMS コンソール (https://console.aws.amazon.com/kms) を開きます。

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

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

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

  5. [キーポリシー] セクションに、ポリシービューまたはデフォルトビューのいずれかが表示されます。ポリシービューは、キーポリシードキュメントを表示します。デフォルトビューは、[キー管理者][キーの削除][キーの使用][その他の 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}} }
    • (デフォルトビュー) [その他の AWS アカウント] まで下にスクロールします。[別の AWS アカウントを追加] を選択し、プロンプトに従って AWS アカウント ID を入力します。別のアカウントを追加するには、[別の AWS アカウントを追加] を選択し、AWS アカウント ID を入力します。すべての AWS アカウントを追加したら、[Save changes] (変更の保存) を選択します。

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

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

Console
コンソールを使用して、共有されているスナップショットを表示するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

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

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

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

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

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

describe-snapshot-attribute コマンドを使用します。

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

Get-EC2SnapshotAttribute コマンドを使用します。

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

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

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

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

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

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

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

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

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

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