こんにちは!
昨年2020年の10月に、AppSync でWAFがサポートされましたね!AppSync のセキュリティ対策について悩んでる方、ぜひ WAF を適用しましょう。
今回は WAF の適用方法や AppSync のセキュリティ対策について簡単に解説します。よろしくお願いいたします!
AWS のセキュリティ対策に必要不可欠な AWS WAF、以前は CloudFront やALB、API Gateway にしか適用できませんでしたが、アップデートによりAppSync でも使えるようになりました。
既存の AppSync に対してもお手軽に WAF を適用できますので、ぜひ試していただければと思います。
AppSync に WAF を適用する方法は簡単です。この記事では GUI コンソール画面、CloudFormation 、この2つの方法で WAF を有効化するプロセスをご紹介します。
GUI コンソール画面の場合は対象の AppSync を選択し、設定画面に移動してください。すると WAF を有効無効にできるトグルスイッチがありますので、そちらを有効にしましょう。
有効にすると、Web ACL(WAF のアクセスコントロールリスト)を選択できるので、選択したあとに設定を保存すれば WAF の適用が完了します。
Web ACL 未作成の場合は、「Create Web ACL」というボタンがありますので、そちらで作成してから AppSync の設定を保存してください。
いかがでしょう?とても簡単に WAF を有効にできますね。
では、次に CloudFormation で WAF を有効にする方法をご紹介いたします。
さっそくコードを見てみましょう。
Resources:
GraphQLApi:
Type: AWS::AppSync::GraphQLApi
Properties:
AuthenticationType: API_KEY #required
Name: AppSyncDemo #required
WebACL:
Type: AWS::WAFv2::WebACL
Properties:
Name: appsyncTestACL
DefaultAction:
Block: {}
Scope: REGIONAL
VisibilityConfig:
CloudWatchMetricsEnabled: true
MetricName: appsyncTestACL
SampledRequestsEnabled: true
Rules:
-
Action:
Allow: {}
Name: myIP
Priority: 0
Statement:
IPSetReferenceStatement:
Arn: !GetAtt IPSet.Arn
VisibilityConfig:
CloudWatchMetricsEnabled: true
MetricName: appsyncTestRule
SampledRequestsEnabled: true
IPSet:
Type: "AWS::WAFv2::IPSet"
Properties:
Addresses:
- xx.xx.xx.xx/32
IPAddressVersion: IPV4
Name: appsyncTestIpset
Scope: REGIONAL
WebACLAssociation:
Type: AWS::WAFv2::WebACLAssociation
Properties:
ResourceArn: !GetAtt GraphQLApi.Arn
WebACLArn: !GetAtt WebACL.Arn
AppSync の WAF 有効化は、AppSync ではなく WAF の方から有効化します。
リソースタイプ「AWS::WAFv2::WebACLAssociation」を見ると、AppSyncと Web ACL を関連付けていることが分かると思います。必要なものは、AppSync の API の ARN と、WAF の Web ACL の ARN の2つのみです。とてもシンプルな記述で分かりやすいと思います。
AppSync の CloudFormation のテンプレートリファレンスを見て、どこにあるんだと思われた方、WAFv2 のところに記載がありますのでご注意ください(WAF ではなく WAFv2 ですのでこちらも気をつけてください)。
サンプルコードでは、1つのグローバルIP を許可しそれ以外は拒否するルールを作成する記述となっています。それをデプロイしてみて、AppSync に対してクエリを実行してみました。
WAF のコンソール画面にてログを確認すると、一部の IP を拒否していることが分かります。想定通りの挙動です。
AppSync だからといって WAF の設定に特別なアプローチはありませんので、いつも通りに WAF を設定できます。AppSync のセキュリティ対策に WAF は必要不可欠かと思いますので、ぜひ適用した状態で運用していきましょう。
このブログでは、GraphQL や GraphQL のマネージドサービスである AWS AppSync の記事を随時公開しておりますので、ご興味のある方はほかの記事ものぞいてみてください!
AppSync に関する開発は、お気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