Lambda特有の情報漏洩リスク
AWS Lambdaベースのサーバレスアプリケーションならではの情報漏洩リスクとして、AWSマネジメントコンソールまたはAWS CLI経由で関数のコードが漏洩したり、zipファイルごとダウンロードされるケースが考えられます。
AWS CodeCommit等リポジトリ側の情報漏洩リスクに比べて、Lambda関数 (Function) 自体の情報漏洩リスクは言及すらされずに放置されるケースが多いようで、以下に備忘を兼ねてまとめてみました。
対応策
IAMユーザが上記の操作をしてもブロック (拒否) するためには、以下のIAMポリシーを設定します。
IAMPolicy
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyDownloadLambdaFunctionCode",
"Effect": "Deny",
"Action": "lambda:GetFunction",
"Resource": "*"
}
]
}
効果
AWSマネジメントコンソールの「設定」タブでは、本来は以下画像のDesignerより下に表示されるはずのLambda関数コード等の詳細情報が、全く表示されなくなります。
また、Lambda関数をzipファイルでダウンロードできなくなります。
補足
- IAMユーザ・グループ単位で設定すれば、特定のユーザ・グループのみ適用できます。
- AWS OrganizationsやIAM Permissions Boundaryを併用すると、一元的に権限を適用できます。
- Lambda関数としてデプロイされたコードの対策であり、デプロイ前のコードについては別途対策が必要です。
参考文献
- GetFunction (From AWS Lambda 開発ガイド)