【AWSサービス 基礎編】S3 アカウントリージョナル名前空間 ── バケット名の乗っ取りを防ぐ新しい命名方式

目次

概要

Amazon S3 のバケット名はこれまでグローバルに一意である必要がありました。つまり、あるバケット名を誰かが使っていれば、世界中の他のアカウントからは同じ名前を使えません。さらに、バケットを削除すると別のアカウントがその名前を取得できてしまうため、バケット名の乗っ取り(Bucket Squatting)やデータの誤送信といったセキュリティリスクが存在していました。

2025年にリリースされたアカウントリージョナル名前空間は、バケット名にアカウント ID とリージョンを含む命名規則を導入することで、これらの問題を根本的に解決する仕組みです。この記事では、従来のグローバル名前空間との違いを理解し、実際にアカウントリージョナル名前空間でバケットを作成する手順を体験します。

グローバル名前空間とアカウントリージョナル名前空間の比較図解(グローバル名前空間では全アカウントで名前を共有、アカウントリージョナル名前空間ではアカウント+リージョン単位で名前が予約される構成)
グローバル名前空間とアカウントリージョナル名前空間の比較図解(グローバル名前空間では全アカウントで名前を共有、アカウントリージョナル名前空間ではアカウント+リージョン単位で名前が予約される構成)

この記事のメリット

  • S3 バケットのグローバル名前空間が持つセキュリティリスクを理解できる
  • アカウントリージョナル名前空間の仕組みと命名規則を把握できる
  • AWS マネジメントコンソールからアカウントリージョナル名前空間でバケットを作成する手順を習得できる
  • IAM ポリシーや SCP でアカウントリージョナル名前空間の使用を強制する方法を理解できる

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。

クラウドおさる

基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

グローバル名前空間の課題

クラウドおさる

とひさん、S3 のバケット名は世界中で一意でないといけないのでござるよな? それには、どんな問題があるのでござるか?

土肥

そうだね。従来の S3 バケット名は「グローバル名前空間」に属していて、いくつか厄介な課題があるんだ。まとめるとこんな感じだよ。

課題説明
バケット名の衝突他のアカウントが既に使用している名前は選択できない
削除後の名前再利用バケットを削除すると、別のアカウントが同じ名前でバケットを作成できる
バケット名の推測攻撃命名パターンが予測可能な場合、攻撃者が先にバケットを作成してデータを傍受する可能性がある
クラウドおさる

削除したあとに、別の誰かが同じ名前で作れてしまうのでござるか……それは怖いでござる。

土肥

そう、特に「削除後の名前再利用」は深刻なんだ。例えば、CloudFormation スタックを削除・再作成する運用では、バケット名が一時的に解放されるから、その隙に別のアカウントが同じ名前でバケットを作成するリスクがあるんだよ。

アカウントリージョナル名前空間とは

クラウドおさる

そういう問題を解決する仕組みがあるのでござるか?

土肥

あるよ。2025年にリリースされた「アカウントリージョナル名前空間」という仕組みだね。バケット名に AWS アカウント ID とリージョンコードを含めることで、名前の所有権をアカウントとリージョンに紐づけるんだ。

クラウドおさる

呼び方が、場所によって違う気がするのでござるが……。

土肥

いいところに気づいたね。AWS 公式ドキュメント(日本語)では「アカウントのリージョン名前空間」、マネジメントコンソールでは「アカウントのリージョナル名前空間」と表記されているんだ。英語ではどちらも account-regional namespace で、指しているものは同じだよ。

クラウドおさる

具体的には、どういう名前になるのでござる?

土肥

命名形式はこうなるよ。

<プレフィックス>-<アカウントID>-<リージョン>-an
土肥

具体例だとこんな感じだね。

my-app-logs-111122223333-ap-northeast-1-an
土肥

それぞれの要素を分解するとこうなるよ。

要素説明例
プレフィックスユーザーが自由に定義する部分my-app-logs
アカウント ID12 桁の AWS アカウント ID111122223333
リージョンAWS リージョンコードap-northeast-1
サフィックス固定の識別子-an
アカウントリージョナル名前空間のバケット名構成要素の図解
アカウントリージョナル名前空間のバケット名構成要素の図解
クラウドおさる

なるほど! アカウント ID が入るから、他の誰かと被る心配がないのでござるな! 猿山のバナナ倉庫の札に、群れの名前を書いておくようなものでござる。

2 つの名前空間の比較

土肥

