SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
Presented By:
Vidushi Bansal
(Devops Studio)
Sealed Secrets
Lack of etiquette and manners is a huge turn off.
KnolX Etiquettes
Punctuality
Respect Knolx session timings, you
are requested not to join sessions
after a 5 minutes threshold post
the session start time.
Feedback
Make sure to submit a constructive
feedback for all sessions as it is
very helpful for the presenter.
Silent Mode
Keep your mobile devices in silent
mode, feel free to move out of
session in case you need to attend
an urgent call.
Avoid Disturbance
Avoid unwanted chit chat during
the session.
Our Agenda
01 What are sealed secrets?
02 Why to use sealed secrets?
03 Components of sealed secrets
04 How it works?
05 Demo
Prerequisites
Kubernetes is an open source container orchestration
engine for automating deployment, scaling, and
management of containerized applications. The open
source project is hosted by the Cloud Native Computing
Foundation. Kubernetes is a portable, extensible, open
source platform for managing containerized workloads
and services, that facilitates both declarative
configuration and automation. It has a large, rapidly
growing ecosystem. Kubernetes services, support, and
tools are widely available.
NODE
Kubernetes
A Secret is a resource that manages the deployment of
sensitive information, such as passwords, OAuth tokens,
and SSH keys.
It is suggested to store the sensitive information as a
secret resource rather than having it imbibed in an
environment variable.
Secrets can be mounted as data volumes or exposed as
environment variables to the containers in a Kubernetes
Pod.
Secrets in k8s are stored in a centralized repository
named etcd in a base64 encoded format
NODE
Secrets in Kubernetes
The data in a Secret is obfuscated by using merely
Base64 encoding. This encoding method does not
encrypt the data within it.
Storing such files in a Git repository is extremely
insecure as it is trivial to decode the Base64-encoded
data. Often developers accidentally check these files into
their Git repositories, thus exposing sensitive
information—such as credentials—to their production
databases.
Applications may also tend to expose the secrets in audit
logs and monitoring systems.
Problems with Secrets in Kubernetes
We can follow these steps to safely use the secrets in
kubernetes:
1. Enable Encryption at Rest
2. Enable or configure RBAC rules to restrict access to
the secrets in a cluster
3. Restrict Secret access to specific containers, or the
containers that requires access to the secret to
perform their operations.
4. Consider using external Secret store providers
Suggestions for secret management
GitOps is an approach in which a Git repository is
designated as the single source of truth for deployment
artifacts, such as YAML files, that provide a declarative way
to describe the cluster state.
With GitOps, organizations can manage their entire
infrastructure and application development lifecycle using a
single, unified tool. This allows for greater collaboration and
coordination between teams and results in fewer errors and
faster problem resolution. In addition, GitOps enables
organizations to take advantage of the latest DevOps
practices and tools, such as containerization and
microservices.
Gitops
Configuration
Files
Secrets
Source Code
CI/CD Deployment executing real
time changes
What are Sealed
Secrets?
Sealed Secrets are a "one-way" encrypted Secret that can be
created by anyone, but can only be decrypted by the controller
running in the target cluster. The Sealed Secret is safe to
share publicly, upload to git repositories. Once the Sealed
Secret is safely uploaded to the target Kubernetes cluster, the
sealed secrets controller will decrypt it and recover the original
Secret.
What are sealed secrets?
Sensitive Information Sealed via sealed
secrets
Controller has a
private key to
decrypt the secret
Secret is decrypted
Why to use Sealed
Secrets?
We cannot store sensitive information like passwords or secret
tokens in a public repository.
Secrets are stored in a non-encrypted format (base64
encoding) in the etcd datastore.
This introduces the challenge of safely storing Secret manifests
in repositories privately or publicly.
Because of the nature of Kubernetes Secrets, this is a huge
risk because the original sensitive credentials and values can
easily be derived from the base64 encoding format.
Why to use sealed secrets?
vidushi dmlkdXNoaQo=
Components of
Sealed Secrets
Sealed secrets comprises of these three components for its functionality:
1. A controller deployed to the cluster
2. A CLI tool called kubeseal
3. A customer resource definition called Sealed Secret
Controller: It is responsible for managing the sealed secret deployment. The primary task
for the controller is to manage the private and public keys for encryption and decryption
purposes.
Kubeseal: It is a CLI tool that creates a CRD for sealed secrets from a secret. It
communicates with the controller and retrieve the public key needed for encrypting the
secrets.
CRD: It is a custom resource definition that we can apply in our kubernetes cluster to create
a secret.
Components of Sealed Secrets
Sealed
Secrets
Controller
Kubeseal
client
Sealed Secret CRD
How to use Sealed
Secrets?
The controller generates a 4096-bit RSA key pair. The private key is stored in
the form of secret where as the public key is made public to encrypt the
secret.
Kubeseal uses this public key from the controller to seal the secret values.
The value is symmetrically encrypted using AES-256 with a randomly
generated session key.
The session key is asymmetrically encrypted with the controller’s public key
using SHA256.
Kubeseal creates a CRD for sealed secret that can be safely pushed to the
repository.
When the CRD Is applied in the cluster, controller unseals it using the private
key and creates a secret resource in the defined namespace.
How to use sealed secrets?
Sealed
Secrets
Controller
Public Key
Private Key
Applied to K8s
cluster
Decrypts the
sealed secret
using private key
Creates a secret
resource
MANIFEST
DEMO
Thank You !
Get in touch with us:
vidushi.bansal@knoldus.com

