SlideShare ist ein Scribd-Unternehmen logo
1 von 104
Downloaden Sie, um offline zu lesen
Managing server secrets at scale
with SaltStack and a vaultless password manager
Ignat Korchagin
@secumod
$ whoami
● Platform engineer at Cloudflare
● Passionate about security and crypto
● Enjoy low level programming
Disclaimer
So you have a server
So you have a server
You need:
● server SSH key
So you have a server
You need:
● server SSH key
● configuration management key
So you have a server
You need:
● server SSH key
● configuration management key
● disk encryption key
So you have a server
You need:
● server SSH key
● configuration management key
● disk encryption key
● some server credentials
So you have a server
You need:
● server SSH key
● configuration management key
● disk encryption key
● some server credentials
● probably more…
So you have a server
You need:
● server SSH key
● configuration management key
● disk encryption key
● some server credentials
● probably more…
… so at least 5 keys… and that’s per server
So you have a datacentre
So you have datacentre(s)
So you have datacentre(s)
Cloudflare network today
120+
Data centers globally
2.5B
Monthly unique visitors
10%
Internet requests
everyday
10MM
Requests/second
websites, apps & APIs
in 150 countries
7M+
So you have datacentre(s)
Where do keys live?
Where do keys live?
Where do keys live?
Keys in configuration management
#!yaml|gpg
root-password: |
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1
hQIMA221uplZYlMdARAA583Z4o3xZawWzK8yUYJKBEkMQD/i+RRn7A0+h8SEmsov
QkrxgeaCWfIZ5pRpCpVOK1SWZGi0dzWkWe1DeNisawv5X/VUG3d5ej1xtAD4kBTy
AzcnFft7QfIsV8C+jguHYGITU++pFVAgEdGrb09mf6SEDaAGJhOq01BmHccw0Pat
rBH/+gvD155F7sxM/BBQwL25ZjtC+8jUsp1bUcTQVofsy6kTVRNSS4hO4UNtMuMQ
hYf6UAPaJv3PhFXKYYu0tEp2THZVTlUtTjyKAZrNiKyRpC/0exbJjJMqkYmmUG9r
yP1CvubJnmHda2u42981dK3pz5TlLEO4MrBry6vynN0TJfXwn1nt7YMVatiViQb9
UK5NDbjVKBBE6KkN28kSJtsTkCOM7+RztjLdf+7ZWzwxFV5EkM+2SLPIhQFCMjRG
...
Keys in configuration management
Keys in configuration management
● Bootstrap configuration management
Keys in configuration management
● Bootstrap configuration management
● Does not scale for unique keys
Keys in configuration management
● Bootstrap configuration management
● Does not scale for unique keys
#!yaml|gpg
root-password: |
{% if grains[‘hostname’] == ‘baredog’ %}
-----BEGIN PGP MESSAGE-----
...
{% elif grains[‘hostname’] == ‘cheesyonion’ %}
-----BEGIN PGP MESSAGE-----
...
{% elif grains[‘hostname’] == … %}
Keys on local disk
Keys on local disk
#!/bin/bash
# super nitty startup script, fully automated !!!
if [ ! -f /etc/server_key ]; then
dd if=/dev/urandom of=/etc/server_key bs=1 count=32
fi
# don’t forget SSH
if [ ! -f /etc/ssh/id_rsa ]; then
ssh-keygen -f /etc/ssh/id_rsa
fi
● Usually generated by startup scripts
Entropy
Keys on local disk
Keys on local disk
● Not suitable for some key types
Keys on local disk
● Not suitable for some key types
○ root passwords
Keys on local disk
● Not suitable for some key types
○ root passwords
● Does not play well with disk
encryption
Keys on local disk
● Not suitable for some key types
○ root passwords
● Does not play well with disk
encryption
○ decrypt configuration management key
Keys on local disk
● Not suitable for some key types
○ root passwords
● Does not play well with disk
encryption
○ decrypt configuration management key
● What about diskless/stateless
systems?
Encrypted disks
server
disk 1 disk 2 disk N
encryptstore
Unified Extensible Firmware Interface
Unified Extensible Firmware Interface
● Aka BIOS 2.0
Unified Extensible Firmware Interface
● Aka BIOS 2.0
● Standard pre-OS environment
Unified Extensible Firmware Interface
● Aka BIOS 2.0
● Standard pre-OS environment
● Extensible (you can write your own apps)
Unified Extensible Firmware Interface
● Aka BIOS 2.0
● Standard pre-OS environment
● Extensible (you can write your own apps)
● Supported by most major OSes
Unified Extensible Firmware Interface
● Aka BIOS 2.0
● Standard pre-OS environment
● Extensible (you can write your own apps)
● Supported by most major OSes
● Provides many advanced features
Unified Extensible Firmware Interface
● Aka BIOS 2.0
● Standard pre-OS environment
● Extensible (you can write your own apps)
● Supported by most major OSes
● Provides many advanced features
○ UEFI variables
UEFI variables
● Backed by flash memory on platform
firmware chip
UEFI variables
● Backed by flash memory on platform
firmware chip
● Can store standard and custom
(OEM/user) data
UEFI variables
● Backed by flash memory on platform
firmware chip
● Can store standard and custom
(OEM/user) data
● Can be accessed after OS kernel booted
UEFI variables
● Backed by flash memory on platform
firmware chip
● Can store standard and custom
(OEM/user) data
● Can be accessed after OS kernel booted
● Have built-in support in Linux
UEFI variables in Linux
# not needed for systemd-based Linux distributions
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
# need to prepend data with 4 byte attr and put an “owner” GUID
cat <(printf "x07x00x00x00") <(cat mydata.bin) > 
/sys/firmware/efi/efivars/mydata-<some GUID>
UEFI variables in Linux
● always available
# not needed for systemd-based Linux distributions
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
# need to prepend data with 4 byte attr and put an “owner” GUID
cat <(printf "x07x00x00x00") <(cat mydata.bin) > 
/sys/firmware/efi/efivars/mydata-<some GUID>
UEFI variables in Linux
● always available
● can be accessed in early boot stages
# not needed for systemd-based Linux distributions
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
# need to prepend data with 4 byte attr and put an “owner” GUID
cat <(printf "x07x00x00x00") <(cat mydata.bin) > 
/sys/firmware/efi/efivars/mydata-<some GUID>
UEFI variables in Linux
● always available
● can be accessed in early boot stages
● however, may have limited storage
# not needed for systemd-based Linux distributions
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
# need to prepend data with 4 byte attr and put an “owner” GUID
cat <(printf "x07x00x00x00") <(cat mydata.bin) > 
/sys/firmware/efi/efivars/mydata-<some GUID>
Keys in cryptography
Keys in cryptography
derive
Keys in cryptography
Key derivation functions
master
key
KDF
Key derivation functions
master
key
KDF
Key derivation functions
master
key
KDF
string1
Key derivation functions
master
key
KDF
string1
key1
Key derivation functions
master
key
KDF
string1 string2
key1
Key derivation functions
master
key
KDF
string1 string2
key1 key2
Generating key pairs
Deterministic
CSPRNG
Generating key pairs
Deterministic
CSPRNG
seed1
Generating key pairs
Deterministic
CSPRNG
seed1
keypair1
Generating key pairs
Deterministic
CSPRNG
seed1 seed2
keypair1
Generating key pairs
Deterministic
CSPRNG
seed1 seed2
keypair1 keypair2
Introducing gokey tool
master
seed
realm
For example
“ssh”, “saltstack”,
“disk encryption”
etc
Introducing gokey tool
HKDF
master
seed
realm
For example
“ssh”, “saltstack”,
“disk encryption”
etc
Introducing gokey tool
HKDF
master
seed
realm
Deterministic
CSPRNG
For example
“ssh”, “saltstack”,
“disk encryption”
etc
Introducing gokey tool
HKDF
master
seed
realm
Deterministic
CSPRNG
ssh
key
For example
“ssh”, “saltstack”,
“disk encryption”
etc
Introducing gokey tool
HKDF
master
seed
realm
Deterministic
CSPRNG
ssh
key
For example
“ssh”, “saltstack”,
“disk encryption”
etc
Deterministic
CSPRNG
Introducing gokey tool
HKDF
master
seed
realm
Deterministic
CSPRNG
ssh
key
For example
“ssh”, “saltstack”,
“disk encryption”
etc
saltstack
key
Deterministic
CSPRNG
Key management
● Provisioning process ensures a master seed is
generated and stored in UEFI on first boot
Key management
● Provisioning process ensures a master seed is
generated and stored in UEFI on first boot
● Startup scripts “recover” (derive from master seed)
configuration management credential (key)
Key management
● Provisioning process ensures a master seed is
generated and stored in UEFI on first boot
● Startup scripts “recover” (derive from master seed)
configuration management credential (key)
● Configuration management “recovers” all other keys
Key management
root-password: |
{% if grains[‘hostname’] == ‘baredog’ %}
-----BEGIN PGP MESSAGE-----
...
{% elif grains[‘hostname’] == ‘cheesyonion’ %}
-----BEGIN PGP MESSAGE-----
Key management
root-password: |
{% if grains[‘hostname’] == ‘baredog’ %}
-----BEGIN PGP MESSAGE-----
...
{% elif grains[‘hostname’] == ‘cheesyonion’ %}
-----BEGIN PGP MESSAGE-----
root-password: {% gokey(‘root-password’) %}
ssh-key: {% gokey(‘ssh’) %}
nodekey custom state
def managed(name, type, label, mode = '600'):
keydata = __salt__['cmd.run_all']('gokey -p {seed_pass} -s {seed_file} -skip 4 -t
{key_type} -r {label}'.format(seed_pass=_SEED_PASS, seed_file=seed_file,
key_type=type, label=label), rstrip=False)
if keydata['retcode'] != 0:
ret = {'name': name}
if __opts__['test']:
ret['result'] = None
else:
ret['result'] = False
ret['comment'] = 'gokey command failed'
ret['changes'] = {'retcode': keydata['retcode'], 'stderr': keydata['stderr']}
return ret
return __states__['file.managed'](name=name, mode=mode, show_changes=False,
makedirs=True, contents_newline=False, contents=keydata['stdout'])
nodekey custom state
/etc/ssh/ssh_host_ecdsa_key:
nodekey.managed:
- type: ec256
- label: ssh-host-key
/etc/ssh/ssh_host_rsa_key:
nodekey.managed:
- type: rsa2048
- label: ssh-host-key
/etc/luks/luks.key:
nodekey.managed:
- type: raw
- label: luks-key
secrets renderer
#!jinja|yaml|secrets
testing:
secret: |
-----BEGIN DERIVE SECRET-----
seed: |
is1FAXoWOR7O3a3rvNqsjlyu5Y3mAwm0Ekwcf…
...
password: hunter2
type: pass
-----END DERIVE SECRET-----
secrets renderer
$ salt -L 'foo,bar' pillar.get testing
foo:
----------
secret:
Im$kEJz+8u
bar:
----------
secret:
lAP4a}ztOX
secrets renderer
#!jinja|yaml|secrets
testing:
secret: |
-----BEGIN DERIVE SECRET-----
seed: |
is1FAXoWOR7O3a3rvNqsjlyu5Y3mAwm0Ekwcf…
...
password: hunter2
type: pass
-----END DERIVE SECRET-----
secrets renderer
#!jinja|yaml|gpg|secrets
testing:
secret: |
-----BEGIN DERIVE SECRET-----
seed: |
<PGP CIPHERTEXT HERE>
password: |
<PGP CIPHERTEXT HERE>
type: pass
-----END DERIVE SECRET-----
secrets renderer
Adding a service key
server server
Adding a service key
/etc/myservice/myservice.key:
nodekey.managed:
- type: ec256
- label: myservice
Adding a service key
/etc/myservice/myservice.key:
nodekey.managed:
- type: ec256
- label: myservice
#!jinja|yaml|gpg|secrets
myservice:
privatekey: |
-----BEGIN DERIVE SECRET-----
seed: |
-----BEGIN PGP MESSAGE-----
...
password: |
-----BEGIN PGP MESSAGE-----
...
type: ec256
-----END DERIVE SECRET-----
/etc/myservice/myservice.key:
file.managed:
- mode: 0600
- contents_pillar: |
myservice:privatekey
Adding a service key
server server
Adding a service key
server server
Adding a server
server server
Adding a server
server server server
Adding a server
server server server
Rotate a specific service key
server server server
Rotate a specific service key
server server server
ssh-key: {% gokey(‘ssh’) %} ssh-key: {% gokey(‘ssh-v2’) %}
Rotate a specific service key
server server server
ssh-key: {% gokey(‘ssh’) %} ssh-key: {% gokey(‘ssh-v2’) %}
Rotate all keys on a server
server server server
Rotate all keys on a server
server server server
rotate EFI seed
Rotate all key on a server
server server server
rotate EFI seed
Encrypted disks (previously)
server
disk 1 disk 2 disk N
encryptstore
Encrypted disks
server
disk 1 disk 2 disk N
encryptencrypt
Conclusions
Conclusions
● Decouple key storage from regular storage
Conclusions
● Decouple key storage from regular storage
● Decouple key contents from Salt
Conclusions
● Decouple key storage from regular storage
● Decouple key contents from Salt
● Efficient key management on stateless
systems with Salt
Conclusions
● Decouple key storage from regular storage
● Decouple key contents from Salt
● Efficient key management on stateless
systems with Salt
● Easy to add new or rotate existing keys
Conclusions
● Decouple key storage from regular storage
● Decouple key contents from Salt
● Efficient key management on stateless
systems with Salt
● Easy to add new or rotate existing keys
● Better security guarantees
Conclusions
● Decouple key storage from regular storage
● Decouple key contents from Salt
● Efficient key management on stateless
systems with Salt
● Easy to add new or rotate existing keys
● Better security guarantees
https://github.com/cloudflare/gokey
Thank you