その通り。2 つの名前空間を比較すると、違いがはっきりわかるよ。

特性グローバル名前空間アカウントリージョナル名前空間
名前の一意性スコープAWS パーティション全体アカウント + リージョン単位
削除後の名前再利用他のアカウントが再利用可能他のアカウントは再利用不可
命名形式自由(規則内)<プレフィックス>-<AccountId>-<Region>-an
バケット名の推測耐性低い(パターンが予測可能)高い(アカウント ID が含まれる)
推奨用途既存バケットとの互換性が必要な場合新規作成するバケット全般
クラウドおさる

新しく作るなら、アカウントリージョナル名前空間を選んだほうがよいのでござるな。

バケット名の文字数制限に関する注意

クラウドおさる

ところで、バケット名には長さの制限があったでござるよな? アカウント ID やリージョンが入ると、けっこう長くなりそうでござるが……。

土肥

いいところに気づいたね。S3 バケット名の上限は 63 文字なんだ。アカウントリージョナル名前空間では、サフィックス部分が文字数を消費するんだよ。東京リージョンの場合はこうなる。

-111122223333-ap-northeast-1-an → 31 文字
土肥

だからプレフィックスに使える文字数は 32 文字(ハイフン区切りを含む)になるんだ。リージョンコードが長いほどプレフィックスに使える文字数が少なくなる点には注意が必要だね。

クラウドおさる

32 文字でござるか……長い名前を付けたいときは、少し工夫が要るでござるな。

-an サフィックスの予約

クラウドおさる

そういえば、末尾の -an には何か意味があるのでござるか?

土肥

-an はアカウントリージョナル名前空間を識別するための固定サフィックスだよ。この導入に伴って、-an で終わるバケット名はアカウントリージョナル名前空間専用に予約されたんだ。だからグローバル名前空間で -an で終わるバケットを新規作成することはできないよ。

クラウドおさる

なるほど、末尾で区別できるようになっているのでござるな。

IAM / SCP による名前空間の強制

クラウドおさる

組織で「全部アカウントリージョナル名前空間を使うように」と強制することはできるのでござるか?

土肥

できるよ。条件キー s3:x-amz-bucket-namespace を使えばいいんだ。例えば、グローバル名前空間でのバケット作成を拒否する IAM ポリシーはこんな感じになる。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RequireAccountRegionalNamespace",
      "Effect": "Deny",
      "Action": "s3:CreateBucket",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-bucket-namespace": "account-regional"
        }
      }
    }
  ]
}
土肥

このポリシーを SCP(サービスコントロールポリシー)として Organizations に適用すれば、組織内のすべてのアカウントに対してアカウントリージョナル名前空間の使用を強制できるんだ。

クラウドおさる

SCP で一括管理できるのは便利でござる!

利用可能なリージョン

クラウドおさる

これは、どのリージョンでも使えるのでござるか?

土肥

ほぼすべてのリージョンで使えるよ。ただし、以下のリージョンでは非対応なんだ。

  • Middle East (Bahrain)
  • Middle East (UAE)
クラウドおさる

東京リージョンは問題ないのでござるな。よかったでござる!

新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方を募集しています。プログラミング未経験から入社して活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

実践

ここでは、AWS マネジメントコンソールからアカウントリージョナル名前空間でバケットを作成し、従来のグローバル名前空間との違いを確認します。

前提条件

  • AWS マネジメントコンソールにログインできること
  • S3 バケットの作成権限を持つ IAM ユーザーまたはロールでログインしていること

作成するリソース一覧

リソース種別リソース名用途
S3 バケットtest-account-regional-<アカウントID>-ap-northeast-1-anアカウントリージョナル名前空間の動作確認用

アカウントリージョナル名前空間でバケットを作成する

AWS マネジメントコンソールにログインし、リージョンが ap-northeast-1(東京)であることを確認します。

上部の検索バーに S3 と入力し、表示された「S3」を選択します。

左側ナビゲーションの「バケット」を選択し、「バケットを作成」をクリックします。

「バケットの作成」画面で以下を設定します。

バケット名前空間セクションで、「アカウントのリージョナル名前空間 (推奨)」を選択します(デフォルトは「グローバル名前空間」です)。

バケット名前空間の選択画面(「アカウントのリージョナル名前空間 (推奨)」が選択されている状態)
バケット名前空間の選択画面(「アカウントのリージョナル名前空間 (推奨)」が選択されている状態)

