AWS Lambda関数コードの参照とダウンロードをブロックする方法


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関数としてデプロイされたコードの対策であり、デプロイ前のコードについては別途対策が必要です。

参考文献