Graylog2 / Graylog2/graylog2-server

AWS Kinesis input: validate DynamoDB permissions in the setup health check

Open
#26,903 0 comments 1 reaction 0 assignees View on GitHub
Dominant language
Java
Stars
8.1k
Forks
1.1k
Avg merge
1d 20h
Merged PRs (30d)
217

Description

Follow-up from #26898.

`KinesisService.healthCheck()` validates only Kinesis read actions, so a credential with zero DynamoDB rights passes the setup wizard and the input then fails at runtime. This is the layer that would have prevented Graylog2/graylog-plugin-enterprise#15073 rather than reporting it after the fact.

KCL 3.5 stores its coordination state in DynamoDB and needs actions that KCL 2.x did not, now listed in the AWS Kinesis/CloudWatch section of `UPGRADING.md`. The wizard could check the ones that are cheap to probe before the input is ever started, most usefully `dynamodb:Query` on `table/graylog-aws-plugin-*/index/*` and `dynamodb:UpdateTable` on the lease table.

Note `dynamodb:UpdateTable` is worth prioritising: #26898 established that a denial of it is not detectable at runtime at all. KCL fails to create the lease-table index, a KCL idempotence bug makes the second initialization attempt skip index creation entirely, and the input then starts and fails with `ResourceNotFoundException` rather than an authorization error.

A pre-flight check is also the only place that can catch a missing permission without waiting for the two-minute runtime detection window.

Contributor guide

Open the contributing guide

Research direction

Start with KinesisService.healthCheck() and the AWS Kinesis/CloudWatch section of UPGRADING.md, which lists the newer KCL permissions. Trace how the setup wizard probes permissions, then define checks for dynamodb:Query on the KCL index path and dynamodb:UpdateTable on the lease table. Done means denied DynamoDB access is reported during setup rather than after the input starts.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, java
Domain
cloud, databases
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.