タダです.
業務で Security Hub から [Lambda.1] Lambda function policies should prohibit public access
というアラートが飛んできました.対応してアラートを消したのですが,その対応を備忘録として書いておきます.
アラートの原因
アラートの原因は S3 イベントから発火する Lambda のリソースベースポリシー の設定が下記のようになっていました.
ポリシー例
{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "lambda-allow-s3-my-function", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:ap-northeast-1:123456789012:function:my-function", "ArnLike": { "AWS:SourceArn": "arn:aws:s3:::my-bucket" } } } ] }
原因の分析
リソースベースのポリシーには、別のアカウントまたは AWS のサービスが関数にアクセスしようとしたときに適用されるアクセス許可が表示されます
ドキュメントをみていた際に上記引用文の説明を見て,リソースベースポリシーでは AWS:SourceArn
でリソースを明示してかつどの AWS アカウントからアクセスが有るかをポリシーに記載する必要があるかと思い,下記を追記してみることにしました.
"Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" },
リソースベースポリシーに AWS アカウントを追加する
アラートが発生した Lambda の 設定 > アクセス権限 > リソースベースのポリシー
から S3 のポリシーを選択して編集を押します.編集画面でソースアカウントに S3 がある AWS アカウント番号を記載して保存すれば反映完了です.
この対応後 Security Hub からのアラートも収まったので,対応として適切だった模様です.
まとめ
Security Hub からの Lambda に関するアラートを初めて対応したのでその模様を記事にしました.Security Hub のアラートの対応が初めてだったしリソースベースポリシーがどう影響するのかを学べた経験になりました.