Amazon Web Services ブログ

スナップショットから Amazon EBS ボリュームを作成するときのリソースレベル権限が強化

このブログは 2025 年 1 月 31 日に Emma Fu(Senior Technical Product Manager)と Matt Luttrell(Principal Solutions Architect)によって執筆された内容を日本語化したものです。原文はこちらを参照してください。

Amazon Elastic Block Store(Amazon EBS)スナップショットを使用して、業務では新しいボリュームを作成する際のベースライン基準となるアプリケーションデータボリュームのポイントインタイムコピーを取得します。これにより、異なる AWS リージョンでアプリケーションのワークロードを迅速に起動したり、データ保護や災害復旧の要件を満たすことができます。ユーザーが異なる AWS リージョンやアカウント間で AWS ワークロードを移行する際、セキュリティと規制コンプライアンスは依然として最優先事項であり、きめ細かなアクセス制御を可能にする API コールのリソースレベルアクセス制御が求められます。

今回、Amazon EBS は CreateVolume アクションのリソースレベル権限を強化し、ボリューム作成時にソーススナップショットの AWS Identity and Access Management(IAM)ポリシーでリソースレベルの追加権限を指定できるようになりました。この機能強化によりユーザーは、どの AWS IAM 認証情報がソーススナップショットから Amazon EBS ボリュームを作成できる か制御したり、ソーススナップショットを Amazon EBSボリューム の作成に使用できる条件を定義することができます。

この記事では、リソースレベル権限における変更を説明し、その実装ユースケースを検討し、この改善された権限モデルを採用することの重要性について議論します。また、以前のリソースレベル権限モデルから移行するための計画も提供します。

何が変わったのでしょうか?

ソーススナップショットからボリュームを作成または復元する場合、AWS IAM ポリシーを使用して、CreateVolume アクションを実行する権限を付与する必要があります。以前は、AWS IAM ポリシーの CreateVolume アクションには、作成されるボリュームの権限が必要であり、ソーススナップショットは AWS IAM ポリシーの CreateVolume アクションのリソースコンテキストに含まれていませんでした。今回のアップデートにより、作成されるボリュームとソーススナップショットの両方に対してリソースレベルの権限を強制できるようになりました。また、ソーススナップショットの特定の権限要件を満たすために、Amazon Elastic Compute Cloud(Amazon EC2)固有の5つの条件キー(ec2:Encrypted、ec2:VolumeSize、ec2:Owner、ec2:ParentVolume、ec2:SnapshotTime)も使用できます。さらに、AWS IAM ポリシーでソーススナップショットのグローバル条件キーを使用することもできます。作成するボリュームに Amazon Resource Name(ARN)を使用してリソースステートメントを既に追加している場合は、スナップショットのリソースステートメントも明示的に指定する必要があります。以下の例を見てみましょう。

以前のポリシー:

ボリュームリソースの作成を許可するポリシーが必要でした。

{
    "Effect": "Allow",
    "Action": "ec2:CreateVolume",
    "Resource": "arn:aws:ec2:*:*:volume/*"
}
JSON

今回のアップデート後に必要なポリシー:

ボリュームとソーススナップショットの両方を許可するポリシーが必要になりました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:CreateVolume",
            "Resource": "arn:aws:ec2:*:*:volume/*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateVolume",
            "Resource": "arn:aws:ec2:*:*:snapshot/*"
        }
    ]
}
JSON

ソーススナップショットのリソースレベルの追加権限で何ができますか?

新しいリソースレベル権限モデルへ移行すると、2 つのメリットがあります:

1/ アクセス制御の粒度が強化

ソーススナップショットのリソースレベルの権限は、ボリュームの作成に使用できるスナップショットをきめ細かく制御します。条件を指定することで、個々のスナップショットまたはカテゴライズされたスナップショットに対して、権限を設定できます。例えば、特定の AWS アカウントが所有する機密データを含むワークロードの定期的なバックアップとして Amazon EBS スナップショットを取得する場合、この新しい権限モデルを使用して、許可されたユーザーが所有するスナップショットだけにボリュームの作成を制限することができます。

