Move code highlighting to build time (#10614)
* Bump react-scripts to v14 * Pull in latest dependencies * Replace text-and-content on home page * WIP replace text-and-content on use case pages * Finish removing text-and-content from use-case pages * Remove text-and-content completely * Add logo-grid dep, fix style import * Remove unneeded indirect deps
							
								
								
									
										802
									
								
								website/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						| @@ -5,20 +5,22 @@ | |||||||
|   "author": "HashiCorp", |   "author": "HashiCorp", | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@hashicorp/mktg-global-styles": "2.1.0", |     "@hashicorp/mktg-global-styles": "2.1.0", | ||||||
|     "@hashicorp/nextjs-scripts": "13.0.0-canary.1", |     "@hashicorp/nextjs-scripts": "14.0.1", | ||||||
|     "@hashicorp/react-button": "4.0.0", |     "@hashicorp/react-button": "4.0.0", | ||||||
|     "@hashicorp/react-case-study-slider": "3.0.3", |     "@hashicorp/react-case-study-slider": "3.0.3", | ||||||
|  |     "@hashicorp/react-code-block": "3.0.3", | ||||||
|     "@hashicorp/react-docs-page": "10.3.2", |     "@hashicorp/react-docs-page": "10.3.2", | ||||||
|     "@hashicorp/react-hashi-stack-menu": "1.0.11", |     "@hashicorp/react-hashi-stack-menu": "1.0.11", | ||||||
|     "@hashicorp/react-head": "1.1.6", |     "@hashicorp/react-head": "1.1.6", | ||||||
|     "@hashicorp/react-hero": "4.1.0", |     "@hashicorp/react-hero": "4.1.0", | ||||||
|     "@hashicorp/react-image": "3.0.3", |     "@hashicorp/react-image": "3.0.3", | ||||||
|     "@hashicorp/react-inline-svg": "5.0.0", |     "@hashicorp/react-inline-svg": "5.0.0", | ||||||
|  |     "@hashicorp/react-logo-grid": "3.0.1", | ||||||
|     "@hashicorp/react-markdown-page": "0.1.0", |     "@hashicorp/react-markdown-page": "0.1.0", | ||||||
|     "@hashicorp/react-product-downloader": "4.0.2", |     "@hashicorp/react-product-downloader": "4.0.2", | ||||||
|     "@hashicorp/react-section-header": "3.0.1", |     "@hashicorp/react-section-header": "3.0.1", | ||||||
|     "@hashicorp/react-subnav": "7.1.0", |     "@hashicorp/react-subnav": "7.1.0", | ||||||
|     "@hashicorp/react-text-and-content": "4.1.8", |     "@hashicorp/react-text-splits": "1.0.5", | ||||||
|     "@hashicorp/react-use-cases": "2.0.1", |     "@hashicorp/react-use-cases": "2.0.1", | ||||||
|     "@hashicorp/react-vertical-text-block-list": "3.0.1", |     "@hashicorp/react-vertical-text-block-list": "3.0.1", | ||||||
|     "next": "9.5.5", |     "next": "9.5.5", | ||||||
|   | |||||||
							
								
								
									
										56
									
								
								website/pages/home/content.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,56 @@ | |||||||
|  | { | ||||||
|  |   "principles": [ | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "API-driven", | ||||||
|  |         "content": "Use policy to codify, protect, and automate access to secrets." | ||||||
|  |       }, | ||||||
|  |       "codeBlock": { | ||||||
|  |         "options": { "showWindowBar": "true" }, | ||||||
|  |         "language": "shell-session", | ||||||
|  |         "code": "$ curl \n    --header \"X-Vault-Token: ...\" \n    --request POST \n    --data @payload.json \n    https://127.0.0.1:8200/v1/secret/config" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "Identity Plugins", | ||||||
|  |         "content": "Seamlessly integrate any trusted identity provider.", | ||||||
|  |         "textSide": "right" | ||||||
|  |       }, | ||||||
|  |       "logoGrid": [ | ||||||
|  |         "aws", | ||||||
|  |         "microsoft-azure", | ||||||
|  |         "google", | ||||||
|  |         { | ||||||
|  |           "url": "https://www.datocms-assets.com/2885/1556657783-oktalogo.svg" | ||||||
|  |         }, | ||||||
|  |         { "url": "https://www.datocms-assets.com/2885/1539817287-cf.svg" }, | ||||||
|  |         "alibaba-cloud", | ||||||
|  |         { "url": "https://www.datocms-assets.com/2885/1506540149-black.svg" }, | ||||||
|  |         "kubernetes", | ||||||
|  |         "github" | ||||||
|  |       ] | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "Extend and integrate", | ||||||
|  |         "content": "Securely manage secrets and access through a centralized workflow." | ||||||
|  |       }, | ||||||
|  |       "logoGrid": [ | ||||||
|  |         "mysql", | ||||||
|  |         "cassandra", | ||||||
|  |         "oracle", | ||||||
|  |         "aws", | ||||||
|  |         "mongodb", | ||||||
|  |         { | ||||||
|  |           "url": "https://www.datocms-assets.com/2885/1508434209-consul_primarylogo_fullcolor.svg" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           "url": "https://www.datocms-assets.com/2885/1539817686-microsoft-sql-server.svg" | ||||||
|  |         }, | ||||||
|  |         "postgresql", | ||||||
|  |         "microsoft-azure" | ||||||
|  |       ] | ||||||
|  |     } | ||||||
|  |   ] | ||||||
|  | } | ||||||
| @@ -1,12 +1,19 @@ | |||||||
| import Hero from '@hashicorp/react-hero' | import Hero from '@hashicorp/react-hero' | ||||||
| import SectionHeader from '@hashicorp/react-section-header' | import SectionHeader from '@hashicorp/react-section-header' | ||||||
| import UseCases from '@hashicorp/react-use-cases' | import UseCases from '@hashicorp/react-use-cases' | ||||||
| import TextAndContent from '@hashicorp/react-text-and-content' | import TextSplits from '@hashicorp/react-text-splits' | ||||||
| import Button from '@hashicorp/react-button' | import Button from '@hashicorp/react-button' | ||||||
|  |  | ||||||
| import BeforeAfterDiagram from '../../components/before-after-diagram' | import BeforeAfterDiagram from '../../components/before-after-diagram' | ||||||
|  | //  Imports below are used in getStaticProps only | ||||||
|  | import RAW_CONTENT from './content.json' | ||||||
|  | import highlightData from '@hashicorp/nextjs-scripts/prism/highlight-data' | ||||||
|  |  | ||||||
| export default function Homepage() { | export async function getStaticProps() { | ||||||
|  |   const content = await highlightData(RAW_CONTENT) | ||||||
|  |   return { props: { content } } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export default function Homepage({ content }) { | ||||||
|   return ( |   return ( | ||||||
|     <div id="page-home"> |     <div id="page-home"> | ||||||
|       <div className="g-section-block page-wrap"> |       <div className="g-section-block page-wrap"> | ||||||
| @@ -18,20 +25,20 @@ export default function Homepage() { | |||||||
|               size: 55617, |               size: 55617, | ||||||
|               url: |               url: | ||||||
|                 'https://www.datocms-assets.com/2885/1539894412-vault-bg.jpg', |                 'https://www.datocms-assets.com/2885/1539894412-vault-bg.jpg', | ||||||
|               width: 3196 |               width: 3196, | ||||||
|             }, |             }, | ||||||
|             backgroundTheme: 'light', |             backgroundTheme: 'light', | ||||||
|             buttons: [ |             buttons: [ | ||||||
|               { |               { | ||||||
|                 external: false, |                 external: false, | ||||||
|                 title: 'Download', |                 title: 'Download', | ||||||
|                 url: 'https://www.vaultproject.io/downloads' |                 url: 'https://www.vaultproject.io/downloads', | ||||||
|               }, |               }, | ||||||
|               { |               { | ||||||
|                 external: false, |                 external: false, | ||||||
|                 title: 'Get Started with Vault', |                 title: 'Get Started with Vault', | ||||||
|                 url: 'https://www.vaultproject.io/intro/getting-started' |                 url: 'https://www.vaultproject.io/intro/getting-started', | ||||||
|               } |               }, | ||||||
|             ], |             ], | ||||||
|             centered: false, |             centered: false, | ||||||
|             description: |             description: | ||||||
| @@ -46,9 +53,9 @@ export default function Homepage() { | |||||||
|                   { |                   { | ||||||
|                     srcType: 'mp4', |                     srcType: 'mp4', | ||||||
|                     url: |                     url: | ||||||
|                       'https://www.datocms-assets.com/2885/1543956852-vault-v1-0-ui-opt.mp4' |                       'https://www.datocms-assets.com/2885/1543956852-vault-v1-0-ui-opt.mp4', | ||||||
|                   } |                   }, | ||||||
|                 ] |                 ], | ||||||
|               }, |               }, | ||||||
|               { |               { | ||||||
|                 name: 'CLI', |                 name: 'CLI', | ||||||
| @@ -57,11 +64,11 @@ export default function Homepage() { | |||||||
|                   { |                   { | ||||||
|                     srcType: 'mp4', |                     srcType: 'mp4', | ||||||
|                     url: |                     url: | ||||||
|                       'https://www.datocms-assets.com/2885/1543956847-vault-v1-0-cli-opt.mp4' |                       'https://www.datocms-assets.com/2885/1543956847-vault-v1-0-cli-opt.mp4', | ||||||
|                   } |                   }, | ||||||
|                 ] |                 ], | ||||||
|               } |               }, | ||||||
|             ] |             ], | ||||||
|           }} |           }} | ||||||
|         /> |         /> | ||||||
|  |  | ||||||
| @@ -81,7 +88,7 @@ export default function Homepage() { | |||||||
|             beforeImage={{ |             beforeImage={{ | ||||||
|               url: |               url: | ||||||
|                 'https://www.datocms-assets.com/2885/1579635889-static-infrastructure.svg', |                 'https://www.datocms-assets.com/2885/1579635889-static-infrastructure.svg', | ||||||
|               format: 'svg' |               format: 'svg', | ||||||
|             }} |             }} | ||||||
|             beforeHeadline="Static Infrastructure" |             beforeHeadline="Static Infrastructure" | ||||||
|             beforeContent={`Datacenters with inherently high-trust networks with clear network perimeters. |             beforeContent={`Datacenters with inherently high-trust networks with clear network perimeters. | ||||||
| @@ -94,7 +101,7 @@ export default function Homepage() { | |||||||
|             afterImage={{ |             afterImage={{ | ||||||
|               url: |               url: | ||||||
|                 'https://www.datocms-assets.com/2885/1579635892-dynamic-infrastructure.svg', |                 'https://www.datocms-assets.com/2885/1579635892-dynamic-infrastructure.svg', | ||||||
|               format: 'svg' |               format: 'svg', | ||||||
|             }} |             }} | ||||||
|             afterHeadline="Dynamic Infrastructure" |             afterHeadline="Dynamic Infrastructure" | ||||||
|             afterContent={`Multiple clouds and private datacenters without a clear network perimeter. |             afterContent={`Multiple clouds and private datacenters without a clear network perimeter. | ||||||
| @@ -123,13 +130,13 @@ export default function Homepage() { | |||||||
|                     alt: null, |                     alt: null, | ||||||
|                     format: 'png', |                     format: 'png', | ||||||
|                     url: |                     url: | ||||||
|                       'https://www.datocms-assets.com/2885/1575422126-secrets.png' |                       'https://www.datocms-assets.com/2885/1575422126-secrets.png', | ||||||
|                   }, |                   }, | ||||||
|                   link: { |                   link: { | ||||||
|                     external: false, |                     external: false, | ||||||
|                     title: 'Learn more', |                     title: 'Learn more', | ||||||
|                     url: '/use-cases/secrets-management' |                     url: '/use-cases/secrets-management', | ||||||
|                   } |                   }, | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                   title: 'Data Encryption', |                   title: 'Data Encryption', | ||||||
| @@ -139,13 +146,13 @@ export default function Homepage() { | |||||||
|                     alt: null, |                     alt: null, | ||||||
|                     format: 'png', |                     format: 'png', | ||||||
|                     url: |                     url: | ||||||
|                       'https://www.datocms-assets.com/2885/1575422166-encryption.png' |                       'https://www.datocms-assets.com/2885/1575422166-encryption.png', | ||||||
|                   }, |                   }, | ||||||
|                   link: { |                   link: { | ||||||
|                     external: false, |                     external: false, | ||||||
|                     title: 'Learn more', |                     title: 'Learn more', | ||||||
|                     url: '/use-cases/data-encryption' |                     url: '/use-cases/data-encryption', | ||||||
|                   } |                   }, | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                   title: 'Identity-based Access', |                   title: 'Identity-based Access', | ||||||
| @@ -155,98 +162,25 @@ export default function Homepage() { | |||||||
|                     alt: null, |                     alt: null, | ||||||
|                     format: 'png', |                     format: 'png', | ||||||
|                     url: |                     url: | ||||||
|                       'https://www.datocms-assets.com/2885/1575422201-identity.png' |                       'https://www.datocms-assets.com/2885/1575422201-identity.png', | ||||||
|                   }, |                   }, | ||||||
|                   link: { |                   link: { | ||||||
|                     external: false, |                     external: false, | ||||||
|                     title: 'Learn more', |                     title: 'Learn more', | ||||||
|                     url: '/use-cases/identity-based-access' |                     url: '/use-cases/identity-based-access', | ||||||
|                   } |                   }, | ||||||
|                 } |                 }, | ||||||
|               ]} |               ]} | ||||||
|             /> |             /> | ||||||
|           </div> |           </div> | ||||||
|         </section> |         </section> | ||||||
|  |  | ||||||
|         {/* Principles / Text & Content Blocks */} |         {/* Principles / Text & Content Blocks */} | ||||||
|  |         <section className="no-section-spacing"> | ||||||
|         <section className="g-container"> |           <div className="g-grid-container"> | ||||||
|           <SectionHeader headline="Vault Principles" /> |             <SectionHeader headline="Vault Principles" /> | ||||||
|  |  | ||||||
|           <TextAndContent |  | ||||||
|             data={{ |  | ||||||
|               text: `### API-driven |  | ||||||
|  |  | ||||||
| Use policy to codify, protect, and automate access to secrets`, |  | ||||||
|               content: { |  | ||||||
|                 __typename: 'SbcCodeBlockRecord', |  | ||||||
|                 chrome: true, |  | ||||||
|                 code: `$ curl \n |  | ||||||
|     --header "X-Vault-Token: ..." \n |  | ||||||
|     --request POST \n |  | ||||||
|     --data @payload.json \n |  | ||||||
|     https://127.0.0.1:8200/v1/secret/config` |  | ||||||
|               } |  | ||||||
|             }} |  | ||||||
|           /> |  | ||||||
|  |  | ||||||
|           <div className="g-text-and-content reverse"> |  | ||||||
|             <div className="text"> |  | ||||||
|               <div> |  | ||||||
|                 <h3>Identity Plugins</h3> |  | ||||||
|                 <p>Seamlessly integrate any trusted identity provider</p> |  | ||||||
|               </div> |  | ||||||
|             </div> |  | ||||||
|             <div className="content logo-grid"> |  | ||||||
|               <ul className="g-logo-grid large"> |  | ||||||
|                 {[ |  | ||||||
|                   'https://www.datocms-assets.com/2885/1510033601-aws_logo_rgb_fullcolor.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1539799149-azure-stacked-color.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1513617132-google-cloud.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1556657783-oktalogo.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1539817287-cf.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1506527326-color.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1506540149-black.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1539876682-k8s.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1506535057-black.svg' |  | ||||||
|                 ].map(logo => ( |  | ||||||
|                   <li key={logo}> |  | ||||||
|                     <img src={logo} alt="company logo" /> |  | ||||||
|                   </li> |  | ||||||
|                 ))} |  | ||||||
|               </ul> |  | ||||||
|             </div> |  | ||||||
|           </div> |  | ||||||
|  |  | ||||||
|           <div className="g-text-and-content"> |  | ||||||
|             <div className="text"> |  | ||||||
|               <div> |  | ||||||
|                 <h3>Extend and integrate</h3> |  | ||||||
|                 <p> |  | ||||||
|                   Securely manage secrets and access through a centralized |  | ||||||
|                   workflow |  | ||||||
|                 </p> |  | ||||||
|               </div> |  | ||||||
|             </div> |  | ||||||
|             <div className="content logo-grid"> |  | ||||||
|               <ul className="g-logo-grid large"> |  | ||||||
|                 {[ |  | ||||||
|                   'https://www.datocms-assets.com/2885/1506540090-color.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1506540114-color.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1506527176-color.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1510033601-aws_logo_rgb_fullcolor.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1506540175-color.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1508434209-consul_primarylogo_fullcolor.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1539817686-microsoft-sql-server.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1539818112-postgresql.svg', |  | ||||||
|                   'https://www.datocms-assets.com/2885/1539799149-azure-stacked-color.svg' |  | ||||||
|                 ].map(logo => ( |  | ||||||
|                   <li key={logo}> |  | ||||||
|                     <img src={logo} alt="company logo" /> |  | ||||||
|                   </li> |  | ||||||
|                 ))} |  | ||||||
|               </ul> |  | ||||||
|             </div> |  | ||||||
|           </div> |           </div> | ||||||
|  |           <TextSplits textSplits={content.principles} /> | ||||||
|         </section> |         </section> | ||||||
|  |  | ||||||
|         <section className="g-container"> |         <section className="g-container"> | ||||||
|   | |||||||
| @@ -1,2 +1,3 @@ | |||||||
| import Homepage from './home' | import Homepage, { getStaticProps } from './home' | ||||||
|  | export { getStaticProps } | ||||||
| export default Homepage | export default Homepage | ||||||
|   | |||||||
| @@ -9,20 +9,20 @@ | |||||||
|  |  | ||||||
| @import '~@hashicorp/react-button/styles/index.css'; | @import '~@hashicorp/react-button/styles/index.css'; | ||||||
| @import '~@hashicorp/react-case-study-slider/style.css'; | @import '~@hashicorp/react-case-study-slider/style.css'; | ||||||
| @import '~@hashicorp/react-code-block/dist/style.css'; | @import '~@hashicorp/react-code-block/style.css'; | ||||||
| @import '~@hashicorp/react-consent-manager/dist/style.css'; | @import '~@hashicorp/react-consent-manager/style.css'; | ||||||
| @import '~@hashicorp/react-content/style.css'; | @import '~@hashicorp/react-content/style.css'; | ||||||
| @import '~@hashicorp/react-docs-page/style.css'; | @import '~@hashicorp/react-docs-page/style.css'; | ||||||
| @import '~@hashicorp/react-docs-sidenav/style.css'; | @import '~@hashicorp/react-docs-sidenav/style.css'; | ||||||
| @import '~@hashicorp/react-enterprise-alert/dist/style.css'; | @import '~@hashicorp/react-enterprise-alert/style.css'; | ||||||
| @import '~@hashicorp/react-hero/style.css'; | @import '~@hashicorp/react-hero/style.css'; | ||||||
| @import '~@hashicorp/react-logo-grid/dist/style.css'; | @import '~@hashicorp/react-logo-grid/style.css'; | ||||||
| @import '~@hashicorp/react-product-downloader/dist/style.css'; | @import '~@hashicorp/react-product-downloader/dist/style.css'; | ||||||
| @import '~@hashicorp/react-search/style.css'; | @import '~@hashicorp/react-search/style.css'; | ||||||
| @import '~@hashicorp/react-section-header/style.css'; | @import '~@hashicorp/react-section-header/style.css'; | ||||||
| @import '~@hashicorp/react-tabs/dist/style.css'; | @import '~@hashicorp/react-tabs/style.css'; | ||||||
| @import '~@hashicorp/react-text-and-content/dist/style.css'; | @import '~@hashicorp/react-text-split/style.css'; | ||||||
| @import '~@hashicorp/react-toggle/dist/style.css'; | @import '~@hashicorp/react-toggle/style.css'; | ||||||
| @import '~@hashicorp/react-use-cases/dist/style.css'; | @import '~@hashicorp/react-use-cases/dist/style.css'; | ||||||
| @import '~@hashicorp/react-vertical-text-block-list/style.css'; | @import '~@hashicorp/react-vertical-text-block-list/style.css'; | ||||||
|  |  | ||||||
| @@ -70,7 +70,7 @@ | |||||||
|     margin-top: 72px; |     margin-top: 72px; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   & > * + *, |   &:not(.no-section-spacing) > * + *, | ||||||
|   & > .g-container > * + * { |   & > .g-container > * + * { | ||||||
|     margin-top: 96px; |     margin-top: 96px; | ||||||
|   } |   } | ||||||
|   | |||||||
							
								
								
									
										23
									
								
								website/pages/use-cases/data-encryption/content.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,23 @@ | |||||||
