AWSリソースへのセキュアなアクセスを設計する

Amazon S3とは

Amazon S3(Simple Storage Service)は、AWSが提供するオブジェクトストレージサービスです。業界をリードする拡張性、データ可用性、セキュリティ、パフォーマンスを提供し、あらゆる規模や業界の企業が、Webサイト、モバイルアプリケーション、バックアップ、アーカイブ、エンタープライズアプリケーション、IoTデバイス、ビッグデータ分析など、さまざまなユースケースでデータを保存および保護するために使用しています。

IAMの基本構成
👤IAMプリンシパル(ユーザー/ロール)📋IAMポリシー(権限定義)☁️AWSリソース(S3/EC2等)アタッチアクセス制御

AWSへのアクセスはIAMプリンシパル(ユーザー・ロール・サービス)が起点となります。

プリンシパルにはIAMポリシーがアタッチされ、そのポリシーに基づいてAWSリソースへのアクセスが許可または拒否されます。

最小権限の原則に従い、必要最低限の権限のみを付与することがベストプラクティスです。

S3オブジェクトストレージの全体像
🖥️クライアント(ブラウザ/SDK)🗄️Amazon S3🪣バケット📦オブジェクト(データ+メタ)🔐IAM(アクセス制御)🧊Glacier(アーカイブ)HTTPS格納保持認可ライフサイクル
図1: クライアントからS3バケット・オブジェクトへの構造

S3の主な特徴

1. 高い耐久性と可用性

Amazon S3は、99.999999999%イレブンナイン)の耐久性を提供します。これは、1000万個のオブジェクトを保存した場合、平均して10,000年に1つのオブジェクトが失われる可能性があることを意味します。データは自動的に複数のアベイラビリティゾーン(AZ)に複製されるため、高い可用性も実現されています。

耐久性: 99.999999999% (11 9's)
可用性: 99.99%(S3 Standard)
レプリケーション: 最低3つのAZに自動複製

2. スケーラビリティ

S3は事実上無制限のストレージ容量を提供します。

保存できるオブジェクトの数に制限はなく、各オブジェクトは最大5TBまでのサイズに対応しています。容量の事前プロビジョニングは不要で、使用した分だけ料金を支払います。

S3のストレージクラス

S3には、アクセス頻度やパフォーマンス要件に応じて選択できる複数のストレージクラスがあります。

ストレージクラス用途アクセス頻度
S3 Standard頻繁にアクセスされるデータ高頻度
S3 Intelligent-Tieringアクセスパターンが不明または変化するデータ可変
S3 Standard-IA低頻度だが即座にアクセスが必要なデータ低頻度
S3 One Zone-IA再作成可能な低頻度アクセスデータ低頻度
S3 Glacier Instant Retrievalアーカイブデータ(ミリ秒取得)極低頻度
S3 Glacier Flexible Retrieval長期アーカイブ(分〜時間取得)アーカイブ
S3 Glacier Deep Archive最安値の長期アーカイブ(12時間取得)アーカイブ

S3の主なユースケース

1. 静的Webサイトホスティング

S3は静的Webサイトのホスティングに最適です。HTML、CSS、JavaScriptファイルをS3に配置し、静的ウェブサイトホスティング機能を有効にすることで、高可用性で低コストなWebサイトを運用できます。

# S3バケットの作成
aws s3 mb s3://my-website-bucket

# ウェブサイトファイルのアップロード
aws s3 sync ./website-files s3://my-website-bucket

# 静的ウェブサイトホスティングの有効化
aws s3 website s3://my-website-bucket --index-document index.html

2. バックアップとアーカイブ

S3の高い耐久性により、重要なデータのバックアップ先として最適です。ライフサイクルポリシーを使用して、古いデータを自動的に低コストのストレージクラス(Glacierなど)に移行できます。

3. ビッグデータ分析

S3はデータレイク構築の基盤として広く使用されています。Amazon Athena、Amazon EMR、AWS Glueなどのサービスと組み合わせることで、S3に保存された大量のデータを直接分析できます。

まとめ

Amazon S3は、その高い耐久性可用性セキュリティ、そして柔軟な料金体系により、現代のクラウドアーキテクチャにおいて不可欠なサービスとなっています。静的Webサイトホスティングから大規模データレイクまで、幅広いユースケースに対応できる汎用性の高さが特徴です。

S3を効果的に活用するには、適切なストレージクラスの選択ライフサイクルポリシーの設定、セキュリティベストプラクティスの実装が重要です。AWS認定試験でもS3は頻出トピックなので、しっかりと理解を深めましょう。

画像サイズ比較(small / medium / large)

size フィールドで画像の表示幅を制御できます。

noiman — small
size: "small"(最大240px)
noiman — medium
size: "medium"(最大480px)
noiman — large(デフォルト)
size: "large" または省略(全幅)

--- 新要素サンプル ---

インライン装飾(paragraph)

太字テキスト斜体テキストインラインコードAWSドキュメント のリンクが使えます。組み合わせも可能で、`SSE-KMS` のように記述できます。

callout: note / warning / tip / important

S3バケット名はグローバルでユニークである必要があります。削除後のバケット名は他のユーザーに使用される可能性があります。

パブリックアクセスを有効にする場合は十分注意してください。意図しないデータ漏洩につながる可能性があります。

試験ではストレージクラスの違いがよく問われます。特に Glacier Flexible Retrieval(分〜時間)と Glacier Deep Archive(12時間)の取得時間を覚えておきましょう。

カスタムラベルの例

title フィールドを指定するとデフォルトラベル(IMPORTANT)を上書きできます。

steps(手順ブロック)

  1. 1
    S3バケットを作成する

    AWSコンソールまたは aws s3 mb コマンドでバケット名とリージョンを指定して作成します。

  2. 2
    バケットポリシーを設定する

    IAMポリシーと組み合わせて 最小権限の原則 に従ったアクセス制御を設定します。

  3. 3
    デフォルト暗号化を有効にする

    SSE-S3 または SSE-KMS を選択してデフォルト暗号化を有効にします。

  4. 4
    ライフサイクルルールを追加する(descriptionなしの例)

ネストリスト(2階層)

  • S3 ストレージクラス
    • Standard — 頻繁にアクセスするデータ
    • Intelligent-Tiering — アクセスパターンが不明な場合
    • Glacier Deep Archive — 最安値の長期保存
  • 暗号化の種類
    • SSE-S3 — AWSが鍵を管理
    • SSE-KMS — KMSで鍵を管理
    • SSE-C — ユーザーが鍵を管理
  • 通常の文字列アイテム(後方互換チェック用)

インライン装飾付きリスト

  1. バケットポリシー — バケット単位でアクセスを制御する
  2. IAMポリシー — ユーザー・ロール単位で制御する
  3. aws s3api put-bucket-policy コマンドで設定可能
  4. S3セキュリティベストプラクティス
QUIZ

理解度チェック

まずは1問ずつ答えてみましょう。

Q1Amazon S3の耐久性(イレブンナイン)を表す数値はどれですか?

Q2S3に保存できる1オブジェクトの最大サイズは?

Q3アクセスパターンが不明または変化するデータに最適なストレージクラスは?