ポリシーの例:

1. 自分の組織に所属するスナップショットからのボリュームの作成のみを許可します。

{
    "Effect": "Allow",
    "Action": "ec2:CreateVolume",
    "Resource": [
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*::snapshot/snap-1234567890abcdef0"
    ],
    "Condition": {
        "StringEquals": {
            "aws:ResourceOrgId": "<your organization ID>"
        }
    }
}
JSON

2. 自分のアカウントに所属するスナップショットからのボリュームの作成のみを許可します。

{
    "Effect": "Allow",
    "Action": "ec2:CreateVolume",
    "Resource": [
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*::snapshot/snap-1234567890abcdef0"
    ],
    "Condition": {
        "StringEquals": {
            "aws:ResourceAccount": "<your account ID>"
        }
    }
}
JSON

3. 特定のタグを持つスナップショットからのみボリュームの作成を許可します。

{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:CreateVolume",
            "Resource": [
                "arn:aws:ec2:*::snapshot/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/classification": "not-sensitive",
                    "aws:ResourceOrgId": "<your organization ID>"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateVolume",
            "Resource": "arn:aws:ec2:*:*:volume/*"
        }
    ]
}
JSON

2/ リソースとコストの最適化

この追加された権限は、セキュリティとコンプライアンス要件を強化するだけでなく、リソースの優先順位付けとコスト最適化のための強力なツールにもなります。スナップショットの取得時期や暗号化の状態などの条件を指定することで、ボリュームを作成する際にどのスナップショットを優先するかを制御できます。例えば、より新しいスナップショットや暗号化されたスナップショットを、他のスナップショットよりも優先させることができます。これにより、リソースの使用をビジネスの優先順位に合わせながら、セカンダリリージョンのボリュームをリストアするなどのバックアップ戦略を合理化することができます。

ポリシーの例:

1. 暗号化されたスナップショットからのボリュームの作成のみを許可します。

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": [
        "arn:aws:ec2:*::snapshot/*"
      ],
      "Condition": {
        "Bool": {
          "ec2:Encrypted": "true"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "arn:aws:ec2:*:*:volume/*"
    }
  ]
}
JSON

2. 2025-01-01 00:00:00 以降に取得したスナップショットからのボリュームの作成のみを許可します。

{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:CreateVolume",
            "Resource": [
                "arn:aws:ec2:*::snapshot/*"
            ],
            "Condition": {
                "DateGreaterThan": {
                    "ec2:SnapshotTime": "2025-01-01T00:00:00Z"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateVolume",
            "Resource": "arn:aws:ec2:*:*:volume/*"
        }
    ]
}
JSON

今回のアップデートに対してどのような準備が必要ですか?

ほとんどの AWS ユーザーは今回のアップデートの影響を受けません。今回のアップデートによる影響を受けるポリシーが適用されていることを検出した場合、電子メールと AWS Health ダッシュボードを利用してお知らせしています。影響を受けるアカウントは現在許可リストに登録されており、2025 年 2 月 17 日までは以前のポリシーが適用されます。2025 年 2 月 17 日から、AWS IAM ポリシーを更新したアカウントを AWS はその許可リストから除外し始めます。そして、2025 年 5 月 17 日がすべてのアカウントが新しい許可モデルに移行する最終期限となります。2025 年 5 月 17 日以降、AWS IAM ポリシーの更新を行わなかった場合、CreateVolume API の呼び出しが拒否される可能性があります。

タイムライン:

  • 2025 年 2 月 17 日より、AWS IAM ポリシーを更新したアカウントから順に、AWS は許可リストから削除し始めます。
  • 2025 年 5 月 17 日が、すべてのアカウントが新しい権限モデルに移行する最終期限となります。

影響を受けるポリシーを特定し、更新します:

AWS CloudTrail のログを確認するか、IAM get-account-authorization-details CLI コマンドを実行して、CreateVolume アクションなどのすべての AWS IAM ポリシーを一覧表示し、関連するポリシーを特定することができます。一般的に、更新が必要なポリシーは以下の 2 つのカテゴリに分類されます。

