AWS Lambdaは、サーバーレスアーキテクチャの一例であり、アプリケーションのコードを実行するためのサーバーを提供することなく、必要なコンピューティングリソースを提供します。
しかしながら、サーバーレスアプリケーションがどれだけセキュリティを考慮しているとしても、Lambda関数自体が適切に保護されていなければ、重要なデータが漏洩する危険性があります。
ここでは、中堅エンジニアがLambda関数を保護するためのいくつかのベストプラクティスについて紹介します。
IAMロールの使用
Lambda関数に必要な最低限のアクセス権限を持つIAMロールを使用することが、Lambda関数のセキュリティを向上させる最も重要な方法の1つです。
IAMロールを使用することで、Lambda関数は必要なアクセス権限を持つが、アプリケーション全体のセキュリティに悪影響を与える可能性がある権限を持たないようにすることができます。
また、IAMロールを使用することで、Lambda関数の認証情報を直接コードに書く必要がなくなり、認証情報が漏洩する危険性を減らすことができます。
VPC内での実行
Lambda関数をVPC内で実行することで、Lambda関数がインターネット経由で攻撃される可能性を減らすことができます。
VPC内でLambda関数を実行することで、Lambda関数はVPC内のリソースにアクセスすることができ、セキュリティグループやネットワークアクセス制御リスト(NACL)などのVPCレベルのセキュリティ機能を利用することができます。
VPC内でLambda関数を実行する場合は、適切なサブネットとセキュリティグループを選択する必要があります。
データ暗号化
Lambda関数が処理するデータを暗号化することで、Lambda関数が漏洩する可能性があるデータを保護することができます。
Lambda関数が処理するデータが機密性の高い情報である場合、データを暗号化する必要があります。Lambda関数には、AWS Key Management Service(KMS)を使用してデータを暗号化することができます。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUUzJTgwJTkwQVdTJUUzJTgwJTkxbGFtYmRhJUUzJTgxJUE3S01TJUUzJTgyJTkyJUU3JTk0JUE4JUUzJTgxJTg0JUUzJTgxJUE2JUU3JTkyJUIwJUU1JUEyJTgzJUU1JUE0JTg5JUU2JTk1JUIwJUUzJTgxJUFFJUU2JTlBJTk3JUU1JThGJUI3JUU1JThDJTk2JUUzJTgzJUJCJUU1JUJFJUE5JUU1JThGJUI3JUU1JThDJTk2JUUzJTgwJTkwUHl0aG9uJUUzJTgwJTkxJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz1jN2JlMTkzN2Q5MzI0ZmI5OTNmNzdlM2ExMDlmMWVhZg&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDAyMDE5U2h1biZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MWRhM2FlY2ViYjczZTE1MWFjZmQxZjg3MDZjMGUyOWI&blend-x=142&blend-y=486&blend-mode=normal&s=44ab67fd5c43b4ef4dec4be4990d5ecb)
KMSは、暗号化キーを提供することで、Lambda関数が処理するデータを暗号化することができます。
また、Lambda関数からKMSにアクセスするためのIAMロールを使用することができます。
ログの監視
Lambda関数のログを監視することで、潜在的な攻撃を検出することができます。
Lambda関数のログには、Lambda関数が実行されたときに発生したすべてのアクティビティが記録されます。
ログから異常なアクティビティを検出することができ、セキュリティインシデントを迅速に検出し、対処することができます。
AWS CloudWatch Logsを使用してLambda関数のログを監視することができます。
パッチ適用
Lambdaランタイムや依存関係のパッケージなど、Lambda関数に使用されるソフトウェアのパッチを適用することは、Lambda関数のセキュリティを維持するために非常に重要です。
パッチを適用することで、既知の脆弱性に対処することができます。
インフラ側のパッチはLambdaでは自動的に適用されます。
![](https://tokku-engineer.tech/wp-content/uploads/cocoon-resources/blog-card-cache/c94cb44bac0b155cad9e923137017c79.png)
まとめ
AWS Lambdaのセキュリティを確保するためには、IAMロールの使用、VPC内での実行、データ暗号化、ログの監視、パッチ適用などのベストプラクティスを実施する必要があります。
これらのプラクティスを実施することで、Lambda関数をよりセキュアに保護することができます。
Lambda関数は、今後ますます重要性を増していくことが予想されるサーバーレスアプリケーションの一部であり、セキュリティの確保は重要な課題です。
コメント