SlideShare a Scribd company logo
Building secure cloud applications
with Azure Key Vault
Tom Kerkhove
Azure Architect at Codit, MSFT Azure MVP
Thank you to our sponsors!
Gold Sponsors
Silver Sponsors
Community Sponsors
Hi!
Tom Kerkhove
• Azure Architect at Codit
• Microsoft Azure MVP & Advisor
• Belgian Azure User Group (AZUG)
blog.tomkerkhove.be
@TomKerkhove
tomkerkhove
Web
Worker
Appsettings.json
Great! Let’s ship it?!
× No centralized secret management
× No secure storage for sensitive information
× No way to revoke access for a specific user/application
× No way to updating secrets when they have expired/been rolled
× No control over whom has access
Introducing Azure Key Vault
• Provides secure storage for sensitive information, including storing
cryptographic keys in hardware security modules (HSM)
• Automatically failing over to secondary region in read-only mode
• Allows you to :
• Store sensitive information as secret
• Use keys for cryptographical purposes
• Manage certificates
Keys & Secrets
• Secret
• Used to store sequences of bytes
• Consumers can read & write
secret values to it
• Encrypted before stored in vault
• Limited to 10 kB
• Typically used for connection
strings, authentication keys, etc.
• Key
• Stores a RSA 2048, 3072 & 4096 key
• Can be used to perform crypto
operations such as encryption &
signing
• Cannot be read back
• Higher latency
Different types of keys
• Software Keys
• Operations performed on VM in
Azure
• Typically used for Dev/Test
• Cheap
• HSM Keys
• Stored encrypted in HSM
• Operations performed on HSM
directly
• Requires Premium Vault
• More secure
Personas
Last March this happend....
https://blog.nuget.org/20180322/Incident-Report-NuGet-org-downtime-March-22.html
Use
Certificates
Certificate
lifecycle
management
Authenticating to Azure Key Vault
• Authentication is fully handled by Azure Active Directory
• Only works for the default Azure AD directory
• Use basic or certificate authentication
• However, you still need to store authentication information in your
configuration
private async Task<string> AuthenticationCallback(string authority, string resource, string scope)
{
var adApplicationId = configuration.Get<string>("KeyVault.Auth.ApplicationId");
var adApplicationSecret = configuration.Get<string>("KeyVault.Auth.AppSecret");
var authContext = new AuthenticationContext(authority);
var clientCredential = new ClientCredential(adApplicationId, adApplicationSecret);
var token = await authContext.AcquireTokenAsync(resource, clientCredential);
return token.AccessToken;
}
Authenticating to Azure Key Vault
Web
Worker
Appsettings.json
Vault Owner
Receive Token
Authenticate
Code
Great! Let’s ship it?!
✓ Control over whom has access
✓ Centralized secret management
✓ Secure storage for sensitive information
✓ Capability to revoke access for a specific user/application
✓ Capability to update secrets when they have expired/been rolled
× Keys to the kingdom are still stored as before
Enter Azure AD Managed Service Identity (MSI)
• Delegate authentication to the Azure resource that runs your app
• Azure Resource Manager will create & assign an Azure AD
Application to your resource
• Currently only supports system-defined
AD Application names
• Not all Azure services support this, yet
• No authentication information nor
authentication logic required
• Super easy and more secure
Web
Worker
Receive Token
Authenticate
MSI
Great! Let’s ship it?!
✓ Control over whom has access
✓ Centralized secret management
✓ Secure storage for sensitive information
✓ Capability to revoke access for a specific user/application
✓ Capability to update secrets when they have expired/been rolled
✓ Authentication delegated to Azure
❕ Not all Azure services already support MSI
Authorization
Authorization
• Managing vault instance (“control-plane”)
• Based on RBAC roles
• Managing vault contents (“data-plane”)
• Defined in “Advanced Access Policies”
• Granular control over assigned permissions
• Permissions defined on a vault-level
• Assigned to AD user, group or application
• Ie. only set secrets without being able to see them
Demo Time!
Authorization
• Be careful about whom can manage your vault instance
• Take into account that people can add themselves to permissions to the
vault contents
• Use least-priviledge principle
• If they don’t need it, don’t give it to them
Web
Worker
MSI
Admin
Console
DB
MSI
Great! Let’s ship it?!
✓ Secrets securely stored
× Everybody can access each others secrets
× Single point of failure
• Think about your security boundaries
• Vault level permissions – Be careful whom can do what
• Use multiple Key Vault instances if they have different security boundaries
• Use resource locks on your vault instance
• Prevent people from accidentally deleting all your secrets
Web
Worker
MSI
Admin
Console
DB
MSI
Customer PortalAdmin Console
Web
Worker
MSI
Admin
Console
DB
MSI
Customer PortalAdmin Console
Web
Worker WorkerWorkerWorker Worker
Worker WorkerWorkerWorker Worker
Web WebWebWeb
Web Web WebWebWeb
Great! Let’s ship it?!
✓ Secrets securely stored
✓ Seperation of domains
× Not scalable
• Cache secrets
• Avoids hitting Azure Key Vault when scaling out
• Avoids unrequired network calls
• Use in-memory cache only and make it short-lived
• Your application should be aware of this
Web
Worker WorkerWorkerWorker Worker
Worker WorkerWorkerWorker Worker
Web WebWebWeb
Web Web WebWebWeb
Cache Cache CacheCacheCache
Cache Cache CacheCacheCache
Web
Worker
Appsettings.json
“Using API Key ‘XYZ’”
Cache
Great! Let’s ship it?!
× You cannot trust your vault consumers
× People leave the company, but what do they take with them?
× Leaked credentials are not being revoked
• Automatically generate new authentication keys
• Limits risk of leaked credentials usage
• (Azure) Automation is your best friend
• Your application should be aware of this
❕ You cannot do this with all secrets
❕ Be careful – Other applications might be using the same credentials
WebCache
Key: foo
Secret: ServiceBus
Name: ServiceBus
Secret: foo
Step 1: Generate new secondary key
Step 2: Update secret to use secondary key
Step 3: Generate new primary key
Step 4: Update secret to use primary key
Generate keys
Name: ServiceBus
Secret: bar
WebCache
Key: foo
Secret: ServiceBus
Name: ServiceBus
Secret: foo
Step 1: Generate new secondary key
Step 2: Update secret to use secondary key
Step 3: Generate new primary key
Step 4: Update secret to use primary key
Generate keys
Get uncached secret
Key: bar
Key Rotation in Action
Key Vault enables new scenarios
Key Vault enables new scenarios
• Sync on-premises HSMs to Azure Key Vault
• Enables Bring-Your-Own-Key
• Azure SQL Database / SQL Server
• Azure Data Lake Store
• Azure Storage
• Automatically rotatation Azure Storage keys
Encryption with SQL - BYOK
Encryption with SQL - BYOK
Auditing & Operations
Auditing & Operations
• Full audit trail containing every action
• “Azure Key Vault Analytics” solution in Log Analytics
(http://bit.ly/key-vault-log-analytics)
Tips
Tips
• Be transparent
• Secrets & keys are versioned, make sure that consumers are aware of these
• This is important for cryptographical scenarios where decryption needs to
use the correct version of the key
• Key Vault is not a configuration store
• You need to build your own configuration store
• Dependencies fail
• Make sure you handle downtime of your dependency, if possible at all
• Key Vault integration in VSTS
Managing secrets in VSTS
Variable Groups*
Build / Release
Environment
Built-in Task*
Inline**
* Integration with Azure Key Vault
Using Key Vault in variable groups
Getting secrets inside your build/release
Making security in Azure simpler
Secrets made easy with
• OSS library that makes it easier to build secure apps on Azure.
• Provides a (cached*) Key Vault secret provider out-of-the-box, more
to come.
• GitHub – https://github.com/arcus-azure/arcus.security
• Docs - security.arcus-azure.net
* Memory cache only for now, as this is most secure
Secrets made easy with Arcus
• Get started quickly:
• PM> Install-Package Arcus.Security.Secrets.AzureKeyVault -Version 0.1.0-alpha
• Example:
var clientId = Configuration.GetValue<string>("Arcus:ServicePrincipal:ClientId");
var clientKey = Configuration.GetValue<string>("Arcus:ServicePrincipal:AccessKey");
var keyVaultUri = Configuration.GetValue<string>("Arcus:KeyVault:Uri");
var vaultAuthenticator = new ServicePrincipalAuthenticator(clientId, clientKey);
var vaultConfiguration = new KeyVaultConfiguration(keyVaultUri);
var keyVaultSecretProvider = new KeyVaultSecretProvider(vaultAuthenticator,
vaultConfiguration);
var secretValue = await keyVaultSecretProvider.Get(“EventGrid-AuthKey");
Wrap-Up
Takeaways
• Security should not be an after thought
• It is about limiting the risk of exposure, not removing it
• Go Key Vault all the way, including build & release
• Do not use one central Key Vault, use one per security domain
• Delegate authentication to Azure with Azure AD MSI
• Automatically roll your secrets and keep your vault up to date
• Use Arcus.Security to get easily started! (open for feedback)
• More information on security.arcus-azure.net
54
Track 1
• 11:55 – 12:40
• Architecting Autonomous
Driving Solutions on Azure
• Kristof Rennen
Track 2
• 11:55 – 12:40
• From One Release Per
Quarter To 30 Times A
Day
• Marcel de Vries

More Related Content

What's hot (20)

PPTX
Kubernetes 101
Huy Vo
 
PDF
Meet Spilo, Zalando’s HIGH-AVAILABLE POSTGRESQL CLUSTER - Feike Steenbergen
distributed matters
 
PPTX
Introduction to Redis
Maarten Smeets
 
PDF
Polyglot payloads in practice by avlidienbrunn at HackPra
Mathias Karlsson
 
PDF
Rust Embedded Development on ESP32 and basics of Async with Embassy
Juraj Michálek
 
PPTX
Kubernetes presentation
GauranG Bajpai
 
PDF
Linux Performance Analysis: New Tools and Old Secrets
Brendan Gregg
 
PDF
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
ScaleGrid.io
 
PPTX
A simple introduction to redis
Zhichao Liang
 
PDF
Apache Arrow: High Performance Columnar Data Framework
Wes McKinney
 
PPTX
Getting started with postgresql
botsplash.com
 
PPTX
Kubernetes PPT.pptx
ssuser0cc9131
 
PPTX
What you need to know about ceph
Emma Haruka Iwao
 
PPTX
Abusing Microsoft Kerberos - Sorry you guys don't get it
Benjamin Delpy
 
PDF
FIWARE Training: NGSI-LD Advanced Operations
FIWARE
 
PPTX
NGINX: Basics & Best Practices - EMEA Broadcast
NGINX, Inc.
 
PPTX
WebAssembly WASM Introduction Presentation
Brad Beiermann
 
PDF
Croco talk pgconfeu
Louise Grandjonc
 
PDF
Introducing Vault
Ramit Surana
 
Kubernetes 101
Huy Vo
 
Meet Spilo, Zalando’s HIGH-AVAILABLE POSTGRESQL CLUSTER - Feike Steenbergen
distributed matters
 
Introduction to Redis
Maarten Smeets
 
Polyglot payloads in practice by avlidienbrunn at HackPra
Mathias Karlsson
 
Rust Embedded Development on ESP32 and basics of Async with Embassy
Juraj Michálek
 
Kubernetes presentation
GauranG Bajpai
 
Linux Performance Analysis: New Tools and Old Secrets
Brendan Gregg
 
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
ScaleGrid.io
 
A simple introduction to redis
Zhichao Liang
 
Apache Arrow: High Performance Columnar Data Framework
Wes McKinney
 
Getting started with postgresql
botsplash.com
 
Kubernetes PPT.pptx
ssuser0cc9131
 
What you need to know about ceph
Emma Haruka Iwao
 
Abusing Microsoft Kerberos - Sorry you guys don't get it
Benjamin Delpy
 
FIWARE Training: NGSI-LD Advanced Operations
FIWARE
 
NGINX: Basics & Best Practices - EMEA Broadcast
NGINX, Inc.
 
WebAssembly WASM Introduction Presentation
Brad Beiermann
 
Croco talk pgconfeu
Louise Grandjonc
 
Introducing Vault
Ramit Surana
 

Similar to Azure Low Lands 2019 - Building secure cloud applications with Azure Key Vault (20)

PPTX
Techdays Finland 2018 - Building secure cloud applications with Azure Key Vault
Tom Kerkhove
 
PPTX
Intelligent Cloud Conference 2018 - Building secure cloud applications with A...
Tom Kerkhove
 
PPTX
Azure Key Vault - Getting Started
Taswar Bhatti
 
PPTX
Hashicorp Chicago HUG - Secure and Automated Workflows in Azure with Vault an...
Stenio Ferreira
 
PPTX
Managing your secrets in a cloud environment
Taswar Bhatti
 
PPTX
ITProceed 2015 - Securing Sensitive Data with Azure Key Vault
Tom Kerkhove
 
PPTX
Securing Sensitive Data with Azure Key Vault (Tom Kerkhove @ ITProceed)
Codit
 
PPTX
Securing sensitive data with Azure Key Vault
Tom Kerkhove
 
PDF
Secure Your Code Implement DevSecOps in Azure
kloia
 
PDF
AWS Security Best Practices (March 2017)
Julien SIMON
 
PDF
Vault
dawnlua
 
PPTX
Zero Credential Development with Managed Identities
Joonas Westlin
 
PDF
Paris FOD meetup - kafka security 101
Abdelkrim Hadjidj
 
PPTX
Zero Credential Development with Managed Identities for Azure resources
Joonas Westlin
 
PPTX
Zero credential development with managed identities
Joonas Westlin
 
PDF
Kafka Security 101 and Real-World Tips
confluent
 
PDF
Securing Cassandra The Right Way
DataStax Academy
 
PDF
Overview of secret management solutions and architecture
Yuechuan (Mike) Chen
 
PDF
How to implement data encryption at rest in compliance with enterprise requir...
Steffen Mazanek
 
PDF
Secure Secret Management on a Budget: Reasoning about Scalable SM with Vault ...
Mary Racter
 
Techdays Finland 2018 - Building secure cloud applications with Azure Key Vault
Tom Kerkhove
 
Intelligent Cloud Conference 2018 - Building secure cloud applications with A...
Tom Kerkhove
 
Azure Key Vault - Getting Started
Taswar Bhatti
 
Hashicorp Chicago HUG - Secure and Automated Workflows in Azure with Vault an...
Stenio Ferreira
 
Managing your secrets in a cloud environment
Taswar Bhatti
 
ITProceed 2015 - Securing Sensitive Data with Azure Key Vault
Tom Kerkhove
 
Securing Sensitive Data with Azure Key Vault (Tom Kerkhove @ ITProceed)
Codit
 
Securing sensitive data with Azure Key Vault
Tom Kerkhove
 
Secure Your Code Implement DevSecOps in Azure
kloia
 
AWS Security Best Practices (March 2017)
Julien SIMON
 
Vault
dawnlua
 
Zero Credential Development with Managed Identities
Joonas Westlin
 
Paris FOD meetup - kafka security 101
Abdelkrim Hadjidj
 
Zero Credential Development with Managed Identities for Azure resources
Joonas Westlin
 
Zero credential development with managed identities
Joonas Westlin
 
Kafka Security 101 and Real-World Tips
confluent
 
Securing Cassandra The Right Way
DataStax Academy
 
Overview of secret management solutions and architecture
Yuechuan (Mike) Chen
 
How to implement data encryption at rest in compliance with enterprise requir...
Steffen Mazanek
 
Secure Secret Management on a Budget: Reasoning about Scalable SM with Vault ...
Mary Racter
 
Ad

More from Tom Kerkhove (20)

PPTX
Techorama 2022 - Adventures of building Promitor, an open-source product
Tom Kerkhove
 
PPTX
Microsoft Partners - Application Autoscaling Made Easy With Kubernetes Event-...
Tom Kerkhove
 
PPTX
Introduction to Promitor
Tom Kerkhove
 
PPTX
Azure Lowlands 2020 - API management for microservices in a hybrid and multi-...
Tom Kerkhove
 
PPTX
NDC London 2021 - Application Autoscaling Made Easy With Kubernetes Event-Dri...
Tom Kerkhove
 
PPTX
Global Azure Virtual - Application Autoscaling with KEDA
Tom Kerkhove
 
PPTX
Building Bruges 2020 - Adventures of building a multi-tenant PaaS on Microsof...
Tom Kerkhove
 
PPTX
AZUG Lightning Talk - Application autoscaling on Kubernetes with Kubernetes E...
Tom Kerkhove
 
PPTX
IglooConf 2020 - API management for microservices in a hybrid and multi-cloud...
Tom Kerkhove
 
PPTX
IglooConf 2020 - Adventures of building a multi-tenant PaaS on Microsoft Azure
Tom Kerkhove
 
PPTX
Microsoft Ignite 2019 - API management for microservices in a hybrid and mult...
Tom Kerkhove
 
PPTX
Integrate UK 2019 - Adventures of building a (multi-tenant) PaaS on Microsoft...
Tom Kerkhove
 
PDF
Techdays Finland 2019 - Adventures of building a (multi-tenant) PaaS on Micro...
Tom Kerkhove
 
PPTX
Next Generation Data Integration with Azure Data Factory
Tom Kerkhove
 
PPTX
Intelligent Cloud Conference 2018 - Automatically scaling Kubernetes pods bas...
Tom Kerkhove
 
PPTX
Intelligent Cloud Conference 2018 - Next Generation of Data Integration with ...
Tom Kerkhove
 
PPTX
NDC Minnesota - Analyzing StackExchange data with Azure Data Lake
Tom Kerkhove
 
PPTX
NDC Sydney - Analyzing StackExchange with Azure Data Lake
Tom Kerkhove
 
PPTX
TechDays NL 2016 - Building your scalable secure IoT Solution on Azure
Tom Kerkhove
 
PPTX
Integration Monday - Analysing StackExchange data with Azure Data Lake
Tom Kerkhove
 
Techorama 2022 - Adventures of building Promitor, an open-source product
Tom Kerkhove
 
Microsoft Partners - Application Autoscaling Made Easy With Kubernetes Event-...
Tom Kerkhove
 
Introduction to Promitor
Tom Kerkhove
 
Azure Lowlands 2020 - API management for microservices in a hybrid and multi-...
Tom Kerkhove
 
NDC London 2021 - Application Autoscaling Made Easy With Kubernetes Event-Dri...
Tom Kerkhove
 
Global Azure Virtual - Application Autoscaling with KEDA
Tom Kerkhove
 
Building Bruges 2020 - Adventures of building a multi-tenant PaaS on Microsof...
Tom Kerkhove
 
AZUG Lightning Talk - Application autoscaling on Kubernetes with Kubernetes E...
Tom Kerkhove
 
IglooConf 2020 - API management for microservices in a hybrid and multi-cloud...
Tom Kerkhove
 
IglooConf 2020 - Adventures of building a multi-tenant PaaS on Microsoft Azure
Tom Kerkhove
 
Microsoft Ignite 2019 - API management for microservices in a hybrid and mult...
Tom Kerkhove
 
Integrate UK 2019 - Adventures of building a (multi-tenant) PaaS on Microsoft...
Tom Kerkhove
 
Techdays Finland 2019 - Adventures of building a (multi-tenant) PaaS on Micro...
Tom Kerkhove
 
Next Generation Data Integration with Azure Data Factory
Tom Kerkhove
 
Intelligent Cloud Conference 2018 - Automatically scaling Kubernetes pods bas...
Tom Kerkhove
 
Intelligent Cloud Conference 2018 - Next Generation of Data Integration with ...
Tom Kerkhove
 
NDC Minnesota - Analyzing StackExchange data with Azure Data Lake
Tom Kerkhove
 
NDC Sydney - Analyzing StackExchange with Azure Data Lake
Tom Kerkhove
 
TechDays NL 2016 - Building your scalable secure IoT Solution on Azure
Tom Kerkhove
 
Integration Monday - Analysing StackExchange data with Azure Data Lake
Tom Kerkhove
 
Ad

Recently uploaded (20)

PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
Timothy Rottach - Ramp up on AI Use Cases, from Vector Search to AI Agents wi...
AWS Chicago
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
PDF
July Patch Tuesday
Ivanti
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
Timothy Rottach - Ramp up on AI Use Cases, from Vector Search to AI Agents wi...
AWS Chicago
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
July Patch Tuesday
Ivanti
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 

Azure Low Lands 2019 - Building secure cloud applications with Azure Key Vault

  • 1. Building secure cloud applications with Azure Key Vault Tom Kerkhove Azure Architect at Codit, MSFT Azure MVP
  • 2. Thank you to our sponsors! Gold Sponsors Silver Sponsors Community Sponsors
  • 3. Hi! Tom Kerkhove • Azure Architect at Codit • Microsoft Azure MVP & Advisor • Belgian Azure User Group (AZUG) blog.tomkerkhove.be @TomKerkhove tomkerkhove
  • 5. Great! Let’s ship it?! × No centralized secret management × No secure storage for sensitive information × No way to revoke access for a specific user/application × No way to updating secrets when they have expired/been rolled × No control over whom has access
  • 6. Introducing Azure Key Vault • Provides secure storage for sensitive information, including storing cryptographic keys in hardware security modules (HSM) • Automatically failing over to secondary region in read-only mode • Allows you to : • Store sensitive information as secret • Use keys for cryptographical purposes • Manage certificates
  • 7. Keys & Secrets • Secret • Used to store sequences of bytes • Consumers can read & write secret values to it • Encrypted before stored in vault • Limited to 10 kB • Typically used for connection strings, authentication keys, etc. • Key • Stores a RSA 2048, 3072 & 4096 key • Can be used to perform crypto operations such as encryption & signing • Cannot be read back • Higher latency
  • 8. Different types of keys • Software Keys • Operations performed on VM in Azure • Typically used for Dev/Test • Cheap • HSM Keys • Stored encrypted in HSM • Operations performed on HSM directly • Requires Premium Vault • More secure
  • 10. Last March this happend....
  • 14. Authenticating to Azure Key Vault • Authentication is fully handled by Azure Active Directory • Only works for the default Azure AD directory • Use basic or certificate authentication • However, you still need to store authentication information in your configuration private async Task<string> AuthenticationCallback(string authority, string resource, string scope) { var adApplicationId = configuration.Get<string>("KeyVault.Auth.ApplicationId"); var adApplicationSecret = configuration.Get<string>("KeyVault.Auth.AppSecret"); var authContext = new AuthenticationContext(authority); var clientCredential = new ClientCredential(adApplicationId, adApplicationSecret); var token = await authContext.AcquireTokenAsync(resource, clientCredential); return token.AccessToken; }
  • 17. Code
  • 18. Great! Let’s ship it?! ✓ Control over whom has access ✓ Centralized secret management ✓ Secure storage for sensitive information ✓ Capability to revoke access for a specific user/application ✓ Capability to update secrets when they have expired/been rolled × Keys to the kingdom are still stored as before
  • 19. Enter Azure AD Managed Service Identity (MSI) • Delegate authentication to the Azure resource that runs your app • Azure Resource Manager will create & assign an Azure AD Application to your resource • Currently only supports system-defined AD Application names • Not all Azure services support this, yet • No authentication information nor authentication logic required • Super easy and more secure
  • 21. Great! Let’s ship it?! ✓ Control over whom has access ✓ Centralized secret management ✓ Secure storage for sensitive information ✓ Capability to revoke access for a specific user/application ✓ Capability to update secrets when they have expired/been rolled ✓ Authentication delegated to Azure ❕ Not all Azure services already support MSI
  • 23. Authorization • Managing vault instance (“control-plane”) • Based on RBAC roles • Managing vault contents (“data-plane”) • Defined in “Advanced Access Policies” • Granular control over assigned permissions • Permissions defined on a vault-level • Assigned to AD user, group or application • Ie. only set secrets without being able to see them
  • 25. Authorization • Be careful about whom can manage your vault instance • Take into account that people can add themselves to permissions to the vault contents • Use least-priviledge principle • If they don’t need it, don’t give it to them
  • 27. Great! Let’s ship it?! ✓ Secrets securely stored × Everybody can access each others secrets × Single point of failure • Think about your security boundaries • Vault level permissions – Be careful whom can do what • Use multiple Key Vault instances if they have different security boundaries • Use resource locks on your vault instance • Prevent people from accidentally deleting all your secrets
  • 30. Web Worker WorkerWorkerWorker Worker Worker WorkerWorkerWorker Worker Web WebWebWeb Web Web WebWebWeb
  • 31. Great! Let’s ship it?! ✓ Secrets securely stored ✓ Seperation of domains × Not scalable • Cache secrets • Avoids hitting Azure Key Vault when scaling out • Avoids unrequired network calls • Use in-memory cache only and make it short-lived • Your application should be aware of this
  • 32. Web Worker WorkerWorkerWorker Worker Worker WorkerWorkerWorker Worker Web WebWebWeb Web Web WebWebWeb Cache Cache CacheCacheCache Cache Cache CacheCacheCache
  • 34. Great! Let’s ship it?! × You cannot trust your vault consumers × People leave the company, but what do they take with them? × Leaked credentials are not being revoked • Automatically generate new authentication keys • Limits risk of leaked credentials usage • (Azure) Automation is your best friend • Your application should be aware of this ❕ You cannot do this with all secrets ❕ Be careful – Other applications might be using the same credentials
  • 35. WebCache Key: foo Secret: ServiceBus Name: ServiceBus Secret: foo Step 1: Generate new secondary key Step 2: Update secret to use secondary key Step 3: Generate new primary key Step 4: Update secret to use primary key Generate keys
  • 36. Name: ServiceBus Secret: bar WebCache Key: foo Secret: ServiceBus Name: ServiceBus Secret: foo Step 1: Generate new secondary key Step 2: Update secret to use secondary key Step 3: Generate new primary key Step 4: Update secret to use primary key Generate keys Get uncached secret Key: bar
  • 37. Key Rotation in Action
  • 38. Key Vault enables new scenarios
  • 39. Key Vault enables new scenarios • Sync on-premises HSMs to Azure Key Vault • Enables Bring-Your-Own-Key • Azure SQL Database / SQL Server • Azure Data Lake Store • Azure Storage • Automatically rotatation Azure Storage keys
  • 43. Auditing & Operations • Full audit trail containing every action • “Azure Key Vault Analytics” solution in Log Analytics (http://bit.ly/key-vault-log-analytics)
  • 44. Tips
  • 45. Tips • Be transparent • Secrets & keys are versioned, make sure that consumers are aware of these • This is important for cryptographical scenarios where decryption needs to use the correct version of the key • Key Vault is not a configuration store • You need to build your own configuration store • Dependencies fail • Make sure you handle downtime of your dependency, if possible at all • Key Vault integration in VSTS
  • 46. Managing secrets in VSTS Variable Groups* Build / Release Environment Built-in Task* Inline** * Integration with Azure Key Vault
  • 47. Using Key Vault in variable groups
  • 48. Getting secrets inside your build/release
  • 49. Making security in Azure simpler
  • 50. Secrets made easy with • OSS library that makes it easier to build secure apps on Azure. • Provides a (cached*) Key Vault secret provider out-of-the-box, more to come. • GitHub – https://github.com/arcus-azure/arcus.security • Docs - security.arcus-azure.net * Memory cache only for now, as this is most secure
  • 51. Secrets made easy with Arcus • Get started quickly: • PM> Install-Package Arcus.Security.Secrets.AzureKeyVault -Version 0.1.0-alpha • Example: var clientId = Configuration.GetValue<string>("Arcus:ServicePrincipal:ClientId"); var clientKey = Configuration.GetValue<string>("Arcus:ServicePrincipal:AccessKey"); var keyVaultUri = Configuration.GetValue<string>("Arcus:KeyVault:Uri"); var vaultAuthenticator = new ServicePrincipalAuthenticator(clientId, clientKey); var vaultConfiguration = new KeyVaultConfiguration(keyVaultUri); var keyVaultSecretProvider = new KeyVaultSecretProvider(vaultAuthenticator, vaultConfiguration); var secretValue = await keyVaultSecretProvider.Get(“EventGrid-AuthKey");
  • 53. Takeaways • Security should not be an after thought • It is about limiting the risk of exposure, not removing it • Go Key Vault all the way, including build & release • Do not use one central Key Vault, use one per security domain • Delegate authentication to Azure with Azure AD MSI • Automatically roll your secrets and keep your vault up to date • Use Arcus.Security to get easily started! (open for feedback) • More information on security.arcus-azure.net
  • 54. 54
  • 55. Track 1 • 11:55 – 12:40 • Architecting Autonomous Driving Solutions on Azure • Kristof Rennen Track 2 • 11:55 – 12:40 • From One Release Per Quarter To 30 Times A Day • Marcel de Vries

Editor's Notes

  • #18: Evangelistisch overkomen – adviseren Gevoel: heeft visie .
  • #23: Evangelistisch overkomen – adviseren Gevoel: heeft visie .
  • #25: Evangelistisch overkomen – adviseren Gevoel: heeft visie .
  • #38: Evangelistisch overkomen – adviseren Gevoel: heeft visie .
  • #39: Evangelistisch overkomen – adviseren Gevoel: heeft visie .
  • #43: Evangelistisch overkomen – adviseren Gevoel: heeft visie .
  • #45: Evangelistisch overkomen – adviseren Gevoel: heeft visie .
  • #50: Evangelistisch overkomen – adviseren Gevoel: heeft visie .
  • #53: Evangelistisch overkomen – adviseren Gevoel: heeft visie .