SlideShare une entreprise Scribd logo
1  sur  104
Télécharger pour lire hors ligne
1
KSQL and Security:
The current state of affairs,
and where it’s headed
Victoria Xia
2
A Little about… You?
3
?
A Little about… You?
4
Outline
● Background
● Securing KSQL’s connections
○ Encryption
○ Authentication
○ Authorization
○ Quotas
● KSQL-specific considerations
● Limitations and Futures
5
KSQL 101
6
KSQL 101
KSQL
Server
KSQL
Server
7
KSQL 101
KSQL
Server
KSQL
Server
KSQL
Server
KSQL
Server
8
KSQL 101
KSQL
Server
KSQL
Server
9
KSQL 101
KSQL
Server
KSQL
Server
CREATE STREAM purchases (
productID BIGINT,
quantity INT,
storeLocation VARCHAR)
WITH (
KAFKA_TOPIC=’purchases’,
VALUE_FORMAT=’JSON’);
10
KSQL 101
KSQL
Server
KSQL
Server
CREATE STREAM purchases (
productID BIGINT,
quantity INT,
storeLocation VARCHAR)
WITH (...);
SELECT
productID, quantity * 10
FROM purchases;
11
KSQL 101
KSQL
Server
KSQL
Server
CREATE STREAM purchases (
productID BIGINT,
quantity INT,
storeLocation VARCHAR)
WITH (...);
SELECT
productID, SUM(quantity)
FROM purchases
GROUP BY productID;
12
KSQL 101
KSQL
Server
KSQL
Server
CREATE STREAM purchases (
productID BIGINT,
quantity INT,
storeLocation VARCHAR)
WITH (...);
SELECT
productID, SUM(quantity)
FROM purchases
WHERE storeLocation=’NYC’
GROUP BY productID;
13
KSQL 101
KSQL
Server
KSQL
Server
CREATE STREAM purchases (
productID BIGINT,
quantity INT,
storeLocation VARCHAR)
WITH (...);
CREATE TABLE NYC_totals
AS SELECT
productID, SUM(quantity)
FROM purchases
WHERE storeLocation=’NYC’
GROUP BY productID;
14
KSQL 101
CREATE TABLE NYC_totals
AS SELECT
productID, SUM(quantity)
FROM purchases
WHERE storeLocation=’NYC’
GROUP BY productID;
kafka
Streams
purchases NYC_totalsintermediary
topic
intermediary
topic
15
CREATE STREAM purchases (
productID BIGINT,
quantity INT,
storeLocation VARCHAR)
WITH (
KAFKA_TOPIC=’purchases’,
VALUE_FORMAT=’Avro’);
KSQL 101
Schema
Registry
KSQL
Server
KSQL
Server
16
KSQL 101
Schema
Registry
KSQL
Server
KSQL
Server
CREATE STREAM purchases (
productID BIGINT,
quantity INT,
storeLocation VARCHAR)
WITH (
KAFKA_TOPIC=’purchases’,
VALUE_FORMAT=’Avro’);
17
Interactive Use
Schema
Registry
KSQL
Server
KSQL
Server
18
Interactive Use
Schema
Registry
KSQL
Server
KSQL
Server
REST
REST
19
Interactive Use
Schema
Registry
REST
KSQL
Server
KSQL
Server
REST
REST
20
Interactive Use
Schema
Registry
CLI
REST
KSQL
Server
KSQL
Server
REST
REST
21
Interactive Use
Schema
Registry
CLI
REST
UI
KSQL
Server
KSQL
Server
REST
REST
22
Non-interactive (Headless) Use
Schema
Registry
KSQL
Server
KSQL
Server
23
KSQL’s Connections
Schema
Registry
CLI
REST
UI
KSQL
Server
KSQL
Server
REST
REST
24
Motivation: Encryption
25
Motivation: Authentication
26
Motivation: Authentication
27
Solution: TLS
28
Solution: TLS
29
KSQL <-> Kafka: TLS
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-kafka-encrypted-communication
https://kafka.apache.org/documentation/#security_ssl
listeners=
PLAINTEXT://host.name:port
bootstrap.servers=
http://host.name:port
30
bootstrap.servers=
https://host.name:port
security.protocol=SSL
ssl.truststore.location=
/path/to/truststore.jks
ssl.truststore.password=zzz
listeners=
SSL://host.name:port
ssl.keystore.location=
/path/to/keystore.jks
ssl.keystore.password=xxxx
ssl.key.password=yyyy
KSQL <-> Kafka: TLS
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-kafka-encrypted-communication
https://kafka.apache.org/documentation/#security_ssl
31
listeners=
SSL://host.name:port
ssl.keystore.location=
/path/to/keystore.jks
ssl.keystore.password=xxxx
ssl.key.password=yyyy
bootstrap.servers=
https://host.name:port
security.protocol=SSL
ssl.truststore.location=
/path/to/truststore.jks
ssl.truststore.password=zzz
KSQL <-> Kafka: TLS
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-kafka-encrypted-communication
https://kafka.apache.org/documentation/#security_ssl
32
listeners=
SSL://host.name:port
ssl.keystore.location=
/path/to/keystore.jks
ssl.keystore.password=xxxx
ssl.key.password=yyyy
ssl.client.auth=required
ssl.truststore.location=
/path/to/truststore.jks
ssl.truststore.password=zzzz
bootstrap.servers=
https://host.name:port
security.protocol=SSL
ssl.truststore.location=
/path/to/truststore.jks
ssl.truststore.password=zzz
ssl.keystore.location=
/path/to/keystore.jks
ssl.keystore.password=xxx
ssl.key.password=yyy
KSQL <-> Kafka: TLS
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-kafka-encrypted-communication
https://kafka.apache.org/documentation/#security_ssl
33
KSQL <-> Kafka: SASL
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-kafka-authentication
https://kafka.apache.org/documentation/#security_sasl
● GSSAPI (Kerberos)
● OAUTHBEARER
● SCRAM
● PLAIN
34
KSQL <-> Kafka: SASL
listeners=
SASL_SSL://host.name:port
security.protocol=SASL_SSL
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-kafka-authentication
https://kafka.apache.org/documentation/#security_sasl
35
KSQL <-> Kafka: SASL
listeners=
SASL_SSL://host.name:port
sasl.enabled.mechanisms=PLAIN
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-kafka-authentication
https://kafka.apache.org/documentation/#security_sasl
36
KSQL_OPTS=
-Djava.security.auth.login.config=
/path/to/jaas_config.file
KSQL <-> Kafka: SASL
listeners=
SASL_SSL://host.name:port
sasl.enabled.mechanisms=PLAIN
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=<jaas_contents>
KAFKA_OPTS=
-Djava.security.auth.login.config=
/path/to/jaas_config.file
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-kafka-authentication
https://kafka.apache.org/documentation/#security_sasl
OR
37
Motivation: Authorization
38
Motivation: Authorization
39
Motivation: Authorization
Read Write Delete
alices_topic ? ? ?
bobs_topic ? ? ?
secrets_topic ? ? ?
40
Motivation: Authorization
Read Write Delete
alices_topic ✔ ✔ ✔
bobs_topic ✔
secrets_topic
41
OperationPrincipal
KSQL <-> Kafka: ACLs
Permission Type Pattern Name
Resource
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Host
42
*
12.1.1.0ReadAllowUser:Alice
OperationPrincipal
KSQL <-> Kafka: ACLs
Permission Type Pattern Name
Resource
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Host
Topic Literal foo
WriteDenyUser:Bob Topic Prefixed prod-
43
[ksql.host]?Allow[ksql-user]
OperationPrincipal
KSQL <-> Kafka: ACLs
Permission Type Pattern Name
Resource
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Host
? ? ?
44
TypeOperation Pattern
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Resource Name
KSQL <-> Kafka: ACLs
45
kafka-clusterLiteralClusterDescribeConfigs
TypeOperation Pattern
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Resource Name
KSQL <-> Kafka: ACLs
46
kafka-clusterLiteralClusterDescribeConfigs
TypeOperation Pattern
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Resource Name
CREATE STREAM output_stream AS SELECT ... FROM input_stream;
KSQL <-> Kafka: ACLs
47
kafka-clusterLiteralClusterDescribeConfigs
Read Topic Literal [ input topics ]
[ output topics ]LiteralTopicWrite
TypeOperation Pattern
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Resource Name
CREATE STREAM output_stream AS SELECT ... FROM input_stream;
KSQL <-> Kafka: ACLs
48
kafka-clusterLiteralClusterDescribeConfigs
Read Topic Literal [ input topics ]
[ output topics ]LiteralTopicWrite
Create Topic Literal [ output topics (that don’t exist) ]
TypeOperation Pattern
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Resource Name
CREATE STREAM output_stream AS SELECT ... FROM input_stream;
KSQL <-> Kafka: ACLs
49
CREATE STREAM output_stream AS SELECT ... FROM input_stream;
kafka-clusterLiteralClusterDescribeConfigs
Read Topic Literal [ input topics ]
[ output topics ]LiteralTopicWrite
Create Topic Literal [ output topics (that don’t exist) ]
_confluent-ksql-<ksql.service.id>PrefixedGroupAll
TypeOperation Pattern
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Resource Name
KSQL <-> Kafka: ACLs
50
kafka-clusterLiteralClusterDescribeConfigs
Read Topic Literal [ input topics ]
[ output topics ]LiteralTopicWrite
Create Topic Literal [ output topics (that don’t exist) ]
_confluent-ksql-<ksql.service.id>PrefixedGroupAll
All Topic Prefixed _confluent-ksql-<ksql.service.id>
TypeOperation Pattern
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Resource Name
KSQL <-> Kafka: ACLs
51
kafka-clusterLiteralClusterDescribeConfigs
Read Topic Literal [ input topics ]
[ output topics ]LiteralTopicWrite
Create Topic Literal [ output topics (that don’t exist) ]
_confluent-ksql-<ksql.service.id>PrefixedGroupAll
All Topic Prefixed _confluent-ksql-<ksql.service.id>
<ksql.logging.processing.topic.name>LiteralTopicAll
TypeOperation Pattern
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Resource Name
KSQL <-> Kafka: ACLs
52
[ input topics ]LiteralTopicRead
kafka-clusterLiteralClusterDescribeConfigs
[ output topics ]LiteralTopicWrite
Create Topic Literal [ output topics (that don’t exist) ]
_confluent-ksql-<ksql.service.id>PrefixedGroupAll
All Topic Prefixed _confluent-ksql-<ksql.service.id>
<ksql.logging.processing.topic.name>LiteralTopicAll
TypeOperation Pattern
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Resource Name
KSQL <-> Kafka: ACLs
53
[ output topics (that don’t exist) ]
[ output topics ]Literal
LiteralTopic
Topic
Create
Write
kafka-clusterLiteralClusterDescribeConfigs
Read Topic Literal [ input topics ]
_confluent-ksql-<ksql.service.id>PrefixedGroupAll
All Topic Prefixed _confluent-ksql-<ksql.service.id>
<ksql.logging.processing.topic.name>LiteralTopicAll
TypeOperation Pattern
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Resource Name
KSQL <-> Kafka: ACLs
54
Configure ksql.output.topic.name.prefix
KSQL <-> Kafka: ACLs
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
55
CREATE TABLE results
AS SELECT …
FROM events;
Configure ksql.output.topic.name.prefix
KSQL <-> Kafka: ACLs
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Output topic:
<ksql.output.topic.name.prefix>RESULTS
56
[ output topics (that don’t exist) ]
[ output topics ]
Literal
Literal
kafka-clusterLiteralClusterDescribeConfigs
Read Topic Literal [ input topics ]
TopicWrite
Create Topic
_confluent-ksql-<ksql.service.id>PrefixedGroupAll
All Topic Prefixed _confluent-ksql-<ksql.service.id>
<ksql.logging.processing.topic.name>LiteralTopicAll
TypeOperation Pattern
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Resource Name
KSQL <-> Kafka: ACLs
57
Prefixed
Prefixed
<ksql.output.topic.name.prefix>
<ksql.output.topic.name.prefix>
kafka-clusterLiteralClusterDescribeConfigs
Read Topic Literal [ input topics ]
TopicWrite
Create Topic
_confluent-ksql-<ksql.service.id>PrefixedGroupAll
All Topic Prefixed _confluent-ksql-<ksql.service.id>
<ksql.logging.processing.topic.name>LiteralTopicAll
TypeOperation Pattern
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Resource Name
KSQL <-> Kafka: ACLs
58
CREATE TABLE results
AS SELECT …
FROM events;
Configure ksql.output.topic.name.prefix
KSQL <-> Kafka: ACLs
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
Output topic:
<ksql.output.topic.name.prefix>RESULTS
59
CREATE TABLE results
AS SELECT …
FROM events;
Configure ksql.output.topic.name.prefix
KSQL <-> Kafka: ACLs
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-authorization-of-ksql-with-kafka-acls
https://kafka.apache.org/documentation/#security_authz
CREATE TABLE results
WITH (KAFKA_TOPIC=‘foo’)
AS SELECT …
FROM events;
Output topic:
<ksql.output.topic.name.prefix>RESULTS
Output topic:
foo
60
Motivation: Quotas
61
Motivation: Quotas
62
Motivation: Quotas
63
KSQL <-> Kafka: Quotas
● Network bandwidth quotas
Learn more:
https://kafka.apache.org/documentation/#design_quotas
https://kafka.apache.org/documentation/#quotas
https://docs.confluent.io/current/ksql/docs/capacity-planning.html#kafka
producer_byte_rate=1024
consumer_byte_rate=2048
64
KSQL <-> Kafka: Quotas
● Network bandwidth quotas
● Request rate quotas
Learn more:
https://kafka.apache.org/documentation/#design_quotas
https://kafka.apache.org/documentation/#quotas
https://docs.confluent.io/current/ksql/docs/capacity-planning.html#kafka
producer_byte_rate=1024
consumer_byte_rate=2048
request_percentage=200
65
KSQL <-> Kafka: Quotas
● Network bandwidth quotas
● Request rate quotas
● By user and/or client-id
Learn more:
https://kafka.apache.org/documentation/#design_quotas
https://kafka.apache.org/documentation/#quotas
https://docs.confluent.io/current/ksql/docs/capacity-planning.html#kafka
user=user1, client-id=clientA:
producer_byte_rate=1024
consumer_byte_rate=2048
request_percentage=200
66
KSQL <-> Kafka: Quotas
● Network bandwidth quotas
● Request rate quotas
● By user and/or client-id
○ Configure via client.id in server properties
Learn more:
https://kafka.apache.org/documentation/#design_quotas
https://kafka.apache.org/documentation/#quotas
https://docs.confluent.io/current/ksql/docs/capacity-planning.html#kafka
user=user1, client-id=clientA:
producer_byte_rate=1024
consumer_byte_rate=2048
request_percentage=200
67
KSQL’s Connections
Schema
Registry
CLI
REST
UI
KSQL
Server
KSQL
Server
REST
REST
68
KSQL <-> Schema Registry: TLS
listeners=
http://host.name:port
ksql.schema.registry.url=
http://host.name:port
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-secured-sr-long
https://docs.confluent.io/current/schema-registry/docs/security.html#schema-registry-http-https
69
ksql.schema.registry.url=
https://host.name:port
ksql.schema.registry.ssl.truststore
.location=/path/to/truststore
ksql.schema.registry.ssl.truststore
.password=xxx
listeners=
https://host.name:port
ssl.keystore.location=
/path/to/keystore
ssl.keystore.password=xxxx
ssl.key.password=yyyy
KSQL <-> Schema Registry: TLS
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-secured-sr-long
https://docs.confluent.io/current/schema-registry/docs/security.html#schema-registry-http-https
70
ksql.schema.registry.url=
https://host.name:port
ksql.schema.registry.ssl.truststore
.location=/path/to/truststore
ksql.schema.registry.ssl.truststore
.password=xxx
listeners=
https://host.name:port
ssl.keystore.location=
/path/to/keystore
ssl.keystore.password=xxxx
ssl.key.password=yyyy
KSQL <-> Schema Registry: TLS
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-secured-sr-long
https://docs.confluent.io/current/schema-registry/docs/security.html#schema-registry-http-https
71
ksql.schema.registry.url=
https://host.name:port
ksql.schema.registry.ssl.truststore
.location=/path/to/truststore
ksql.schema.registry.ssl.truststore
.password=xxx
ksql.schema.registry.ssl.keystore
.location=/path/to/keystore
ksql.schema.registry.ssl.keystore
.password=yyy
ksql.schema.registry.ssl.keypass
word=zzz
listeners=
https://host.name:port
ssl.keystore.location=
/path/to/keystore
ssl.keystore.password=xxxx
ssl.key.password=yyyy
ssl.client.auth=true
ssl.truststore.location=
/path/to/truststore
ssl.truststore.password=zzzz
KSQL <-> Schema Registry: TLS
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-secured-sr-long
https://docs.confluent.io/current/schema-registry/docs/security.html#schema-registry-http-https
72
KSQL <-> Schema Registry: Basic HTTP Auth
authentication.method=BASIC
authentication.roles=user
authentication.realm=SR-Props
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-secured-sr-long
authentication.method=BASIC
authentication.roles=user
authentication.realm=
SchemaRegistry-Props
73
KSQL <-> Schema Registry: Basic HTTP Auth
authentication.method=BASIC
authentication.roles=user
authentication.realm=SR-Props
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-secured-sr-long
authentication.method=BASIC
authentication.roles=user
authentication.realm=
SchemaRegistry-Props
SCHEMA_REGISTRY_OPTS=
-Djava.security.auth.login.config=
/path/to/jaas_config.file
SchemaRegistry-Props {
...
};
74
authentication.method=BASIC
authentication.roles=user
authentication.realm=
SchemaRegistry-Props
SchemaRegistry-Props {
...
};
KSQL <-> Schema Registry: Basic HTTP Auth
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-secured-sr-long
SCHEMA_REGISTRY_OPTS=
-Djava.security.auth.login.config=
/path/to/jaas_config.file
75
KSQL <-> Schema Registry: Basic HTTP Auth
authentication.method=BASIC
authentication.roles=user
authentication.realm=SR-Props
ksql.schema.registry.basic.auth
.credentials.source=USER_INFO
ksql.schema.registry.basic.auth
.user.info=ksqluser:password
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-secured-sr-long
authentication.method=BASIC
authentication.roles=user
authentication.realm=
SchemaRegistry-Props
SCHEMA_REGISTRY_OPTS=
-Djava.security.auth.login.config=
/path/to/jaas_config.file
SchemaRegistry-Props {
...
};
76
Securing KSQL’s Connections
KSQL <-> Kafka KSQL <->
Schema Registry
Encryption TLS TLS
Authentication TLS
SASL
TLS
Basic HTTP Auth
Authorization ACLs
Quotas Network
CPU
77
KSQL’s Connections
Schema
Registry
CLI
REST
UI
KSQL
Server
KSQL
Server
REST
REST
78
KSQL Client <-> Server: TLS
listeners=
http://host.name:port
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-https
79
KSQL Client <-> Server: TLS
listeners=
http://host.name:port
./bin/ksql http://hostname.port
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-https
80
./bin/ksql
--config-file my-cli.properties
https://hostname.port
listeners=
https://host.name:port
ssl.keystore.location=
/path/to/keystore
ssl.keystore.password=xxxx
ssl.key.password=yyyy
KSQL Client <-> Server: TLS
ssl.truststore.location=
/path/to/truststore
ssl.truststore.password=xxx
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-https
81
./bin/ksql
--config-file my-cli.properties
https://hostname.port
listeners=
https://host.name:port
ssl.keystore.location=
/path/to/keystore
ssl.keystore.password=xxxx
ssl.key.password=yyyy
KSQL Client <-> Server: TLS
ssl.truststore.location=
/path/to/truststore
ssl.truststore.password=xxx
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-https
82
ssl.truststore.location=
/path/to/truststore
ssl.truststore.password=xxx
ssl.keystore.location=
/path/to/keystore
ssl.keystore.password=yyy
ssl.key.password=zzz
listeners=
https://host.name:port
ssl.keystore.location=
/path/to/keystore
ssl.keystore.password=xxxx
ssl.key.password=yyyy
ssl.client.auth=true
ssl.truststore.location=
/path/to/truststore
ssl.truststore.password=zzzz
KSQL Client <-> Server: TLS
./bin/ksql
--config-file my-cli.properties
https://hostname.port
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-https
83
KSQL Client <-> Server: Basic HTTP Auth
authentication.method=BASIC
authentication.roles=user
authentication.realm=
KsqlServer-Props
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-basic-http-authentication
84
KSQL Client <-> Server: Basic HTTP Auth
authentication.method=BASIC
authentication.roles=user
authentication.realm=
KsqlServer-Props
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-basic-http-authentication
KSQL_OPTS=
-Djava.security.auth.login.config=
/path/to/jaas_config.file
KsqlServer-Props {
...
};
85
KSQL Client <-> Server: Basic HTTP Auth
authentication.method=BASIC
authentication.roles=user
authentication.realm=
KsqlServer-Props
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-basic-http-authentication
KSQL_OPTS=
-Djava.security.auth.login.config=
/path/to/jaas_config.file
KsqlServer-Props {
...
};
86
./bin/ksql
--user username
--password mypassword
https://hostname.port
KSQL Client <-> Server: Basic HTTP Auth
authentication.method=BASIC
authentication.roles=user
authentication.realm=
KsqlServer-Props
Learn more:
https://docs.confluent.io/current/ksql/docs/installation/server-config/security.html#configuring-ksql-for-basic-http-authentication
KSQL_OPTS=
-Djava.security.auth.login.config=
/path/to/jaas_config.file
KsqlServer-Props {
...
};
87
KSQL Client <-> Server: Custom Plugins
Learn more:
https://github.com/confluentinc/rest-utils/blob/b0418a69b8fd40a55446d31da98e4da3f25b6b93/core/src/main/java/io/confluent/rest/
RestConfig.java#L229
https://github.com/confluentinc/rest-utils/blob/b0418a69b8fd40a55446d31da98e4da3f25b6b93/core/src/main/java/io/confluent/rest/
Application.java#L454
rest.servlet.initializor.classes=my.java.namespace.MyCustomSecurityHandler
88
KSQL Client <-> Server: Custom Plugins
public class MyCustomSecurityHandler implements Consumer<ServletContextHandler> {
@Override
public void accept(final ServletContextHandler context) {
final ConstraintSecurityHandler myHandler = new ConstraintSecurityHandler();
// ...
context.setSecurityHandler(myHandler);
}
}
Learn more:
https://github.com/confluentinc/rest-utils/blob/b0418a69b8fd40a55446d31da98e4da3f25b6b93/core/src/main/java/io/confluent/rest/
RestConfig.java#L229
https://github.com/confluentinc/rest-utils/blob/b0418a69b8fd40a55446d31da98e4da3f25b6b93/core/src/main/java/io/confluent/rest/
Application.java#L454
rest.servlet.initializor.classes=my.java.namespace.MyCustomSecurityHandler
89
KSQL Client <-> Server: Custom Plugins
public class MyCustomSecurityHandler implements Consumer<ServletContextHandler> {
@Override
public void accept(final ServletContextHandler context) {
final ConstraintSecurityHandler myHandler = new ConstraintSecurityHandler();
// ...
context.setSecurityHandler(myHandler);
}
}
Learn more:
https://github.com/confluentinc/rest-utils/blob/b0418a69b8fd40a55446d31da98e4da3f25b6b93/core/src/main/java/io/confluent/rest/
RestConfig.java#L229
https://github.com/confluentinc/rest-utils/blob/b0418a69b8fd40a55446d31da98e4da3f25b6b93/core/src/main/java/io/confluent/rest/
Application.java#L454
rest.servlet.initializor.classes=my.java.namespace.MyCustomSecurityHandler
websocket.servlet.initializor.classes=my.java.namespace.MyCustomSecurityHandler
90
Securing KSQL’s Connections
KSQL <-> Kafka KSQL <->
Schema Registry
KSQL Client <->
KSQL Server
Encryption TLS TLS TLS
Authentication TLS
SASL
TLS
Basic HTTP Auth
TLS
Basic HTTP Auth
Custom Plugins
Authorization ACLs Custom Plugins
Quotas Network
CPU
91
Securing KSQL’s Connections
KSQL <-> Kafka KSQL <->
Schema Registry
KSQL Client <->
KSQL Server
Encryption TLS TLS TLS
Authentication TLS
SASL
TLS
Basic HTTP Auth
Custom Plugins
TLS
Basic HTTP Auth
Custom Plugins
Authorization ACLs Custom Plugins Custom Plugins
Quotas Network
CPU
92
KSQL’s Connections
Schema
Registry
CLI
REST
UI
KSQL
Server
KSQL
Server
REST
REST
93
User-Defined Functions (UDFs)
Learn more:
https://docs.confluent.io/current/ksql/docs/developer-guide/udf.html#ksql-custom-functions-and-security
@UdfDescription(
name = “myFunc”,
description = “my custom function”)
public class MyFunc {
// ...
}
SELECT MYFUNC(...)
FROM stream_foo;
94
User-Defined Functions (UDFs)
● ksql.udfs.enabled
Learn more:
https://docs.confluent.io/current/ksql/docs/developer-guide/udf.html#ksql-custom-functions-and-security
@UdfDescription(
name = “myFunc”,
description = “my custom function”)
public class MyFunc {
// ...
}
SELECT MYFUNC(...)
FROM stream_foo;
95
User-Defined Functions (UDFs)
● ksql.udfs.enabled
● ksql.udf.enable.security.manager
Learn more:
https://docs.confluent.io/current/ksql/docs/developer-guide/udf.html#ksql-custom-functions-and-security
@UdfDescription(
name = “myFunc”,
description = “my custom function”)
public class MyFunc {
// ...
}
SELECT MYFUNC(...)
FROM stream_foo;
96
User-Defined Functions (UDFs)
● ksql.udfs.enabled
● ksql.udf.enable.security.manager
● <ksql.extension.dir>/resource-blacklist.txt
Learn more:
https://docs.confluent.io/current/ksql/docs/developer-guide/udf.html#ksql-custom-functions-and-security
@UdfDescription(
name = “myFunc”,
description = “my custom function”)
public class MyFunc {
// ...
}
SELECT MYFUNC(...)
FROM stream_foo;
# resource-blacklist.txt
java.lang.Compiler$
java.lang.Process
97
Logging
● Log4j
Learn more:
https://docs.confluent.io/current/ksql/docs/developer-guide/processing-log.html
98
Logging
● Log4j
● Record processing log
Learn more:
https://docs.confluent.io/current/ksql/docs/developer-guide/processing-log.html
{
“type”: 1,
…,
“deserializationError”:{
“errorMessage”: “org.apache.kafka.connect.errors.DataException: [...]”,
“recordB64”: “TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5”
}
}
99
Logging
● Log4j
● Record processing log
○ ksql.logging.processing.topic.auto.create
Learn more:
https://docs.confluent.io/current/ksql/docs/developer-guide/processing-log.html
{
“type”: 1,
…,
“deserializationError”:{
“errorMessage”: “org.apache.kafka.connect.errors.DataException: [...]”,
“recordB64”: “TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5”
}
}
100
Logging
● Log4j
● Record processing log
○ ksql.logging.processing.topic.auto.create
○ ksql.logging.processing.topic.name
Learn more:
https://docs.confluent.io/current/ksql/docs/developer-guide/processing-log.html
{
“type”: 1,
…,
“deserializationError”:{
“errorMessage”: “org.apache.kafka.connect.errors.DataException: [...]”,
“recordB64”: “TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5”
}
}
101
Logging
● Log4j
● Record processing log
○ ksql.logging.processing.topic.auto.create
○ ksql.logging.processing.topic.name
○ ksql.logging.processing.rows.include
Learn more:
https://docs.confluent.io/current/ksql/docs/developer-guide/processing-log.html
{
“type”: 1,
…,
“deserializationError”:{
“errorMessage”: “org.apache.kafka.connect.errors.DataException: [...]”,
“recordB64”: “TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5”
}
}
102
Limitations and Futures
● Impersonation
● Authorization and quotas
● End-to-end encryption
● Shared TLS configs
● UDF whitelisting
● Resolving external passwords: KIP-421
Learn more:
https://docs.confluent.io/current/ksql/docs/capacity-planning.html
https://github.com/confluentinc/ksql/blob/cf29742512378106ccbd50c47b8ebb2d2204afc6/ksql-common/src/main/java/io/confluent/
ksql/util/KsqlConfig.java#L121
https://github.com/confluentinc/ksql/issues/1821
https://cwiki.apache.org/confluence/display/KAFKA/KIP-421%3A+Support+resolving+externalized+secrets+in+AbstractConfig
103
Takeaways
● Works in a secure Kafka environment
● Lock down KSQL by using headless mode
○ Or secure KSQL’s REST endpoint
● Deploy separate KSQL clusters for different use cases
● Consider: UDFs and record processing log
104
Questions?

