SlideShare a Scribd company logo
1 of 65
Download to read offline
When Securing Access to Data is About
Life and Death
About Us
Simon Randby
• Master in AI 2015
• Worked for Norsk helsenett
since
• Worked with Kafka for ≈ 3 years
• Follow me on pouët.net:
https://www.pouet.net/user.ph
p?who=100886
Fredrik Bekkevold
• 20+ years' experience
• Multiple complex domains
• ≈ 6 years with Kafka
• Follow me on X: @fbekkevold
(https://twitter.com/FBekkevold)
Todays topic
• How we ensure our services are reachable
• How we secure the communication
• How we enable support to figure out what's wrong without seeing
more data than needed
Can you reach prod?
The data must flow
Norway today
• 5.5 million people
• Living in ≈ 400 municipalities
• 400 000 are health care personell (not counting administrative staff)
• Work across 4 health care regions
• Having ≈ 80 hospitals
• Totalling 17 000 organizations individuall purchasing systems to
collaborate with each other
SMTP
Norsk helsenett
SMTP
Norsk helsenett
Lab
results
The
web
portal
Prescri
ptions
Journals
A
E
D
C
B
A
A A
A
A
A
A
SQL
A
Service Bus
NoSQL
A'
NoSQL
A'
NoSQL
A'
A
A
A
A
B
A
A
Producer
A
Consumer
B
Producer
B
Consumer
A
Consumer
A
C
B
A
D
mTLS for Kafka
A hands on journey
Private Key
Public Key
Password
Key Pair (.key file)
Public Key
Certificate (.crt file)
Metadata
• Signatures
• Usages (e.g. IsCa)
• Issued to/CN
• Alternative
DNSNames
• IP Addresses
CertificateAuthority
CA
Secures
Private Key
Public Key
Password
Key Pair (.key file)
Public Key
Certificate (.crt file)
Metadata
• Signatures
• Usages (e.g. IsCa)
• Issued to/CN
• Alternative
DNSNames
• IP Addresses
New Credentials Creation Flow
Create
Password
Create
Keys
Create
CSR
Config
CSR Confg
• Usages (e.g. IsCa)
• Alternative
DNSNames
• IP Addresses
Create
CSR
Public Key
Certificate Signing Request (.csr file)
Metadata)
• Issued to/CN
CSR Confg
• Usages (e.g. IsCa)
• Alternative
DNSNames
• IP Addresses
Issue
Certificate
Private Key
Public Key
Key Pair
Public Key
Certificate
Metadata
• Signatures
• Usages (e.g. IsCa)
• Issued to/CN
• Alternative
DNSNames
• IP Addresses
Password
PKCS12 Bundle (.pfx file)
Create
PKCS12
Bundle
Secures
S
e
c
u
r
e
s
Create resources needed for the
Certificate Authority (CA)
Create CA
DEMO_CA_PASSWORD="BestDemoPassrod"
echo $DEMO_CA_PASSWORD > './My_cool_example_CA_private_key_password.txt'
openssl req 
-new 
-x509 
-keyout "./My_cool_example_CA_private_key.key" 
-newkey "rsa:1024" 
-out "./My_cool_example_CA_public_key.crt" 
-days "36" 
-subj "/CN=my_cool_example_CA.example.com" 
-passin "pass:$DEMO_CA_PASSWORD" 
-passout "file:My_cool_example_CA_private_key_password.txt" 2> /dev/null
Create resources needed for the
ZooKeepers
It's been a bussy year, we havent had time to migrate to K-Raft
Create ZooKeeper Certs – Private key
ZOOKEEPER_1_PASSWORD='ZooKeeper_demo_password'
echo $ZOOKEEPER_1_PASSWORD > './zookeeper_password.txt'
openssl genrsa 
-passout file:./zookeeper_password.txt 
-out ./zookeeper.key 1024
Create ZooKeeper Certs – Certificate Signing
Request (CSR) Config
printf '%sn' 
'[req]' 
'default_bits = 1024' 
'prompt = no' 
'default_md = sha512' 
'distinguished_name = req_distinguished_name' 
'x509_extensions = v3_req' 
'' 
'[req_distinguished_name]' 
'' 
'[v3_req]' 
'basicConstraints=CA:FALSE' 
'subjectAltName = @alt_names' 
'' 
'[alt_names]' 
'DNS.1 = zookeeper' 
'DNS.2 = zookeeper.localhost' 
'IP.1 = 172.21.82.11' 
'IP.2 = 2001:2181:2181::11' > ./zookeeper.csr.config
Create ZooKeeper Certs – Create Certificate
Signing Request
openssl req 
-new 
-key ./zookeeper.key 
-subj '/CN=zookeeper.localhost' 
-out ./zookeeper.csr 
-config ./zookeeper.csr.config
Create ZooKeeper Certs – Sign Certificate
Signing Request and issue Certificate
openssl x509 
-req 
-CA ./My_cool_example_CA_public_key.crt 
-CAkey ./My_cool_example_CA_private_key.key 
-passin file:My_cool_example_CA_private_key_password.txt 
-in ./zookeeper.csr 
-out ./zookeeper.crt 
-days 35 
-CAcreateserial 
-extensions v3_req 
-extfile ./zookeeper.csr.config
Create ZooKeeper Certs – PKCS12 Bundle
openssl pkcs12 
-inkey ./zookeeper.key 
-in ./zookeeper.crt 
-passin pass:ZooKeeper_demo_password 
-passout pass:ZooKeeper_demo_password 
-export 
-out ./zookeeper.pfx
ZooKeeper mTLS resources
• Artifacts from this process you want to keep for later use
• The CA certificate
• The PFX bundle
• The Password
Create resources needed for the
Brokers
Create Broker Certs - Private key
BROKER_1_PASSWORD='Broker_demo_password'
echo $BROKER_1_PASSWORD > './broker.password.txt'
openssl genrsa 
-passout file:./broker.password.txt 
-out ./broker.key 1024
Create Broker Certs – Certificate Signing
Request (CSR) Config
printf '%sn' 
'[req]' 
'default_bits = 1024' 
'prompt = no' 
'default_md = sha512' 
'distinguished_name = req_distinguished_name' 
'x509_extensions = v3_req' 
'' 
'[req_distinguished_name]' 
'' 
'[v3_req]' 
'basicConstraints=CA:FALSE' 
'subjectAltName = @alt_names' 
'' 
'[alt_names]' 
'DNS.1 = broker' 
'DNS.2 = broker.localhost' 
'DNS.3 = localhost' 
'IP.1 = 172.90.92.11' 
'IP.2 = 2001:9092:9092::11' 
'IP.3 = 172.21.82.21' 
'IP.4 = 2001:2181:2181::21' 
'IP.5 = 172.80.80.11' 
'IP.6 = 2001:8080:8080::11' > ./broker.csr.config
Create Broker Certs – Create Certificate
Signing Request
openssl req 
-new 
-key ./broker.key 
-subj '/CN=broker.localhost' 
-out ./broker.csr 
-config ./broker.csr.config
Create Broker Certs – Sign Certificate Signing
Request and issue Certificate
openssl x509 
-req 
-CA ./My_cool_example_CA_public_key.crt 
-CAkey ./My_cool_example_CA_private_key.key 
-passin file:My_cool_example_CA_private_key_password.txt 
-in ./broker.csr 
-out ./broker.crt 
-days 35 
-CAcreateserial 
-extensions v3_req 
-extfile ./broker.csr.config
Create Broker Certs – PKCS12 Bundle
openssl pkcs12 
-inkey ./broker.key 
-in ./broker.crt 
-passin pass:Broker_demo_password 
-passout pass:Broker_demo_password 
-export 
-out ./broker.pfx
Using the Brokers mTLS Certificates
• Once you enable mTLS for auth, all API usage has to be authed, even
from the CLI on a given broker to the broker itself
• Because you have access to the password in plaintext at this time,
now is a convenient time to create the bootstrap config file should
you need it for e.g. fixing ACLs from the CLI
Create Bootstrap Config file for Broker
printf '%sn' 
'security.protocol=SSL' 
'ssl.keystore.location=broker.pfx' 
'ssl.keystore.password=Broker_demo_password' 
'ssl.keystore.type=PKCS12' 
'ssl.truststore.type=PEM' 
'ssl.truststore.location=My_cool_example_CA_public_key.crt' > broker.bootstrap.conf
Broker mTLS resources
• Artifacts from this process you want to keep for later use
• The CA certificate
• The PFX bundle
• The Password
• The Bootstrap Config file
User Certificates
Create User Certs - Private key
DEMO_USER_PASSWORD="DemoUserPassword"
echo $DEMO_USER_PASSWORD > './demo_user.password.txt'
openssl genrsa 
-passout file:./demo_user.password.txt 
-out ./demo_user.key 1024
Create User Certs – Certificate Signing
Request (CSR) Config
printf '%sn' 
'[req]' 
'default_bits = 1024' 
'prompt = no' 
'default_md = sha512' 
'distinguished_name = req_distinguished_name' 
'x509_extensions = v3_req' 
'' 
'[req_distinguished_name]' 
'' 
'[v3_req]' 
'basicConstraints=CA:FALSE' > ./demo_user.csr.config
Create Broker Certs – Create Certificate
Signing Request
openssl req 
-new 
-key ./demo_user.key 
-subj '/CN=demo-user' 
-out ./demo_user.csr 
-config ./demo_user.csr.config
Create User Certs – Sign Certificate Signing
Request and issue Certificate
openssl x509 
-req 
-CA ./My_cool_example_CA_public_key.crt 
-CAkey ./My_cool_example_CA_private_key.key 
-passin file:My_cool_example_CA_private_key_password.txt 
-in ./demo_user.csr 
-out ./demo_user.crt 
-days 36 
-CAcreateserial 
-extensions v3_req 
-extfile ./demo_user.csr.config
Create User Certs – PKCS12 Bundle
openssl pkcs12 
-inkey ./demo_user.key 
-in ./demo_user.crt 
-passin pass:DemoUserPassword 
-passout pass:DemoUserPassword 
-export 
-out ./demo_user.pfx
Create Admin Client Config file for User
printf '%sn' 
'security.protocol=SSL' 
'ssl.keystore.location=demo_user.pfx' 
'ssl.keystore.password=DemoUserPassword' 
'ssl.keystore.type=PKCS12' 
'ssl.truststore.type=PEM' 
'ssl.truststore.location=My_cool_example_CA_public_key' > ./demo_user.adminclient-configs.conf
User mTLS resources
• Artifacts from this process you want to keep for later use
• The CA certificate
• The PEM key
• The PEM certificate
• The PFX bundle
• The Password
• The Admin Client Config file
Full example in docker compose
• https://github.com/NorskHelsenett/Kafka/tree/main/GetStarted/MultiBro
kerClusterWithAuthAndMtls
• Features
• Full cluster with 3 brokers
• ACLs
• Schema registry
• Demo CLI producer (using schema)
• Demo consumer (using schema)
• Demo dotnet consumer (using schema)
• Kafka UI
• mTLS for all
• And more, packed in a mere 2345 lines of compose!
Supporting without looking
A
A's Topic
A A
A
A's Topic
A
IO
A
Producer
A
Consumer
State
A's Topic
A
Interface
A
Producer
A
Consumer
State
A
Support
Tool
WebUi
A's Topic
Support
Tool
Consumer
Code Examples
• Producer
• ConsumerService
• LocalState
• REST API
• Support-tool Web-UI (Blazor)
Produce is easy in .NET
Main app also
consumes
• Consume is continues, so
we use BackgroundService
Maintain state in app
REST Api
Controller
• State & Producer is
injected
• GET & POST
• Simple, easy
Simple Rest API
GET
Simple Rest
API POST
• Error state if send fails
• Returns the sent Obj
Using Model to remove confidential info
Support app Blazor UI
• The only frontend work I do is in F5 BIG-IP, Simon
• Easy to setup and work with
• SignalR support for seamless C/S integration
• Almost no context shift between client and server code
• Server-Side Rendering, a safety-feature (Hold my beer!)
LocalState in
SupportApp
• EventHandler, invoked
when new obj are added
• Meets the functional
needs
Dotnet + events = <3
Takaways
• Sometimes delivering data is more important that delivering it
blazingly fast
• Distributed systems are hard, Kafka is not
• Don't fear the mTLS
• https://github.com/NorskHelsenett/Kafka/tree/main/GetStarted/MultiBroker
ClusterWithAuthAndMtls
• Be thoughtful about the ones supporting the data processing
• Event driven systems are cool, also in .NET!

