Episode ini mengamankan cluster Flink: enkripsi komunikasi dengan TLS, otentikasi Kerberos dan RBAC, akses aman ke web dashboard dan REST API, serta perlindungan kredensial source dan sink. Keamanan menjadi prasyarat sebelum job melangkah ke produksi.

Sampai episode 11, semua job kalian berjalan di lingkungan yang dipercaya. Episode 12 ini mengubah asumsi tersebut: begitu Flink masuk produksi, cluster berkomunikasi lewat jaringan yang bisa disadap, dan dashboard bisa diakses siapa saja jika tidak dijaga. Keamanan bukan fitur tambahan — ia prasyarat.
Kita akan membahas empat lapisan: mengamankan komunikasi antar komponen dengan TLS, otentikasi dengan Kerberos serta RBAC, mengunci akses ke web dashboard dan REST API, dan melindungi kredensial yang dipakai source serta sink. Setelah episode ini, kalian bisa mengonfigurasi cluster Flink yang layak produksi.
Flink mengenkripsi dua jalur: internal (antar JobManager dan TaskManager) dan REST (dashboard serta API). Keduanya memakai keystore dan truststore JKS:
keytool -genkeypair -alias flink -keyalg RSA \
-keystore keystore.jks -storepass changeit -validity 365keytool adalah tool standar JDK untuk membuat sertifikat. Di produksi, sertifikat biasanya diterbitkan oleh internal CA, bukan self-signed seperti contoh di atas.
security.ssl.enabled: true
security.ssl.rest.enabled: true
security.ssl.internal.enabled: true
security.ssl.keystore: /secrets/keystore.jks
security.ssl.keystore-password: ${KEYSTORE_PASSWORD}
security.ssl.truststore: /secrets/truststore.jks
security.ssl.truststore-password: ${TRUSTSTORE_PASSWORD}security.ssl.enabled menyalakan enkripsi, sementara rest dan internal memilih jalur mana yang dienkripsi. Simpan password di secret manager dan injeksikan lewat environment variable, bukan hardcode di file.
Di lingkungan enterprise (terutama Hadoop), Flink mengotentikasi lewat Kerberos. Komponen login dikonfigurasi per konteks:
security.kerberos.login.use-ticket-cache: true
security.kerberos.login.contexts: Client,KafkaClient
security.kerberos.login.keytab: /secrets/flink.keytab
security.kerberos.login.principal: flink@EXAMPLE.COMsecurity.kerberos.login.keytab menunjuk file keytab dan principal menetapkan identitas layanan. Konteks Client dipakai untuk Hadoop, KafkaClient untuk Kafka dengan SASL Kerberos.
Autentikasi menjawab "kamu siapa"; otorisasi menjawab "kamu boleh apa". Flink menerapkan kontrol akses di beberapa titik: REST API untuk men-submit atau membatalkan job, dan sistem eksternal seperti HDFS atau Kafka yang memvalidasi izin pengguna.
rest.bind-address: 0.0.0.0
rest.bind-port: 8081
jobmanager.rpc.address: flink-jm.internalMengikat REST API ke host internal dan tidak mengeksposnya ke internet adalah bentuk otorisasi jaringan yang paling sederhana. Untuk kendali halus, kombinasikan dengan proxy yang memeriksa identitas pengguna sebelum meneruskan request.
Web dashboard menampilkan informasi sensitif: job graph, metrics, dan konfigurasi. Praktik terbaik:
curl -sk https://localhost:8081/overviewcurl -sk memanggil REST API dengan TLS namun mengabaikan verifikasi sertifikat — hanya untuk debugging. Di produksi, hapus flag -k dan pakai sertifikat yang valid.
Kredensial database, Kafka, dan S3 adalah target utama penyerang. Beberapa aturan wajib:
CREATE TABLE orders (
user_id STRING,
amount BIGINT
) WITH (
'connector' = 'kafka',
'properties.security.protocol' = 'SASL_SSL',
'properties.sasl.mechanism' = 'PLAIN',
'properties.sasl.jaas.config' =
'org.apache.kafka.common.security.plain.PlainLoginModule required username="flink" password="${KAFKA_PASSWORD}";'
);${KAFKA_PASSWORD} adalah placeholder environment — nilai rahasia tetap berada di luar file. Pola yang sama berlaku untuk JDBC, S3, dan semua konektor lain.
Episode 12 mengamankan cluster Flink dari empat sisi: TLS untuk enkripsi jalur internal dan REST, Kerberos untuk otentikasi di lingkungan enterprise, pembatasan akses untuk dashboard dan API, serta praktik penyimpanan kredensial yang aman untuk semua source dan sink.
Inti yang harus dibawa pulang:
Di episode 13 selanjutnya kita akan membahas data governance & observability — mengekspos metrics ke Prometheus dan Grafana, memantau logging, job metrics, dan backpressure, melacak audit events, lineage, dan kualitas data, serta tracing untuk analisis latency. Kalian akan membuat sistem streaming yang bukan hanya berjalan, tetapi terlihat.