Weitere ähnliche Inhalte

Was ist angesagt?

Shall We Play A Game - BSides Cape Town 2018
Shall We Play A Game - BSides Cape Town 2018Shall We Play A Game - BSides Cape Town 2018
Shall We Play A Game - BSides Cape Town 2018HypnZA
 
SSH: Seguranca no Acesso Remoto
SSH: Seguranca no Acesso RemotoSSH: Seguranca no Acesso Remoto
SSH: Seguranca no Acesso RemotoTiago Cruz
 
บทที่3
บทที่3บทที่3
บทที่3tttotongg
 
Password Storage and Attacking in PHP
Password Storage and Attacking in PHPPassword Storage and Attacking in PHP
Password Storage and Attacking in PHPAnthony Ferrara
 
Tecnicas monitoreo reportes con Asterisk
Tecnicas monitoreo reportes con AsteriskTecnicas monitoreo reportes con Asterisk
Tecnicas monitoreo reportes con AsteriskNicolás Gudiño
 
What's up, RabbitMQ?
What's up, RabbitMQ?What's up, RabbitMQ?
What's up, RabbitMQ?acogoluegnes
 
Linux 系統管理與安全:系統防駭與資訊安全
Linux 系統管理與安全:系統防駭與資訊安全Linux 系統管理與安全:系統防駭與資訊安全
Linux 系統管理與安全:系統防駭與資訊安全維泰 蔡
 
Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識維泰 蔡
 