More Related Content

Similar to When Securing Access to Data is About Life and Death

Low Hanging Fruit, Making Your Basic MongoDB Installation More Secure
Low Hanging Fruit, Making Your Basic MongoDB Installation More SecureLow Hanging Fruit, Making Your Basic MongoDB Installation More Secure
Low Hanging Fruit, Making Your Basic MongoDB Installation More SecureMongoDB
 
MuleSoft ESB Payload Encrypt Decrypt using anypoint enterprise security
MuleSoft ESB Payload Encrypt Decrypt using anypoint enterprise securityMuleSoft ESB Payload Encrypt Decrypt using anypoint enterprise security
MuleSoft ESB Payload Encrypt Decrypt using anypoint enterprise securityakashdprajapati
 
Apache Httpd and TLS certificates validations
Apache Httpd and TLS certificates validationsApache Httpd and TLS certificates validations
Apache Httpd and TLS certificates validationsJean-Frederic Clere
 
hackcon2013-Dirty Little Secrets They Didn't Teach You In Pentesting Class v2
hackcon2013-Dirty Little Secrets They Didn't Teach You In Pentesting Class v2hackcon2013-Dirty Little Secrets They Didn't Teach You In Pentesting Class v2
hackcon2013-Dirty Little Secrets They Didn't Teach You In Pentesting Class v2Chris Gates
 
