diff --git a/website/api/controllers/view-security-and-control.js b/website/api/controllers/view-security-and-control.js new file mode 100644 index 0000000000..72369b80a0 --- /dev/null +++ b/website/api/controllers/view-security-and-control.js @@ -0,0 +1,72 @@ +module.exports = { + + + friendlyName: 'View security and control', + + + description: 'Display "Security and control" page.', + + + exits: { + + success: { + viewTemplatePath: 'pages/security-and-control' + } + + }, + + + fn: async function () { + if (!_.isObject(sails.config.builtStaticContent) || !_.isArray(sails.config.builtStaticContent.testimonials)) { + throw {badConfig: 'builtStaticContent.testimonials'}; + } + // Get testimonials for the component. + let testimonialsForScrollableTweets = _.clone(sails.config.builtStaticContent.testimonials); + + // Only filter and sort testimonials when static content has been built. + // If the build-static-content script was not run, we'll show a placeholder testimonial that is added by the custom hook. + if (sails.config.builtStaticContent.compiledPagePartialsAppPath) { + // Specify an order for the testimonials on this page using the last names of quote authors + // Note: this page uses the same testimonials as the /software-managment page. + let testimonialOrderForThisPage = [ + 'Luis Madrigal', + 'Arsenio Figueroa', + 'Bart Reardon', + 'Andre Shields', + 'Wes Whetstone', + 'Nico Waisman', + 'Chandra Majumdar', + 'Kenny Botelho', + 'Erik Gomez', + 'Eric Tan', + 'Adam Pippert', + 'Justin LaBo', + 'Brian LaShomb', + ]; + + // Filter the testimonials by product category + testimonialsForScrollableTweets = _.filter(testimonialsForScrollableTweets, (testimonial)=>{ + return _.contains(testimonial.productCategories, 'Software management') && _.contains(testimonialOrderForThisPage, testimonial.quoteAuthorName); + }); + + testimonialsForScrollableTweets.sort((a, b)=>{ + if(testimonialOrderForThisPage.indexOf(a.quoteAuthorName) === -1){ + return 1; + } else if(testimonialOrderForThisPage.indexOf(b.quoteAuthorName) === -1) { + return -1; + } + return testimonialOrderForThisPage.indexOf(a.quoteAuthorName) - testimonialOrderForThisPage.indexOf(b.quoteAuthorName); + }); + }//fi + + + // Respond with view. + return { + testimonialsForScrollableTweets, + }; + + + } + + +}; diff --git a/website/assets/images/from-remediation-to-detection-800x600@2x.png b/website/assets/images/from-remediation-to-detection-800x600@2x.png new file mode 100644 index 0000000000..f70437d915 Binary files /dev/null and b/website/assets/images/from-remediation-to-detection-800x600@2x.png differ diff --git a/website/assets/images/icon-advanced-mitigations-20x20@2x.png b/website/assets/images/icon-advanced-mitigations-20x20@2x.png new file mode 100644 index 0000000000..20083bdef2 Binary files /dev/null and b/website/assets/images/icon-advanced-mitigations-20x20@2x.png differ diff --git a/website/assets/images/icon-ai-assisted-polices-20x20@2x.png b/website/assets/images/icon-ai-assisted-polices-20x20@2x.png new file mode 100644 index 0000000000..8091644a91 Binary files /dev/null and b/website/assets/images/icon-ai-assisted-polices-20x20@2x.png differ diff --git a/website/assets/images/icon-ai-tools-20x20@2x.png b/website/assets/images/icon-ai-tools-20x20@2x.png new file mode 100644 index 0000000000..bd84769743 Binary files /dev/null and b/website/assets/images/icon-ai-tools-20x20@2x.png differ diff --git a/website/assets/images/icon-automated-ticketing-20x20@2x.png b/website/assets/images/icon-automated-ticketing-20x20@2x.png new file mode 100644 index 0000000000..981eee39ce Binary files /dev/null and b/website/assets/images/icon-automated-ticketing-20x20@2x.png differ diff --git a/website/assets/images/icon-branch-20x20@2x.png b/website/assets/images/icon-branch-20x20@2x.png new file mode 100644 index 0000000000..23bf3c8a46 Binary files /dev/null and b/website/assets/images/icon-branch-20x20@2x.png differ diff --git a/website/assets/images/icon-browser-extensions-20x20@2x.png b/website/assets/images/icon-browser-extensions-20x20@2x.png new file mode 100644 index 0000000000..72ea97185c Binary files /dev/null and b/website/assets/images/icon-browser-extensions-20x20@2x.png differ diff --git a/website/assets/images/icon-byod-security-20x20@2x.png b/website/assets/images/icon-byod-security-20x20@2x.png new file mode 100644 index 0000000000..2e5725065b Binary files /dev/null and b/website/assets/images/icon-byod-security-20x20@2x.png differ diff --git a/website/assets/images/icon-cross-platform-20x20@2x.png b/website/assets/images/icon-cross-platform-20x20@2x.png new file mode 100644 index 0000000000..33f132f004 Binary files /dev/null and b/website/assets/images/icon-cross-platform-20x20@2x.png differ diff --git a/website/assets/images/icon-detect-20x20@2x.png b/website/assets/images/icon-detect-20x20@2x.png new file mode 100644 index 0000000000..c75da4911a Binary files /dev/null and b/website/assets/images/icon-detect-20x20@2x.png differ diff --git a/website/assets/images/icon-exposure-reporting-20x20@2x.png b/website/assets/images/icon-exposure-reporting-20x20@2x.png new file mode 100644 index 0000000000..8375a444df Binary files /dev/null and b/website/assets/images/icon-exposure-reporting-20x20@2x.png differ diff --git a/website/assets/images/icon-no-network-scans-20x20@2x.png b/website/assets/images/icon-no-network-scans-20x20@2x.png new file mode 100644 index 0000000000..6a41676363 Binary files /dev/null and b/website/assets/images/icon-no-network-scans-20x20@2x.png differ diff --git a/website/assets/images/icon-package-manager-20x20@2x.png b/website/assets/images/icon-package-manager-20x20@2x.png new file mode 100644 index 0000000000..5690d11dcf Binary files /dev/null and b/website/assets/images/icon-package-manager-20x20@2x.png differ diff --git a/website/assets/images/icon-patch-notifications-20x20@2x.png b/website/assets/images/icon-patch-notifications-20x20@2x.png new file mode 100644 index 0000000000..beb52a7ff4 Binary files /dev/null and b/website/assets/images/icon-patch-notifications-20x20@2x.png differ diff --git a/website/assets/images/icon-prioritize-20x20@2x.png b/website/assets/images/icon-prioritize-20x20@2x.png new file mode 100644 index 0000000000..9e84964fc3 Binary files /dev/null and b/website/assets/images/icon-prioritize-20x20@2x.png differ diff --git a/website/assets/images/icon-remediate-20x20@2x.png b/website/assets/images/icon-remediate-20x20@2x.png new file mode 100644 index 0000000000..cf9cba658e Binary files /dev/null and b/website/assets/images/icon-remediate-20x20@2x.png differ diff --git a/website/assets/images/icon-remediation-tracking-20x20@2x.png b/website/assets/images/icon-remediation-tracking-20x20@2x.png new file mode 100644 index 0000000000..0da673f725 Binary files /dev/null and b/website/assets/images/icon-remediation-tracking-20x20@2x.png differ diff --git a/website/assets/images/icon-scoped-automation-20x20@2x.png b/website/assets/images/icon-scoped-automation-20x20@2x.png new file mode 100644 index 0000000000..6f9a37585f Binary files /dev/null and b/website/assets/images/icon-scoped-automation-20x20@2x.png differ diff --git a/website/assets/images/icon-zero-day-20x20@2x.png b/website/assets/images/icon-zero-day-20x20@2x.png new file mode 100644 index 0000000000..f439f4eba6 Binary files /dev/null and b/website/assets/images/icon-zero-day-20x20@2x.png differ diff --git a/website/assets/images/know-exactly-whats-installed-800x600@2x.png b/website/assets/images/know-exactly-whats-installed-800x600@2x.png new file mode 100644 index 0000000000..43a6f7f7c5 Binary files /dev/null and b/website/assets/images/know-exactly-whats-installed-800x600@2x.png differ diff --git a/website/assets/images/nav-icon-security-and-control-40x40@2x.png b/website/assets/images/nav-icon-security-and-control-40x40@2x.png new file mode 100644 index 0000000000..052c58c15e Binary files /dev/null and b/website/assets/images/nav-icon-security-and-control-40x40@2x.png differ diff --git a/website/assets/images/testimonial-author-mike-mcneil-48x48@2x.png b/website/assets/images/testimonial-author-mike-mcneil-48x48@2x.png new file mode 100644 index 0000000000..fbf2ebeeec Binary files /dev/null and b/website/assets/images/testimonial-author-mike-mcneil-48x48@2x.png differ diff --git a/website/assets/images/vulnerability-response-800x600@2x.png b/website/assets/images/vulnerability-response-800x600@2x.png new file mode 100644 index 0000000000..34ada01df0 Binary files /dev/null and b/website/assets/images/vulnerability-response-800x600@2x.png differ diff --git a/website/assets/images/what-stays-what-goes-800x600@2x.png b/website/assets/images/what-stays-what-goes-800x600@2x.png new file mode 100644 index 0000000000..794192b0a1 Binary files /dev/null and b/website/assets/images/what-stays-what-goes-800x600@2x.png differ diff --git a/website/assets/js/pages/security-and-control.page.js b/website/assets/js/pages/security-and-control.page.js new file mode 100644 index 0000000000..4be8bdd6a6 --- /dev/null +++ b/website/assets/js/pages/security-and-control.page.js @@ -0,0 +1,25 @@ +parasails.registerPage('security-and-control', { + // ╦╔╗╔╦╔╦╗╦╔═╗╦ ╔═╗╔╦╗╔═╗╔╦╗╔═╗ + // ║║║║║ ║ ║╠═╣║ ╚═╗ ║ ╠═╣ ║ ║╣ + // ╩╝╚╝╩ ╩ ╩╩ ╩╩═╝ ╚═╝ ╩ ╩ ╩ ╩ ╚═╝ + data: { + //… + }, + + // ╦ ╦╔═╗╔═╗╔═╗╦ ╦╔═╗╦ ╔═╗ + // ║ ║╠╣ ║╣ ║ ╚╦╝║ ║ ║╣ + // ╩═╝╩╚ ╚═╝╚═╝ ╩ ╚═╝╩═╝╚═╝ + beforeMount: function() { + //… + }, + mounted: async function() { + //… + }, + + // ╦╔╗╔╔╦╗╔═╗╦═╗╔═╗╔═╗╔╦╗╦╔═╗╔╗╔╔═╗ + // ║║║║ ║ ║╣ ╠╦╝╠═╣║ ║ ║║ ║║║║╚═╗ + // ╩╝╚╝ ╩ ╚═╝╩╚═╩ ╩╚═╝ ╩ ╩╚═╝╝╚╝╚═╝ + methods: { + //… + } +}); diff --git a/website/assets/styles/importer.less b/website/assets/styles/importer.less index 25c4784331..4d934285b1 100644 --- a/website/assets/styles/importer.less +++ b/website/assets/styles/importer.less @@ -115,4 +115,5 @@ @import 'pages/articles/basic-webinar.less'; @import 'pages/download.less'; @import 'pages/visibility-and-reporting.less'; +@import 'pages/security-and-control.less'; diff --git a/website/assets/styles/pages/security-and-control.less b/website/assets/styles/pages/security-and-control.less new file mode 100644 index 0000000000..a2b9ce1f7e --- /dev/null +++ b/website/assets/styles/pages/security-and-control.less @@ -0,0 +1,674 @@ +#security-and-control { + @text-lineheight: 150%; + @heading-lineheight: 120%; + background: linear-gradient(180deg, #E8F1F6 0%, #FFF 2.51%); + h1 { + .page-heading(); + margin-bottom: 0px; + } + + h2 { + .section-heading(); + margin-bottom: 0px; + } + + h4 { + .kicker-title(); + margin-bottom: 0px; + } + + p { + .body-l(); + margin-bottom: 0px; + } + + [purpose='page-container'] { + .page-container(); + } + [purpose='page-content'] { + .page-content(); + display: flex; + flex-direction: column; + gap: 160px; + } + [purpose='page-hero'] { + max-width: 692px; + display: flex; + flex-direction: column; + gap: @section-gap; + } + [purpose='button-row'] { + display: flex; + flex-direction: row; + gap: 24px; + font-size: 14px; + } + [purpose='cta-button'] { + .cta-button(); + padding: 8px 16px; + } + + [purpose='page-section'] { + display: flex; + flex-direction: column; + justify-content: center; + gap: 120px; + } + + [purpose='feature-with-image'] { + .feature-with-image(); + gap: 64px; + [purpose='feature-text'] { + width: 50%; + } + [purpose='feature-image'] { + img { + flex: 1 0 0; + aspect-ratio: 4 / 3; + } + } + } + + [purpose='feature-row'] { + display: flex; + align-items: flex-start; + align-content: flex-start; + gap: 64px; + align-self: stretch; + flex-wrap: wrap; + } + [purpose='feature-item'] { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 16px; + flex: 1 0 43%; + h5 { + color: #192147; + font-size: 16px; + font-weight: 700; + line-height: 120%; + margin-bottom: 0px; + } + } + [purpose='feature-title'] { + display: flex; + flex-direction: row; + align-items: center; + gap: 12px; + h5 { + margin-bottom: 0px; + } + [purpose='feature-icon'] { + height: 20px; + } + } + [purpose='quote-and-logos'] { + display: flex; + flex-direction: row; + align-items: center; + gap: 64px; + padding: 64px 0px; + } + [purpose='section-quote'] { + display: flex; + flex-direction: row; + justify-content: center; + align-items: flex-start; + gap: 24px; + align-self: center; + max-width: 50%; + [purpose='quote-content'] { + display: flex; + flex-direction: column; + justify-content: flex-start; + gap: 16px; + } + [purpose='quote-text'] { + color: #515774; + text-align: left; + font-size: 18px; + font-style: italic; + font-weight: 400; + line-height: @text-lineheight; + } + [purpose='quote-attribution'] { + color: #515774; + font-size: 12px; + font-weight: 400; + line-height: @text-lineheight; + } + [purpose='quote-author-info'] { + width: 100%; + + display: flex; + flex-direction: row; + justify-self: flex-start; + justify-content: flex-start; + align-items: flex-start; + gap: 16px; + align-self: center; + } + [purpose='quote-author-image'] { + img { + height: 48px; + width: 48px; + border-radius: 50%; + object-fit: cover; + } + } + [purpose='name-and-title'] { + display: flex; + flex-direction: column; + align-items: flex-start; + } + [purpose='author-name'] { + color: #192147; + font-size: 14px; + font-weight: 700; + line-height: @text-lineheight; + } + [purpose='author-title'] { + color: #515774; + font-size: 14px; + max-width: 365px; + font-weight: 400; + line-height: @text-lineheight; + } + } + [purpose='logo-grid'] { + display: flex; + flex-direction: column; + width: 50%; + [purpose='logo-row'] { + display: flex; + flex-direction: row; + width: 100%; + &:first-of-type { + border-bottom: 1px solid #E2E4EA; + } + [purpose='logo'] { + &:nth-of-type(2) { + border-right: 1px solid #E2E4EA; + border-left: 1px solid #E2E4EA; + } + height: 76px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 33.33%; + img { + height: 20px; + width: auto; + } + &.fastly { + padding: 24.5px 49.119px 23.5px 49.119px; + img { + height: 28px; + } + } + &.easygo { + padding: 0 33px 0 35px; + img { + height: 20px; + } + } + &.conductor-one { + padding: 0 25px; + img { + height: 15px; + } + } + &.grafana { + padding: 26px 17px 27px 16px; + img { + height: 23px; + } + } + &.mozilla { + padding: 25px 31.451px 26px 32px; + img { + height: 25px; + } + } + &.calendly { + padding: 26px 34.551px 26px 34px; + img { + height: 25px; + } + } + + } + + } + } + + [purpose='section-button'] { + .cta-button(); + width: fit-content; + display: flex; + height: 36px; + min-width: 140px; + padding: 8px 16px; + justify-content: center; + align-items: center; + gap: 4px; + color: #FFF; + text-align: center; + + + font-family: Inter; + font-size: 14px; + font-style: normal; + font-weight: 700; + line-height: 21px; + } + + + + + [purpose='quote-section'] { + display: flex; + flex-direction: column; + align-items: center; + gap: 24px; + max-width: 696px; + margin-left: auto; + margin-right: auto; + [purpose='quote-image'] { + img { + width: 200px; + } + } + [purpose='quote-author-info'] { + width: 100%; + display: flex; + flex-direction: column; + // justify-content: center; + align-items: center; + gap: 4px; + align-self: center; + } + [purpose='quote-text'] { + color: var(--Fleet-Black-75, #515774); + text-align: center; + font-size: 22px; + font-style: italic; + font-weight: 400; + line-height: @text-lineheight; + } + [purpose='name-and-title'] { + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; + } + [purpose='quote-author-image'] { + img { + height: 48px; + width: 48px; + border-radius: 50%; + object-fit: cover; + } + } + [purpose='author-name'] { + color: #192147; + font-size: 14px; + font-weight: 700; + line-height: @text-lineheight; + } + [purpose='author-title'] { + color: #515774; + font-size: 14px; + font-weight: 400; + line-height: @text-lineheight; + text-align: center; + } + } + + [purpose='three-column-features'] { + .responsive-feature-row(); + [purpose='feature-title'] { + margin-bottom: 16px; + } + [purpose='feature'] { + margin-bottom: 0; + h5 { + font-size: 16px; + line-height: 1.2; + font-weight: 700; + } + p { + font-size: 14px; + font-weight: 400; + line-height: 21px; + } + } + } + + [parasails-component='scrollable-tweets'] { + // Break out of the constrained parent to span the full viewport width. + margin-left: calc(~'50% - 50vw'); + margin-right: calc(~'50% - 50vw'); + + [purpose='tweets'] { + margin-top: 40px; + margin-bottom: 0px; + } + } + [purpose='bottom-cta'] { + display: flex; + flex-direction: column; + gap: 32px; + align-items: center; + text-align: center; + [purpose='button-row'] { + padding-top: 16px; + } + [purpose='page-heading'] { + h1 { + max-width: 796px; + } + } + } + + + @media (max-width: 991px) { + [purpose='page-container'] { + padding: 48px; + } + [purpose='page-content'] { + gap: 120px; + } + [purpose='page-section'] { + gap: 80px; + } + [purpose='quote-and-logos'] { + display: flex; + flex-direction: row; + gap: 48px; + padding: 0; + } + [purpose='feature-with-image'] { + gap: 48px; + } + [purpose='logo-grid'] { + display: flex; + flex-direction: column; + min-width: 50%; + [purpose='logo-row'] { + display: flex; + flex-direction: row; + width: 100%; + &:first-of-type { + border-bottom: 1px solid #E2E4EA; + } + [purpose='logo'] { + &:nth-of-type(2) { + border-right: 1px solid #E2E4EA; + border-left: 1px solid #E2E4EA; + } + height: 76px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 33.33%; + img { + height: 20px; + width: auto; + } + &.conductor-one { + padding: 0 14px 0 14.333px; + img { + height: 14px; + } + } + &.easygo { + padding: 0 21.667px; + img { + height: 18px; + } + } + &.grafana { + padding: 0 8.138px 0 7.804px; + img { + height: 18px; + } + } + &.mozilla { + padding: 0 24.239px 0 25.455px; + img { + height: 20px; + } + } + &.calendly { + padding: 0 25.172px 0 25.287px; + img { + height: 20px; + } + } + + } + + } + } + } + + @media (max-width: 767px) { + + [purpose='page-headline'] { + width: 100%; + h2 { + font-size: 42px; + } + } + [purpose='page-container'] { + padding: 32px; + } + [purpose='page-content'] { + gap: 80px; + } + [purpose='feature-row'] { + gap: 48px; + } + [purpose='quote-and-logos'] { + display: flex; + flex-direction: column; + padding: 0; + gap: 48px; + [purpose='section-quote'] { + max-width: unset; + width: 100%; + flex-direction: column; + align-items: center; + [purpose='quote-text'] { + text-align: center; + } + [purpose='name-and-title'] { + align-items: center; + text-align: center; + } + [purpose='quote-author-info'] { + justify-content: center; + } + } + [purpose='logo-grid'] { + display: flex; + flex-direction: column; + width: 100%; + [purpose='logo-row'] { + display: flex; + flex-direction: row; + width: 100%; + &:first-of-type { + border-bottom: 1px solid #E2E4EA; + } + [purpose='logo'] { + &:nth-of-type(2) { + border-right: 1px solid #E2E4EA; + border-left: 1px solid #E2E4EA; + } + height: 76px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 33.33%; + img { + height: 20px; + width: auto; + } + &.fastly { + padding: 26px 36.723px 26px 37px; + img { + height: 28px; + } + } + &.grafana { + padding: 26px 17px 27px 16px; + img { + height: 23px; + } + } + &.mozilla { + padding: 25px 31.451px 26px 32px; + img { + height: 25px; + } + } + &.calendly { + padding: 26px 34.551px 26px 34px; + img { + height: 25px; + } + } + + } + + } + } + } + [purpose='feature-with-image'] { + [purpose='feature-text'] { + width: 100%; + margin-left: auto; + margin-right: auto; + } + } + + } + + @media (max-width: 575px) { + h1 { + font-size: 32px; + } + h2 { + font-size: 24px; + } + [purpose='feature-with-image'] { + [purpose='feature-text'] { + width: 100%; + } + } + [purpose='button-row'] { + flex-direction: column; + align-items: center; + gap: 8px; + width: 100%; + [purpose='cta-button'] { + width: 100%; + margin-right: 0; + } + } + [purpose='feature-item'] { + flex: 1 0 100%; + } + [purpose='page-container'] { + padding: 32px 24px; + } + [parasails-component='scrollable-tweets'] { + [purpose='tweets'] { + padding-left: 24px; + } + } + [purpose='quote-and-logos'] { + [purpose='logo-grid'] { + width: 100%; + [purpose='logo-row'] { + display: flex; + flex-direction: row; + width: 100%; + border-bottom: 1px solid #E2E4EA; + &:last-of-type { + border-bottom: none; + } + [purpose='logo'] { + &:nth-of-type(2) { + border-right: none; + border-left: 1px solid #E2E4EA; + } + height: 76px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 50%; + img { + height: 20px; + width: auto; + } + &.conductor-one { + padding: unset; + img { + height: 15px; + } + } + &.easygo { + padding: unset; + } + &.fastly { + padding: unset; + img { + height: 28px; + } + } + &.grafana { + padding: unset; + img { + height: 22px; + } + } + &.mozilla { + padding: unset; + img { + height: 25px; + } + } + &.calendly { + padding: unset; + img { + height: 25px; + } + } + + } + + } + } + } + + [purpose='three-column-features'] { + [purpose='feature'] { + text-align: left; + img { + margin-left: unset; + margin-right: unset; + } + } + } + } + + +} diff --git a/website/config/policies.js b/website/config/policies.js index 1d838c2f84..f9272a1c36 100644 --- a/website/config/policies.js +++ b/website/config/policies.js @@ -81,4 +81,5 @@ module.exports.policies = { 'deliver-webinar-access-request': true, 'view-download': true, 'view-visibility-and-reporting': true, + 'view-security-and-control': true, }; diff --git a/website/config/routes.js b/website/config/routes.js index 9ba512aa89..9b98822421 100644 --- a/website/config/routes.js +++ b/website/config/routes.js @@ -643,6 +643,14 @@ module.exports.routes = { } }, + 'GET /security-and-control': { + action: 'view-security-and-control', + locals: { + pageTitleForMeta: 'Security & control', + pageDescriptionForMeta: 'Control what belongs on your devices and detect vulnerabilities automatically.', + } + }, + // ╦ ╔═╗╔╗╔╔╦╗╦╔╗╔╔═╗ ╔═╗╔═╗╔═╗╔═╗╔═╗ // ║ ╠═╣║║║ ║║║║║║║ ╦ ╠═╝╠═╣║ ╦║╣ ╚═╗ // ╩═╝╩ ╩╝╚╝═╩╝╩╝╚╝╚═╝ ╩ ╩ ╩╚═╝╚═╝╚═╝ diff --git a/website/views/layouts/layout.ejs b/website/views/layouts/layout.ejs index 2d035d1d72..0d428efeeb 100644 --- a/website/views/layouts/layout.ejs +++ b/website/views/layouts/layout.ejs @@ -244,6 +244,21 @@ + +
+
+ Security & control +
+
+

+ Security & control +

+

+ Control what belongs on your devices and detect vulnerabilities automatically. +

+
+
+
@@ -468,21 +483,23 @@
- + +
- GitOps + Linux management

- Infrastructure as code + Linux device management

- See every change, undo any error, repeat every success. + Manage Linux devices with full visibility and control.

+
@@ -498,21 +515,23 @@
- + +
- Deployment + GitOps

- Deployment + Infrastructure as code

- Run Fleet the way that fits your team. + See every change, undo any error, repeat every success.

+
@@ -528,6 +547,39 @@
+ + +
+
+ Deployment +
+
+

+ Deployment +

+

+ Run Fleet the way that fits your team. +

+
+
+
+ + + +
+
+ Security & control +
+
+

+ Security & control +

+

+ Control what belongs on your devices and detect vulnerabilities automatically. +

+
+
+
@@ -543,21 +595,6 @@
- -
-
- Linux management -
-
-

- Linux device management -

-

- Manage Linux devices with full visibility and control. -

-
-
-
@@ -962,6 +999,7 @@ + diff --git a/website/views/pages/security-and-control.ejs b/website/views/pages/security-and-control.ejs new file mode 100644 index 0000000000..9ac239e8da --- /dev/null +++ b/website/views/pages/security-and-control.ejs @@ -0,0 +1,430 @@ +
+
+
+
+
+

Security & control

+

See what's on every device, control what belongs.

+
+
+

Fleet gives you visibility into every app, extension, plugin, and package across your fleet. Set policies for what's allowed, and let Fleet enforce them automatically, from detection to remediation.

+
+
+ Talk to an engineer + Try it yourself +
+
+ + <%/* */%> +
+
+
+ The software inventory in Fleet +
+
+

Know exactly what's installed

+

Fleet inventories more than just applications. See every browser extension, IDE plugin, AI tool, package manager install, and Python library across your fleet, on every OS.

+
+
+
+
+
+ Browser extensions +
+ Browser extensions +
+
+
+

+ See every extension installed across Chrome, Firefox, Safari, and Edge. Identify extensions that haven't been vetted or approved. +

+
+
+
+
+ AI tools and connectors +
+ AI tools and connectors +
+
+
+

+ Report on which AI tools, MCP connectors, and IDE extensions are in use across your organization. Track adoption and identify unsanctioned tools. +

+
+
+
+
+ Package managers +
+ Package managers +
+
+
+

+ See Homebrew, NPM, and other package manager installs across your fleet. Track versions and identify packages that should be updated. +

+
+
+
+
+ BYOD security baseline +
+ BYOD security baseline +
+
+
+

+ Ensure personal devices meet your security requirements before accessing company data. Verify that company-managed software and configurations are in place. +

+
+
+
+
+ + <%/* Quote with logo grid */%> +
+
+
+
+ Andre Shields +
+
+

“Fleet lets us be more actionable with fewer people. It helps us to filter out the noise better than we could with the other big name products we replaced.”

+
+
+

Andre Shields

+

Cybersecurity Security Engineer, Vulnerability Management, Rivian

+
+
+
+
+ +
+
+
+ Fastly logo +
+
+ Easygo logo +
+
+ Conductorone logo +
+
+
+
+ Grafana Labs logo +
+
+ Calendly logo +
+
+ Mozilla logo +
+
+
+
+
+
+ Fastly logo +
+
+ Easygo logo +
+
+
+
+ Grafana Labs logo +
+
+ Conductorone logo +
+
+
+
+ Calendly logo +
+
+ Mozilla logo +
+
+
+
+
+ + +
+
+
+ Decide what stays and what goes +
+
+

Decide what stays and what goes

+

Fleet lets you set policies for what software is approved across your fleet. Block, remove, or allowlist software automatically. When something unauthorized is detected, Fleet can remove it or notify the user, depending on how your team prefers to work.

+ Software management +
+
+
+ + + <%/* */%> +
+
+
+ From detection to remediation +
+
+

From detection to remediation

+

Fleet continuously monitors every device for known vulnerabilities. When something is found, Fleet helps you prioritize by actual exploit likelihood and gives you the tools to remediate automatically, without a ticket being created. We call this autonomous endpoint management.

+
+
+
+
+
+ Detect +
+ Detect +
+
+
+

+ Fleet matches installed software, OS versions, browser plugins, and Python libraries against known vulnerability databases, including CISA Known Exploited Vulnerabilities. +

+
+
+
+
+ Prioritize +
+ Prioritize +
+
+
+

+ Not every CVE is equal. Fleet uses CISA KEV and EPSS data so your team focuses on vulnerabilities actually being exploited, not just those with high CVSS scores. +

+
+
+
+
+ Remediate +
+ Remediate +
+
+
+

+ When a device has vulnerable software, Fleet can install the correct version automatically, or apply a deeper fix. No ticket, no manual intervention. +

+
+
+
+
+ Track +
+ Track +
+
+
+

+ See which vulnerabilities were resolved, how quickly, and which devices are still exposed. Report on mean time to patch and exposure windows. +

+
+
+
+
+ +
+
+

“Auto-patching at scale is inevitable and therefore auditability, rollback, and exception handling are even more important when you're managing tens of thousands of devices. The human in the loop is what makes it safe.”

+
+
+ Mike McNeil +
+
+

Mike McNeil

+

Cofounder and CEO, Fleet

+
+
+
+
+ + <%/* */%> +
+
+
+ Autonomous, with humans in the loop +
+
+

Autonomous, with humans in the loop

+

As automated remediation scales, the controls around it matter more, not less. Fleet's GitOps workflow means every automated action is reviewable, reversible, and auditable.

+ Manage devices as code +
+
+
+
+
+ AI-assisted policies +
+ AI-assisted policies +
+
+
+

+ Describe what you want in plain language. Fleet drafts the policy as a pull request. A human reviews and approves. +

+
+
+
+
+ Peer review and rollback +
+ Peer review and rollback +
+
+
+

+ Every change goes through a pull request. Roll back any change with a single revert. The audit trail scales with the automation. +

+
+
+
+
+ Scoped automation +
+ Scoped automation +
+
+
+

+ Configure ring deployments, exclusions, and variations by role, team, or geography. Automate aggressively where you can, carefully where you must. +

+
+
+
+
+ Exposure reporting +
+ Exposure reporting +
+
+
+

+ See which CVEs were resolved in hours vs. weeks. Report on mean time to patch and exposure windows. +

+
+
+
+
+ + + +
+
+
+ Vulnerability response, built in +
+
+

Vulnerability response, built in

+

Fleet's vulnerability response is part of the same platform you use to manage devices. No separate tool, no separate workflow.

+ Talk to an engineer +
+
+
+
+
+ Advanced mitigations +
+ Advanced mitigations +
+
+

+ When an update isn't available, Fleet can uninstall old versions, denylist vulnerable binaries, or remove stale apps. +

+
+
+
+ Patches that respect users +
+ Patches that respect users +
+
+

+ Install updates when apps are idle. Notify users before a reboot. Exempt specific devices or people when needed. +

+
+
+
+ No network scans +
+ No network scans +
+
+

+ Fleet uses a lightweight agent instead of network vulnerability scans. Get up-to-date data without clogging your network or missing off-premises devices. +

+
+
+
+ Zero-day tracking +
+ Zero-day tracking +
+
+

+ Track newly disclosed vulnerabilities across your fleet as soon as they're published. See which devices are affected before a patch is available. +

+
+
+
+ Cross-platform normalization +
+ Cross-platform normalization +
+
+

+ Normalize vulnerability and asset data across macOS, Windows, Linux, and more. One view, regardless of OS. +

+
+
+
+ Automated ticketing +
+ Automated ticketing +
+
+

+ Create Jira or ServiceNow tickets automatically when vulnerabilities are detected. +

+
+
+
+ + +
+
+
+

What people are saying

+
+ +
+
+ +
+
+
+

security & control

+

See what's on every device, control what belongs.

+
+
+ Talk to an engineer + Try it yourself +
+
+
+
+
+ +
+<%- /* Expose server-rendered data as window.SAILS_LOCALS :: */ exposeLocalsToBrowser() %>