Contenu connexe

Tendances

Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK
 

Tendances (20)

Enabling Vectorized Engine in Apache Spark
Enabling Vectorized Engine in Apache SparkEnabling Vectorized Engine in Apache Spark
Enabling Vectorized Engine in Apache Spark
 
A Deep Dive into Kafka Controller
A Deep Dive into Kafka ControllerA Deep Dive into Kafka Controller
A Deep Dive into Kafka Controller
 
New Approaches for Fraud Detection on Apache Kafka and KSQL
New Approaches for Fraud Detection on Apache Kafka and KSQLNew Approaches for Fraud Detection on Apache Kafka and KSQL
New Approaches for Fraud Detection on Apache Kafka and KSQL
 
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming ApplicationsRunning Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
 
ksqlDB로 실시간 데이터 변환 및 스트림 처리
ksqlDB로 실시간 데이터 변환 및 스트림 처리ksqlDB로 실시간 데이터 변환 및 스트림 처리
ksqlDB로 실시간 데이터 변환 및 스트림 처리
 
A Thorough Comparison of Delta Lake, Iceberg and Hudi
A Thorough Comparison of Delta Lake, Iceberg and HudiA Thorough Comparison of Delta Lake, Iceberg and Hudi
A Thorough Comparison of Delta Lake, Iceberg and Hudi
 