How to CASifying PeopleSoft and Integrating CAS and ADFS
How to CASifying PeopleSoft and Integrating CAS and ADFSHow to CASifying PeopleSoft and Integrating CAS and ADFS
How to CASifying PeopleSoft and Integrating CAS and ADFSJohn Gasper
 
How to get secure web services ssl apex-converted
How to get secure web services  ssl apex-convertedHow to get secure web services  ssl apex-converted
How to get secure web services ssl apex-convertedSyed SadathUllah
 
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...BlueHat Security Conference
 
How To Install and Configure Apache SSL on CentOS 7
How To Install and Configure Apache SSL on CentOS 7How To Install and Configure Apache SSL on CentOS 7
How To Install and Configure Apache SSL on CentOS 7VCP Muthukrishna
 
Types of ssl commands and keytool
Types of ssl commands and keytoolTypes of ssl commands and keytool
Types of ssl commands and keytoolCheapSSLsecurity
 
Salesforce Admin's guide : the data loader from the command line
Salesforce Admin's guide : the data loader from the command lineSalesforce Admin's guide : the data loader from the command line
Salesforce Admin's guide : the data loader from the command lineCyrille Coeurjoly
 
Travis and fastlane
Travis and fastlaneTravis and fastlane
Travis and fastlaneSteven Shen
 
How To Check IE Enhanced Security Is Enabled Windows PowerShell
How To Check IE Enhanced Security Is Enabled Windows PowerShellHow To Check IE Enhanced Security Is Enabled Windows PowerShell
How To Check IE Enhanced Security Is Enabled Windows PowerShellVCP Muthukrishna
 
MySQL server security
MySQL server securityMySQL server security
MySQL server securityDamien Seguy
 
Node.js API 서버 성능 개선기
Node.js API 서버 성능 개선기Node.js API 서버 성능 개선기
Node.js API 서버 성능 개선기JeongHun Byeon
 
