AWS Shield AdvancedのTips

仕事でAWS Shield Advancedを利用する機会があったので、備忘もかねてTipsをまとめました。

# AWS Shieldについて
AWSのリソースをDDoSから保護するサービスです。
AWS ShieldにはStandardタイプとAdvancedタイプがあります。

## AWS Shield Standardについて
- 特に有効化する必要はなく、すべてのAWSリソースに標準適用されています。
- DDoSの保護対象はL3層とL4層になります。
- 料金は発生しません。

## AWS Shield Advancedについて
- 初期設定では無効化されていて、有効化するとAWS Shield Standardの機能に加えてL7層の保護が追加されます。
- AWS Shield Advancedの保護対象は以下になります。
    - Application Load Balancer
    - Route 53のホストゾーン
    - Amazon CloudFront
    - AWS Global Accelerator
    - EC2(Elastic IPが関連付けられているリソース)
- 上記のAWS Shield Advancedで保護対象に設定したリソースについては、DDoSの被害時にDDoS対応専門チーム(SRT)のサポートを24/365で受けることができます。
- 料金は1年間のサブスクリプション契約で3000$/月発生します。Organizations単位で適用することが可能。
![compare.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310014/778b9ceb-cdd7-0e7a-4319-86eea32155fa.png)


# AWS Shield AdvancedのTips
仕事でAWS Shield Advancedを利用して得られたTipsをダラダラと書いていきます。

## サポートを利用するときは英語で起票する
DDoS被害を受けた際はサポートチケットを起票してSRTのサポートを受けることができます。
しかし、日本語での対応を希望する場合は以下のような制約があります。
- SRTと直接やり取りはできない
- 日本語のサポートエンジニアがSRTと確認を進めながら状況の分析や緩和策の適用を行う
- 平日9時~18時までのベストエフォート対応になる

参考URL：https://aws.amazon.com/jp/premiumsupport/jp_shield_support/
![sapo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310014/bd531141-254e-9667-538f-afe75066f8d3.png)


このように日本語でサポートを起票する場合は、SRTと直接やり取りを行いリアルタイムでDDoSへの対応を行うことや、24/365の対応ができなくなってしまいます。
SRTのサポートを利用するときは英語で起票しましょう。
どうしてもシステム運用者の都合で日本語でのサポート対応を受ける必要があり、かつリアルタイムで24/365の対応も必要になる場合は、サードパーティのWAF運用サービスの利用を検討しましょう。

## WAFログのS3バケットはSSE-S3で暗号化する
SRTにWAFログのアクセス権限を付与することで、お客様の代わりに分析してDDoS攻撃の緩和に最適なWAFルールをカスタマイズします。そのためには、SRTに必要なアクセス権限を持ったIAMロールの作成とWAFログバケットを指定する必要があります。

ここで注意点が1つあります。
WAFログを格納するS3バケットは基本的に暗号化すると思います。
S3の暗号化方式としてSSE-S3やSSE-KMSなどがありますが、SRTがWAFログにアクセスできるようにするためには**SSE-S3**で暗号化する必要があります。
SSE-KMSで暗号化している場合、SRTはWAFログにアクセスすることができません。
SRTのサポートを利用する場合は、WAFログ用のS3バケットの暗号化方式に気を付けましょう。

参考URL：https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/ddos-srt-access.html
![WAF.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310014/f1b62465-46a9-2995-72aa-4ccf641a7407.png)
※キーポリシーやIAMロールの権限でKMSキーへのアクセス権限を与えればできるのではないかと考え、AWSサポートへ問い合わせたのですがSSE-S3でないとアクセスできないとのことでした。

## WAFのルールは惜しまず活用していく
Shield Advancedの保護対象になっているリソースにWAFが統合されている場合は、WAFの基本料金が発生しません。Shield Advancedの料金のみになります。
WAFのルールは惜しまず適用しましょう。

WAFの基本料金は以下の3つです。
- Web ACL：5$/月
- ルール：1$/月
- リクエスト数：0.6$/100万リクエスト

参考URL：https://aws.amazon.com/jp/shield/pricing/
![Price.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310014/81edef74-292f-95cb-37c9-68aa001fe59d.png)

ただし料金が発生しないのはWAFの基本料金のみです。Bot ControlやCAPTCHAなどのWAFのオプションは料金が発生するので注意が必要です。
また、WAFのキャパシティユニットが1500WCUを超過する場合は500WCUごとに100万当たりのリクエスト数が0.2$加算されるのでこちらも注意が必要です。
Shield Advancedの保護対象になっているリソースで1600WCU利用している場合は、100万当たりのリクエストが0.2$発生します。

## API GatewayはCloudFrontと統合して利用する
API GatewayはShield Advancedの保護対象として直接統合することはできません。
ですが、API Gatewayに対して大規模なDDoSへの対策が必要であったため、CloudFrontと統合して利用しました。
CloudFrontはShield Advancedの保護対象のリソースにできるため、API GatewayとCloudFrontを統合することで、間接的にAPI Gatewayに対してShield AdvancedでのDDoS対策が可能になります。
![API.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310014/d33d5e4b-f511-67ef-fd52-40b7577dada5.png)

### API Gatewayのスロットリング機能との比較
API Gatewayはスロットリング機能でもDDoS対策は可能ですが、Shield Advancedを有効にしている場合は他リソースと統合して利用することをオススメします。
![suro.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310014/b25e5731-4a5d-856a-3505-f91ae2f38ec3.png)
スロットリング機能では様々なカスタマイズができるため、APIキーで有料プラン・無料プランでの異なるアクセス制限などはスロットリング機能が有効かと思います。
目的が大規模なDDoS対策かつ、Organiszations単位で有効化している場合や別リソースで大規模なDDoS対策のために有効化している場合は、API Gatewayも相乗りしてShield Advancedを利用することで実装を容易にできたり、サポート機能も充実しているのでオススメです。

# 最後に
自身への備忘もかねてShield Advancedに関するTipsをブログにしてみました。
ブログ自体初の試みであるため、間違い等あればご指摘いただけると幸いです。
最後までご覧いただきありがとうございます！