カテゴリ 1: スナップショットリソースの許可ステートメントがありません。
ポリシーの Resource 要素でボリュームのみ許可している場合、スナップショットリソースも許可する必要があります。次のコード例を見てください。

{
    "Effect": "Allow",
    "Action": "ec2:CreateVolume",
    "Resource": "arn:aws:ec2:*:*:volume/*"
}
JSON

更新後のコードブロックは次のようになります。

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "arn:aws:ec2:*:*:volume/*"
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "arn:aws:ec2:*::snapshot/snap-1234567890abcdef0"
    }
  ]
}
JSON

同様の AWS マネージドポリシーの例として、AWSElasticDisasterRecoveryServiceRolePolicy があります。

カテゴリ2: Resource 要素でボリュームとスナップショットの両方が許可されていますが、Condition はボリュームにのみ適用されます。
ポリシーの Resource 要素にボリュームとスナップショットの両方に一致するワイルドカードが使用されており、特定のボリュームに関する Condition 要素が含まれている場合は、 Resource 要素をボリュームにのみ適用するように変更し、スナップショットを許可する新しいステートメントを追加する必要があります。

以下は以前のポリシーのうち、今回のアップデート後に機能しなくなる例です。

{
    "Effect": "Allow",
    "Action": "ec2:CreateVolume",
    "Resource": "*",
    "Condition": {
        "StringLike": {
            "aws:RequestTag/CSIVolumeName": "*"
        }
    }
}
JSON

ポリシーを機能させるには、以下のように変更します。

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Condition": {
        "StringLike": {
          "aws:RequestTag/CSIVolumeName": "*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "arn:aws:ec2:*::snapshot/snap-1234567890abcdef0"
    }
  ]
}
JSON

同様の AWS マネージドポリシーの例として、AmazonEBSCSIDriverPolicy があります。

DryRun モードを使用し更新を検証します

AWS IAM ポリシーが正しいかどうかを検証する必要がある場合、DryRun モードを使用してテストします。DryRun モードでは、実際には許可リストに含まれ API が古い権限モデルに従う場合でも、新しい権限モデルでの認可結果を確認することができます。DryRun モードを使用するには、AWS Command Line Interface(AWS CLI)コマンドまたは Amazon EBS CreateVolume API コールで -dry-run パラメータを指定します。DryRun モードを使用する CreateVolume API コールは常にエラーを返します。DryRunOperation を伴うエラーが返された場合は、AWS IAM ポリシーが新しい権限モデルで動作することを意味します。UnauthorizedOperation を伴うエラーが返された場合には、AWS IAM ポリシーを更新する必要があります。DryRun モードの詳細については、AWS CLI のドキュメントを参照してください。

まとめ

リソースレベルの権限に関するアップデートは、セキュリティ、制御、および運用の柔軟性を強化します。現在、古いアクセス許可モデルを使用しており、引き続きそれを使用する必要がある場合は、AWS サポートに連絡してユースケースへの対応を求めることができます。2025 年 2 月 17 日までに新しい許可ポリシーに移行する準備ができている場合は、AWS サポートに許可リストから削除するように依頼することもできます。今回の変更は、CopySnapshot のような他のアクションでも同様の許可を可能にする、より広範な取り組みの一部です。

サポートされている条件キーの詳細については、ドキュメント.を参照してください。この投稿に関するフィードバックがある場合は、コメント欄で送信するか、AWS サポートに連絡してください。Amazon EBS ボリュームとスナップショットの詳細については、Amazon EBS ユーザーガイドを参照してください。

Emma Fu

Emma Fu

Emma Fu は Amazon EBS チームの Senior Technical Product Manager です。バックアップ、セキュリティ、AI における新たなユースケースの探求に情熱を注いでいます。仕事以外では、家族と過ごす時間、料理、ワインテイスティングを楽しんでいます。

Matt Luttrell

Matt Luttrell

Matt は AWS Identity Solutions チームの Principal Solutions Architect です。子供を追いかけまわしている時間以外は、スキー、サイクリング、そして、たまにビデオゲームも楽しんでいます。