SSL Certificates and Operations
SSL Certificates and OperationsSSL Certificates and Operations
SSL Certificates and OperationsNisheed KM
 
Make Everyone a Tester: Natural Language Acceptance Testing
Make Everyone a Tester: Natural Language Acceptance TestingMake Everyone a Tester: Natural Language Acceptance Testing
Make Everyone a Tester: Natural Language Acceptance TestingPatrick Reagan
 
Conf2015 d waddle_defense_pointsecurity_deploying_splunksslbestpractices
Conf2015 d waddle_defense_pointsecurity_deploying_splunksslbestpracticesConf2015 d waddle_defense_pointsecurity_deploying_splunksslbestpractices
Conf2015 d waddle_defense_pointsecurity_deploying_splunksslbestpracticesBrentMatlock
 

Similar to When Securing Access to Data is About Life and Death (20)

Low Hanging Fruit, Making Your Basic MongoDB Installation More Secure
Low Hanging Fruit, Making Your Basic MongoDB Installation More SecureLow Hanging Fruit, Making Your Basic MongoDB Installation More Secure
Low Hanging Fruit, Making Your Basic MongoDB Installation More Secure
 
MuleSoft ESB Payload Encrypt Decrypt using anypoint enterprise security
MuleSoft ESB Payload Encrypt Decrypt using anypoint enterprise securityMuleSoft ESB Payload Encrypt Decrypt using anypoint enterprise security
MuleSoft ESB Payload Encrypt Decrypt using anypoint enterprise security
 
Apache Httpd and TLS certificates validations
Apache Httpd and TLS certificates validationsApache Httpd and TLS certificates validations
Apache Httpd and TLS certificates validations
 
320.1-Cryptography
320.1-Cryptography320.1-Cryptography
320.1-Cryptography
 
hackcon2013-Dirty Little Secrets They Didn't Teach You In Pentesting Class v2
hackcon2013-Dirty Little Secrets They Didn't Teach You In Pentesting Class v2hackcon2013-Dirty Little Secrets They Didn't Teach You In Pentesting Class v2
hackcon2013-Dirty Little Secrets They Didn't Teach You In Pentesting Class v2
 
How to CASifying PeopleSoft and Integrating CAS and ADFS
How to CASifying PeopleSoft and Integrating CAS and ADFSHow to CASifying PeopleSoft and Integrating CAS and ADFS
How to CASifying PeopleSoft and Integrating CAS and ADFS
 
How to get secure web services ssl apex-converted
How to get secure web services  ssl apex-convertedHow to get secure web services  ssl apex-converted
How to get secure web services ssl apex-converted
 
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
 
How To Install and Configure Apache SSL on CentOS 7
How To Install and Configure Apache SSL on CentOS 7How To Install and Configure Apache SSL on CentOS 7
How To Install and Configure Apache SSL on CentOS 7
 
Types of ssl commands and keytool
Types of ssl commands and keytoolTypes of ssl commands and keytool
Types of ssl commands and keytool
 
Salesforce Admin's guide : the data loader from the command line
Salesforce Admin's guide : the data loader from the command lineSalesforce Admin's guide : the data loader from the command line
Salesforce Admin's guide : the data loader from the command line
 
Travis and fastlane
Travis and fastlaneTravis and fastlane
Travis and fastlane
 
CakePHP workshop
CakePHP workshopCakePHP workshop
CakePHP workshop
 
Monkey man
Monkey manMonkey man
Monkey man
 
How To Check IE Enhanced Security Is Enabled Windows PowerShell
How To Check IE Enhanced Security Is Enabled Windows PowerShellHow To Check IE Enhanced Security Is Enabled Windows PowerShell
How To Check IE Enhanced Security Is Enabled Windows PowerShell
 
MySQL server security
MySQL server securityMySQL server security
MySQL server security
 
Node.js API 서버 성능 개선기
Node.js API 서버 성능 개선기Node.js API 서버 성능 개선기
Node.js API 서버 성능 개선기
 
SSL Certificates and Operations
SSL Certificates and OperationsSSL Certificates and Operations
SSL Certificates and Operations
 
Make Everyone a Tester: Natural Language Acceptance Testing
Make Everyone a Tester: Natural Language Acceptance TestingMake Everyone a Tester: Natural Language Acceptance Testing
Make Everyone a Tester: Natural Language Acceptance Testing
 
Conf2015 d waddle_defense_pointsecurity_deploying_splunksslbestpractices
Conf2015 d waddle_defense_pointsecurity_deploying_splunksslbestpracticesConf2015 d waddle_defense_pointsecurity_deploying_splunksslbestpractices
Conf2015 d waddle_defense_pointsecurity_deploying_splunksslbestpractices
 

More from HostedbyConfluent

Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Renaming a Kafka Topic | Kafka Summit London
Renaming a Kafka Topic | Kafka Summit LondonRenaming a Kafka Topic | Kafka Summit London
Renaming a Kafka Topic | Kafka Summit LondonHostedbyConfluent
 
Evolution of NRT Data Ingestion Pipeline at Trendyol
Evolution of NRT Data Ingestion Pipeline at TrendyolEvolution of NRT Data Ingestion Pipeline at Trendyol
Evolution of NRT Data Ingestion Pipeline at TrendyolHostedbyConfluent
 
