0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWSセキュリティ&DB設計】Aurora IAM認証 × S3 ゲートウェイVPCエンドポイントによる完全閉域化と「DB+S3」ゴールデンコンビパターン

0
Posted at

📌 はじめに

金融・決済や個人情報を取り扱うエンタープライズシステムでは、「ハードコードされた静的パスワードの完全撤廃」と「トラフィックを一切インターネットへ出さない完全閉域化」が厳格に求められます。

本記事では、AWS Lambda から Amazon Aurora へのアクセスにおいて静的パスワードを全廃する Aurora IAM データベース認証、インターネットを経由せずに Amazon S3 へセキュアにデータを書き込む Gateway VPC Endpoint for S3 の実装パターン、および現代クラウド設計における「DB + S3」の黄金連携ベストプラクティスについて整理します。

1. 業務シナリオとコア要件の整理

業務背景と安全隔離の要件

  • コンピューティング & DB: AWS Lambda と Amazon Aurora は同一 VPC のプライベートサブネット内に配備。
  • 高機密隔離: Lambda の環境変数やコード内にデータベースのマスターパスワードやアクセスキーを一切保持させないこと。
  • データ保存: 処理完了後の大容量データは Amazon S3(SSE-KMS 暗号化)へ保存。

剛性安全要件(セキュリティ制約)

  1. パブリックインターネットの非経由: Lambda から外部 AWS サービス(S3 等)へのアクセスは、完全に AWS 内部プライベートバックボーン経由とし、NAT Gateway やインターネットゲートウェイ(IGW)を経由させないこと。
  2. クレデンシャル漏洩時の影響最小化(最小権限と時限性): 静的・永続的なパスワードを排除し、有効期限が短時間で切れる使い捨ての認証トークンを採用すること。

2. アーキテクチャトポロジー

静的パスワードの代わりに STS が払い出す短命トークン を用いて DB 接続を確立し、S3 へのアクセスはルーティングテーブルに追加した Gateway VPC Endpoint を通じて通信を完全閉域化します。

┌────────────────────────────────────────────────────────────────────────────────────────┐
│ Amazon VPC                                                                             │
│                                                                                        │
│  ┌──────────────────────────────────────────────────────────────────────────────────┐  │
│  │ AWS Lambda 関数 (プライベートサブネットに接続)                                   │  │
│  │                                                                                  │  │
│  │ [ IAM Execution Role ]                                                           │  │
│  │  - アクション 1: rds-db:connect (Aurora 接続用の一時認証トークンを生成: 有効期間15分)│  │
│  │  - アクション 2: s3:PutObject / kms:GenerateDataKey (S3書き込み・KMS暗号化権限)    │  │
│  └──────────────┬───────────────────────────────────────────────────┬───────────────┘  │
│                 │                                                   │                  │
│                 │ 1. 短命IAMトークンによるDB接続                     │ 2. 内部網経由でS3書込 │
│                 ▼                                                   ▼                  │
│  ┌───────────────────────────────┐                 ┌───────────────────────────────┐  │
│  │ Amazon Aurora クラスター      │                 │ S3 ゲートウェイエンドポイント  │  │
│  │                               │                 │ (Gateway VPC Endpoint)        │  │
│  │ - 有効化: IAM Database Auth   │                 │ - 経路設定: pl-xxxx -> vpce-xx │  │
│  │ - 効果: 静的PW不要・短命トークン│                 │ - 効果: 100% AWS内部網経由    │  │
│  └───────────────────────────────┘                 │   NAT Gateway通信費ゼロ       │  │
│                                                    └───────────────┬───────────────┘  │
└────────────────────────────────────────────────────────────────────┼───────────────────┘
                                                                     │ AWS 内部バックボーン
                                                                     ▼ (Internet非経由)
                                                     ┌───────────────────────────────┐
                                                     │ Amazon S3 バケット            │
                                                     │ (SSE-KMS サーバーサイド暗号化) │
                                                     └───────────────────────────────┘

3. なぜこの設計を選択するのか?(2大コアメカニズム)

① 漏洩影響の極小化:Aurora IAM データベース認証

  • パスワードレス接続: データベース接続時のパスワードとして、AWS STS が生成する署名付きの一時認証トークン(Auth Token)を使用します。Lambda の環境変数や Secrets Manager に平文パスワードを置く必要がありません。
  • 15分間の短命ライフタイム: 発行された認証トークンの有効期間は15分間に限定されます。万が一ログ等にトークンが漏洩した場合でも、短時間で物理的に失効するため、長期的な不正アクセスのリスクを根本から遮断できます。

