in src/rules/s3/S3BucketSSLRequestsOnly.ts [51:81]
function isMatchingCompliantPolicy(
node: CfnBucketPolicy,
bucketLogicalId: string,
bucketName: string | undefined
): boolean {
const bucket = NagRules.resolveResourceFromInstrinsic(node, node.bucket);
if (bucket !== bucketLogicalId && bucket !== bucketName) {
return false;
}
const resolvedPolicyDocument = Stack.of(node).resolve(node.policyDocument);
for (const statement of resolvedPolicyDocument.Statement) {
const resolvedStatement = Stack.of(node).resolve(statement);
const secureTransport =
resolvedStatement?.Condition?.Bool?.['aws:SecureTransport'];
if (
resolvedStatement.Effect === 'Deny' &&
checkMatchingAction(resolvedStatement.Action) === true &&
checkMatchingPrincipal(resolvedStatement.Principal) === true &&
(secureTransport === 'false' || secureTransport === false) &&
checkMatchingResources(
node,
bucketLogicalId,
bucketName,
resolvedStatement.Resource
) === true
) {
return true;
}
}
return false;
}