Linux 系統管理與安全:進階系統管理系統防駭與資訊安全
Linux 系統管理與安全:進階系統管理系統防駭與資訊安全Linux 系統管理與安全:進階系統管理系統防駭與資訊安全
Linux 系統管理與安全:進階系統管理系統防駭與資訊安全維泰 蔡
 
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜Retrieva inc.
 
Password Storage And Attacking In PHP - PHP Argentina
Password Storage And Attacking In PHP - PHP ArgentinaPassword Storage And Attacking In PHP - PHP Argentina
Password Storage And Attacking In PHP - PHP ArgentinaAnthony Ferrara
 
Astricon 2013: "Asterisk and Database"
Astricon 2013: "Asterisk and Database"Astricon 2013: "Asterisk and Database"
Astricon 2013: "Asterisk and Database"Francesco Prior
 
GPU Cracking on the Cheap
GPU Cracking on the CheapGPU Cracking on the Cheap
GPU Cracking on the CheapKarl Fosaaen
 
GPU Cracking - On the Cheap
GPU Cracking - On the CheapGPU Cracking - On the Cheap
GPU Cracking - On the CheapNetSPI
 
Apache Commons ソースリーディングの会:Codec
Apache Commons ソースリーディングの会:CodecApache Commons ソースリーディングの会:Codec
Apache Commons ソースリーディングの会:Codecmoai kids
 