Contenu connexe

Similaire à Knolx_ Sealed Secrets

Kubernetes and container security
Kubernetes and container securityKubernetes and container security
Kubernetes and container security
Volodymyr Shynkar
 

Similaire à Knolx_ Sealed Secrets (20)

Kubernetes and container security
Kubernetes and container securityKubernetes and container security
Kubernetes and container security
 
Kubernetes security with AWS
Kubernetes security with AWSKubernetes security with AWS
Kubernetes security with AWS
 
Kubernetes Sealed secrets
Kubernetes Sealed secretsKubernetes Sealed secrets
Kubernetes Sealed secrets
 
Indianapolis Splunk User Group Dec 22
Indianapolis Splunk User Group Dec 22Indianapolis Splunk User Group Dec 22
Indianapolis Splunk User Group Dec 22
 
London HUG 19/5 - Kubernetes and vault
London HUG 19/5 - Kubernetes and vaultLondon HUG 19/5 - Kubernetes and vault
London HUG 19/5 - Kubernetes and vault
 
Managing your secrets in a cloud environment
Managing your secrets in a cloud environmentManaging your secrets in a cloud environment
Managing your secrets in a cloud environment
 
Kubecon 2019_eu-k8s-secrets-csi
Kubecon 2019_eu-k8s-secrets-csiKubecon 2019_eu-k8s-secrets-csi
Kubecon 2019_eu-k8s-secrets-csi
 
MySQL Security on AWS Rds
MySQL Security on AWS RdsMySQL Security on AWS Rds
MySQL Security on AWS Rds
 
Securing Your Containers is Not Enough: How to Encrypt Container Data
Securing Your Containers is Not Enough: How to Encrypt Container DataSecuring Your Containers is Not Enough: How to Encrypt Container Data
Securing Your Containers is Not Enough: How to Encrypt Container Data
 
Secrets acrosscloudk8s
Secrets acrosscloudk8sSecrets acrosscloudk8s
Secrets acrosscloudk8s
 
Hug #9 who's keeping your secrets
Hug #9 who's keeping your secretsHug #9 who's keeping your secrets
Hug #9 who's keeping your secrets
 
London HUG 14/3
London HUG 14/3London HUG 14/3
London HUG 14/3
 
Overview of secret management solutions and architecture
Overview of secret management solutions and architectureOverview of secret management solutions and architecture
Overview of secret management solutions and architecture
 
Attacking and Defending Kubernetes - Nithin Jois
Attacking and Defending Kubernetes - Nithin JoisAttacking and Defending Kubernetes - Nithin Jois
Attacking and Defending Kubernetes - Nithin Jois
 
Kubernetes Secrets - The Good, The Bad, and The Ugly - Akeyless
Kubernetes Secrets -  The Good, The Bad, and The Ugly - AkeylessKubernetes Secrets -  The Good, The Bad, and The Ugly - Akeyless
Kubernetes Secrets - The Good, The Bad, and The Ugly - Akeyless
 
Introduce to Credstash
Introduce to CredstashIntroduce to Credstash
Introduce to Credstash
 
SHIFT LEFT WITH DEVSECOPS
SHIFT LEFT WITH DEVSECOPSSHIFT LEFT WITH DEVSECOPS
SHIFT LEFT WITH DEVSECOPS
 
Security Patterns for Microservice Architectures - London Java Community 2020
Security Patterns for Microservice Architectures - London Java Community 2020Security Patterns for Microservice Architectures - London Java Community 2020
Security Patterns for Microservice Architectures - London Java Community 2020
 
Security Patterns for Microservice Architectures - Oktane20
Security Patterns for Microservice Architectures - Oktane20Security Patterns for Microservice Architectures - Oktane20
Security Patterns for Microservice Architectures - Oktane20
 
Application security meetup - cloud security best practices 24062021
Application security meetup - cloud security best practices 24062021Application security meetup - cloud security best practices 24062021
Application security meetup - cloud security best practices 24062021
 

Plus de Knoldus Inc.