Ensuring Kafka Service Resilience: A Dive into Health-Checking Techniques
Ensuring Kafka Service Resilience: A Dive into Health-Checking TechniquesEnsuring Kafka Service Resilience: A Dive into Health-Checking Techniques
Ensuring Kafka Service Resilience: A Dive into Health-Checking TechniquesHostedbyConfluent
 
Exactly-once Stream Processing with Arroyo and Kafka
Exactly-once Stream Processing with Arroyo and KafkaExactly-once Stream Processing with Arroyo and Kafka
Exactly-once Stream Processing with Arroyo and KafkaHostedbyConfluent
 
Fish Plays Pokemon | Kafka Summit London
Fish Plays Pokemon | Kafka Summit LondonFish Plays Pokemon | Kafka Summit London
Fish Plays Pokemon | Kafka Summit LondonHostedbyConfluent
 
Tiered Storage 101 | Kafla Summit London
Tiered Storage 101 | Kafla Summit LondonTiered Storage 101 | Kafla Summit London
Tiered Storage 101 | Kafla Summit LondonHostedbyConfluent
 
Building a Self-Service Stream Processing Portal: How And Why
Building a Self-Service Stream Processing Portal: How And WhyBuilding a Self-Service Stream Processing Portal: How And Why
Building a Self-Service Stream Processing Portal: How And WhyHostedbyConfluent
 
From the Trenches: Improving Kafka Connect Source Connector Ingestion from 7 ...
From the Trenches: Improving Kafka Connect Source Connector Ingestion from 7 ...From the Trenches: Improving Kafka Connect Source Connector Ingestion from 7 ...
From the Trenches: Improving Kafka Connect Source Connector Ingestion from 7 ...HostedbyConfluent
 
Future with Zero Down-Time: End-to-end Resiliency with Chaos Engineering and ...
Future with Zero Down-Time: End-to-end Resiliency with Chaos Engineering and ...Future with Zero Down-Time: End-to-end Resiliency with Chaos Engineering and ...
Future with Zero Down-Time: End-to-end Resiliency with Chaos Engineering and ...HostedbyConfluent
 
Navigating Private Network Connectivity Options for Kafka Clusters
Navigating Private Network Connectivity Options for Kafka ClustersNavigating Private Network Connectivity Options for Kafka Clusters
Navigating Private Network Connectivity Options for Kafka ClustersHostedbyConfluent
 
Apache Flink: Building a Company-wide Self-service Streaming Data Platform
Apache Flink: Building a Company-wide Self-service Streaming Data PlatformApache Flink: Building a Company-wide Self-service Streaming Data Platform
Apache Flink: Building a Company-wide Self-service Streaming Data PlatformHostedbyConfluent
 
Explaining How Real-Time GenAI Works in a Noisy Pub
Explaining How Real-Time GenAI Works in a Noisy PubExplaining How Real-Time GenAI Works in a Noisy Pub
Explaining How Real-Time GenAI Works in a Noisy PubHostedbyConfluent
 
TL;DR Kafka Metrics | Kafka Summit London
TL;DR Kafka Metrics | Kafka Summit LondonTL;DR Kafka Metrics | Kafka Summit London
TL;DR Kafka Metrics | Kafka Summit LondonHostedbyConfluent
 
A Window Into Your Kafka Streams Tasks | KSL
A Window Into Your Kafka Streams Tasks | KSLA Window Into Your Kafka Streams Tasks | KSL
A Window Into Your Kafka Streams Tasks | KSLHostedbyConfluent
 
Mastering Kafka Producer Configs: A Guide to Optimizing Performance
Mastering Kafka Producer Configs: A Guide to Optimizing PerformanceMastering Kafka Producer Configs: A Guide to Optimizing Performance
Mastering Kafka Producer Configs: A Guide to Optimizing PerformanceHostedbyConfluent
 
Data Contracts Management: Schema Registry and Beyond
Data Contracts Management: Schema Registry and BeyondData Contracts Management: Schema Registry and Beyond
Data Contracts Management: Schema Registry and BeyondHostedbyConfluent
 
Code-First Approach: Crafting Efficient Flink Apps
Code-First Approach: Crafting Efficient Flink AppsCode-First Approach: Crafting Efficient Flink Apps
Code-First Approach: Crafting Efficient Flink AppsHostedbyConfluent
 
Debezium vs. the World: An Overview of the CDC Ecosystem
Debezium vs. the World: An Overview of the CDC EcosystemDebezium vs. the World: An Overview of the CDC Ecosystem
Debezium vs. the World: An Overview of the CDC EcosystemHostedbyConfluent
 
Beyond Tiered Storage: Serverless Kafka with No Local Disks
Beyond Tiered Storage: Serverless Kafka with No Local DisksBeyond Tiered Storage: Serverless Kafka with No Local Disks
Beyond Tiered Storage: Serverless Kafka with No Local DisksHostedbyConfluent
 

More from HostedbyConfluent (20)

Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Renaming a Kafka Topic | Kafka Summit London
Renaming a Kafka Topic | Kafka Summit LondonRenaming a Kafka Topic | Kafka Summit London
Renaming a Kafka Topic | Kafka Summit London
 
Evolution of NRT Data Ingestion Pipeline at Trendyol
Evolution of NRT Data Ingestion Pipeline at TrendyolEvolution of NRT Data Ingestion Pipeline at Trendyol
Evolution of NRT Data Ingestion Pipeline at Trendyol
 
