Skip to content

Commit e1c821c

Browse files
authored
Merge branch 'master' into feature/azure-vmss-category-changed
2 parents a61db87 + ff9b814 commit e1c821c

File tree

566 files changed

+5834
-154
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

566 files changed

+5834
-154
lines changed

exports.js

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,10 @@ module.exports = {
698698
'sslAccessOnlyEnabled' : require(__dirname + '/plugins/azure/redisCache/sslAccessOnlyEnabled.js'),
699699
'redisCacheHasTags' : require(__dirname + '/plugins/azure/redisCache/redisCacheHasTags.js'),
700700
'redisCachePrivateEndpoint' : require(__dirname + '/plugins/azure/redisCache/redisCachePrivateEndpoint.js'),
701+
'redisCacheManagedIdentity' : require(__dirname + '/plugins/azure/redisCache/redisCacheManagedIdentity.js'),
702+
'redisCacheDiagnosticLogs' : require(__dirname + '/plugins/azure/redisCache/redisCacheDiagnosticLogs.js'),
703+
'redisCacheScheduledUpdates' : require(__dirname + '/plugins/azure/redisCache/redisCacheScheduledUpdates.js'),
704+
'redisVersion' : require(__dirname + '/plugins/azure/redisCache/redisVersion.js'),
701705

702706
'multipleSubnets' : require(__dirname + '/plugins/azure/virtualnetworks/multipleSubnets.js'),
703707
'ddosStandardProtectionEnabled' : require(__dirname + '/plugins/azure/virtualnetworks/ddosStandardProtectionEnabled.js'),
@@ -748,6 +752,7 @@ module.exports = {
748752
'vmVTPMEnabled' : require(__dirname + '/plugins/azure/virtualmachines/vmVTPMEnabled.js'),
749753
'vmSecureBootEnabled' : require(__dirname + '/plugins/azure/virtualmachines/vmSecureBootEnabled.js'),
750754
'vmDiskDeleteConfig' : require(__dirname + '/plugins/azure/virtualmachines/vmDiskDeleteConfig.js'),
755+
'vmEncryptionAtHost' : require(__dirname + '/plugins/azure/virtualmachines/vmEncryptionAtHost.js'),
751756

752757
'bastionHostExists' : require(__dirname + '/plugins/azure/bastion/bastionHostExists.js'),
753758

@@ -824,7 +829,10 @@ module.exports = {
824829
'flexibleServerPrivateAccess' : require(__dirname + '/plugins/azure/postgresqlserver/flexibleServerPrivateAccess'),
825830
'diagnosticLoggingEnabled' : require(__dirname + '/plugins/azure/postgresqlserver/diagnosticLoggingEnabled.js'),
826831
'flexibleServerSCRAMEnabled' : require(__dirname + '/plugins/azure/postgresqlserver/flexibleServerSCRAMEnabled.js'),
832+
'flexibleServerVNetIntegrated' : require(__dirname + '/plugins/azure/postgresqlserver/flexibleServerVNetIntegrated.js'),
827833
'flexibleServerDiagnosticLogs' : require(__dirname + '/plugins/azure/postgresqlserver/flexibleServerDiagnosticLogs.js'),
834+
'flexibleServerPrivateDns' : require(__dirname + '/plugins/azure/postgresqlserver/flexibleServerPrivateDns.js'),
835+
'flexibleServerVersion' : require(__dirname + '/plugins/azure/postgresqlserver/flexibleServerVersion.js'),
828836

829837
'openOracleAutoDataWarehouse' : require(__dirname + '/plugins/azure/networksecuritygroups/openOracleAutoDataWarehouse.js'),
830838
'nsgFlowLogsRetentionPeriod' : require(__dirname + '/plugins/azure/networksecuritygroups/nsgFlowLogsRetentionPeriod.js'),
@@ -926,10 +934,12 @@ module.exports = {
926934

927935
'acrAdminUser' : require(__dirname + '/plugins/azure/containerregistry/acrAdminUser.js'),
928936
'acrHasTags' : require(__dirname + '/plugins/azure/containerregistry/acrHasTags.js'),
937+
'acrManagedIdentityEnabled' : require(__dirname + '/plugins/azure/containerregistry/acrManagedIdentityEnabled.js'),
929938
'acrPublicAccess' : require(__dirname + '/plugins/azure/containerregistry/acrPublicAccess.js'),
930939
'acrCMKEncryption' : require(__dirname + '/plugins/azure/containerregistry/acrCMKEncryption.js'),
931940
'acrLogAnalyticsEnabled' : require(__dirname + '/plugins/azure/containerregistry/acrLogAnalyticsEnabled.js'),
932941
'acrAnonymousPullAccessEnabled' : require(__dirname + '/plugins/azure/containerregistry/acrAnonymousPullAccessEnabled.js'),
942+
'acrContentTrustEnabled' : require(__dirname + '/plugins/azure/containerregistry/acrContentTrustEnabled.js'),
933943

934944
'endpointLoggingEnabled' : require(__dirname + '/plugins/azure/cdnprofiles/endpointLoggingEnabled.js'),
935945
'detectInsecureCustomOrigin' : require(__dirname + '/plugins/azure/cdnprofiles/detectInsecureCustomOrigin.js'),
@@ -986,9 +996,12 @@ module.exports = {
986996
'enableDefenderForStorage' : require(__dirname + '/plugins/azure/defender/enableDefenderForStorage.js'),
987997
'enableDefenderForContainers' : require(__dirname + '/plugins/azure/defender/enableDefenderForContainers.js'),
988998
'enableDefenderForSqlServers' : require(__dirname + '/plugins/azure/defender/enableDefenderForSqlServers.js'),
999+
'enableDefenderForOSRD' : require(__dirname + '/plugins/azure/defender/enableDefenderForOSRD.js'),
9891000
'enableEndpointIntegration' : require(__dirname + '/plugins/azure/defender/enableEndpointIntegration.js'),
9901001
'enableDefenderForDNS' : require(__dirname + '/plugins/azure/defender/enableDefenderForDNS.js'),
991-
'enableDefenderForKeyVaults' : require(__dirname + '/plugins/azure/defender/enableDefenderForKeyVaults.js'),
1002+
'enableDefenderForKeyVaults' : require(__dirname + '/plugins/azure/defender/enableDefenderForKeyVaults.js'),
1003+
'enableDefenderForVMs' : require(__dirname + '/plugins/azure/defender/enableDefenderForVMs.js'),
1004+
'enableDefenderForAppService' : require(__dirname + '/plugins/azure/defender/enableDefenderForAppService.js'),
9921005

9931006
'agWafEnabled' : require(__dirname + '/plugins/azure/applicationGateway/agWafEnabled'),
9941007
'applicationGatewayHasTags' : require(__dirname + '/plugins/azure/applicationGateway/applicationGatewayHasTags.js'),
@@ -1004,6 +1017,7 @@ module.exports = {
10041017
'wafPolicyHasTags' : require(__dirname + '/plugins/azure/waf/wafPolicyHasTags.js'),
10051018

10061019
'recoveryVaultByokEncrypted' : require(__dirname + '/plugins/azure/recoveryService/recoveryVaultByokEncrypted.js'),
1020+
'recoveryVaultLoggingEnabled' : require(__dirname + '/plugins/azure/recoveryService/recoveryVaultLoggingEnabled.js'),
10071021

10081022
'domainPublicAccessEnabled' : require(__dirname + '/plugins/azure/eventGrid/domainPublicAccess.js'),
10091023

@@ -1026,11 +1040,14 @@ module.exports = {
10261040
'namespaceTlsVersion' : require(__dirname + '/plugins/azure/servicebus/namespaceTlsVersion.js'),
10271041
'namespaceLocalAuth' : require(__dirname + '/plugins/azure/servicebus/namespaceLocalAuth.js'),
10281042
'namespaceLoggingEnabled' : require(__dirname + '/plugins/azure/servicebus/namespaceLoggingEnabled.js'),
1043+
'namespacePublicAccess' : require(__dirname + '/plugins/azure/servicebus/namespacePublicAccess.js'),
1044+
'namespaceInfraEncryption' : require(__dirname + '/plugins/azure/servicebus/namespaceInfraEncryption.js'),
10291045

10301046
'amsDiagnosticLogsEnabled' : require(__dirname + '/plugins/azure/mediaServices/amsDiagnosticLogsEnabled.js'),
10311047
'amsPublicAccessDisabled' : require(__dirname + '/plugins/azure/mediaServices/amsPublicAccessDisabled.js'),
10321048
'amsManagedIdentityEnabled' : require(__dirname + '/plugins/azure/mediaServices/amsManagedIdentityEnabled.js'),
10331049
'amsClassicApiDisabled' : require(__dirname + '/plugins/azure/mediaServices/amsClassicApiDisabled.js'),
1050+
'amsContentKeyPolicy' : require(__dirname + '/plugins/azure/mediaServices/amsContentKeyPolicy.js'),
10341051

10351052
'scaleSetMultiAz' : require(__dirname + '/plugins/azure/virtualmachinescaleset/scaleSetMultiAz.js'),
10361053
'scaleSetAutoscaleEnabled' : require(__dirname + '/plugins/azure/virtualmachinescaleset/scaleSetAutoscaleEnabled.js'),
@@ -1040,6 +1057,20 @@ module.exports = {
10401057
'autoscaleNotificationsEnabled' : require(__dirname + '/plugins/azure/virtualmachinescaleset/autoscaleNotificationsEnabled.js'),
10411058
'autoOsUpgradesEnabled' : require(__dirname + '/plugins/azure/virtualmachinescaleset/autoOsUpgradesEnabled.js'),
10421059
'autoInstanceRepairsEnabled' : require(__dirname + '/plugins/azure/virtualmachinescaleset/autoInstanceRepairsEnabled.js'),
1060+
'vmssTrustedLaunchEnabled' : require(__dirname + '/plugins/azure/virtualmachinescaleset/vmssTrustedLaunchEnabled.js'),
1061+
'scaleSetAdAuthEnabled' : require(__dirname + '/plugins/azure/virtualmachinescaleset/scaleSetAdAuthEnabled.js'),
1062+
'vmssManagedIdentityEnabled' : require(__dirname + '/plugins/azure/virtualmachinescaleset/vmssManagedIdentityEnabled.js'),
1063+
'scalesetVTPMEnabled' : require(__dirname + '/plugins/azure/virtualmachinescaleset/scalesetVTPMEnabled.js'),
1064+
'scalesetSecureBootEnabled' : require(__dirname + '/plugins/azure/virtualmachinescaleset/scalesetSecureBootEnabled.js'),
1065+
'vmssApprovedExtensions' : require(__dirname + '/plugins/azure/virtualmachinescaleset/vmssApprovedExtensions'),
1066+
1067+
'appConfigManagedIdentity' : require(__dirname + '/plugins/azure/appConfigurations/appConfigManagedIdentity.js'),
1068+
'appConfigurationDiagnosticLogs': require(__dirname + '/plugins/azure/appConfigurations/appConfigurationDiagnosticLogs.js'),
1069+
'appConfigurationPublicAccess' : require(__dirname + '/plugins/azure/appConfigurations/appConfigurationPublicAccess.js'),
1070+
1071+
'automationAcctDiagnosticLogs' : require(__dirname + '/plugins/azure/automationAccounts/automationAcctDiagnosticLogs.js'),
1072+
'automationAcctManagedIdentity' : require(__dirname + '/plugins/azure/automationAccounts/automationAcctManagedIdentity.js'),
1073+
10431074
},
10441075
github: {
10451076
'publicKeysRotated' : require(__dirname + '/plugins/github/users/publicKeysRotated.js'),

helpers/azure/api.js

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,11 @@ var calls = {
187187
rateLimit: 3000
188188
}
189189
},
190+
appConfigurations: {
191+
list: {
192+
url: 'https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.AppConfiguration/configurationStores?api-version=2023-03-01'
193+
}
194+
},
190195
virtualNetworks: {
191196
listAll: {
192197
url: 'https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualNetworks?api-version=2020-03-01'
@@ -366,6 +371,11 @@ var calls = {
366371
graph: true,
367372
}
368373
},
374+
automationAccounts: {
375+
list: {
376+
url: 'https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Automation/automationAccounts?api-version=2023-11-01'
377+
}
378+
},
369379
registries: {
370380
list: {
371381
url: 'https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.ContainerRegistry/registries?api-version=2023-01-01-preview'
@@ -383,7 +393,7 @@ var calls = {
383393
},
384394
virtualMachineScaleSets: {
385395
listAll: {
386-
url: 'https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachineScaleSets?api-version=2019-12-01'
396+
url: 'https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachineScaleSets?api-version=2023-09-01'
387397
}
388398
},
389399
bastionHosts: {
@@ -949,6 +959,11 @@ var postcalls = {
949959
}
950960
},
951961
mediaServices: {
962+
listContentKeyPolicies: {
963+
reliesOnPath: 'mediaServices.listAll',
964+
properties: ['id'],
965+
url: 'https://management.azure.com/{id}/contentKeyPolicies?api-version=2023-01-01'
966+
},
952967
get: {
953968
reliesOnPath: 'mediaServices.listAll',
954969
properties: ['id'],
@@ -1005,6 +1020,11 @@ var tertiarycalls = {
10051020
properties: ['id'],
10061021
url: 'https://management.azure.com/{id}/providers/microsoft.insights/diagnosticSettings?api-version=2017-05-01-preview'
10071022
},
1023+
listByRecoveryServiceVault: {
1024+
reliesOnPath: 'recoveryServiceVaults.listBySubscriptionId',
1025+
properties: ['id'],
1026+
url: 'https://management.azure.com/{id}/providers/microsoft.insights/diagnosticSettings?api-version=2021-05-01-preview'
1027+
},
10081028
listByVirtualNetworks: {
10091029
reliesOnPath: 'virtualNetworks.listAll',
10101030
properties: ['id'],
@@ -1035,6 +1055,22 @@ var tertiarycalls = {
10351055
properties: ['id'],
10361056
url: 'https://management.azure.com/{id}/providers/microsoft.insights/diagnosticSettings?api-version=2021-05-01-preview'
10371057
},
1058+
listByAppConfigurations: {
1059+
reliesOnPath: 'appConfigurations.list',
1060+
properties: ['id'],
1061+
url: 'https://management.azure.com/{id}/providers/microsoft.insights/diagnosticSettings?api-version=2021-05-01-preview'
1062+
},
1063+
listByRedisCache: {
1064+
reliesOnPath: 'redisCaches.listBySubscription',
1065+
properties: ['id'],
1066+
url: 'https://management.azure.com/{id}/providers/microsoft.insights/diagnosticSettings?api-version=2021-05-01-preview'
1067+
},
1068+
listByAutomationAccounts: {
1069+
reliesOnPath: 'automationAccounts.list',
1070+
properties: ['id'],
1071+
url: 'https://management.azure.com/{id}/providers/microsoft.insights/diagnosticSettings?api-version=2021-05-01-preview'
1072+
}
1073+
10381074
},
10391075
backupShortTermRetentionPolicies: {
10401076
listByDatabase: {
@@ -1085,7 +1121,14 @@ var tertiarycalls = {
10851121
properties: ['id'],
10861122
url: 'https://management.azure.com/{id}/devOpsAuditingSettings?api-version=2021-11-01'
10871123
}
1088-
}
1124+
},
1125+
patchSchedules: {
1126+
listByRedisCache: {
1127+
reliesOnPath: 'redisCaches.listBySubscription',
1128+
properties: ['id'],
1129+
url: 'https://management.azure.com/{id}/patchSchedules?api-version=2023-08-01'
1130+
}
1131+
},
10891132
};
10901133

10911134
var specialcalls = {

helpers/azure/functions.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,20 @@ function checkServerConfigs(servers, cache, source, location, results, serverTyp
356356
});
357357
}
358358

359+
function checkMicrosoftDefender(pricings, serviceName, serviceDisplayName, results, location ) {
360+
361+
let pricingData = pricings.data.find((pricing) => pricing.name.toLowerCase() === serviceName);
362+
if (pricingData) {
363+
if (pricingData.pricingTier.toLowerCase() === 'standard') {
364+
addResult(results, 0, `Azure Defender is enabled for ${serviceDisplayName}`, location, pricingData.id);
365+
} else {
366+
addResult(results, 2, `Azure Defender is not enabled for ${serviceDisplayName}`, location, pricingData.id);
367+
}
368+
} else {
369+
addResult(results, 2, `Azure Defender is not enabled for ${serviceDisplayName}`, location);
370+
}
371+
}
372+
359373
function processCall(config, method, body, baseUrl, resource, callback) {
360374
var fullUrl = baseUrl.replace('{resource}', resource);
361375

@@ -702,5 +716,6 @@ module.exports = {
702716
remediatePlugin: remediatePlugin,
703717
processCall: processCall,
704718
remediateOpenPorts: remediateOpenPorts,
705-
remediateOpenPortsHelper: remediateOpenPortsHelper
719+
remediateOpenPortsHelper: remediateOpenPortsHelper,
720+
checkMicrosoftDefender: checkMicrosoftDefender
706721
};

helpers/azure/locations.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ module.exports = {
122122
mediaServices: locations,
123123
serviceBus: locations,
124124
classicFrontDoors: ['global'],
125-
afdWafPolicies: ['global']
126-
125+
afdWafPolicies: ['global'],
126+
appConfigurations: locations,
127+
automationAccounts: locations
127128
};

helpers/azure/resources.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,12 @@ module.exports = {
255255
list: 'id'
256256
},
257257
devOpsAuditingSettings:{
258+
list: 'id'
259+
},
260+
appConfigurations: {
258261
list:'id'
262+
},
263+
automationAccounts:{
264+
list: 'id'
259265
}
260266
};

plugins/aws/accessanalyzer/accessAnalyzerActiveFindings.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ module.exports = {
1111
link: 'https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-work-with-findings.html',
1212
recommended_action: 'Investigate into active findings in your account and do the needful until you have zero active findings.',
1313
apis: ['AccessAnalyzer:listAnalyzers', 'AccessAnalyzer:listFindings'],
14+
realtime_triggers: ['accessanalyzer:CreateAnalyzer','accessanalyzer:DeleteAnalyzer','accessanalyzer:CreateArchiveRule','accessanalyzer:StartResourceScan'],
1415

1516
run: function(cache, settings, callback) {
1617
var results = [];

plugins/aws/accessanalyzer/accessAnalyzerEnabled.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ module.exports = {
1010
link: 'https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html',
1111
recommended_action: 'Enable Access Analyzer for all regions',
1212
apis: ['AccessAnalyzer:listAnalyzers'],
13+
realtime_triggers: ['accessanalyzer:CreateAnalyzer','accessanalyzer:DeleteAnalyzer'],
14+
1315
run: function(cache, settings, callback) {
1416
var results = [];
1517
var source = {};

plugins/aws/acm/acmCertificateExpiry.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ module.exports = {
2727
default: 30
2828
}
2929
},
30+
realtime_triggers: ['acm:RequestCertificate','acm:ImportCertificate','acm:DeleteCertificate'],
3031

3132
run: function(cache, settings, callback) {
3233
var config = {

plugins/aws/acm/acmCertificateHasTags.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ module.exports = {
1010
link: 'https://docs.aws.amazon.com/acm/latest/userguide/tags.html',
1111
recommended_action: 'Modify ACM certificate and add tags.',
1212
apis: ['ACM:listCertificates', 'ResourceGroupsTaggingAPI:getResources'],
13+
realtime_triggers: ['acm:RequestCertificate','acm:ImportCertificate','acm:DeleteCertificate','acm:AddTagsToCertificate', 'acm:RemoveTagsFromCertificate'],
1314

1415
run: function(cache, settings, callback) {
1516
var results = [];

plugins/aws/acm/acmSingleDomainNameCertificate.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ module.exports = {
1010
link: 'https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html',
1111
recommended_action: 'Configure ACM managed certificates to use single name domain instead of wildcards.',
1212
apis: ['ACM:listCertificates', 'ACM:describeCertificate'],
13+
realtime_triggers: ['acm:RequestCertificate','acm:ImportCertificate','acm:DeleteCertificate'],
1314

1415
run: function(cache, settings, callback) {
1516
var results = [];

0 commit comments

Comments
 (0)