EBS スナップショットのパブリック共有機能をブロックする方法

記事タイトルとURLをコピーする

こんにちは!イーゴリです。

下記の記事でAMIのパブリック共有機能をブロックする方法を紹介した時に、注意点としてEBS スナップショットのパブリック共有機能のブロックは対象外と記載しました。

blog.serverworks.co.jp

下記のアップデートによりEBSスナップショットもパブリック共有機能のブロックができるようになったため、本日はEBSのパブリック共有機能をブロックする方法を紹介したいと思います。

aws.amazon.com

EBS パブリック共有機能のブロックを有効にする手順(GUI)

[EC2] > [Data protection and security] > 一番下にある [Block public access for EBS snapshots] > [Manage]をクリックします。

[Block public access]を選択します。

EBS スナップショットのブロックパブリックアクセスの2つの方法が表示されます。

Block all sharing

  • スナップショットのすべての公開共有をブロックします。
  • 既に公開されているスナップショットは非公開として扱われ、公開されなくなります。

Block new sharing

  • EBSスナップショットのパブリック共有機能ブロックを有効にしてからスナップショットの新規公開共有のみをブロックします。
  • すでに公開されているスナップショットは、引き続き公開されます。

選択肢によって[Public access]のところが[All sharing blocked]

もしくは[New sharing blocked]になります。

注意点

リージョンについて

EBS スナップショットのパブリック共有機能の無効化がリージョンごとに設定されているため、例えば、東京リージョンでEBS スナップショットのパブリック共有機能を無効にしても、他のリージョンではEBS スナップショットのパブリック共有機能が有効のままなのでご注意ください。

アカウント数が多い、もしくはすべてのリージョンで無効にしたい場合、AWS CLIで行ったほうが効率が良いと思います。

すべてのリージョンでEBS スナップショットのパブリック共有機能を一括ブロックする方法(AWS CLI)

参考スクリプトは下記の記事にありますが、enable-image-block-public-access --image-block-public-access-state block-new-sharingのかわりに

enable-snapshot-block-public-access --state block-all-sharing

もしくは

enable-snapshot-block-public-access --state block-new-sharing

を使う必要があります。

例:

All sharing blockedの場合、

#!/bin/bash

# デフォルトリージョン設定
export AWS_DEFAULT_REGION=us-west-1

# リージョンの一覧を取得する
REGIONS=$(aws ec2 describe-regions --query "Regions[].RegionName" --output text)

# すべてのリージョンで無効にする
for REGION in $REGIONS; do
    echo "Enabling snapshot block public access in $REGION..."
    aws ec2 enable-snapshot-block-public-access --state block-all-sharing --region $REGION
done

# リージョンをリセットする
unset AWS_DEFAULT_REGION

プロファイルの指定が必要な場合

#!/bin/bash

# kensho-userのかわりに自分のプロファイル名を入れてください
PROFILE_NAME='kensho-user'

# リージョンの一覧を取得する
REGIONS=$(aws ec2 describe-regions --query "Regions[].RegionName" --output text --profile $PROFILE_NAME)

# すべてのリージョンで無効にする
for REGION in $REGIONS; do
    echo "Enabling snapshot block public access in $REGION..."
    aws ec2 enable-snapshot-block-public-access --state block-all-sharing --region $REGION --profile $PROFILE_NAME
done

期待結果:

Enabling snapshot block public access in ap-south-1...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in eu-north-1...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in eu-west-3...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in eu-west-2...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in eu-west-1...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in ap-northeast-3...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in ap-northeast-2...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in ap-northeast-1...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in ca-central-1...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in sa-east-1...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in ap-southeast-1...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in ap-southeast-2...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in eu-central-1...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in us-east-1...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in us-east-2...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in us-west-1...
{
    "State": "block-all-sharing"
}
Enabling snapshot block public access in us-west-2...
{
    "State": "block-all-sharing"
}

以上、御一読ありがとうございました。

イーゴリ (記事一覧)

クラウドインテグレーション部・エンジニア

特にTerraform(自動化)、ネットワーク系、DNS、VDI、Windows Serverに興味があります

日本国内旅行・ドライブが好きです