Ensuring Kafka Service Resilience: A Dive into Health-Checking Techniques
Ensuring Kafka Service Resilience: A Dive into Health-Checking TechniquesEnsuring Kafka Service Resilience: A Dive into Health-Checking Techniques
Ensuring Kafka Service Resilience: A Dive into Health-Checking Techniques
 
Exactly-once Stream Processing with Arroyo and Kafka
Exactly-once Stream Processing with Arroyo and KafkaExactly-once Stream Processing with Arroyo and Kafka
Exactly-once Stream Processing with Arroyo and Kafka
 
Fish Plays Pokemon | Kafka Summit London
Fish Plays Pokemon | Kafka Summit LondonFish Plays Pokemon | Kafka Summit London
Fish Plays Pokemon | Kafka Summit London
 
Tiered Storage 101 | Kafla Summit London
Tiered Storage 101 | Kafla Summit LondonTiered Storage 101 | Kafla Summit London
Tiered Storage 101 | Kafla Summit London
 
Building a Self-Service Stream Processing Portal: How And Why
Building a Self-Service Stream Processing Portal: How And WhyBuilding a Self-Service Stream Processing Portal: How And Why
Building a Self-Service Stream Processing Portal: How And Why
 
From the Trenches: Improving Kafka Connect Source Connector Ingestion from 7 ...
From the Trenches: Improving Kafka Connect Source Connector Ingestion from 7 ...From the Trenches: Improving Kafka Connect Source Connector Ingestion from 7 ...
From the Trenches: Improving Kafka Connect Source Connector Ingestion from 7 ...
 
Future with Zero Down-Time: End-to-end Resiliency with Chaos Engineering and ...
Future with Zero Down-Time: End-to-end Resiliency with Chaos Engineering and ...Future with Zero Down-Time: End-to-end Resiliency with Chaos Engineering and ...
Future with Zero Down-Time: End-to-end Resiliency with Chaos Engineering and ...
 
Navigating Private Network Connectivity Options for Kafka Clusters
Navigating Private Network Connectivity Options for Kafka ClustersNavigating Private Network Connectivity Options for Kafka Clusters
Navigating Private Network Connectivity Options for Kafka Clusters
 
Apache Flink: Building a Company-wide Self-service Streaming Data Platform
Apache Flink: Building a Company-wide Self-service Streaming Data PlatformApache Flink: Building a Company-wide Self-service Streaming Data Platform
Apache Flink: Building a Company-wide Self-service Streaming Data Platform
 
Explaining How Real-Time GenAI Works in a Noisy Pub
Explaining How Real-Time GenAI Works in a Noisy PubExplaining How Real-Time GenAI Works in a Noisy Pub
Explaining How Real-Time GenAI Works in a Noisy Pub
 
TL;DR Kafka Metrics | Kafka Summit London
TL;DR Kafka Metrics | Kafka Summit LondonTL;DR Kafka Metrics | Kafka Summit London
TL;DR Kafka Metrics | Kafka Summit London
 
A Window Into Your Kafka Streams Tasks | KSL
A Window Into Your Kafka Streams Tasks | KSLA Window Into Your Kafka Streams Tasks | KSL
A Window Into Your Kafka Streams Tasks | KSL
 
Mastering Kafka Producer Configs: A Guide to Optimizing Performance
Mastering Kafka Producer Configs: A Guide to Optimizing PerformanceMastering Kafka Producer Configs: A Guide to Optimizing Performance
Mastering Kafka Producer Configs: A Guide to Optimizing Performance
 
Data Contracts Management: Schema Registry and Beyond
Data Contracts Management: Schema Registry and BeyondData Contracts Management: Schema Registry and Beyond
Data Contracts Management: Schema Registry and Beyond
 
Code-First Approach: Crafting Efficient Flink Apps
Code-First Approach: Crafting Efficient Flink AppsCode-First Approach: Crafting Efficient Flink Apps
Code-First Approach: Crafting Efficient Flink Apps
 
Debezium vs. the World: An Overview of the CDC Ecosystem
Debezium vs. the World: An Overview of the CDC EcosystemDebezium vs. the World: An Overview of the CDC Ecosystem
Debezium vs. the World: An Overview of the CDC Ecosystem
 
Beyond Tiered Storage: Serverless Kafka with No Local Disks
Beyond Tiered Storage: Serverless Kafka with No Local DisksBeyond Tiered Storage: Serverless Kafka with No Local Disks
Beyond Tiered Storage: Serverless Kafka with No Local Disks
 

Recently uploaded

Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 

Recently uploaded (20)

Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 

