SlideShare a Scribd company logo
Vault @ NYT
NYT’s Delivery Engineering Team
Hashicorp User Group - April ‘18
New York City
THE NEW YORK TIMES
Managing and integrating Vault at the
New York Times
1. Who are we?
2. Problems in Secretsville
3. Adopting and Managing Vault
4. Namespaces
5. Integration with other Systems
Scott
Who are we?
Shawn Prashanth
1. Who are we?
2. Problems in Secretsville
3. Adopting and Managing Vault
4. Namespaces
5. Integration with other Systems
Our secrets management was
more difficult than it had to be.
1. Who are we?
2. Problems in Secretsville
3. Adopting and Managing Vault
4. Namespaces
5. Integration with other Systems
Operator Keysharing
The key sharing capabilities of Vault
ensure that no single operator can
perform any “root” operations and
that when these operations must
occur, all (or most) operators are
aware.
Variety of Auth Methods
Vault supports a wide array of
authentication methods which makes
developer and automated
authentication easy.
Granular ACLs
Vault’s granular policy system
allows a single Vault cluster to be
used comfortably by multiple teams
in the organization. It also ensures
proper isolation of secrets.
Audited
The Vault audit log is invaluable for
incident response and figuring out
exactly what happened and when.
Every action must be logged so
there is always a trail to follow.
Break Glass
Benefits of Adopting Vault
And more...
- Simple secret sharing
- Leases / Revocation
- Dynamic secrets
- HTTP API
- Open source
- Public testing API
- Constantly improving
In case of emergency Vault can be
sealed and secret access can be
temporarily shut down quickly and
easily.
Image from: https://registry.terraform.io/modules/hashicorp/vault/google/0.0.3
1. Who are we?
2. Problems in Secretsville
3. Adopting and Managing Vault
4. Namespaces
5. Integration with other Systems
Vault is great out of the box but
to get the isolation we wanted
we started creating
namespaces.
To manage namespaces we use
terraform and a home-grown
tool called goblin.
variable "name" {
description = "The name of the team on Github."
}
variable "org" {
description = "The name of the org the team belongs to on Github."
}
variable "ensured_policies" {
type = "list"
default = []
description = "The list of ensured policies for the team."
}
Team Namespace Module: Variables
resource "vault_mount" “secret” {
path = "${var.org}/teams/${var.name}/secret"
type = "generic"
}
resource "vault_mount" “transit” {
path = "${var.org}/teams/${var.name}/transit"
type = "transit"
}
Team Namespace Module: Mounts
# The member policy is given to all members of the team
resource "vault_policy" “member” {
name = "${var.org}/teams/${var.name}/member"
policy = <<EOT
path “{var.org}/teams/${var.name}/secret/*” {
capabilities = [“create”, “delete”, “list”, “read”, “update”]
}
… # more paths below
EOT
}
Team Namespace Module: Policies
# Ensure certain policies are always mapped onto the team
resource "null_resource" “ensure-policies” {
triggers {
policies = "${join(“,”, var.ensured_policies)}"
}
provisioner "local_exec" {
command = “goblin ensure -team=${var.name} 
-policies=${join(“,”, var.ensured_policies)}”
}
}
Team Namespace Module: Ensuring Policies
module "delivery-engineering" {
source = "../modules/base_team"
org = "nytm"
name = "delivery-engineering"
ensured_policies = [
"nytm/teams/delivery-engineering/member",
"operator",
]
}
Using the Team Namespace Module
module "my-repo" {
source = "../modules/base_repo"
org = "nytm"
name = "my-repo"
}
Using the Repository Namespace Module
Syncing Repository Policies
What repositories
are active?
Syncing Repository Policies
my-repo,a-repo,
another-repo
Syncing Repository Policies
Which teams have
access to these
repositories?
Syncing Repository Policies
A-Team has read
access to my-repo
and admin access
to that-repo.
Syncing Repository Policies
Does A-Team have
any ensured
policies?
Syncing Repository Policies
a-team-member
Syncing Repository Policies
Map the policies
a-team-member,
my-repo-read, and
that-repo-adminto
the A-team.
Syncing Repository Policies
Done!
Uses extensible
templates.
Creating new namespaces
and adding to existing
namespaces are both
easy and fast.
Main Benefits
Provides some
self-service policy
management.
Teams really love being
able to do things
themselves.
Enforces good Github
practices.
Part of onboarding is
reviewing Github teams,
membership, and
permissions.
1. Who are we?
2. Problems in Secretsville
3. Adopting and Managing Vault
4. Namespaces
5. Integration with other Systems
Connecting GKE to Vault
● Enable GCE auth backend
● Create init container in deployment
○ Mount shared memory volume
○ Get signed JWT
○ Login to Vault
○ Write secrets to shared memory volume
Connecting GKE to Vault
initContainers:
- name: {{.app}}-init
image: {{.int_image}}
env:
- name: VAULT_ROLE
value: "{{.vault_role}}"
- name: GOOGLE_SERVICE_ACCOUNT
value: "{{.google_service_account}}"
- name: VAULT_ADDR
value: "{{.vault_addr}}"
- name: VAULT_PATH
value: "{{.vault_path}}"
volumeMounts:
- mountPath: /secrets
name: secrets
VAULT_ROLE
(required )
The Role in vault to authenticate with
GOOGLE_SERVICE_
ACCOUNT (required)
The google service account that will be used to authenticate
with vault. Typically this will be default
VAULT_ADDR
(required)
The URL of the vault server to connect to.
VAULT_PATH This is a vault path (ie nytm/goblin/secret/something). If
this variable is specified the path will be recursed and all
secrets will be written to memory.
VAULT_SECRETS This is a comma delimited list of vault secrets. Each secret
will have every key written to memory
TOKEN_ONLY This is a boolean variable. If true a short live vault token
will be written to /secrets/vaultToken.
Connecting GKE to Vault
● Secrets are no longer in our CI/CD pipeline
● Secrets only stored in memory
○ Not unencrypted in GKE
○ Not leaking in environment variables
We’re hiring
nyti.ms/technology
@NYTDevs | developers.nytimes.com
Stay updated
open.blogs.nytimes.com
@NYTDevs | developers.nytimes.com

More Related Content

What's hot

Vault 101
Vault 101Vault 101
Vault 101
Hazzim Anaya
 
Elasticsearch security
Elasticsearch securityElasticsearch security
Elasticsearch security
Nag Arvind Gudiseva
 
Hiding secrets in Vault
Hiding secrets in VaultHiding secrets in Vault
Hiding secrets in Vault
Neven Rakonić
 
ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...
ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...
ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...
DynamicInfraDays
 
This is the secure droid you are looking for
This is the secure droid you are looking forThis is the secure droid you are looking for
This is the secure droid you are looking for
Cláudio André
 
10 Excellent Ways to Secure Your Spring Boot Application - Devoxx Morocco 2019
10 Excellent Ways to Secure Your Spring Boot Application - Devoxx Morocco 201910 Excellent Ways to Secure Your Spring Boot Application - Devoxx Morocco 2019
10 Excellent Ways to Secure Your Spring Boot Application - Devoxx Morocco 2019
Matt Raible
 
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech TalkHacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Red Hat Developers
 
Understanding GIT
Understanding GITUnderstanding GIT
Understanding GIT
hybr1s
 
Sergey Dzyuban ''Cooking the Cake for Nuget packages"
Sergey Dzyuban ''Cooking the Cake for Nuget packages"Sergey Dzyuban ''Cooking the Cake for Nuget packages"
Sergey Dzyuban ''Cooking the Cake for Nuget packages"
Fwdays
 
Quickly Testing Legacy C++ Code with Approval Tests
Quickly Testing Legacy C++ Code with Approval TestsQuickly Testing Legacy C++ Code with Approval Tests
Quickly Testing Legacy C++ Code with Approval Tests
Clare Macrae
 

What's hot (10)

Vault 101
Vault 101Vault 101
Vault 101
 
Elasticsearch security
Elasticsearch securityElasticsearch security
Elasticsearch security
 
Hiding secrets in Vault
Hiding secrets in VaultHiding secrets in Vault
Hiding secrets in Vault
 
ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...
ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...
ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...
 
This is the secure droid you are looking for
This is the secure droid you are looking forThis is the secure droid you are looking for
This is the secure droid you are looking for
 
10 Excellent Ways to Secure Your Spring Boot Application - Devoxx Morocco 2019
10 Excellent Ways to Secure Your Spring Boot Application - Devoxx Morocco 201910 Excellent Ways to Secure Your Spring Boot Application - Devoxx Morocco 2019
10 Excellent Ways to Secure Your Spring Boot Application - Devoxx Morocco 2019
 
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech TalkHacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
 
Understanding GIT
Understanding GITUnderstanding GIT
Understanding GIT
 
Sergey Dzyuban ''Cooking the Cake for Nuget packages"
Sergey Dzyuban ''Cooking the Cake for Nuget packages"Sergey Dzyuban ''Cooking the Cake for Nuget packages"
Sergey Dzyuban ''Cooking the Cake for Nuget packages"
 
Quickly Testing Legacy C++ Code with Approval Tests
Quickly Testing Legacy C++ Code with Approval TestsQuickly Testing Legacy C++ Code with Approval Tests
Quickly Testing Legacy C++ Code with Approval Tests
 

Similar to Managing and Integrating Vault at The New York Times

key aggregate cryptosystem for scalable data sharing in cloud
key aggregate cryptosystem for scalable data sharing in cloudkey aggregate cryptosystem for scalable data sharing in cloud
key aggregate cryptosystem for scalable data sharing in cloud
Sravan Narra
 
CICD With GitHub, Travis, SonarCloud and Docker Hub
CICD With GitHub, Travis, SonarCloud and Docker HubCICD With GitHub, Travis, SonarCloud and Docker Hub
CICD With GitHub, Travis, SonarCloud and Docker Hub
Carlos Cavero Barca
 
Google Hacking Lab ClassNameDate This is an introducti.docx
Google Hacking Lab ClassNameDate This is an introducti.docxGoogle Hacking Lab ClassNameDate This is an introducti.docx
Google Hacking Lab ClassNameDate This is an introducti.docx
whittemorelucilla
 
Pyramid patterns
Pyramid patternsPyramid patterns
Pyramid patterns
Carlos de la Guardia
 
Azure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
Azure Low Lands 2019 - Building secure cloud applications with Azure Key VaultAzure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
Azure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
Tom Kerkhove
 
Kubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with DemoKubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with Demo
Opsta
 
Wellington MuleSoft Meetup 2021-02-18
Wellington MuleSoft Meetup 2021-02-18Wellington MuleSoft Meetup 2021-02-18
Wellington MuleSoft Meetup 2021-02-18
Mary Joy Sabal
 
Development of Java tools using SWT and WALA af Hans Søndergaard, ViaUC
Development of Java tools using SWT and WALA af Hans Søndergaard, ViaUCDevelopment of Java tools using SWT and WALA af Hans Søndergaard, ViaUC
Development of Java tools using SWT and WALA af Hans Søndergaard, ViaUC
InfinIT - Innovationsnetværket for it
 
Azure Key Vault with a PaaS Architecture and ARM Template Deployment
Azure Key Vault with a PaaS Architecture and ARM Template DeploymentAzure Key Vault with a PaaS Architecture and ARM Template Deployment
Azure Key Vault with a PaaS Architecture and ARM Template Deployment
Roy Kim
 
Secure Secret Management on a Budget: Reasoning about Scalable SM with Vault ...
Secure Secret Management on a Budget: Reasoning about Scalable SM with Vault ...Secure Secret Management on a Budget: Reasoning about Scalable SM with Vault ...
Secure Secret Management on a Budget: Reasoning about Scalable SM with Vault ...
Mary Racter
 
Hadoop Hive
Hadoop HiveHadoop Hive
Hadoop Hive
Madhur Nawandar
 
AWS Study Group - Chapter 01 - Introducing AWS [Solution Architect Associate ...
AWS Study Group - Chapter 01 - Introducing AWS [Solution Architect Associate ...AWS Study Group - Chapter 01 - Introducing AWS [Solution Architect Associate ...
AWS Study Group - Chapter 01 - Introducing AWS [Solution Architect Associate ...
QCloudMentor
 
10 tips for Cloud Native Security
10 tips for Cloud Native Security10 tips for Cloud Native Security
10 tips for Cloud Native Security
Karthik Gaekwad
 
Spring Boot on Kubernetes/OpenShift
Spring Boot on Kubernetes/OpenShiftSpring Boot on Kubernetes/OpenShift
Spring Boot on Kubernetes/OpenShift
Kamesh Sampath
 
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
garrett honeycutt
 
#ATAGTR2021 Presentation - "Selenium 4 Observability – a 90 Min Hands on Lab"
#ATAGTR2021 Presentation - "Selenium 4 Observability – a 90 Min Hands on Lab"#ATAGTR2021 Presentation - "Selenium 4 Observability – a 90 Min Hands on Lab"
#ATAGTR2021 Presentation - "Selenium 4 Observability – a 90 Min Hands on Lab"
Agile Testing Alliance
 
[Wroclaw #9] The purge - dealing with secrets in Opera Software
[Wroclaw #9] The purge - dealing with secrets in Opera Software[Wroclaw #9] The purge - dealing with secrets in Opera Software
[Wroclaw #9] The purge - dealing with secrets in Opera Software
OWASP
 
Modernizing WordPress Search with Elasticsearch
Modernizing WordPress Search with ElasticsearchModernizing WordPress Search with Elasticsearch
Modernizing WordPress Search with Elasticsearch
Taylor Lovett
 
An introduction to maven gradle and sbt
An introduction to maven gradle and sbtAn introduction to maven gradle and sbt
An introduction to maven gradle and sbt
Fabio Fumarola
 

Similar to Managing and Integrating Vault at The New York Times (20)

key aggregate cryptosystem for scalable data sharing in cloud
key aggregate cryptosystem for scalable data sharing in cloudkey aggregate cryptosystem for scalable data sharing in cloud
key aggregate cryptosystem for scalable data sharing in cloud
 
CICD With GitHub, Travis, SonarCloud and Docker Hub
CICD With GitHub, Travis, SonarCloud and Docker HubCICD With GitHub, Travis, SonarCloud and Docker Hub
CICD With GitHub, Travis, SonarCloud and Docker Hub
 
Google Hacking Lab ClassNameDate This is an introducti.docx
Google Hacking Lab ClassNameDate This is an introducti.docxGoogle Hacking Lab ClassNameDate This is an introducti.docx
Google Hacking Lab ClassNameDate This is an introducti.docx
 
Pyramid patterns
Pyramid patternsPyramid patterns
Pyramid patterns
 
Azure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
Azure Low Lands 2019 - Building secure cloud applications with Azure Key VaultAzure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
Azure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
 
Kubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with DemoKubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with Demo
 
Wellington MuleSoft Meetup 2021-02-18
Wellington MuleSoft Meetup 2021-02-18Wellington MuleSoft Meetup 2021-02-18
Wellington MuleSoft Meetup 2021-02-18
 
Development of Java tools using SWT and WALA af Hans Søndergaard, ViaUC
Development of Java tools using SWT and WALA af Hans Søndergaard, ViaUCDevelopment of Java tools using SWT and WALA af Hans Søndergaard, ViaUC
Development of Java tools using SWT and WALA af Hans Søndergaard, ViaUC
 
Azure Key Vault with a PaaS Architecture and ARM Template Deployment
Azure Key Vault with a PaaS Architecture and ARM Template DeploymentAzure Key Vault with a PaaS Architecture and ARM Template Deployment
Azure Key Vault with a PaaS Architecture and ARM Template Deployment
 
Cache Security- The Basics
Cache Security- The BasicsCache Security- The Basics
Cache Security- The Basics
 
Secure Secret Management on a Budget: Reasoning about Scalable SM with Vault ...
Secure Secret Management on a Budget: Reasoning about Scalable SM with Vault ...Secure Secret Management on a Budget: Reasoning about Scalable SM with Vault ...
Secure Secret Management on a Budget: Reasoning about Scalable SM with Vault ...
 
Hadoop Hive
Hadoop HiveHadoop Hive
Hadoop Hive
 
AWS Study Group - Chapter 01 - Introducing AWS [Solution Architect Associate ...
AWS Study Group - Chapter 01 - Introducing AWS [Solution Architect Associate ...AWS Study Group - Chapter 01 - Introducing AWS [Solution Architect Associate ...
AWS Study Group - Chapter 01 - Introducing AWS [Solution Architect Associate ...
 
10 tips for Cloud Native Security
10 tips for Cloud Native Security10 tips for Cloud Native Security
10 tips for Cloud Native Security
 
Spring Boot on Kubernetes/OpenShift
Spring Boot on Kubernetes/OpenShiftSpring Boot on Kubernetes/OpenShift
Spring Boot on Kubernetes/OpenShift
 
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
 
#ATAGTR2021 Presentation - "Selenium 4 Observability – a 90 Min Hands on Lab"
#ATAGTR2021 Presentation - "Selenium 4 Observability – a 90 Min Hands on Lab"#ATAGTR2021 Presentation - "Selenium 4 Observability – a 90 Min Hands on Lab"
#ATAGTR2021 Presentation - "Selenium 4 Observability – a 90 Min Hands on Lab"
 
[Wroclaw #9] The purge - dealing with secrets in Opera Software
[Wroclaw #9] The purge - dealing with secrets in Opera Software[Wroclaw #9] The purge - dealing with secrets in Opera Software
[Wroclaw #9] The purge - dealing with secrets in Opera Software
 
Modernizing WordPress Search with Elasticsearch
Modernizing WordPress Search with ElasticsearchModernizing WordPress Search with Elasticsearch
Modernizing WordPress Search with Elasticsearch
 
An introduction to maven gradle and sbt
An introduction to maven gradle and sbtAn introduction to maven gradle and sbt
An introduction to maven gradle and sbt
 

More from Amanda MacLeod

How to Use HashiCorp Vault with Hiera 5 for Secret Management With Puppet
How to Use HashiCorp Vault with Hiera 5 for Secret Management With PuppetHow to Use HashiCorp Vault with Hiera 5 for Secret Management With Puppet
How to Use HashiCorp Vault with Hiera 5 for Secret Management With Puppet
Amanda MacLeod
 
Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...
Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...
Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...
Amanda MacLeod
 
Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...
Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...
Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...
Amanda MacLeod
 
Provision to Production with Terraform Enterprise
Provision to Production with Terraform EnterpriseProvision to Production with Terraform Enterprise
Provision to Production with Terraform Enterprise
Amanda MacLeod
 
Easy and Flexible Application Deployment with HashiCorp Nomad
Easy and Flexible Application Deployment with HashiCorp NomadEasy and Flexible Application Deployment with HashiCorp Nomad
Easy and Flexible Application Deployment with HashiCorp Nomad
Amanda MacLeod
 
Rein in Your Cloud Costs with Terraform and AWS Lambda
Rein in Your Cloud Costs with Terraform and AWS LambdaRein in Your Cloud Costs with Terraform and AWS Lambda
Rein in Your Cloud Costs with Terraform and AWS Lambda
Amanda MacLeod
 
Delivering Secret Zero: Vault AppRole with Terraform and Chef
Delivering Secret Zero: Vault AppRole with Terraform and ChefDelivering Secret Zero: Vault AppRole with Terraform and Chef
Delivering Secret Zero: Vault AppRole with Terraform and Chef
Amanda MacLeod
 

More from Amanda MacLeod (7)

How to Use HashiCorp Vault with Hiera 5 for Secret Management With Puppet
How to Use HashiCorp Vault with Hiera 5 for Secret Management With PuppetHow to Use HashiCorp Vault with Hiera 5 for Secret Management With Puppet
How to Use HashiCorp Vault with Hiera 5 for Secret Management With Puppet
 
Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...
Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...
Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...
 
Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...
Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...
Secure and Convenient Workflows: Integrating HashiCorp Vault with Pivotal Clo...
 
Provision to Production with Terraform Enterprise
Provision to Production with Terraform EnterpriseProvision to Production with Terraform Enterprise
Provision to Production with Terraform Enterprise
 
Easy and Flexible Application Deployment with HashiCorp Nomad
Easy and Flexible Application Deployment with HashiCorp NomadEasy and Flexible Application Deployment with HashiCorp Nomad
Easy and Flexible Application Deployment with HashiCorp Nomad
 
Rein in Your Cloud Costs with Terraform and AWS Lambda
Rein in Your Cloud Costs with Terraform and AWS LambdaRein in Your Cloud Costs with Terraform and AWS Lambda
Rein in Your Cloud Costs with Terraform and AWS Lambda
 
Delivering Secret Zero: Vault AppRole with Terraform and Chef
Delivering Secret Zero: Vault AppRole with Terraform and ChefDelivering Secret Zero: Vault AppRole with Terraform and Chef
Delivering Secret Zero: Vault AppRole with Terraform and Chef
 

Recently uploaded

DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 

Recently uploaded (20)

DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 

Managing and Integrating Vault at The New York Times

  • 1. Vault @ NYT NYT’s Delivery Engineering Team Hashicorp User Group - April ‘18 New York City THE NEW YORK TIMES Managing and integrating Vault at the New York Times
  • 2. 1. Who are we? 2. Problems in Secretsville 3. Adopting and Managing Vault 4. Namespaces 5. Integration with other Systems
  • 4. 1. Who are we? 2. Problems in Secretsville 3. Adopting and Managing Vault 4. Namespaces 5. Integration with other Systems
  • 5. Our secrets management was more difficult than it had to be.
  • 6. 1. Who are we? 2. Problems in Secretsville 3. Adopting and Managing Vault 4. Namespaces 5. Integration with other Systems
  • 7. Operator Keysharing The key sharing capabilities of Vault ensure that no single operator can perform any “root” operations and that when these operations must occur, all (or most) operators are aware. Variety of Auth Methods Vault supports a wide array of authentication methods which makes developer and automated authentication easy. Granular ACLs Vault’s granular policy system allows a single Vault cluster to be used comfortably by multiple teams in the organization. It also ensures proper isolation of secrets. Audited The Vault audit log is invaluable for incident response and figuring out exactly what happened and when. Every action must be logged so there is always a trail to follow. Break Glass Benefits of Adopting Vault And more... - Simple secret sharing - Leases / Revocation - Dynamic secrets - HTTP API - Open source - Public testing API - Constantly improving In case of emergency Vault can be sealed and secret access can be temporarily shut down quickly and easily.
  • 9. 1. Who are we? 2. Problems in Secretsville 3. Adopting and Managing Vault 4. Namespaces 5. Integration with other Systems
  • 10. Vault is great out of the box but to get the isolation we wanted we started creating namespaces.
  • 11. To manage namespaces we use terraform and a home-grown tool called goblin.
  • 12.
  • 13. variable "name" { description = "The name of the team on Github." } variable "org" { description = "The name of the org the team belongs to on Github." } variable "ensured_policies" { type = "list" default = [] description = "The list of ensured policies for the team." } Team Namespace Module: Variables
  • 14. resource "vault_mount" “secret” { path = "${var.org}/teams/${var.name}/secret" type = "generic" } resource "vault_mount" “transit” { path = "${var.org}/teams/${var.name}/transit" type = "transit" } Team Namespace Module: Mounts
  • 15. # The member policy is given to all members of the team resource "vault_policy" “member” { name = "${var.org}/teams/${var.name}/member" policy = <<EOT path “{var.org}/teams/${var.name}/secret/*” { capabilities = [“create”, “delete”, “list”, “read”, “update”] } … # more paths below EOT } Team Namespace Module: Policies
  • 16. # Ensure certain policies are always mapped onto the team resource "null_resource" “ensure-policies” { triggers { policies = "${join(“,”, var.ensured_policies)}" } provisioner "local_exec" { command = “goblin ensure -team=${var.name} -policies=${join(“,”, var.ensured_policies)}” } } Team Namespace Module: Ensuring Policies
  • 17. module "delivery-engineering" { source = "../modules/base_team" org = "nytm" name = "delivery-engineering" ensured_policies = [ "nytm/teams/delivery-engineering/member", "operator", ] } Using the Team Namespace Module
  • 18. module "my-repo" { source = "../modules/base_repo" org = "nytm" name = "my-repo" } Using the Repository Namespace Module
  • 19. Syncing Repository Policies What repositories are active?
  • 21. Syncing Repository Policies Which teams have access to these repositories?
  • 22. Syncing Repository Policies A-Team has read access to my-repo and admin access to that-repo.
  • 23. Syncing Repository Policies Does A-Team have any ensured policies?
  • 25. Syncing Repository Policies Map the policies a-team-member, my-repo-read, and that-repo-adminto the A-team.
  • 27. Uses extensible templates. Creating new namespaces and adding to existing namespaces are both easy and fast. Main Benefits Provides some self-service policy management. Teams really love being able to do things themselves. Enforces good Github practices. Part of onboarding is reviewing Github teams, membership, and permissions.
  • 28. 1. Who are we? 2. Problems in Secretsville 3. Adopting and Managing Vault 4. Namespaces 5. Integration with other Systems
  • 29. Connecting GKE to Vault ● Enable GCE auth backend ● Create init container in deployment ○ Mount shared memory volume ○ Get signed JWT ○ Login to Vault ○ Write secrets to shared memory volume
  • 30. Connecting GKE to Vault initContainers: - name: {{.app}}-init image: {{.int_image}} env: - name: VAULT_ROLE value: "{{.vault_role}}" - name: GOOGLE_SERVICE_ACCOUNT value: "{{.google_service_account}}" - name: VAULT_ADDR value: "{{.vault_addr}}" - name: VAULT_PATH value: "{{.vault_path}}" volumeMounts: - mountPath: /secrets name: secrets VAULT_ROLE (required ) The Role in vault to authenticate with GOOGLE_SERVICE_ ACCOUNT (required) The google service account that will be used to authenticate with vault. Typically this will be default VAULT_ADDR (required) The URL of the vault server to connect to. VAULT_PATH This is a vault path (ie nytm/goblin/secret/something). If this variable is specified the path will be recursed and all secrets will be written to memory. VAULT_SECRETS This is a comma delimited list of vault secrets. Each secret will have every key written to memory TOKEN_ONLY This is a boolean variable. If true a short live vault token will be written to /secrets/vaultToken.
  • 31. Connecting GKE to Vault ● Secrets are no longer in our CI/CD pipeline ● Secrets only stored in memory ○ Not unencrypted in GKE ○ Not leaking in environment variables