|  | { | ||||||
|  |   "features": [ | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "API-driven Encryption", | ||||||
|  |         "content": "Encrypt application data during transit and rest with AES 256-bit CBC data encryption and TLS in transit." | ||||||
|  |       }, | ||||||
|  |       "image": { | ||||||
|  |         "url": "https://www.datocms-assets.com/2885/1539314348-eaas.png" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "Encryption Key Rolling", | ||||||
|  |         "content": "Update and roll new keys throughout distributed infrastructure while retaining the ability to decrypt encrypted data.", | ||||||
|  |         "textSide": "right" | ||||||
|  |       }, | ||||||
|  |       "image": { | ||||||
|  |         "url": "https://www.datocms-assets.com/2885/1539314609-encryption-key-rolling.png" | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   ] | ||||||
|  | } | ||||||
| @@ -1,10 +1,18 @@ | |||||||
| import SectionHeader from '@hashicorp/react-section-header' | import SectionHeader from '@hashicorp/react-section-header' | ||||||
| import Button from '@hashicorp/react-button' | import Button from '@hashicorp/react-button' | ||||||
| import TextAndContent from '@hashicorp/react-text-and-content' | import TextSplits from '@hashicorp/react-text-splits' | ||||||
| import BeforeAfterDiagram from 'components/before-after-diagram' | import BeforeAfterDiagram from 'components/before-after-diagram' | ||||||
| import UseCaseCtaSection from 'components/use-case-cta-section' | import UseCaseCtaSection from 'components/use-case-cta-section' | ||||||
|  | //  Imports below are used in getStaticProps | ||||||
|  | import RAW_CONTENT from './content.json' | ||||||
|  | import highlightData from '@hashicorp/nextjs-scripts/prism/highlight-data' | ||||||
|  |  | ||||||
| export default function DataEncryptionUseCase() { | export async function getStaticProps() { | ||||||
|  |   const content = await highlightData(RAW_CONTENT) | ||||||
|  |   return { props: { content } } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export default function DataEncryptionUseCase({ content }) { | ||||||
|   return ( |   return ( | ||||||
|     <div id="use-cases" className="g-section-block page-wrap"> |     <div id="use-cases" className="g-section-block page-wrap"> | ||||||
|       {/* Header / Buttons */} |       {/* Header / Buttons */} | ||||||
| @@ -43,41 +51,12 @@ export default function DataEncryptionUseCase() { | |||||||
|         </div> |         </div> | ||||||
|       </section> |       </section> | ||||||
|  |  | ||||||
|       {/* Features / Text and content */} |       {/* Features */} | ||||||
|       <section className="g-container"> |       <section className="no-section-spacing"> | ||||||
|         <SectionHeader headline=" Encryption Features" /> |         <div className="g-grid-container"> | ||||||
|  |           <SectionHeader headline=" Encryption Features" /> | ||||||
|         <TextAndContent |         </div> | ||||||
|           data={{ |         <TextSplits textSplits={content.features} /> | ||||||
|             text: `### API-driven Encryption |  | ||||||
|  |  | ||||||
| Encrypt application data during transit and rest with AES 256-bit CBC data encryption and TLS in transit.`, |  | ||||||
|             content: { |  | ||||||
|               __typename: 'SbcImageRecord', |  | ||||||
|               image: { |  | ||||||
|                 url: 'https://www.datocms-assets.com/2885/1539314348-eaas.png', |  | ||||||
|                 format: 'png', |  | ||||||
|               }, |  | ||||||
|             }, |  | ||||||
|           }} |  | ||||||
|         /> |  | ||||||
|  |  | ||||||
|         <TextAndContent |  | ||||||
|           data={{ |  | ||||||
|             reverseDirection: true, |  | ||||||
|             text: `### Encryption Key Rolling |  | ||||||
|  |  | ||||||
| Update and roll new keys throughout distributed infrastructure while retaining the ability to decrypt encrypted data`, |  | ||||||
|             content: { |  | ||||||
|               __typename: 'SbcImageRecord', |  | ||||||
|               image: { |  | ||||||
|                 url: |  | ||||||
|                   'https://www.datocms-assets.com/2885/1539314609-encryption-key-rolling.png', |  | ||||||
|                 format: 'png', |  | ||||||
|               }, |  | ||||||
|             }, |  | ||||||
|           }} |  | ||||||
|         /> |  | ||||||
|       </section> |       </section> | ||||||
|  |  | ||||||
|       <UseCaseCtaSection /> |       <UseCaseCtaSection /> | ||||||
|   | |||||||
							
								
								
									
										78
									
								
								website/pages/use-cases/identity-based-access/content.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,78 @@ | |||||||
|  | { | ||||||
|  |   "features": [ | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "Identity Plugins", | ||||||
|  |         "content": "Improve the extensibility of Vault with pluggable identity backends." | ||||||
|  |       }, | ||||||
|  |       "logoGrid": [ | ||||||
|  |         "aws", | ||||||
|  |         "microsoft-azure", | ||||||
|  |         "google", | ||||||
|  |         "kubernetes", | ||||||
|  |         { | ||||||
|  |           "url": "https://www.datocms-assets.com/2885/1608658148-nomad.png" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           "url": "https://www.datocms-assets.com/2885/1556657783-oktalogo.svg" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           "url": "https://www.datocms-assets.com/2885/1608658344-pivotalcf.png" | ||||||
|  |         }, | ||||||
|  |         { "url": "https://www.datocms-assets.com/2885/1506540149-black.svg" }, | ||||||
|  |         { "url": "https://www.datocms-assets.com/2885/1608143270-ellipsis.png" } | ||||||
|  |       ] | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "Entities", | ||||||
|  |         "content": "Integrated identities across platforms and using this information for policy and access control decisions.", | ||||||
|  |         "textSide": "right" | ||||||
|  |       }, | ||||||
|  |       "image": { | ||||||
|  |         "url": "https://www.datocms-assets.com/2885/1608659415-screenshot-entities.png" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "Control Groups", | ||||||
|  |         "content": "Require multiple Identity Entities or members of Identity Groups to authorize an requested action." | ||||||
|  |       }, | ||||||
|  |       "image": { | ||||||
|  |         "url": "https://www.datocms-assets.com/2885/1608659409-screenshot-control-groups.png" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "ACL Templates and Policy Control", | ||||||
|  |         "content": "Create and manage policies that authorize access control throughout your infrastructure and organization." | ||||||
|  |       }, | ||||||
|  |       "codeBlock": { | ||||||
|  |         "options": { "showWindowBar": true }, | ||||||
|  |         "language": "hcl", | ||||||
|  |         "code": "# User template (user-tmpl.hcl)\n# Grant permissions on user specific path\npath \"user-kv/data/{{identity.entity.name}}/*\" {\n  capabilities = [ \"create\", \"update\", \"read\", \"delete\", \"list\" ]\n}\n\n# For Web UI usage\npath \"user-kv/metadata\" {\n  capabilities = [\"list\"]\n}\n\n# Group template (group-tmpl.hcl)\n# Grant permissions on the group specific path\n# The region is specified in the group metadata\npath \"group-kv/data/education/{{identity.groups.names.education.metadata.region}}/*\" {\n  capabilities = [ \"create\", \"update\", \"read\", \"delete\", \"list\" ]\n}\n\n# Group member can update the group information\npath \"identity/group/id/{{identity.groups.names.education.id}}\" {\n  capabilities = [ \"update\", \"read\" ]\n}\n\n# For Web UI usage\npath \"group-kv/metadata\" {\n  capabilities = [\"list\"]\n}\n\npath \"identity/group/id\" {\n  capabilities = [ \"list\" ]\n}\n" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "Identity Groups", | ||||||
|  |         "content": "Group trusted identities into logical groups for group-based access control.", | ||||||
|  |         "textSide": "right" | ||||||
|  |       }, | ||||||
|  |       "image": { | ||||||
|  |         "url": "https://www.datocms-assets.com/2885/1608659421-screenshot-identity-groups.png" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "Multi-factor Authentication", | ||||||
|  |         "content": "Enforce MFA workflows when accessing a secret or a secret path." | ||||||
|  |       }, | ||||||
|  |       "codeBlock": { | ||||||
|  |         "options": { "showWindowBar": true }, | ||||||
|  |         "language": "shell-session", | ||||||
|  |         "code": "$ curl --header \"X-Vault-Token: ...\" \\\n--header \"X-Vault-MFA:my_totp:695452\" \\\nhttp://127.0.0.1:8200/v1/secret/foo" | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   ] | ||||||
|  | } | ||||||
| Before Width: | Height: | Size: 7.1 KiB | 
| Before Width: | Height: | Size: 3.8 KiB | 
| Before Width: | Height: | Size: 6.2 KiB | 
| Before Width: | Height: | Size: 6.9 KiB | 
| Before Width: | Height: | Size: 1.9 KiB | 
| Before Width: | Height: | Size: 4.2 KiB | 
| Before Width: | Height: | Size: 6.4 KiB | 
| Before Width: | Height: | Size: 7.2 KiB | 
| Before Width: | Height: | Size: 98 KiB | 
| Before Width: | Height: | Size: 111 KiB | 
| Before Width: | Height: | Size: 84 KiB | 
| @@ -1,10 +1,18 @@ | |||||||
| import SectionHeader from '@hashicorp/react-section-header' | import SectionHeader from '@hashicorp/react-section-header' | ||||||
| import Button from '@hashicorp/react-button' | import Button from '@hashicorp/react-button' | ||||||
| import TextAndContent from '@hashicorp/react-text-and-content' | import TextSplits from '@hashicorp/react-text-splits' | ||||||
| import BeforeAfterDiagram from 'components/before-after-diagram' | import BeforeAfterDiagram from 'components/before-after-diagram' | ||||||
| import UseCaseCtaSection from 'components/use-case-cta-section' | import UseCaseCtaSection from 'components/use-case-cta-section' | ||||||
|  | //  Imports below are used in getStaticProps | ||||||
|  | import RAW_CONTENT from './content.json' | ||||||
|  | import highlightData from '@hashicorp/nextjs-scripts/prism/highlight-data' | ||||||
|  |  | ||||||
| export default function DataEncryptionUseCase() { | export async function getStaticProps() { | ||||||
|  |   const content = await highlightData(RAW_CONTENT) | ||||||
|  |   return { props: { content } } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export default function DataEncryptionUseCase({ content }) { | ||||||
|   return ( |   return ( | ||||||
|     <div id="use-cases" className="g-section-block page-wrap"> |     <div id="use-cases" className="g-section-block page-wrap"> | ||||||
|       {/* Header / Buttons */} |       {/* Header / Buttons */} | ||||||
| @@ -41,149 +49,12 @@ export default function DataEncryptionUseCase() { | |||||||
|         </div> |         </div> | ||||||
|       </section> |       </section> | ||||||
|  |  | ||||||
|       {/* Features / Text and content */} |       {/* Features */} | ||||||
|       <section className="g-container"> |       <section className="no-section-spacing"> | ||||||
|         <SectionHeader headline="Identity-based Access Features" /> |         <div className="g-grid-container"> | ||||||
|  |           <SectionHeader headline="Identity-based Access Features" /> | ||||||
|         <div className="g-text-and-content"> |  | ||||||
|           <div className="text"> |  | ||||||
|             <div> |  | ||||||
|               <h3 id="secure-plugins">Identity Plugins</h3> |  | ||||||
|               <p> |  | ||||||
|                 Improve the extensibility of Vault with pluggable identity |  | ||||||
|                 backends |  | ||||||
|               </p> |  | ||||||
|             </div> |  | ||||||
|           </div> |  | ||||||
|           <div className="content logo-grid"> |  | ||||||
|             <ul className="g-logo-grid large"> |  | ||||||
|               {[ |  | ||||||
|                 'aws', |  | ||||||
|                 'azure', |  | ||||||
|                 'gcp', |  | ||||||
|                 'kubernetes', |  | ||||||
|                 'nomad', |  | ||||||
|                 'okta', |  | ||||||
|                 'pivotalcf', |  | ||||||
|                 'ssh', |  | ||||||
|               ].map((logo) => ( |  | ||||||
|                 <li key={logo}> |  | ||||||
|                   <img |  | ||||||
|                     src={require(`./img/logos/${logo}.png`)} |  | ||||||
|                     alt="company logo" |  | ||||||
|                   /> |  | ||||||
|                 </li> |  | ||||||
|               ))} |  | ||||||
|             </ul> |  | ||||||
|           </div> |  | ||||||
|         </div> |         </div> | ||||||
|  |         <TextSplits textSplits={content.features} /> | ||||||
|         <TextAndContent |  | ||||||
|           data={{ |  | ||||||
|             reverseDirection: true, |  | ||||||
|             text: `### Entities |  | ||||||
|  |  | ||||||
| Integrated identities across platforms and using this information for policy and access control decisions.`, |  | ||||||
|             content: { |  | ||||||
|               __typename: 'SbcImageRecord', |  | ||||||
|               image: { |  | ||||||
|                 url: require('./img/screenshot-entities.png'), |  | ||||||
|                 format: 'png', |  | ||||||
|               }, |  | ||||||
|             }, |  | ||||||
|           }} |  | ||||||
|         /> |  | ||||||
|  |  | ||||||
|         <TextAndContent |  | ||||||
|           data={{ |  | ||||||
|             text: `### Control Groups |  | ||||||
|  |  | ||||||
| Require multiple Identity Entities or members of Identity Groups to authorize an requested action.`, |  | ||||||
|             content: { |  | ||||||
|               __typename: 'SbcImageRecord', |  | ||||||
|               image: { |  | ||||||
|                 url: require('./img/screenshot-control-groups.png'), |  | ||||||
|                 format: 'png', |  | ||||||
|               }, |  | ||||||
|             }, |  | ||||||
|           }} |  | ||||||
|         /> |  | ||||||
|  |  | ||||||
|         <TextAndContent |  | ||||||
|           data={{ |  | ||||||
|             text: `### ACL Templates and Policy Control |  | ||||||
|  |  | ||||||
| Create and manage policies that authorize access control throughout your infrastructure and organization`, |  | ||||||
|             content: { |  | ||||||
|               __typename: 'SbcCodeBlockRecord', |  | ||||||
|               chrome: true, |  | ||||||
|               code: `# User template (user-tmpl.hcl) |  | ||||||
| # Grant permissions on user specific path |  | ||||||
|  |  | ||||||
| path "user-kv/data/{{identity.entity.name}}/*" { |  | ||||||
|   capabilities = [ "create", "update", "read", "delete", "list" ] |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # For Web UI usage |  | ||||||
| path "user-kv/metadata" { |  | ||||||
|   capabilities = ["list"] |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # Group template (group-tmpl.hcl) |  | ||||||
| # Grant permissions on the group specific path |  | ||||||
| # The region is specified in the group metadata |  | ||||||
| path "group-kv/data/education/{{identity.groups.names.education.metadata.region}}/*" { |  | ||||||
|   capabilities = [ "create", "update", "read", "delete", "list" ] |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # Group member can update the group information |  | ||||||
| path "identity/group/id/{{identity.groups.names.education.id}}" { |  | ||||||
|   capabilities = [ "update", "read" ] |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # For Web UI usage |  | ||||||
| path "group-kv/metadata" { |  | ||||||
|   capabilities = ["list"] |  | ||||||
| } |  | ||||||
|  |  | ||||||
| path "identity/group/id" { |  | ||||||
|   capabilities = [ "list" ] |  | ||||||
| }`, |  | ||||||
|             }, |  | ||||||
|           }} |  | ||||||
|         /> |  | ||||||
|  |  | ||||||
|         <TextAndContent |  | ||||||
|           data={{ |  | ||||||
|             reverseDirection: true, |  | ||||||
|             text: `### Identity Groups |  | ||||||
|  |  | ||||||
| Group trusted identities into logical groups for group-based access control.`, |  | ||||||
|             content: { |  | ||||||
|               __typename: 'SbcImageRecord', |  | ||||||
|               image: { |  | ||||||
|                 url: require('./img/screenshot-identity-groups.png'), |  | ||||||
|                 format: 'png', |  | ||||||
|               }, |  | ||||||
|             }, |  | ||||||
|           }} |  | ||||||
|         /> |  | ||||||
|  |  | ||||||
|         <TextAndContent |  | ||||||
|           data={{ |  | ||||||
|             text: `### Multi-factor Authentication |  | ||||||
|  |  | ||||||
| Enforce MFA workflows when accessing a secret or a secret path`, |  | ||||||
|             content: { |  | ||||||
|               __typename: 'SbcCodeBlockRecord', |  | ||||||
|               chrome: true, |  | ||||||
|               code: `$ curl \ |  | ||||||
| --header "X-Vault-Token: ..." \\ |  | ||||||
| --header "X-Vault-MFA:my_totp:695452" \\ |  | ||||||
| http://127.0.0.1:8200/v1/secret/foo`, |  | ||||||
|             }, |  | ||||||
|           }} |  | ||||||
|         /> |  | ||||||
|       </section> |       </section> | ||||||
|  |  | ||||||
|       <UseCaseCtaSection /> |       <UseCaseCtaSection /> | ||||||
|   | |||||||
							
								
								
									
										69
									
								
								website/pages/use-cases/secrets-management/content.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,69 @@ | |||||||
|  | { | ||||||
|  |   "features": [ | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "Dynamic Secrets", | ||||||
|  |         "content": "Dynamically create, revoke, and rotate secrets programmatically." | ||||||
|  |       }, | ||||||
|  |       "image": { | ||||||
|  |         "url": "https://www.datocms-assets.com/2885/1538684923-dynamic-secrets-screenshot.jpg" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "Secret Storage", | ||||||
|  |         "content": "Encrypt data while at rest, in the storage backend of your choice.", | ||||||
|  |         "textSide": "right" | ||||||
|  |       }, | ||||||
|  |       "codeBlock": { | ||||||
|  |         "options": { "showWindowBar": true }, | ||||||
|  |         "language": "shell-session", | ||||||
|  |         "code": "$ cat vault.config\nstorage \"consul\" {\n    address = \"127.0.0.1:8500\"\n    path    = \"vault\"\n}\nlistener \"tcp\" {\n    address = \"127.0.0.1:8200\"\n}\ntelemetry {\n    statsite_address = \"127.0.0.1:8125\"\n    disable_hostname = true\n}\n" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "Identity Plugins", | ||||||
|  |         "content": "Improve the extensibility of Vault with pluggable identity backends." | ||||||
|  |       }, | ||||||
|  |       "logoGrid": [ | ||||||
|  |         "mysql", | ||||||
|  |         "cassandra", | ||||||
|  |         "oracle", | ||||||
|  |         { | ||||||
|  |           "url": "https://www.datocms-assets.com/2885/1508434209-consul_primarylogo_fullcolor.svg" | ||||||
|  |         }, | ||||||
|  |         "aws", | ||||||
|  |         "mongodb", | ||||||
|  |         "postgresql", | ||||||
|  |         { | ||||||
|  |           "url": "https://www.datocms-assets.com/2885/1539817686-microsoft-sql-server.svg" | ||||||
|  |         }, | ||||||
|  |         { "url": "https://www.datocms-assets.com/2885/1608143270-ellipsis.png" } | ||||||
|  |       ] | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "Detailed Audit Logs", | ||||||
|  |         "content": "Detailed audit log of all client interaction (authentication, token creation, secret access & revocation).", | ||||||
|  |         "textSide": "right" | ||||||
|  |       }, | ||||||
|  |       "codeBlock": { | ||||||
|  |         "options": { "showWindowBar": true }, | ||||||
|  |         "language": "shell-session", | ||||||
|  |         "code": "$ cat audit.log | jq {\n    \"time\": \"2018-08-27T13:17:11.609621226Z\",\n    \"type\": \"response\",\n    \"auth\": {\n        \"client_token\": \"hmac-sha256:5c40f1e051ea75b83230a5bf16574090f697dfa22a78e437f12c1c9d226f45a5\",\n        \"accessor\": \"hmac-sha256:f254a2d442f172f0b761c9fd028f599ad91861ed16ac3a1e8d96771fd920e862\",\n        \"display_name\": \"token\",\n        \"metadata\": null,\n        \"entity_id\": \"\"\n    }\n}\n" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "textSplit": { | ||||||
|  |         "heading": "Leasing & Revoking Secrets", | ||||||
|  |         "content": "Manage authorization and create time-based tokens for automatic revocation or manual revocation." | ||||||
|  |       }, | ||||||
|  |       "codeBlock": { | ||||||
|  |         "options": { "showWindowBar": true }, | ||||||
|  |         "language": "shell-session", | ||||||
|  |         "code": "$ vault read database/creds/readonly\nKey             Value\n---             -----\nlease_id        database/creds/readonly/3e8174da-6ca0-143b-aa8c-4c238aa02809\nlease_duration  1h0m0s\nlease_renewable true\npassword        A1a-w2xv2zsq4r5ru940\nusername        v-token-readonly-48rt0t36sxp4wy81x8x1-1515627434\n[...]\n$ vault renew database/creds/readonly/3e8174da-6ca0-143b-aa8c-4c238aa02809\nKey             Value\n---             -----\nlease_id        database/creds/readonly/3e8174da-6ca0-143b-aa8c-4c238aa02809\nlease_duration  1h0m0s\nlease_renewable true\n$ vault lease revoke database/creds/readonly/3e8174da-6ca0-143b-aa8c-4c238aa02809\n" | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   ] | ||||||
|  | } | ||||||
| @@ -1,10 +1,18 @@ | |||||||
| import SectionHeader from '@hashicorp/react-section-header' | import SectionHeader from '@hashicorp/react-section-header' | ||||||
| import Button from '@hashicorp/react-button' | import Button from '@hashicorp/react-button' | ||||||
| import TextAndContent from '@hashicorp/react-text-and-content' | import TextSplits from '@hashicorp/react-text-splits' | ||||||
| import BeforeAfterDiagram from 'components/before-after-diagram' | import BeforeAfterDiagram from 'components/before-after-diagram' | ||||||
| import UseCaseCtaSection from 'components/use-case-cta-section' | import UseCaseCtaSection from 'components/use-case-cta-section' | ||||||
|  | //  Imports below are used in getStaticProps | ||||||
|  | import RAW_CONTENT from './content.json' | ||||||
|  | import highlightData from '@hashicorp/nextjs-scripts/prism/highlight-data' | ||||||
|  |  | ||||||
| export default function SecretsManagmentUseCase() { | export async function getStaticProps() { | ||||||
|  |   const content = await highlightData(RAW_CONTENT) | ||||||
|  |   return { props: { content } } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export default function SecretsManagmentUseCase({ content }) { | ||||||
|   return ( |   return ( | ||||||
|     <div id="use-cases" className="g-section-block page-wrap"> |     <div id="use-cases" className="g-section-block page-wrap"> | ||||||
|       <section className="g-container"> |       <section className="g-container"> | ||||||
| @@ -104,135 +112,12 @@ export default function SecretsManagmentUseCase() { | |||||||
|         </div> |         </div> | ||||||
|       </section> |       </section> | ||||||
|  |  | ||||||
|       {/* Features / Text and content */} |       {/* Features */} | ||||||
|       <section className="g-container"> |       <section className="no-section-spacing"> | ||||||
|         <SectionHeader headline="Secret Management Features" /> |         <div className="g-grid-container"> | ||||||
|  |           <SectionHeader headline="Secret Management Features" /> | ||||||
|         <TextAndContent |  | ||||||
|           data={{ |  | ||||||
|             text: `### Dynamic Secrets |  | ||||||
|  |  | ||||||
| Dynamically create, revoke, and rotate secrets programmatically`, |  | ||||||
|             content: { |  | ||||||
|               __typename: 'SbcImageRecord', |  | ||||||
|               image: { |  | ||||||
|                 url: |  | ||||||
|                   'https://www.datocms-assets.com/2885/1538684923-dynamic-secrets-screenshot.jpg', |  | ||||||
|                 format: 'jpg', |  | ||||||
|                 size: 71545, |  | ||||||
|                 width: 668, |  | ||||||
|                 height: 504, |  | ||||||
|               }, |  | ||||||
|             }, |  | ||||||
|           }} |  | ||||||
|         /> |  | ||||||
|  |  | ||||||
|         <TextAndContent |  | ||||||
|           data={{ |  | ||||||
|             reverseDirection: true, |  | ||||||
|             text: `### Secret Storage |  | ||||||
|  |  | ||||||
| Encrypt data while at rest, in the storage backend of your choice`, |  | ||||||
|             content: { |  | ||||||
|               __typename: 'SbcCodeBlockRecord', |  | ||||||
|               chrome: true, |  | ||||||
|               code: `$ cat vault.config |  | ||||||
| storage "consul" { |  | ||||||
|     address = "127.0.0.1:8500" |  | ||||||
|     path    = "vault" |  | ||||||
| } |  | ||||||
| listener "tcp" { |  | ||||||
|     address = "127.0.0.1:8200" |  | ||||||
| } |  | ||||||
| telemetry { |  | ||||||
|     statsite_address = "127.0.0.1:8125" |  | ||||||
|     disable_hostname = true |  | ||||||
| }`, |  | ||||||
|             }, |  | ||||||
|           }} |  | ||||||
|         /> |  | ||||||
|  |  | ||||||
|         <div className="g-text-and-content"> |  | ||||||
|           <div className="text"> |  | ||||||
|             <div> |  | ||||||
|               <h3>Identity Plugins</h3> |  | ||||||
|               <p> |  | ||||||
|                 Improve the extensibility of Vault with pluggable identity |  | ||||||
|                 backends |  | ||||||
|               </p> |  | ||||||
|             </div> |  | ||||||
|           </div> |  | ||||||
|           <div className="content logo-grid"> |  | ||||||
|             <ul className="g-logo-grid large"> |  | ||||||
|               {[ |  | ||||||
|                 'https://www.datocms-assets.com/2885/1506540090-color.svg', |  | ||||||
|                 'https://www.datocms-assets.com/2885/1506540114-color.svg', |  | ||||||
|                 'https://www.datocms-assets.com/2885/1506527176-color.svg', |  | ||||||
|                 'https://www.datocms-assets.com/2885/1508434209-consul_primarylogo_fullcolor.svg', |  | ||||||
|                 'https://www.datocms-assets.com/2885/1510033601-aws_logo_rgb_fullcolor.svg', |  | ||||||
|                 'https://www.datocms-assets.com/2885/1506540175-color.svg', |  | ||||||
|                 'https://www.datocms-assets.com/2885/1539818112-postgresql.svg', |  | ||||||
|                 'https://www.datocms-assets.com/2885/1539817686-microsoft-sql-server.svg', |  | ||||||
|               ].map((logo) => ( |  | ||||||
|                 <li key={logo}> |  | ||||||
|                   <img src={logo} alt="company logo" /> |  | ||||||
|                 </li> |  | ||||||
|               ))} |  | ||||||
|             </ul> |  | ||||||
|           </div> |  | ||||||
|         </div> |         </div> | ||||||
|  |         <TextSplits textSplits={content.features} /> | ||||||
|         <TextAndContent |  | ||||||
|           data={{ |  | ||||||
|             reverseDirection: true, |  | ||||||
|             text: `### Detailed Audit Logs |  | ||||||
|  |  | ||||||
| Detailed audit log of all client interaction (authentication, token creation, secret access & revocation)`, |  | ||||||
|             content: { |  | ||||||
|               __typename: 'SbcCodeBlockRecord', |  | ||||||
|               chrome: true, |  | ||||||
|               code: `$ cat audit.log | jq { |  | ||||||
|     "time": "2018-08-27T13:17:11.609621226Z", |  | ||||||
|     "type": "response", |  | ||||||
|     "auth": { |  | ||||||
|         "client_token": "hmac-sha256:5c40f1e051ea75b83230a5bf16574090f697dfa22a78e437f12c1c9d226f45a5", |  | ||||||
|         "accessor": "hmac-sha256:f254a2d442f172f0b761c9fd028f599ad91861ed16ac3a1e8d96771fd920e862", |  | ||||||
|         "display_name": "token", |  | ||||||
|         "metadata": null, |  | ||||||
|         "entity_id": "" |  | ||||||
|     } |  | ||||||
| }`, |  | ||||||
|             }, |  | ||||||
|           }} |  | ||||||
|         /> |  | ||||||
|  |  | ||||||
|         <TextAndContent |  | ||||||
|           data={{ |  | ||||||
|             text: `### Leasing & Revoking Secrets |  | ||||||
|  |  | ||||||
| Manage authorization and create time-based tokens for automatic revocation or manual revocation`, |  | ||||||
|             content: { |  | ||||||
|               __typename: 'SbcCodeBlockRecord', |  | ||||||
|               chrome: true, |  | ||||||
|               code: `$ vault read database/creds/readonly |  | ||||||
| Key             Value |  | ||||||
| ---             ----- |  | ||||||
| lease_id        database/creds/readonly/3e8174da-6ca0-143b-aa8c-4c238aa02809 |  | ||||||
| lease_duration  1h0m0s |  | ||||||
| lease_renewable true |  | ||||||
| password        A1a-w2xv2zsq4r5ru940 |  | ||||||
| username        v-token-readonly-48rt0t36sxp4wy81x8x1-1515627434 |  | ||||||
| [...] |  | ||||||
| $ vault renew database/creds/readonly/3e8174da-6ca0-143b-aa8c-4c238aa02809 |  | ||||||
| Key             Value |  | ||||||
| ---             ----- |  | ||||||
| lease_id        database/creds/readonly/3e8174da-6ca0-143b-aa8c-4c238aa02809 |  | ||||||
| lease_duration  1h0m0s |  | ||||||
| lease_renewable true |  | ||||||
| $ vault lease revoke database/creds/readonly/3e8174da-6ca0-143b-aa8c-4c238aa02809`, |  | ||||||
|             }, |  | ||||||
|           }} |  | ||||||
|         /> |  | ||||||
|       </section> |       </section> | ||||||
|  |  | ||||||
|       <UseCaseCtaSection /> |       <UseCaseCtaSection /> | ||||||
|   | |||||||
 Zachary Shilton
					Zachary Shilton