🏨 高級ホテルの入口で例えると超わかりやすい!
ALBのセキュリティポリシー = ホテルのドアマンのルールブック
「どんなお客様を通すか」「どんな身分証明を認めるか」を決めるルールです。
プロトコル
= お客様が話す「言語」(新しい言語 vs 古い言語)
暗号化方式
= お客様の荷物を守る「金庫」の種類(最新型 vs 旧型)
このルールブックを
「セキュリティポリシー」
と呼びます✨
🏨 高級ホテルのドアマンで完全理解!
ALB = ホテルの正面玄関
お客様(リクエスト)をホテル内(サーバー)に案内する入口。
ただし、誰でも入れるわけではありません!
「どんな言語を話すお客様を通すか」
「どんなセキュリティカードを持っていれば入れるか」
これを事前に決めておくルールです。
TLSプロトコル = 言語
「今一番安全で効率的な言語」
最新のスマートフォンやブラウザが話せます。
「ほとんどの人が話せる標準語」
少し古いデバイスでも対応可能。
「もう使わないほうがいい古語」
セキュリティに問題あり!
暗号スイート = 金庫の種類
「最新の生体認証付き金庫」
破られる可能性がほぼゼロ!
「一般的な電子ロック金庫」
十分安全で多くの場面で使える。
「古いダイヤル式金庫」
プロなら簡単に開けられる!危険!
セキュリティポリシー = ルールの組み合わせ
「どの言語を話すお客様を通すか」+「どの金庫を使うか」
この組み合わせがセキュリティポリシーです!
• 厳格なポリシー :「最新言語のみ+最強金庫のみ」
• 標準ポリシー :「標準言語も+普通の金庫もOK」
• 緩いポリシー :「古い言語も+古い金庫もOK」
🧩 セキュリティポリシーの3つの構成要素
TLSプロトコル
役割: クライアントとALBが安全に会話するための約束事
例え: 日本語の「旧仮名遣い」と「現代仮名遣い」のような違い
選択肢:
• TLS 1.3(最新・推奨)
• TLS 1.2(標準)
• TLS 1.1/1.0(非推奨)
暗号スイート
役割: 通信内容を第三者に見られないようにする
例え: 金庫の「鍵の複雑さ」と「ロックの種類」
含まれるもの:
• 鍵交換方式(ECDHE等)
• 認証方式(RSA等)
• 暗号化方式(AES等)
• ハッシュ関数(SHA等)
セキュリティポリシー
役割: ALBが受け入れる通信条件を定義
例え: ホテルの「入場ルールブック」
AWS提供ポリシー例:
• ELBSecurityPolicy-TLS13-1-2-2021-06
• ELBSecurityPolicy-2016-08
• ELBSecurityPolicy-FS-1-2-Res-2020-10
📡 TLSプロトコル - バージョン比較
PCI DSS非準拠
主要ブラウザで無効化
古いデバイスも対応
ハンドシェイク高速化
2. より安全: 古い脆弱な暗号スイートを完全排除
3. シンプル: 設定ミスが起きにくい構造
4. 0-RTT: 再接続時はさらに高速(ただし注意が必要な機能)
🔐 暗号スイート - 金庫のグレード
• 鍵交換方式 = 金庫の「合鍵の渡し方」(ECDHE = 一度だけ使える暗号化されたメッセージで渡す)
• 認証方式 = 金庫を開ける「本人確認」の方法(RSA = 身分証明書で確認)
• 暗号化方式 = 金庫の「ロックの種類」(AES = 最新の電子ロック)
• ハッシュ関数 = 金庫の「改ざん検知」の仕組み(SHA = 封印シール)
ECDHE鍵交換
SHA-384ハッシュ
→ 金融・医療向け
ECDHE鍵交換
SHA-256ハッシュ
→ 一般的なWebサイト
静的RSA鍵交換
MD5/SHA-1
→ 使用禁止!
• TLS_AES_128_GCM_SHA256
• TLS_AES_256_GCM_SHA384
• TLS_CHACHA20_POLY1305_SHA256
TLS 1.2用:
• ECDHE-RSA-AES128-GCM-SHA256
• ECDHE-RSA-AES256-GCM-SHA384
• ECDHE-RSA-AES128-SHA256
• ECDHE-RSA-AES256-SHA384
注意:
古いクライアント対応が必要な場合のみ使用。 新規構築では避けることを推奨。
• RC4系すべて
• DES/3DES系
• MD5使用のもの
• 静的RSA鍵交換
• CBC モード(可能なら避ける)
理由: 既知の脆弱性あり
📋 AWS提供セキュリティポリシー一覧
| ポリシー名 | TLS 1.3 | TLS 1.2 | TLS 1.1 | TLS 1.0 | 用途 |
|---|---|---|---|---|---|
|
ELBSecurityPolicy-TLS13-1-2-2021-06
🌟 最新推奨 |
✅ | ✅ | ❌ | ❌ | 新規構築に最適 |
| ELBSecurityPolicy-TLS13-1-0-2021-06 | ✅ | ✅ | ✅ | ✅ | TLS 1.3 + 後方互換 |
|
ELBSecurityPolicy-FS-1-2-Res-2020-10
🔒 高セキュリティ |
❌ | ✅ | ❌ | ❌ | 金融・医療向け |
|
ELBSecurityPolicy-2016-08
📌 デフォルト |
❌ | ✅ | ✅ | ✅ | 互換性重視(非推奨) |
| ELBSecurityPolicy-TLS-1-2-2017-01 | ❌ | ✅ | ❌ | ❌ | TLS 1.2のみ |
ALBを作成すると自動的にこのポリシーが設定されますが、TLS 1.0/1.1を許可しているため、 セキュリティ監査で指摘されることがあります。
→ 新規構築時は必ずポリシーを変更しましょう!
💼 ユースケース別:どのポリシーを選ぶ?
金融・医療・政府系
• PCI DSS / HIPAA 準拠
• 最高レベルのセキュリティ
• 前方秘匿性(Forward Secrecy)必須
• 監査対応が必要
ELBSecurityPolicy-FS-1-2-Res-2020-10
または
ELBSecurityPolicy-TLS13-1-2-2021-06
一般的なWebサービス
• モダンブラウザ対応
• バランスの取れたセキュリティ
• パフォーマンス重視
• 新規構築
ELBSecurityPolicy-TLS13-1-2-2021-06
TLS 1.3の高速化メリットも享受!
レガシーデバイス対応
• 古いスマートフォン対応
• IoTデバイス接続
• 古いブラウザサポート
• 移行期間中のシステム
ELBSecurityPolicy-TLS13-1-0-2021-06
⚠️ TLS 1.0/1.1は早めに廃止計画を!
内部システム・API
• 社内システム間通信
• マイクロサービス間通信
• クライアントを制御可能
• 最新環境のみ
ELBSecurityPolicy-TLS13-1-2-2021-06
クライアント側も最新に統一!
🔄 TLS通信の流れ(ハンドシェイク)
2️⃣ ALB「この言語でいこう」
3️⃣ 証明書の確認
4️⃣ 暗号鍵の交換
5️⃣ 暗号化通信開始!
📌 セキュリティポリシーが判断するポイント
クライアントが提示したTLSバージョンは許可されているか?
クライアントが提示した暗号方式は許可されているか?
両方OKなら最も強い組み合わせで接続!
デフォルトの「ELBSecurityPolicy-2016-08」は使わない。 「ELBSecurityPolicy-TLS13-1-2-2021-06」を選択しよう。
2. TLS 1.0/1.1は廃止の方向で:
2020年以降、主要ブラウザはTLS 1.0/1.1を無効化。 レガシー対応が必要でも、廃止計画を立てよう。
3. 前方秘匿性(Forward Secrecy)を確保:
「FS」が含まれるポリシーを選ぶと、過去の通信が後から解読されるリスクを軽減。
4. 定期的な見直し:
AWSは新しいポリシーを追加し続けている。年1回は最新ポリシーへの移行を検討。
5. テスト環境で検証:
ポリシー変更前に、対象クライアントが接続できるかテスト環境で必ず確認!
6. CloudWatchでモニタリング:
TLSネゴシエーション失敗のメトリクスを監視し、問題を早期発見。
⚙️ セキュリティポリシーの設定方法
# HTTPSリスナーのセキュリティポリシーを変更 aws elbv2 modify-listener \ --listener-arn arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:listener/app/my-alb/xxx/yyy \ --ssl-policy "ELBSecurityPolicy-TLS13-1-2-2021-06" # 現在のポリシーを確認 aws elbv2 describe-listeners \ --listener-arns arn:aws:elasticloadbalancing:... \ --query "Listeners[].SslPolicy"
🖥️ マネジメントコンソールでの設定
- EC2 → ロードバランサー → 対象のALB選択
- 「リスナー」タブを開く
- HTTPSリスナーを選択
- 「編集」をクリック
- 「セキュリティポリシー」を変更
- 「変更を保存」
⚠️ 設定時の注意点
- ✅ HTTPSリスナーのみに適用される
- ✅ 変更は即座に反映される
- ✅ 既存の接続には影響しない
- ✅ 新しい接続から新ポリシー適用
- ⚠️ 厳しいポリシーは古いクライアントを拒否
- ⚠️ 事前にテスト環境で検証推奨
🎓 まとめ
🏨 ホテルのドアマン = ALBセキュリティポリシー
「どの言語(TLSプロトコル)を話すお客様を通すか」+
「どの金庫(暗号スイート)を使うか」を決めるルールブック
通信の「言語」
TLS 1.3 / 1.2 推奨
TLS 1.0 / 1.1 は廃止へ
データを守る「金庫」
AES-GCM 推奨
RC4、DES は禁止
用途に合わせて選択
新規は最新を選ぶ
定期的に見直す
🎯 結論:迷ったらこれ!
新規構築?
→
ELBSecurityPolicy-TLS13-1-2-2021-06
金融・医療系?
→
ELBSecurityPolicy-FS-1-2-Res-2020-10
レガシー対応必須?
→
ELBSecurityPolicy-TLS13-1-0-2021-06
+ 廃止計画
セキュリティポリシーは
「守りの要」
🛡️
デフォルトのまま放置せず、適切なポリシーを選んで
安全な通信環境を構築しましょう!🎉