名前空間を選択すると、「バケット名」セクションの入力欄が「バケット名の接頭辞」に変わり、その右に「アカウントのリージョナル名前空間接尾辞」(-<アカウントID>-ap-northeast-1-an)が表示されます。以下を入力します。

  • バケット名の接頭辞: test-account-regional

入力すると、下の「フルバケット名」に test-account-regional-<アカウントID>-ap-northeast-1-an が組み立てられて表示されます。接頭辞と接尾辞を合わせた長さは 3 文字以上 63 文字以下である必要があります。

バケット名の接頭辞を入力し、フルバケット名が組み立てられた状態
バケット名の接頭辞を入力し、フルバケット名が組み立てられた状態

その他の項目はデフォルトのままにします。

ページ下部の「バケットを作成」をクリックします。

作成完了後、バケット一覧画面にアカウントリージョナル名前空間のバケットが表示されます。バケット名にアカウント ID とリージョンが含まれていることを確認します。

バケット一覧画面(作成したアカウントリージョナル名前空間のバケットが表示されている状態)
バケット一覧画面(作成したアカウントリージョナル名前空間のバケットが表示されている状態)

作成したバケットが属する名前空間を確認する

作成したバケットを選択し、「プロパティ」タブを開きます。

「バケットの概要」には「AWS リージョン」「Amazon リソースネーム (ARN)」「作成日」が表示されます。名前空間の種類を直接示す項目はありません。アカウントのリージョナル名前空間で作成されたかどうかは、バケット名(および ARN)の末尾が -<アカウントID>-<リージョン>-an になっていることで判断します。

バケットのプロパティ(ARN の末尾が -an で終わっている状態)
バケットのプロパティ(ARN の末尾が -an で終わっている状態)

-an は、この名前空間のバケットだけが使えるサフィックスです。グローバル名前空間のバケットには付けられないため、名前を見れば区別できます。

AWS CLI で作成する場合

コンソール操作の代わりに、AWS CLI で作成する場合は以下のコマンドを使用します。

aws s3api create-bucket \
    --bucket test-account-regional-111122223333-ap-northeast-1-an \
    --bucket-namespace account-regional \
    --region ap-northeast-1 \
    --create-bucket-configuration LocationConstraint=ap-northeast-1

--bucket-namespace account-regional パラメータを指定することで、アカウントのリージョナル名前空間でバケットが作成されます。コンソールと違い、--bucket にはサフィックス(アカウント ID とリージョン)を含む完全なバケット名を指定する必要があります。

なお、--bucket-namespace は比較的新しいパラメータです。aws s3api create-bucket help に表示されない場合は AWS CLI を更新してください(執筆時点の AWS CLI 2.33.27 では未対応でした)。また、aws s3api list-buckets のレスポンスにも名前空間を示すフィールドは含まれないため、CLI から確認する場合もバケット名の -an サフィックスで判断します。

CloudFormation で作成する場合

CloudFormation では BucketNamePrefix プロパティを使用すると、サフィックスが自動的に付与されます。

Resources:
  MyBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketNamePrefix: test-account-regional
      BucketNamespace: account-regional

BucketNamePrefix を使用する方式が推奨されており、アカウント ID とリージョンの手動指定が不要になります。

まとめ

  • S3 の従来のグローバル名前空間には、バケット名の乗っ取りや削除後の再利用といったセキュリティリスクがある
  • アカウントリージョナル名前空間は、バケット名に <プレフィックス>-<AccountId>-<Region>-an の形式を導入し、名前の所有権をアカウントとリージョンに紐づける
  • 他のアカウントが同じ名前を使用したり、削除されたバケット名を再利用したりすることが不可能になる
  • マネジメントコンソールではバケット作成時に名前空間を選択するだけで利用できる
  • IAM ポリシーや SCP の条件キー s3:x-amz-bucket-namespace で組織全体に使用を強制できる
  • 新規にバケットを作成する場合は、アカウントリージョナル名前空間の使用が推奨される

参照先

キャリア相談
クラウドおさる

独学の先に、AWS の仕事がある ── ジュニアおさるのキャリア相談

CLF には受かったけれど、次に何をすればいいのか分からない。独学で AWS を学ぶジュニアおさるの相談に、株式会社ジェニュイン代表の土肥が答えています。

  • ✓資格はゴールか、CLF の次に何から手を付けるか
  • ✓EC2 の次に作ってみる構成と、IaC・コスト管理
  • ✓実務経験ゼロでも、面接で話せる「これまで」の作り方
新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方を募集しています。プログラミング未経験から入社して活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次