π§ AWS CloudTrail S3 Bucket Access Logging is not enabled. - prod.logic.yaml π’
- Contextual name: π§ prod.logic.yaml π’
- ID:
/ce/ca/aws/cloudtrail/s3-bucket-access-logging/prod.logic.yaml
- Located in: π AWS CloudTrail S3 Bucket Access Logging is not enabled. π’
Flagsβ
- π’ Logic test success
- π’ Logic with extracts
- π’ Logic with test data
Input Typeβ
Type | API Name | Extracts | Extract Files | Logic Files | |
---|---|---|---|---|---|
π | π AWS CloudTrail Trail | CA10__CaAwsCloudTrailTrail__c | 8 | 1 | 3 |
Usesβ
- π AWS S3 Bucket - object.extracts.yaml
- π AWS CloudTrail Trail - object.extracts.yaml
- π§ͺ test-data.json
Test Results π’β
Generated at: 2025-04-24T23:44:27.974517949Z Open
Result | Id | Condition Index | Condition Text | Runtime Error |
---|---|---|---|---|
π’ | test1 | βοΈ 99 | βοΈ isDisappeared(CA10__disappearanceTime__c) | βοΈ null |
π’ | test2 | βοΈ 199 | βοΈ isEmptyLookup('CA10__bucket__r') | βοΈ null |
π’ | test3 | βοΈ 299 | βοΈ extract('CA10__bucket__r.CA10__loggingDestinationBucketName__c').isEmpty() | βοΈ null |
π’ | test4 | βοΈ 399 | βοΈ extract('CA10__bucket__r.CA10__arn__c') == extract('CA10__bucket__r.CA10__loggingDestinationBucketArn__c') | βοΈ null |
π’ | test5 | βοΈ 499 | βοΈ isEmptyLookup('CA10__bucket__r.CA10__loggingDestinationBucket__r') | βοΈ null |
π’ | test6 | βοΈ 599 | βοΈ notEmptyLookup('CA10__bucket__r.CA10__loggingDestinationBucket__r') | βοΈ null |
Generationβ
File | MD5 | |
---|---|---|
Open | /ce/ca/aws/cloudtrail/s3-bucket-access-logging/policy.yaml | BA1715F8771329FFE9EF31E598F3E580 |
Open | /ce/ca/aws/cloudtrail/s3-bucket-access-logging/prod.logic.yaml | 2D0186B601BEFB95769DBF26AA935F23 |
Open | /types/CA10__CaAwsBucket__c/object.extracts.yaml | D7F01723B629E0F1265F06B9CE2EDE1F |
Open | /ce/ca/aws/cloudtrail/s3-bucket-access-logging/test-data.json | 92620BF0E6E7675C775FC2DDB9FC16CB |
Open | /types/CA10__CaAwsCloudTrailTrail__c/object.extracts.yaml | 3DD3C63AB8EE3DD1379ED26A102A68C4 |
Generate FULL scriptβ
java -jar repo-manager.jar policies generate FULL /ce/ca/aws/cloudtrail/s3-bucket-access-logging/prod.logic.yaml
Generate DEBUG scriptβ
java -jar repo-manager.jar policies generate DEBUG /ce/ca/aws/cloudtrail/s3-bucket-access-logging/prod.logic.yaml
Generate CAPTURE_TEST_DATA scriptβ
java -jar repo-manager.jar policies generate CAPTURE_TEST_DATA /ce/ca/aws/cloudtrail/s3-bucket-access-logging/prod.logic.yaml
Generate TESTS scriptβ
java -jar repo-manager.jar policies generate TESTS /ce/ca/aws/cloudtrail/s3-bucket-access-logging/prod.logic.yaml
Execute testsβ
java -jar repo-manager.jar policies test /ce/ca/aws/cloudtrail/s3-bucket-access-logging/prod.logic.yaml
Contentβ
---
inputType: "CA10__CaAwsCloudTrailTrail__c"
testData:
- file: "test-data.json"
importExtracts:
- file: "/types/CA10__CaAwsCloudTrailTrail__c/object.extracts.yaml"
- file: "/types/CA10__CaAwsBucket__c/object.extracts.yaml"
conditions:
- status: "INCOMPLIANT"
currentStateMessage: "AWS CloudTrail references a missing bucket."
remediationMessage: "Ensure that CloudTrail is referencing an active S3 bucket."
check:
IS_EMPTY_LOOKUP: "CA10__bucket__r"
- status: "INCOMPLIANT"
currentStateMessage: "Server access logging is not enabled."
remediationMessage: "Consider enabling server access logging."
check:
IS_EMPTY:
arg:
EXTRACT: "CA10__bucket__r.CA10__loggingDestinationBucketName__c"
# When source bucket is its own destination bucket,
# then ARNs will be the same but CA10__loggingDestinationBucket__c will be empty
- status: "COMPLIANT"
currentStateMessage: "Server access logging is enabled. The bucket uses itself as the logging destination."
check:
IS_EQUAL:
left:
EXTRACT: "CA10__bucket__r.CA10__arn__c"
right:
EXTRACT: "CA10__bucket__r.CA10__loggingDestinationBucketArn__c"
- status: "INCOMPLIANT"
currentStateMessage: "The destination bucket is missing."
remediationMessage: "Ensure that bucket access logging is referencing an active S3 bucket."
check:
IS_EMPTY_LOOKUP: "CA10__bucket__r.CA10__loggingDestinationBucket__r"
- status: "COMPLIANT"
currentStateMessage: "Server access logging is enabled."
check:
NOT_EMPTY_LOOKUP: "CA10__bucket__r.CA10__loggingDestinationBucket__r"
otherwise:
status: "UNDETERMINED"
currentStateMessage: "Unexpected values in the fields."