|
4 | 4 | ######################################################################## |
5 | 5 | import logging |
6 | 6 | import os |
| 7 | + |
7 | 8 | import boto3 |
8 | 9 | from botocore.exceptions import ClientError |
9 | 10 | from crhelper import CfnResource |
|
20 | 21 | helper = CfnResource(json_logging=False, log_level="INFO", boto_level="CRITICAL") |
21 | 22 |
|
22 | 23 | AWS_SERVICE_PRINCIPAL = "cloudtrail.amazonaws.com" |
23 | | -CLOUDFORMATION_PARAMETERS = ["AWS_PARTITION", "CLOUDTRAIL_NAME", "CLOUDWATCH_LOG_GROUP_ARN", |
24 | | - "CLOUDWATCH_LOG_GROUP_ROLE_ARN", "ENABLE_DATA_EVENTS_ONLY", "ENABLE_LAMBDA_DATA_EVENTS", |
25 | | - "ENABLE_S3_DATA_EVENTS", "KMS_KEY_ID", "S3_BUCKET_NAME", "S3_KEY_PREFIX", "TAG_KEY1", |
26 | | - "TAG_VALUE1"] |
| 24 | +CLOUDFORMATION_PARAMETERS = [ |
| 25 | + "AWS_PARTITION", |
| 26 | + "CLOUDTRAIL_NAME", |
| 27 | + "CLOUDWATCH_LOG_GROUP_ARN", |
| 28 | + "CLOUDWATCH_LOG_GROUP_ROLE_ARN", |
| 29 | + "ENABLE_DATA_EVENTS_ONLY", |
| 30 | + "ENABLE_LAMBDA_DATA_EVENTS", |
| 31 | + "ENABLE_S3_DATA_EVENTS", |
| 32 | + "KMS_KEY_ID", |
| 33 | + "S3_BUCKET_NAME", |
| 34 | + "S3_KEY_PREFIX", |
| 35 | + "TAG_KEY1", |
| 36 | + "TAG_VALUE1", |
| 37 | +] |
27 | 38 |
|
28 | 39 | try: |
29 | 40 | # Process Environment Variables |
@@ -61,10 +72,7 @@ def get_data_event_config(**params) -> dict: |
61 | 72 | } |
62 | 73 |
|
63 | 74 | if params["enable_s3_data_events"]: |
64 | | - s3_data_resource = { |
65 | | - "Type": "AWS::S3::Object", |
66 | | - "Values": [f"arn:{params['aws_partition']}:s3:::"] |
67 | | - } |
| 75 | + s3_data_resource = {"Type": "AWS::S3::Object", "Values": [f"arn:{params['aws_partition']}:s3:::"]} |
68 | 76 | event_selectors["DataResources"].append(s3_data_resource) |
69 | 77 | logger.info("S3 Data Events Added to Event Selectors") |
70 | 78 |
|
@@ -166,31 +174,30 @@ def create(event, context) -> str: |
166 | 174 | cloudtrail_name = params.get("CLOUDTRAIL_NAME") |
167 | 175 |
|
168 | 176 | CLOUDTRAIL_CLIENT.create_trail( |
169 | | - **get_cloudtrail_parameters(True, |
170 | | - cloudtrail_name=cloudtrail_name, |
171 | | - cloudwatch_log_group_arn=params.get("CLOUDWATCH_LOG_GROUP_ARN"), |
172 | | - cloudwatch_log_group_role_arn=params.get("CLOUDWATCH_LOG_GROUP_ROLE_ARN"), |
173 | | - kms_key_id=params.get("KMS_KEY_ID"), |
174 | | - s3_bucket_name=params.get("S3_BUCKET_NAME"), |
175 | | - s3_key_prefix=params.get("S3_KEY_PREFIX"), |
176 | | - tag_key1=params.get("TAG_KEY1"), |
177 | | - tag_value1=params.get("TAG_VALUE1") |
178 | | - )) |
| 177 | + **get_cloudtrail_parameters( |
| 178 | + True, |
| 179 | + cloudtrail_name=cloudtrail_name, |
| 180 | + cloudwatch_log_group_arn=params.get("CLOUDWATCH_LOG_GROUP_ARN"), |
| 181 | + cloudwatch_log_group_role_arn=params.get("CLOUDWATCH_LOG_GROUP_ROLE_ARN"), |
| 182 | + kms_key_id=params.get("KMS_KEY_ID"), |
| 183 | + s3_bucket_name=params.get("S3_BUCKET_NAME"), |
| 184 | + s3_key_prefix=params.get("S3_KEY_PREFIX"), |
| 185 | + tag_key1=params.get("TAG_KEY1"), |
| 186 | + tag_value1=params.get("TAG_VALUE1"), |
| 187 | + ) |
| 188 | + ) |
179 | 189 | logger.info("Created an Organization CloudTrail") |
180 | 190 |
|
181 | 191 | event_selectors = get_data_event_config( |
182 | 192 | aws_partition=params.get("AWS_PARTITION", "aws"), |
183 | 193 | enable_s3_data_events=(params.get("ENABLE_S3_DATA_EVENTS", "false")).lower() in "true", |
184 | 194 | enable_lambda_data_events=(params.get("ENABLE_LAMBDA_DATA_EVENTS", "false")).lower() in "true", |
185 | | - enable_data_events_only=(params.get("ENABLE_DATA_EVENTS_ONLY", "false")).lower() in "true" |
| 195 | + enable_data_events_only=(params.get("ENABLE_DATA_EVENTS_ONLY", "false")).lower() in "true", |
186 | 196 | ) |
187 | 197 |
|
188 | 198 | if event_selectors and event_selectors["DataResources"]: |
189 | 199 |
|
190 | | - CLOUDTRAIL_CLIENT.put_event_selectors( |
191 | | - TrailName=cloudtrail_name, |
192 | | - EventSelectors=[event_selectors] |
193 | | - ) |
| 200 | + CLOUDTRAIL_CLIENT.put_event_selectors(TrailName=cloudtrail_name, EventSelectors=[event_selectors]) |
194 | 201 |
|
195 | 202 | logger.info("Data Events Enabled") |
196 | 203 |
|
@@ -220,31 +227,29 @@ def update(event, context): |
220 | 227 | params = event.get("ResourceProperties") |
221 | 228 | cloudtrail_name = params.get("CLOUDTRAIL_NAME") |
222 | 229 | CLOUDTRAIL_CLIENT.update_trail( |
223 | | - **get_cloudtrail_parameters(False, |
224 | | - cloudtrail_name=cloudtrail_name, |
225 | | - cloudwatch_log_group_arn=params.get("CLOUDWATCH_LOG_GROUP_ARN"), |
226 | | - cloudwatch_log_group_role_arn=params.get("CLOUDWATCH_LOG_GROUP_ROLE_ARN"), |
227 | | - kms_key_id=params.get("KMS_KEY_ID"), |
228 | | - s3_bucket_name=params.get("S3_BUCKET_NAME"), |
229 | | - s3_key_prefix=params.get("S3_KEY_PREFIX"), |
230 | | - tag_key1=params.get("TAG_KEY1"), |
231 | | - tag_value1=params.get("TAG_VALUE1") |
232 | | - ) |
| 230 | + **get_cloudtrail_parameters( |
| 231 | + False, |
| 232 | + cloudtrail_name=cloudtrail_name, |
| 233 | + cloudwatch_log_group_arn=params.get("CLOUDWATCH_LOG_GROUP_ARN"), |
| 234 | + cloudwatch_log_group_role_arn=params.get("CLOUDWATCH_LOG_GROUP_ROLE_ARN"), |
| 235 | + kms_key_id=params.get("KMS_KEY_ID"), |
| 236 | + s3_bucket_name=params.get("S3_BUCKET_NAME"), |
| 237 | + s3_key_prefix=params.get("S3_KEY_PREFIX"), |
| 238 | + tag_key1=params.get("TAG_KEY1"), |
| 239 | + tag_value1=params.get("TAG_VALUE1"), |
| 240 | + ) |
233 | 241 | ) |
234 | 242 | logger.info("Updated Organization CloudTrail") |
235 | 243 |
|
236 | 244 | event_selectors = get_data_event_config( |
237 | 245 | aws_partition=params.get("AWS_PARTITION", "aws"), |
238 | 246 | enable_s3_data_events=(params.get("ENABLE_S3_DATA_EVENTS", "false")).lower() in "true", |
239 | 247 | enable_lambda_data_events=(params.get("ENABLE_LAMBDA_DATA_EVENTS", "false")).lower() in "true", |
240 | | - enable_data_events_only=(params.get("ENABLE_DATA_EVENTS_ONLY", "false")).lower() in "true" |
| 248 | + enable_data_events_only=(params.get("ENABLE_DATA_EVENTS_ONLY", "false")).lower() in "true", |
241 | 249 | ) |
242 | 250 |
|
243 | | - if event_selectors and event_selectors["DataResources"]: |
244 | | - CLOUDTRAIL_CLIENT.put_event_selectors( |
245 | | - TrailName=cloudtrail_name, |
246 | | - EventSelectors=[event_selectors] |
247 | | - ) |
| 251 | + if event_selectors: |
| 252 | + CLOUDTRAIL_CLIENT.put_event_selectors(TrailName=cloudtrail_name, EventSelectors=[event_selectors]) |
248 | 253 |
|
249 | 254 | logger.info("Data Events Updated") |
250 | 255 |
|
|
0 commit comments