Plus de Knoldus Inc. (20)

Authentication in Svelte using cookies.pptx
Authentication in Svelte using cookies.pptxAuthentication in Svelte using cookies.pptx
Authentication in Svelte using cookies.pptx
 
OAuth2 Implementation Presentation (Java)
OAuth2 Implementation Presentation (Java)OAuth2 Implementation Presentation (Java)
OAuth2 Implementation Presentation (Java)
 
Supply chain security with Kubeclarity.pptx
Supply chain security with Kubeclarity.pptxSupply chain security with Kubeclarity.pptx
Supply chain security with Kubeclarity.pptx
 
Mastering Web Scraping with JSoup Unlocking the Secrets of HTML Parsing
Mastering Web Scraping with JSoup Unlocking the Secrets of HTML ParsingMastering Web Scraping with JSoup Unlocking the Secrets of HTML Parsing
Mastering Web Scraping with JSoup Unlocking the Secrets of HTML Parsing
 
Akka gRPC Essentials A Hands-On Introduction
Akka gRPC Essentials A Hands-On IntroductionAkka gRPC Essentials A Hands-On Introduction
Akka gRPC Essentials A Hands-On Introduction
 
Entity Core with Core Microservices.pptx
Entity Core with Core Microservices.pptxEntity Core with Core Microservices.pptx
Entity Core with Core Microservices.pptx
 
Introduction to Redis and its features.pptx
Introduction to Redis and its features.pptxIntroduction to Redis and its features.pptx
Introduction to Redis and its features.pptx
 
GraphQL with .NET Core Microservices.pdf
GraphQL with .NET Core Microservices.pdfGraphQL with .NET Core Microservices.pdf
GraphQL with .NET Core Microservices.pdf
 
NuGet Packages Presentation (DoT NeT).pptx
NuGet Packages Presentation (DoT NeT).pptxNuGet Packages Presentation (DoT NeT).pptx
NuGet Packages Presentation (DoT NeT).pptx
 
Data Quality in Test Automation Navigating the Path to Reliable Testing
Data Quality in Test Automation Navigating the Path to Reliable TestingData Quality in Test Automation Navigating the Path to Reliable Testing
Data Quality in Test Automation Navigating the Path to Reliable Testing
 
K8sGPTThe AI​ way to diagnose Kubernetes
K8sGPTThe AI​ way to diagnose KubernetesK8sGPTThe AI​ way to diagnose Kubernetes
K8sGPTThe AI​ way to diagnose Kubernetes
 
Introduction to Circle Ci Presentation.pptx
Introduction to Circle Ci Presentation.pptxIntroduction to Circle Ci Presentation.pptx
Introduction to Circle Ci Presentation.pptx
 
Robusta -Tool Presentation (DevOps).pptx
Robusta -Tool Presentation (DevOps).pptxRobusta -Tool Presentation (DevOps).pptx
Robusta -Tool Presentation (DevOps).pptx
 
Optimizing Kubernetes using GOLDILOCKS.pptx
Optimizing Kubernetes using GOLDILOCKS.pptxOptimizing Kubernetes using GOLDILOCKS.pptx
Optimizing Kubernetes using GOLDILOCKS.pptx
 
Azure Function App Exception Handling.pptx
Azure Function App Exception Handling.pptxAzure Function App Exception Handling.pptx
Azure Function App Exception Handling.pptx
 
CQRS Design Pattern Presentation (Java).pptx
CQRS Design Pattern Presentation (Java).pptxCQRS Design Pattern Presentation (Java).pptx
CQRS Design Pattern Presentation (Java).pptx
 
ETL Observability: Azure to Snowflake Presentation
ETL Observability: Azure to Snowflake PresentationETL Observability: Azure to Snowflake Presentation
ETL Observability: Azure to Snowflake Presentation
 
Scripting with K6 - Beyond the Basics Presentation
Scripting with K6 - Beyond the Basics PresentationScripting with K6 - Beyond the Basics Presentation
Scripting with K6 - Beyond the Basics Presentation
 
Getting started with dotnet core Web APIs
Getting started with dotnet core Web APIsGetting started with dotnet core Web APIs
Getting started with dotnet core Web APIs
 
Introduction To Rust part II Presentation
Introduction To Rust part II PresentationIntroduction To Rust part II Presentation
Introduction To Rust part II Presentation
 

Dernier

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 