Was ist angesagt? (19)

Shall We Play A Game - BSides Cape Town 2018
Shall We Play A Game - BSides Cape Town 2018Shall We Play A Game - BSides Cape Town 2018
Shall We Play A Game - BSides Cape Town 2018
 
Ha opensuse
Ha opensuseHa opensuse
Ha opensuse
 
SSH: Seguranca no Acesso Remoto
SSH: Seguranca no Acesso RemotoSSH: Seguranca no Acesso Remoto
SSH: Seguranca no Acesso Remoto
 
บทที่3
บทที่3บทที่3
บทที่3
 
Password Storage and Attacking in PHP
Password Storage and Attacking in PHPPassword Storage and Attacking in PHP
Password Storage and Attacking in PHP
 
Tecnicas monitoreo reportes con Asterisk
Tecnicas monitoreo reportes con AsteriskTecnicas monitoreo reportes con Asterisk
Tecnicas monitoreo reportes con Asterisk
 
What's up, RabbitMQ?
What's up, RabbitMQ?What's up, RabbitMQ?
What's up, RabbitMQ?
 
Linux 系統管理與安全:系統防駭與資訊安全
Linux 系統管理與安全:系統防駭與資訊安全Linux 系統管理與安全:系統防駭與資訊安全
Linux 系統管理與安全:系統防駭與資訊安全
 
Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識
 
