def format_resource(self, r): envelope, payload = self.format_envelope(r) payload.update( self.filter_empty( select_keys(r, ['Version', 'CreatedDate', 'CompatibleRuntimes']))) return envelope
def format_resource(self, r): envelope, payload = self.format_envelope(r) # security hub formatting beggars belief details = self.filter_empty( select_keys(r, [ 'CodeSha256', 'DeadLetterConfig', 'Environment', 'Handler', 'KMSKeyArn', 'LastModified', 'MemorySize', 'MasterArn', 'RevisionId', 'Role', 'Runtime', 'TracingConfig', 'Timeout', 'Version', 'VpcConfig' ])) # do the brain dead parts Layers, Code, TracingConfig if 'Layers' in r: r['Layers'] = { 'Arn': r['Layers'][0]['Arn'], 'CodeSize': r['Layers'][0]['CodeSize'] } details.get('VpcConfig', {}).pop('VpcId', None) if 'Code' in r and r['Code'].get('RepositoryType') == "S3": parsed = urlparse(r['Code']['Location']) details['Code'] = { 'S3Bucket': parsed.netloc.split('.', 1)[0], 'S3Key': parsed.path[1:] } params = parse_qs(parsed.query) if params['versionId']: details['Code']['S3ObjectVersion'] = params['versionId'][0] payload.update(details) return envelope
def format_resource(self, r): if 'TargetKeyId' in r: resolved = self.manager.get_resource_manager( 'kms-key').get_resources([r['TargetKeyId']]) if not resolved: return r = resolved[0] r[self.manager.resource_type.id] = r['KeyId'] envelope, payload = self.format_envelope(r) payload.update(self.filter_empty( select_keys(r, [ 'AWSAccount', 'CreationDate', 'KeyId', 'KeyManager', 'Origin', 'KeyState']))) return envelope
def format_resource(self, r): if 'TargetKeyId' in r: resolved = self.manager.get_resource_manager( 'kms-key').get_resources([r['TargetKeyId']]) if not resolved: return r = resolved[0] r[self.manager.resource_type.id] = r['KeyId'] envelope, payload = self.format_envelope(r) payload.update( self.filter_empty( select_keys(r, [ 'AWSAccount', 'CreationDate', 'KeyId', 'KeyManager', 'Origin', 'KeyState' ]))) # Securityhub expects a unix timestamp for CreationDate if 'CreationDate' in payload and isinstance(payload['CreationDate'], datetime): payload['CreationDate'] = (payload['CreationDate'].replace( tzinfo=timezone.utc).timestamp()) return envelope