An Introduction to Apache Kafka
An Introduction to Apache KafkaAn Introduction to Apache Kafka
An Introduction to Apache Kafka
 
Flexible Authentication Strategies with SASL/OAUTHBEARER (Michael Kaminski, T...
Flexible Authentication Strategies with SASL/OAUTHBEARER (Michael Kaminski, T...Flexible Authentication Strategies with SASL/OAUTHBEARER (Michael Kaminski, T...
Flexible Authentication Strategies with SASL/OAUTHBEARER (Michael Kaminski, T...
 
ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!
 
Introduction to KSQL: Streaming SQL for Apache Kafka®
Introduction to KSQL: Streaming SQL for Apache Kafka®Introduction to KSQL: Streaming SQL for Apache Kafka®
Introduction to KSQL: Streaming SQL for Apache Kafka®
 
Introduction to Kafka Streams
Introduction to Kafka StreamsIntroduction to Kafka Streams
Introduction to Kafka Streams
 
How to Lock Down Apache Kafka and Keep Your Streams Safe
How to Lock Down Apache Kafka and Keep Your Streams SafeHow to Lock Down Apache Kafka and Keep Your Streams Safe
How to Lock Down Apache Kafka and Keep Your Streams Safe
 
Virtual Flink Forward 2020: A deep dive into Flink SQL - Jark Wu
Virtual Flink Forward 2020: A deep dive into Flink SQL - Jark WuVirtual Flink Forward 2020: A deep dive into Flink SQL - Jark Wu
Virtual Flink Forward 2020: A deep dive into Flink SQL - Jark Wu
 
Flink vs. Spark
Flink vs. SparkFlink vs. Spark
Flink vs. Spark
 
Apache Kafka - Martin Podval
Apache Kafka - Martin PodvalApache Kafka - Martin Podval
Apache Kafka - Martin Podval
 
Apache Kafka Introduction
Apache Kafka IntroductionApache Kafka Introduction
Apache Kafka Introduction
 
Apache Kafka Security
Apache Kafka Security Apache Kafka Security
Apache Kafka Security
 
Kafka Streams vs. KSQL for Stream Processing on top of Apache Kafka
Kafka Streams vs. KSQL for Stream Processing on top of Apache KafkaKafka Streams vs. KSQL for Stream Processing on top of Apache Kafka
Kafka Streams vs. KSQL for Stream Processing on top of Apache Kafka
 
[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 

Similaire à KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kafka Summit NYC 2019

Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips
confluent
 

Similaire à KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kafka Summit NYC 2019 (20)

KSQL in Practice (Almog Gavra, Confluent) Kafka Summit London 2019
KSQL in Practice (Almog Gavra, Confluent) Kafka Summit London 2019KSQL in Practice (Almog Gavra, Confluent) Kafka Summit London 2019
KSQL in Practice (Almog Gavra, Confluent) Kafka Summit London 2019
 
KSQL – An Open Source Streaming Engine for Apache Kafka
KSQL – An Open Source Streaming Engine for Apache KafkaKSQL – An Open Source Streaming Engine for Apache Kafka
KSQL – An Open Source Streaming Engine for Apache Kafka
 
Kafka 2018 - Securing Kafka the Right Way
Kafka 2018 - Securing Kafka the Right WayKafka 2018 - Securing Kafka the Right Way
Kafka 2018 - Securing Kafka the Right Way
 
Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips
 
Paris FOD meetup - kafka security 101
Paris FOD meetup - kafka security 101Paris FOD meetup - kafka security 101
Paris FOD meetup - kafka security 101
 
Chickens & Eggs: Managing secrets in AWS with Hashicorp Vault
Chickens & Eggs: Managing secrets in AWS with Hashicorp VaultChickens & Eggs: Managing secrets in AWS with Hashicorp Vault
Chickens & Eggs: Managing secrets in AWS with Hashicorp Vault
 
Deploying and Operating KSQL
Deploying and Operating KSQLDeploying and Operating KSQL
Deploying and Operating KSQL
 
Apache Kafka® Security Overview
Apache Kafka® Security OverviewApache Kafka® Security Overview
Apache Kafka® Security Overview
 
Deploying and Operating KSQL
Deploying and Operating KSQLDeploying and Operating KSQL
Deploying and Operating KSQL
 
Riviera Jug - 20/03/2018 - KSQL
Riviera Jug - 20/03/2018 - KSQLRiviera Jug - 20/03/2018 - KSQL
Riviera Jug - 20/03/2018 - KSQL
 
Exploring KSQL Patterns
Exploring KSQL PatternsExploring KSQL Patterns
Exploring KSQL Patterns
 
Event streaming webinar feb 2020
Event streaming webinar feb 2020Event streaming webinar feb 2020
Event streaming webinar feb 2020
 
KSQL Deep Dive - The Open Source Streaming Engine for Apache Kafka
KSQL Deep Dive - The Open Source Streaming Engine for Apache KafkaKSQL Deep Dive - The Open Source Streaming Engine for Apache Kafka
KSQL Deep Dive - The Open Source Streaming Engine for Apache Kafka
 
A tale of application development
A tale of application developmentA tale of application development
A tale of application development
 
Building a Real-time Streaming ETL Framework Using ksqlDB and NoSQL
Building a Real-time Streaming ETL Framework Using ksqlDB and NoSQLBuilding a Real-time Streaming ETL Framework Using ksqlDB and NoSQL
Building a Real-time Streaming ETL Framework Using ksqlDB and NoSQL
 
KSQL: Streaming SQL for Kafka
KSQL: Streaming SQL for KafkaKSQL: Streaming SQL for Kafka
KSQL: Streaming SQL for Kafka
 
HashiCorp's Vault - The Examples
HashiCorp's Vault - The ExamplesHashiCorp's Vault - The Examples
HashiCorp's Vault - The Examples
 
Kafka Summit SF 2017 - Kafka Stream Processing for Everyone with KSQL
Kafka Summit SF 2017 - Kafka Stream Processing for Everyone with KSQLKafka Summit SF 2017 - Kafka Stream Processing for Everyone with KSQL
Kafka Summit SF 2017 - Kafka Stream Processing for Everyone with KSQL
 
Real Time Stream Processing with KSQL and Kafka
Real Time Stream Processing with KSQL and KafkaReal Time Stream Processing with KSQL and Kafka
Real Time Stream Processing with KSQL and Kafka
 
Blue whale, jail and Microsoft
Blue whale, jail and MicrosoftBlue whale, jail and Microsoft
Blue whale, jail and Microsoft
 

Plus de confluent

Plus de confluent (20)

Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flink
 
Unlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsUnlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insights
 
Workshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con FlinkWorkshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con Flink
 
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
 
AWS Immersion Day Mapfre - Confluent
AWS Immersion Day Mapfre   -   ConfluentAWS Immersion Day Mapfre   -   Confluent
AWS Immersion Day Mapfre - Confluent
 
Eventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkEventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalk
 
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent CloudQ&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
 
Citi TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Dive
 
Build real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with ConfluentBuild real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with Confluent
 
Q&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service MeshQ&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service Mesh
 
Citi Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka MicroservicesCiti Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka Microservices
 
Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3
 
Citi Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging ModernizationCiti Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging Modernization
 
Citi Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time dataCiti Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time data
 
Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2
 
Data In Motion Paris 2023
Data In Motion Paris 2023Data In Motion Paris 2023
Data In Motion Paris 2023
 
Confluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with SynthesisConfluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with Synthesis
 
The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023
 
The Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data StreamsThe Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data Streams
 

Dernier

Dernier (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kafka Summit NYC 2019