Linux 系統管理與安全:進階系統管理系統防駭與資訊安全
Linux 系統管理與安全:進階系統管理系統防駭與資訊安全Linux 系統管理與安全:進階系統管理系統防駭與資訊安全
Linux 系統管理與安全:進階系統管理系統防駭與資訊安全
 
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
 
Password Storage And Attacking In PHP - PHP Argentina
Password Storage And Attacking In PHP - PHP ArgentinaPassword Storage And Attacking In PHP - PHP Argentina
Password Storage And Attacking In PHP - PHP Argentina
 
Hp prodesk
Hp prodeskHp prodesk
Hp prodesk
 
Astricon 2013: "Asterisk and Database"
Astricon 2013: "Asterisk and Database"Astricon 2013: "Asterisk and Database"
Astricon 2013: "Asterisk and Database"
 
GPU Cracking on the Cheap
GPU Cracking on the CheapGPU Cracking on the Cheap
GPU Cracking on the Cheap
 
Da APK al Golden Ticket
Da APK al Golden TicketDa APK al Golden Ticket
Da APK al Golden Ticket
 
GPU Cracking - On the Cheap
GPU Cracking - On the CheapGPU Cracking - On the Cheap
GPU Cracking - On the Cheap
 
iCloud keychain
iCloud keychainiCloud keychain
iCloud keychain
 
Apache Commons ソースリーディングの会:Codec
Apache Commons ソースリーディングの会:CodecApache Commons ソースリーディングの会:Codec
Apache Commons ソースリーディングの会:Codec
 