Knolx_ Sealed Secrets

  • 1. Presented By: Vidushi Bansal (Devops Studio) Sealed Secrets
  • 2. Lack of etiquette and manners is a huge turn off. KnolX Etiquettes Punctuality Respect Knolx session timings, you are requested not to join sessions after a 5 minutes threshold post the session start time. Feedback Make sure to submit a constructive feedback for all sessions as it is very helpful for the presenter. Silent Mode Keep your mobile devices in silent mode, feel free to move out of session in case you need to attend an urgent call. Avoid Disturbance Avoid unwanted chit chat during the session.
  • 3. Our Agenda 01 What are sealed secrets? 02 Why to use sealed secrets? 03 Components of sealed secrets 04 How it works? 05 Demo
  • 5. Kubernetes is an open source container orchestration engine for automating deployment, scaling, and management of containerized applications. The open source project is hosted by the Cloud Native Computing Foundation. Kubernetes is a portable, extensible, open source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available. NODE Kubernetes
  • 6. A Secret is a resource that manages the deployment of sensitive information, such as passwords, OAuth tokens, and SSH keys. It is suggested to store the sensitive information as a secret resource rather than having it imbibed in an environment variable. Secrets can be mounted as data volumes or exposed as environment variables to the containers in a Kubernetes Pod. Secrets in k8s are stored in a centralized repository named etcd in a base64 encoded format NODE Secrets in Kubernetes
  • 7. The data in a Secret is obfuscated by using merely Base64 encoding. This encoding method does not encrypt the data within it. Storing such files in a Git repository is extremely insecure as it is trivial to decode the Base64-encoded data. Often developers accidentally check these files into their Git repositories, thus exposing sensitive information—such as credentials—to their production databases. Applications may also tend to expose the secrets in audit logs and monitoring systems. Problems with Secrets in Kubernetes
  • 8. We can follow these steps to safely use the secrets in kubernetes: 1. Enable Encryption at Rest 2. Enable or configure RBAC rules to restrict access to the secrets in a cluster 3. Restrict Secret access to specific containers, or the containers that requires access to the secret to perform their operations. 4. Consider using external Secret store providers Suggestions for secret management
  • 9. GitOps is an approach in which a Git repository is designated as the single source of truth for deployment artifacts, such as YAML files, that provide a declarative way to describe the cluster state. With GitOps, organizations can manage their entire infrastructure and application development lifecycle using a single, unified tool. This allows for greater collaboration and coordination between teams and results in fewer errors and faster problem resolution. In addition, GitOps enables organizations to take advantage of the latest DevOps practices and tools, such as containerization and microservices. Gitops Configuration Files Secrets Source Code CI/CD Deployment executing real time changes
  • 11. Sealed Secrets are a "one-way" encrypted Secret that can be created by anyone, but can only be decrypted by the controller running in the target cluster. The Sealed Secret is safe to share publicly, upload to git repositories. Once the Sealed Secret is safely uploaded to the target Kubernetes cluster, the sealed secrets controller will decrypt it and recover the original Secret. What are sealed secrets? Sensitive Information Sealed via sealed secrets Controller has a private key to decrypt the secret Secret is decrypted
  • 12. Why to use Sealed Secrets?
  • 13. We cannot store sensitive information like passwords or secret tokens in a public repository. Secrets are stored in a non-encrypted format (base64 encoding) in the etcd datastore. This introduces the challenge of safely storing Secret manifests in repositories privately or publicly. Because of the nature of Kubernetes Secrets, this is a huge risk because the original sensitive credentials and values can easily be derived from the base64 encoding format. Why to use sealed secrets? vidushi dmlkdXNoaQo=
  • 15. Sealed secrets comprises of these three components for its functionality: 1. A controller deployed to the cluster 2. A CLI tool called kubeseal 3. A customer resource definition called Sealed Secret Controller: It is responsible for managing the sealed secret deployment. The primary task for the controller is to manage the private and public keys for encryption and decryption purposes. Kubeseal: It is a CLI tool that creates a CRD for sealed secrets from a secret. It communicates with the controller and retrieve the public key needed for encrypting the secrets. CRD: It is a custom resource definition that we can apply in our kubernetes cluster to create a secret. Components of Sealed Secrets Sealed Secrets Controller Kubeseal client Sealed Secret CRD
  • 16. How to use Sealed Secrets?
  • 17. The controller generates a 4096-bit RSA key pair. The private key is stored in the form of secret where as the public key is made public to encrypt the secret. Kubeseal uses this public key from the controller to seal the secret values. The value is symmetrically encrypted using AES-256 with a randomly generated session key. The session key is asymmetrically encrypted with the controller’s public key using SHA256. Kubeseal creates a CRD for sealed secret that can be safely pushed to the repository. When the CRD Is applied in the cluster, controller unseals it using the private key and creates a secret resource in the defined namespace. How to use sealed secrets? Sealed Secrets Controller Public Key Private Key Applied to K8s cluster Decrypts the sealed secret using private key Creates a secret resource MANIFEST
  • 18. DEMO
  • 19. Thank You ! Get in touch with us: vidushi.bansal@knoldus.com