@@ -224,15 +224,15 @@ resource "aws_iam_role_policy" "kinesis_firehose_logs_policy" {
224224 " logs:CreateLogStream" ,
225225 " logs:PutLogEvents"
226226 ],
227- Resource = " arn:aws:logs:${ var . default_aws_region } :${ data . aws_caller_identity . current . account_id } :log-group:/aws/kinesisfirehose/${ module . eligibility_audit_firehose_delivery_stream . firehose_stream_name } :log-stream:*"
227+ Resource = " arn:aws:logs:${ var . default_aws_region } :${ data . aws_caller_identity . current . account_id } :log-group:/aws/kinesisfirehose/${ local . firehose_stream_name } :log-stream:*"
228228 },
229229 {
230230 Effect = " Allow" ,
231231 Action = [
232232 " logs:DescribeLogGroups" ,
233233 " logs:DescribeLogStreams"
234234 ],
235- Resource = " arn:aws:logs:${ var . default_aws_region } :${ data . aws_caller_identity . current . account_id } :log-group:/aws/kinesisfirehose/${ module . eligibility_audit_firehose_delivery_stream . firehose_stream_name } "
235+ Resource = " arn:aws:logs:${ var . default_aws_region } :${ data . aws_caller_identity . current . account_id } :log-group:/aws/kinesisfirehose/${ local . firehose_stream_name } "
236236 }
237237 ]
238238 })
@@ -256,6 +256,109 @@ resource "aws_iam_role_policy_attachment" "lambda_insights_policy" {
256256 policy_arn = " arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy"
257257}
258258
259+ # Policy document to read from Kinesis Source stream
260+ data "aws_iam_policy_document" "kinesis_source_access" {
261+ statement {
262+ sid = " AllowReadFromKinesisSourceStream"
263+ effect = " Allow"
264+
265+ actions = [
266+ " kinesis:DescribeStream" ,
267+ " kinesis:DescribeStreamSummary" ,
268+ " kinesis:GetRecords" ,
269+ " kinesis:GetShardIterator" ,
270+ " kinesis:ListShards" ,
271+ " kinesis:SubscribeToShard" ,
272+ ]
273+
274+ resources = [
275+ aws_kinesis_stream . kinesis_source_stream . arn ,
276+ ]
277+ }
278+ }
279+
280+ # Policy document to use KMS key for reading from Kinesis Source stream
281+ data "aws_iam_policy_document" "kinesis_source_kms_read_access" {
282+ statement {
283+ sid = " AllowUseOfKinesisSourceKeyForReads"
284+ effect = " Allow"
285+
286+ actions = [
287+ " kms:Decrypt" ,
288+ " kms:GenerateDataKey" ,
289+ " kms:DescribeKey"
290+ ]
291+
292+ resources = [
293+ aws_kms_key . kinesis_data_stream_kms_key . arn
294+ ]
295+ }
296+ }
297+
298+ # Attach kinesis read policy to firehose role
299+ resource "aws_iam_role_policy" "kinesis_firehose_read_policy" {
300+ name = " KinesisSourceReadAccess"
301+ role = aws_iam_role. eligibility_audit_firehose_role . id
302+ policy = data. aws_iam_policy_document . kinesis_source_access . json
303+ }
304+
305+ # Attach kinesis source stream KMS read policy to firehose role
306+ resource "aws_iam_role_policy" "firehose_kinesis_source_kms_policy" {
307+ name = " KinesisSourceKmsReadAccess"
308+ role = aws_iam_role. eligibility_audit_firehose_role . id
309+ policy = data. aws_iam_policy_document . kinesis_source_kms_read_access . json
310+ }
311+
312+ # Policy document for Lambda to write to Kinesis stream
313+ data "aws_iam_policy_document" "kinesis_write_access" {
314+ statement {
315+ sid = " AllowWriteToKinesisStream"
316+ effect = " Allow"
317+
318+ actions = [
319+ " kinesis:PutRecord" ,
320+ " kinesis:PutRecords"
321+ ]
322+
323+ resources = [
324+ aws_kinesis_stream . kinesis_source_stream . arn
325+ ]
326+ }
327+ }
328+
329+ # Policy document to use the KMS key
330+ data "aws_iam_policy_document" "kinesis_kms_write_access" {
331+ statement {
332+ sid = " AllowUseOfKinesisStreamKeyForWrites"
333+ effect = " Allow"
334+
335+ actions = [
336+ " kms:Encrypt" ,
337+ " kms:GenerateDataKey" ,
338+ " kms:DescribeKey"
339+ ]
340+
341+ resources = [
342+ aws_kms_key . kinesis_data_stream_kms_key . arn
343+ ]
344+ }
345+ }
346+
347+
348+ # Attach kinesis write policy to Lambda role
349+ resource "aws_iam_role_policy" "lambda_kinesis_write_policy" {
350+ name = " KinesisWriteAccess"
351+ role = aws_iam_role. eligibility_lambda_role . id
352+ policy = data. aws_iam_policy_document . kinesis_write_access . json
353+ }
354+
355+ # Attach kinesis KMS access policy to Lambda role
356+ resource "aws_iam_role_policy" "lambda_kinesis_kms_policy" {
357+ name = " KinesisStreamKmsWriteAccess"
358+ role = aws_iam_role. eligibility_lambda_role . id
359+ policy = data. aws_iam_policy_document . kinesis_kms_write_access . json
360+ }
361+
259362# Policy doc for S3 Audit bucket
260363data "aws_iam_policy_document" "s3_audit_bucket_policy" {
261364 statement {
0 commit comments