Ähnlich wie Managing server secrets at scale with SaltStack and a vaultless password manager

IT Automation with Ansible
IT Automation with AnsibleIT Automation with Ansible
IT Automation with AnsibleRayed Alrashed
 
Presentation nix
Presentation nixPresentation nix
Presentation nixfangjiafu
 
Presentation nix
Presentation nixPresentation nix
Presentation nixfangjiafu
 
A3Sec Advanced Deployment System
A3Sec Advanced Deployment SystemA3Sec Advanced Deployment System
A3Sec Advanced Deployment Systema3sec
 
InSpec Workshop at Velocity London 2018
InSpec Workshop at Velocity London 2018InSpec Workshop at Velocity London 2018
InSpec Workshop at Velocity London 2018Mandi Walls
 
Chef on SmartOS
Chef on SmartOSChef on SmartOS
Chef on SmartOSEric Saxby
 
ChinaNetCloud - Zabbix Monitoring System Overview
ChinaNetCloud - Zabbix Monitoring System OverviewChinaNetCloud - Zabbix Monitoring System Overview
ChinaNetCloud - Zabbix Monitoring System OverviewChinaNetCloud
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as CodeKris Buytaert
 
computer hardware component.pdf
computer hardware component.pdfcomputer hardware component.pdf
computer hardware component.pdfMuhammad407018
 
Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Docker, Inc.
 
The Unix Command Line | Jim Reevior
The Unix Command Line | Jim ReeviorThe Unix Command Line | Jim Reevior
The Unix Command Line | Jim ReeviorOomph, Inc.
 

Ähnlich wie Managing server secrets at scale with SaltStack and a vaultless password manager (20)

eurobsd2013
eurobsd2013eurobsd2013
eurobsd2013
 
IT Automation with Ansible
IT Automation with AnsibleIT Automation with Ansible
IT Automation with Ansible
 
Ilf2013
Ilf2013Ilf2013
Ilf2013
 
Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernelEmbedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
 
Texas 2013
Texas 2013Texas 2013
Texas 2013
 
Self 2013
Self 2013Self 2013
Self 2013
 
Presentation nix
Presentation nixPresentation nix
Presentation nix
 
Presentation nix
Presentation nixPresentation nix
Presentation nix
 
BSDCan2013
BSDCan2013BSDCan2013
BSDCan2013
 
A3Sec Advanced Deployment System
A3Sec Advanced Deployment SystemA3Sec Advanced Deployment System
A3Sec Advanced Deployment System
 
InSpec Workshop at Velocity London 2018
InSpec Workshop at Velocity London 2018InSpec Workshop at Velocity London 2018
InSpec Workshop at Velocity London 2018
 
Chef on SmartOS
Chef on SmartOSChef on SmartOS
Chef on SmartOS
 
ChinaNetCloud - Zabbix Monitoring System Overview
ChinaNetCloud - Zabbix Monitoring System OverviewChinaNetCloud - Zabbix Monitoring System Overview
ChinaNetCloud - Zabbix Monitoring System Overview
 
Configure ssh cell
Configure ssh cellConfigure ssh cell
Configure ssh cell
 
Adhocr T-dose 2012
Adhocr T-dose 2012Adhocr T-dose 2012
Adhocr T-dose 2012
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as Code
 
Linux device drivers
Linux device drivers Linux device drivers
Linux device drivers
 
computer hardware component.pdf
computer hardware component.pdfcomputer hardware component.pdf
computer hardware component.pdf
 
Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
 
The Unix Command Line | Jim Reevior
The Unix Command Line | Jim ReeviorThe Unix Command Line | Jim Reevior
The Unix Command Line | Jim Reevior
 

Kürzlich hochgeladen

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxAnnaArtyushina1
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...masabamasaba
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 

Kürzlich hochgeladen (20)

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 

Managing server secrets at scale with SaltStack and a vaultless password manager