今回はAWSのサーバレスサービスを利用したインフラの構築におけるセキュリティについて
記事を書いていこうと思います!
Lambdaにおけるセキュリティについてのみの投稿のため基本的な
Lambdaの実装方法については記載しないのであしからず。
Lambdaとは
まず、基本的なことですがLambdaとはAWSが提供する
サーバーレスコンピューティングサービスです。
前の記事ではEC2インスタンスを構築したネットワーク環境に配置して
管理していましたが、Lambdaは自前でアプリを動かすためのサーバーの構築や運用を
AWSに任せてクラウド上に作成したプログラムさえ置けば動かすことができる優れものです!
初めて触ったときは概念の理解がイメージしにくかったのですが触れば
とても便利なものと分かります。
EC2との用途の違いはLambdaはAPIを作成してバックエンド処理を行わせるのみで
画面などフロント処理はLambdaではできない点です。
フロント処理は別途サーバーに置くかCloudFrontとS3で配信し、
フロントからAPI Gateway→Lambda経由で呼び出して処理させるのがオーソドックスかと思います。
サーバーレスにおけるセキュリティとは
前述で説明したようにサーバレスとはサーバーの構築・管理の一斉をクラウドサービスに
お任せできるため物理的な管理は不要になります。
また、Lambdaはほかのサービスをトリガーにして動かすのが基本のため
Lambdaのアクセス制御はリソースポリシーによって制御することになります。
図で説明するとこんなイメージです。
API Gatewayからリクエストを受け付け、Lambda関数が実行され、
DynamoDBからレコードを取得するシステムを例にとりましたが、
リソースベースでアクセス制限をすることで意図しないサービスから勝手に
Lambdaが実行されないようになっています。
デメリット
個人的に業務で使っていて不便だなと思ったのが、
LambdaのせいではないですがAPI Gatewayから呼び出す場合、
API Gatewayのリクエストが最大29秒までのため、
処理が重いと落ちるんですよね・・・
一応Step Functionを噛ませることで30秒以上かかっても
処理が終わるまで呼び出しをループさせることは可能ですが。