@@ -9,6 +9,64 @@ locals {
9
9
bucketname = " ${ var . namespace } -${ var . bucketname } "
10
10
}
11
11
12
+ # # Data
13
+
14
+ data "aws_iam_policy_document" "bucket" {
15
+ statement {
16
+ effect = " Allow"
17
+
18
+ principals {
19
+ type = " Service"
20
+ identifiers = [" cloudtrail.amazonaws.com" ]
21
+ }
22
+
23
+ actions = [" s3:GetBucketAcl" ]
24
+ resources = [" arn:aws:s3:::${ local . bucketname } " ]
25
+ }
26
+
27
+ statement {
28
+ effect = " Allow"
29
+
30
+ principals {
31
+ type = " Service"
32
+ identifiers = [" cloudtrail.amazonaws.com" ]
33
+ }
34
+
35
+ actions = [" s3:PutObject" ]
36
+ resources = [" arn:aws:s3:::${ local . bucketname } /*" ]
37
+
38
+ condition {
39
+ test = " StringEquals"
40
+ variable = " s3:x-amz-acl"
41
+ values = [" bucket-owner-full-control" ]
42
+ }
43
+ }
44
+ }
45
+
46
+ data "aws_iam_policy_document" "assume_role" {
47
+ statement {
48
+ effect = " Allow"
49
+ sid = " "
50
+
51
+ principals {
52
+ type = " Service"
53
+ identifiers = [" cloudtrail.amazonaws.com" ]
54
+ }
55
+
56
+ actions = [" sts:AssumeRole" ]
57
+ }
58
+ }
59
+
60
+ data "aws_iam_policy_document" "logs" {
61
+ statement {
62
+ effect = " Allow"
63
+ actions = [" logs:CreateLogStream" , " logs:PutLogEvents" ]
64
+ resources = [
65
+ " ${ aws_cloudwatch_log_group . cloudtrail . arn } :*"
66
+ ]
67
+ }
68
+ }
69
+
12
70
# # Resources
13
71
14
72
# ## Implementation
@@ -35,12 +93,7 @@ resource "aws_s3_bucket" "cloudtrail" {
35
93
36
94
resource "aws_s3_bucket_policy" "cloudtrail_s3_policy" {
37
95
bucket = aws_s3_bucket. cloudtrail . id
38
- policy = templatefile (
39
- " ${ path . module } /policies/cloudtrail_s3_policy.tpl" ,
40
- {
41
- bucket_name = local.bucketname
42
- }
43
- )
96
+ policy = data. aws_iam_policy_document . bucket . json
44
97
}
45
98
46
99
resource "aws_s3_bucket_acl" "cloudtrail_acl" {
@@ -51,18 +104,13 @@ resource "aws_s3_bucket_acl" "cloudtrail_acl" {
51
104
resource "aws_iam_role" "cloudtrail_cloudwatch_logs_role" {
52
105
name = " ${ var . namespace } -cloudtrail-cloudwatch-logs"
53
106
path = " /"
54
- assume_role_policy = file ( " ${ path . module } /policies/cloudtrail_assume_policy. json" )
107
+ assume_role_policy = data . aws_iam_policy_document . assume_role . json
55
108
}
56
109
57
110
resource "aws_iam_policy" "cloudtrail_cloudwatch_logs_policy" {
58
- name = " ${ var . namespace } -cloudtrail-cloudwatch-logs"
59
- path = " /"
60
- policy = templatefile (
61
- " ${ path . module } /policies/cloudtrail_cloudwatch_logs_policy.tpl" ,
62
- {
63
- cloudwatch_log_group_arn = aws_cloudwatch_log_group.cloudtrail.arn
64
- }
65
- )
111
+ name = " ${ var . namespace } -cloudtrail-cloudwatch-logs"
112
+ path = " /"
113
+ policy = data. aws_iam_policy_document . logs . json
66
114
}
67
115
68
116
resource "aws_iam_role_policy_attachment" "cloudtrail_cloudwatch_logs_policy_attachment" {
0 commit comments