Serverless FrameworkのIAMロールに広すぎる権限

関数の実行ロールがすべてのアクションとリソースを許可している状態

説明

IAMポリシーの Effect: Allow、Action: "*"、Resource: "*" の組み合わせは、すべてのアクションとリソースへの権限を付与します。他のポリシーによる制限がある場合も、実行ロールには関数に必要な権限だけを付与してください。

想定される影響

関数の侵害やコードの誤りが、多くのAWSリソースの読み取り、変更、削除に及ぶ可能性があります。

対処方法

provider.iam.role.statements に必要なアクションと対象リソースを明示してください。リソース単位の制限に対応しないアクションは、適用可能な条件とともに別途許可してください。

例

次の抜粋のポリシーステートメントは、example-bucket 内のオブジェクトに対する s3:GetObject のみを許可します。関数定義やログ出力などの必要な権限は省略しています。

変更前

yaml
service: service
frameworkVersion: "4"
provider:
  name: aws
  runtime: nodejs22.x
  iam:
    role:
      statements:
        - Effect: Allow
          Resource: "*"
          Action: "*"

変更後

yaml
service: service
frameworkVersion: "4"
provider:
  name: aws
  runtime: nodejs22.x
  iam:
    role:
      statements:
        - Effect: Allow
          Resource: arn:aws:s3:::example-bucket/*
          Action:
            - s3:GetObject

参考資料