② データ閉域化とコスト最適化:Gateway VPC Endpoint for S3

  • インターネット完全非経由: 通常、パブリックサービスである S3 へのアクセスは NAT Gateway を通過しますが、プライベートサブネットのルートテーブルに S3 用の Gateway VPC Endpoint を設定することで、トラフィックは AWS 内部ネットワーク経由でダイレクトに S3 へルーティングされます。
  • コストとセキュリティの両立: Gateway 型エンドポイントは利用料金が無料(データ転送料金も無料)です。高額な NAT Gateway のデータ処理料金(0.045 USD/GB)を発生させずに、完全閉域網化を達成できます。

4. Lambda 実装例(Python / boto3 によるパスワードレス接続)

import os
import boto3
import pymysql

rds_client = boto3.client('rds', region_name=os.environ['AWS_REGION'])

def get_connection():
    db_endpoint = os.environ['DB_ENDPOINT']
    db_port = int(os.environ.get('DB_PORT', 3306))
    db_user = os.environ['DB_USER']
    
    # 1. IAM 認証トークンを動的に生成 (有効期限15分)
    auth_token = rds_client.generate_db_auth_token(
        DBHostname=db_endpoint,
        Port=db_port,
        DBUsername=db_user,
        Region=os.environ['AWS_REGION']
    )

    # 2. 生成された一時トークンをパスワードとして使用し SSL/TLS 接続
    connection = pymysql.connect(
        host=db_endpoint,
        user=db_user,
        password=auth_token,
        database=os.environ['DB_NAME'],
        port=db_port,
        ssl={'ca': '/opt/python/global-bundle.pem'}, # AWSルートCA証明書
        connect_timeout=5
    )
    return connection

def lambda_handler(event, context):
    conn = get_connection()
    try:
        with conn.cursor() as cursor:
            cursor.execute("SELECT NOW();")
            result = cursor.fetchone()
            print(f"Connected successfully via IAM Auth: {result}")
    finally:
        conn.close()

5. 【現場の知恵】データベースとS3の「黄金連携」4大設計パターン

クラウドアーキテクチャにおいて、「高価なリレーショナルDB」と「安価な分散オブジェクトストレージ(S3)」を役割分担させる組み合わせは、コスト削減とスケーラビリティの鉄板プラクティスです。

パターン名 典型的な適用シナリオ アーキテクチャの役割分担 コアメリット
① Claim-Check パターン
(動静分離・大容量分離)
ユーザーアバター、契約書PDF、音声録音、ECの商品高解像度画像 S3: 実バイナリデータを格納
DB: S3のオブジェクトキー(URL/パス)とメタデータのみを保持
DBのバッファプール汚染を防ぎ、ストレージ肥大化によるバックアップ/リストアの遅延を回避。
② 冷温データ階層化
(Tiering & Archiving)
過去の注文履歴、監査証跡、金融取引ログ(1年以上前のデータ) Aurora: 直近3〜6ヶ月のアクティブなトランザクション(OLTP)
S3/Glacier: 定期バッチ/DMSでParquet形式に変換してS3へ退避
ストレージコストを約80〜90%削減。退避した過去データは Amazon Athena で必要時に直接SQL検索。
③ レイクハウス・分析分離
(Modern Data Lakehouse)
全社BI分析、レコメンデーションエンジン、行動ログ解析 S3: 生データおよび加工済みデータを蓄積する単一の真実(SSOT)
Redshift / Athena: S3上のファイル(Parquet)に対してクエリ実行
本番トランザクションDBに負荷をかけることなく、コンピュート(分析エンジン)とストレージを完全分離。
④ 高速監査とクロスリージョンDR 決済トランザクションログ、コンプライアンス要件に基づく遠隔地バックアップ DB: ローカルでの高スループットコミット
S3: 変更ログやエクスポートデータを S3 クロスリージョンレプリケーション(CRR)で別リージョンへ非同期複製
高価なマルチリージョンDBクラスターを常時稼働させることなく、極めて低コストで広域災害対策(DR)を実現。

6. まとめ

  • 認証の近代化: データベースのパスワード管理から脱却し、Aurora IAM 認証 による短命トークン接続へ移行することで、クレデンシャル漏洩リスクを最小化する。
  • 内部網の保護: Gateway VPC Endpoint を活用し、インターネットおよび NAT Gateway を経由せずに S3 へのアクセスを完全閉域化して、セキュリティ強化と通信コストゼロを両立する。
  • データ配置の最適化: 構造化メタデータは DB へ、非構造化バイナリやコールドデータは S3 へオフロードする(Claim-Check / 階層化)ことで、DB のパフォーマンス向上と大幅なインフラコスト削減を達成する。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?