When Securing Access to Data is About Life and Death

  • 1. When Securing Access to Data is About Life and Death
  • 2. About Us Simon Randby • Master in AI 2015 • Worked for Norsk helsenett since • Worked with Kafka for ≈ 3 years • Follow me on pouët.net: https://www.pouet.net/user.ph p?who=100886 Fredrik Bekkevold • 20+ years' experience • Multiple complex domains • ≈ 6 years with Kafka • Follow me on X: @fbekkevold (https://twitter.com/FBekkevold)
  • 3. Todays topic • How we ensure our services are reachable • How we secure the communication • How we enable support to figure out what's wrong without seeing more data than needed
  • 4. Can you reach prod? The data must flow
  • 5.
  • 6. Norway today • 5.5 million people • Living in ≈ 400 municipalities • 400 000 are health care personell (not counting administrative staff) • Work across 4 health care regions • Having ≈ 80 hospitals • Totalling 17 000 organizations individuall purchasing systems to collaborate with each other
  • 10. A
  • 11. A A
  • 12. A A
  • 13. A A
  • 15. A A
  • 16. A A
  • 19. mTLS for Kafka A hands on journey
  • 20. Private Key Public Key Password Key Pair (.key file) Public Key Certificate (.crt file) Metadata • Signatures • Usages (e.g. IsCa) • Issued to/CN • Alternative DNSNames • IP Addresses CertificateAuthority CA Secures Private Key Public Key Password Key Pair (.key file) Public Key Certificate (.crt file) Metadata • Signatures • Usages (e.g. IsCa) • Issued to/CN • Alternative DNSNames • IP Addresses New Credentials Creation Flow Create Password Create Keys Create CSR Config CSR Confg • Usages (e.g. IsCa) • Alternative DNSNames • IP Addresses Create CSR Public Key Certificate Signing Request (.csr file) Metadata) • Issued to/CN CSR Confg • Usages (e.g. IsCa) • Alternative DNSNames • IP Addresses Issue Certificate Private Key Public Key Key Pair Public Key Certificate Metadata • Signatures • Usages (e.g. IsCa) • Issued to/CN • Alternative DNSNames • IP Addresses Password PKCS12 Bundle (.pfx file) Create PKCS12 Bundle Secures S e c u r e s
  • 21. Create resources needed for the Certificate Authority (CA)
  • 22. Create CA DEMO_CA_PASSWORD="BestDemoPassrod" echo $DEMO_CA_PASSWORD > './My_cool_example_CA_private_key_password.txt' openssl req -new -x509 -keyout "./My_cool_example_CA_private_key.key" -newkey "rsa:1024" -out "./My_cool_example_CA_public_key.crt" -days "36" -subj "/CN=my_cool_example_CA.example.com" -passin "pass:$DEMO_CA_PASSWORD" -passout "file:My_cool_example_CA_private_key_password.txt" 2> /dev/null
  • 23. Create resources needed for the ZooKeepers It's been a bussy year, we havent had time to migrate to K-Raft
  • 24. Create ZooKeeper Certs – Private key ZOOKEEPER_1_PASSWORD='ZooKeeper_demo_password' echo $ZOOKEEPER_1_PASSWORD > './zookeeper_password.txt' openssl genrsa -passout file:./zookeeper_password.txt -out ./zookeeper.key 1024
  • 25. Create ZooKeeper Certs – Certificate Signing Request (CSR) Config printf '%sn' '[req]' 'default_bits = 1024' 'prompt = no' 'default_md = sha512' 'distinguished_name = req_distinguished_name' 'x509_extensions = v3_req' '' '[req_distinguished_name]' '' '[v3_req]' 'basicConstraints=CA:FALSE' 'subjectAltName = @alt_names' '' '[alt_names]' 'DNS.1 = zookeeper' 'DNS.2 = zookeeper.localhost' 'IP.1 = 172.21.82.11' 'IP.2 = 2001:2181:2181::11' > ./zookeeper.csr.config
  • 26. Create ZooKeeper Certs – Create Certificate Signing Request openssl req -new -key ./zookeeper.key -subj '/CN=zookeeper.localhost' -out ./zookeeper.csr -config ./zookeeper.csr.config
  • 27. Create ZooKeeper Certs – Sign Certificate Signing Request and issue Certificate openssl x509 -req -CA ./My_cool_example_CA_public_key.crt -CAkey ./My_cool_example_CA_private_key.key -passin file:My_cool_example_CA_private_key_password.txt -in ./zookeeper.csr -out ./zookeeper.crt -days 35 -CAcreateserial -extensions v3_req -extfile ./zookeeper.csr.config
  • 28. Create ZooKeeper Certs – PKCS12 Bundle openssl pkcs12 -inkey ./zookeeper.key -in ./zookeeper.crt -passin pass:ZooKeeper_demo_password -passout pass:ZooKeeper_demo_password -export -out ./zookeeper.pfx
  • 29. ZooKeeper mTLS resources • Artifacts from this process you want to keep for later use • The CA certificate • The PFX bundle • The Password
  • 30. Create resources needed for the Brokers
  • 31. Create Broker Certs - Private key BROKER_1_PASSWORD='Broker_demo_password' echo $BROKER_1_PASSWORD > './broker.password.txt' openssl genrsa -passout file:./broker.password.txt -out ./broker.key 1024
  • 32. Create Broker Certs – Certificate Signing Request (CSR) Config printf '%sn' '[req]' 'default_bits = 1024' 'prompt = no' 'default_md = sha512' 'distinguished_name = req_distinguished_name' 'x509_extensions = v3_req' '' '[req_distinguished_name]' '' '[v3_req]' 'basicConstraints=CA:FALSE' 'subjectAltName = @alt_names' '' '[alt_names]' 'DNS.1 = broker' 'DNS.2 = broker.localhost' 'DNS.3 = localhost' 'IP.1 = 172.90.92.11' 'IP.2 = 2001:9092:9092::11' 'IP.3 = 172.21.82.21' 'IP.4 = 2001:2181:2181::21' 'IP.5 = 172.80.80.11' 'IP.6 = 2001:8080:8080::11' > ./broker.csr.config
  • 33. Create Broker Certs – Create Certificate Signing Request openssl req -new -key ./broker.key -subj '/CN=broker.localhost' -out ./broker.csr -config ./broker.csr.config
  • 34. Create Broker Certs – Sign Certificate Signing Request and issue Certificate openssl x509 -req -CA ./My_cool_example_CA_public_key.crt -CAkey ./My_cool_example_CA_private_key.key -passin file:My_cool_example_CA_private_key_password.txt -in ./broker.csr -out ./broker.crt -days 35 -CAcreateserial -extensions v3_req -extfile ./broker.csr.config
  • 35. Create Broker Certs – PKCS12 Bundle openssl pkcs12 -inkey ./broker.key -in ./broker.crt -passin pass:Broker_demo_password -passout pass:Broker_demo_password -export -out ./broker.pfx
  • 36. Using the Brokers mTLS Certificates • Once you enable mTLS for auth, all API usage has to be authed, even from the CLI on a given broker to the broker itself • Because you have access to the password in plaintext at this time, now is a convenient time to create the bootstrap config file should you need it for e.g. fixing ACLs from the CLI
  • 37. Create Bootstrap Config file for Broker printf '%sn' 'security.protocol=SSL' 'ssl.keystore.location=broker.pfx' 'ssl.keystore.password=Broker_demo_password' 'ssl.keystore.type=PKCS12' 'ssl.truststore.type=PEM' 'ssl.truststore.location=My_cool_example_CA_public_key.crt' > broker.bootstrap.conf
  • 38. Broker mTLS resources • Artifacts from this process you want to keep for later use • The CA certificate • The PFX bundle • The Password • The Bootstrap Config file
  • 40. Create User Certs - Private key DEMO_USER_PASSWORD="DemoUserPassword" echo $DEMO_USER_PASSWORD > './demo_user.password.txt' openssl genrsa -passout file:./demo_user.password.txt -out ./demo_user.key 1024
  • 41. Create User Certs – Certificate Signing Request (CSR) Config printf '%sn' '[req]' 'default_bits = 1024' 'prompt = no' 'default_md = sha512' 'distinguished_name = req_distinguished_name' 'x509_extensions = v3_req' '' '[req_distinguished_name]' '' '[v3_req]' 'basicConstraints=CA:FALSE' > ./demo_user.csr.config
  • 42. Create Broker Certs – Create Certificate Signing Request openssl req -new -key ./demo_user.key -subj '/CN=demo-user' -out ./demo_user.csr -config ./demo_user.csr.config
  • 43. Create User Certs – Sign Certificate Signing Request and issue Certificate openssl x509 -req -CA ./My_cool_example_CA_public_key.crt -CAkey ./My_cool_example_CA_private_key.key -passin file:My_cool_example_CA_private_key_password.txt -in ./demo_user.csr -out ./demo_user.crt -days 36 -CAcreateserial -extensions v3_req -extfile ./demo_user.csr.config
  • 44. Create User Certs – PKCS12 Bundle openssl pkcs12 -inkey ./demo_user.key -in ./demo_user.crt -passin pass:DemoUserPassword -passout pass:DemoUserPassword -export -out ./demo_user.pfx
  • 45. Create Admin Client Config file for User printf '%sn' 'security.protocol=SSL' 'ssl.keystore.location=demo_user.pfx' 'ssl.keystore.password=DemoUserPassword' 'ssl.keystore.type=PKCS12' 'ssl.truststore.type=PEM' 'ssl.truststore.location=My_cool_example_CA_public_key' > ./demo_user.adminclient-configs.conf
  • 46. User mTLS resources • Artifacts from this process you want to keep for later use • The CA certificate • The PEM key • The PEM certificate • The PFX bundle • The Password • The Admin Client Config file
  • 47. Full example in docker compose • https://github.com/NorskHelsenett/Kafka/tree/main/GetStarted/MultiBro kerClusterWithAuthAndMtls • Features • Full cluster with 3 brokers • ACLs • Schema registry • Demo CLI producer (using schema) • Demo consumer (using schema) • Demo dotnet consumer (using schema) • Kafka UI • mTLS for all • And more, packed in a mere 2345 lines of compose!
  • 53. Code Examples • Producer • ConsumerService • LocalState • REST API • Support-tool Web-UI (Blazor)
  • 54. Produce is easy in .NET
  • 55. Main app also consumes • Consume is continues, so we use BackgroundService
  • 57. REST Api Controller • State & Producer is injected • GET & POST • Simple, easy
  • 59. Simple Rest API POST • Error state if send fails • Returns the sent Obj
  • 60. Using Model to remove confidential info
  • 61. Support app Blazor UI • The only frontend work I do is in F5 BIG-IP, Simon • Easy to setup and work with • SignalR support for seamless C/S integration • Almost no context shift between client and server code • Server-Side Rendering, a safety-feature (Hold my beer!)
  • 62. LocalState in SupportApp • EventHandler, invoked when new obj are added • Meets the functional needs
  • 64.
  • 65. Takaways • Sometimes delivering data is more important that delivering it blazingly fast • Distributed systems are hard, Kafka is not • Don't fear the mTLS • https://github.com/NorskHelsenett/Kafka/tree/main/GetStarted/MultiBroker ClusterWithAuthAndMtls • Be thoughtful about the ones supporting the data processing • Event driven systems are cool, also in .NET!