# Pemantauan Informasi Sensitif dan Rahasia Secara Otomatis pada Slack

Di Halodoc, Slack berfungsi sebagai platform komunikasi dan kolaborasi yang sangat berguna bagi banyak tim yang bekerja bersama. Dengan antarmuka yang mudah dimengerti dan fitur-fitur yang lengkap, Slack memungkinkan tim-tim tersebut untuk berbagi informasi, berdiskusi, dan bekerja sama dengan lebih efektif. Terlepas dari apakah mereka perlu berkomunikasi dalam obrolan publik yang terbuka untuk semua anggota tim, mengirim pesan pribadi secara langsung, atau bahkan melakukan percakapan *multi-conversation* dalam konteks tertentu, Slack menyediakan alat yang diperlukan untuk menghubungkan orang-orang tersebut dengan mulus. Dengan kata lain, Slack adalah alat yang sangat membantu dalam menjembatani komunikasi antar tim di Halodoc.

Namun, meskipun Slack adalah alat yang berguna untuk berkomunikasi dan berkolaborasi, kami perlu mengingat beberapa hal yang penting ketika menggunakan platform ini. Salah satu pertimbangan utama adalah bahwa Slack tidak selalu memiliki tingkat pemantauan keamanan yang cukup ketika tidak dikonfigurasi dengan benar. Akibatnya, ada risiko bahwa beberapa *channel* atau saluran komunikasi di dalamnya dapat menjadi lebih rentan terhadap berbagai masalah keamanan yang berpotensi merugikan data dan reputasi organisasi.

Ketika berbicara tentang risiko keamanan di Slack, salah satu keprihatinan yang perlu dihadapi adalah kemungkinan terbukanya dan bocornya informasi sensitif atau rahasia. Ini bisa terjadi secara tidak sengaja ketika anggota tim berbagi informasi yang seharusnya tidak terlihat oleh semua orang. Misalnya, informasi seperti identitas pribadi (*Personal Identifiable Information*/PII), data pelanggan atau pasien (*Protected Health Information*/PHI), data perusahaan yang rahasia, atau bahkan informasi penting lainnya yang jika berada di tangan yang salah dapat menyebabkan pelanggaran data yang serius dan pelanggaran privasi yang merugikan. Oleh karena itu, penting bagi kami untuk selalu mempertimbangkan dan menerapkan langkah-langkah keamanan yang sesuai ketika menggunakan Slack agar semua tim dapat menjaga keamanan data dan reputasi organisasi dengan baik.

Karena itu, salah satu tujuan utama dari tulisan ini adalah untuk lebih mendalamkan pemahaman tentang risiko yang terkait dengan berbagi informasi penting seperti kata sandi, informasi data pribadi (PII), data pasien, serta kredensial dan data sensitif lainnya. Sementara itu, tulisan ini juga akan membahas bagaimana pemantauan yang tepat dalam penggunaan Slack bisa menjadi solusi yang efektif untuk melindungi organisasi dari potensi ancaman, memperkuat privasi data, dan menciptakan lingkungan kerja digital yang lebih aman dan terjamin bagi semua pengguna Slack.

## Apa yang dimaksud dengan “Pemantauan Informasi Sensitif dan Rahasia pada Slack?

Pemantauan informasi sensitif dan rahasia pada Slack adalah suatu program menggunakan bahasa Python yang dirancang untuk memantau secara eksklusif semua informasi sensitif dan rahasia khususnya semua *channel* publik yang ada di Slack. Mengapa hanya *channel* publik, tidak dengan privat? Karena kami ingin tetap menjaga aspek privasi dimana orang yang berada pada *channel* privat tetap dapat mengirim pesan dengan aman dan nyaman kepada penerima yang sah melalui mekanisme *approval*. Sebaliknya, pesan yang berada di channel publik dapat dikonsumsi oleh semua orang, termasuk orang yang tidak bergabung kepada *channel* tersebut. Ini menjadi resiko tersendiri dimana *insider threat* sangat mungkin terjadi. Selain itu program ini secara proaktif memeriksa berbagai elemen dalam Slack, termasuk pesan, potongan kode, dan file yang dibagikan.

Sistem pemantauan yang waspada ini diterapkan pada *environment Continuous Integration* / *Continuous Development* (CI/CD) yang berjalan 24 jam untuk memastikan pengawasan secara regular dan berkelanjutan. Singkatnya, program Python ini memainkan peran penting dalam menjaga keamanan *channel* publik Slack secara aktif dan mengidentifikasi potensi risiko serta meningkatkan integritas platform secara keseluruhan.

## Implementasi 'Pemantauan Informasi Sensitif dan Rahasia pada Slack'

Di bawah ini adalah *flowchart* dari program pemantauan informasi sensitif dan rahasia pada Slack yang dibangun.

<figure><img src="https://2269273115-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqORrtdTgv9LCMJlHlnb%2Fuploads%2FaeuJ5U6uE2IEoEzipwKF%2FScreenshot%202024-01-10%20at%2013.48.24.png?alt=media&#x26;token=4a7b16ee-d008-4db4-b06d-707f668cf1aa" alt=""><figcaption><p>Gambar 1 - <em>Flowchart</em> dari program pemantauan informasi sensitif dan rahasia pada Slack</p></figcaption></figure>

**1. Membangun Koneksi ke Slack**. Untuk membangun komunikasi dengan Slack dari program Python, kami perlu menggunakan token bot API Slack dan modul Python `slack_sdk`. Slack bot adalah aplikasi yang dibuat di lingkungan Slack dengan cakupan tertentu. Di bawah ini adalah cuplikan kode sampel untuk membangun komunikasi.<br>

<figure><img src="https://2269273115-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqORrtdTgv9LCMJlHlnb%2Fuploads%2FFEeJAqVLtraLIvj7g5aS%2FScreenshot%202024-01-10%20at%2013.55.34.png?alt=media&#x26;token=b6eb47b9-04b8-40b3-b04e-e61a852e9e8e" alt=""><figcaption><p>Gambar 2 - Membuat koneksi ke slack dengan API</p></figcaption></figure>

**2. Integrasi Slack bot ke channel publik**. Untuk menjalankan pemindaian pesan di Slack, langkah pertama yang perlu kami lakukan adalah menghubungkan bot Slack dengan saluran Slack yang ingin diperiksa. Dalam skrip tersebut, sebuah fungsi yang dibuat akan secara otomatis memasukkan bot Slack ke semua saluran publik yang ada di ruang kerja Slack tersebut. Selain itu, jika ada saluran publik baru yang dibuat di masa depan, bot akan secara otomatis ditambahkan ke dalamnya saat program berjalan. Di bawah ini, kami menyediakan potongan kode yang dalam memasukkan `channel_id` dan `bot_id` agar bot dapat diundang ke saluran yang diinginkan.

<figure><img src="https://2269273115-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqORrtdTgv9LCMJlHlnb%2Fuploads%2FE1Fz3lz2v0CqXhYJR36W%2FScreenshot%202024-01-10%20at%2013.56.03.png?alt=media&#x26;token=43413b2f-8fb5-48b1-9e9b-e15dbd406003" alt=""><figcaption><p>Gambar 3 - Melakukan integrasi bot ke <em>channel</em> publik</p></figcaption></figure>

Selain itu, kami akan mendapatkan ID saluran dari Slack dengan menggunakan metode `conversation_list` yang tersedia dalam API Slack. Berikut adalah potongan kode yang akan mengambil semua detail saluran publik yang ada di ruang kerja Slack. Kode ini akan mengambil 999 saluran publik terbaru dan akan mengabaikan saluran yang telah diarsipkan. Jika terdapat lebih dari 999 saluran publik di ruang kerja Slack, maka pada iterasi berikutnya, posisi *cursor* akan diubah dan akan mengambil 999 saluran berikutnya. Proses ini akan terus berlanjut hingga nilai kursor menjadi tidak ada lagi.

<figure><img src="https://2269273115-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqORrtdTgv9LCMJlHlnb%2Fuploads%2Fh5TX4gsZqJ3RyBePVWTc%2FScreenshot%202024-01-11%20at%2005.12.29.png?alt=media&#x26;token=950ff8b6-d4ed-4706-9f97-caaa8a18a0af" alt=""><figcaption><p>Gambar 4 - Mengambil semua detail informasi di <em>channel</em> publik </p></figcaption></figure>

**3.  Deteksi informasi sensitif dan rahasia.**&#x20;

Terdapat dua pendekatan dalam melakukan identifikasi kata kunci:&#x20;

#### **Level - 1:** Mengambil pesan berdasarkan pendekatan String Matching

&#x20;API Slack memiliki metode yang memungkinkan mencari pesan berdasarkan kata kunci tertentu. Metode ini disebut `search_messages()` dan mengharuskan kami memberikan kata kunci yang ingin dicari. Setelahnya, metode ini akan mencari, menghitung, menyusun, dan mengembalikan pesan yang sesuai dengan kata kunci tersebut. Di bawah ini adalah potongan kode dari metode `search_message()` yang digunakan:

<figure><img src="https://2269273115-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqORrtdTgv9LCMJlHlnb%2Fuploads%2FkQOxf553TrMD3u5tzD1Z%2FScreenshot%202024-01-11%20at%2005.13.02.png?alt=media&#x26;token=ca8a8eaf-ebef-4f35-9177-66ab8195c26d" alt=""><figcaption><p>Gambar 5 - Mencari pesan berdasarkan <em>string matching keywords</em> tertentu</p></figcaption></figure>

Fungsi `search_messages()` berfungsi dengan mengambil kata kunci yang ingin dicari, yang disebut `query`, sebagai argumen. kami juga dapat menentukan jumlah pesan yang ingin ditemukan dengan menggunakan argumen `count`. Jika pesan terbaru ingin dimunculkan pertama, maka perlu memberikan argumen `sort` dengan *timestamp*.

Sekarang, dalam konteks pemantauan kredensial, kami telah menyusun daftar beberapa kata kunci yang sering digunakan saat berbagi data berdasarkan pengamatan terhadap pesan yang telah dibagikan di workspace. Di bawah ini adalah beberapa contoh kata kunci yang umum digunakan:

<figure><img src="https://2269273115-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqORrtdTgv9LCMJlHlnb%2Fuploads%2FebOfjMuLSJz5cH47iDL1%2FScreenshot%202024-01-11%20at%2005.14.01.png?alt=media&#x26;token=e005327a-80ee-4d95-b95b-e6a413d04707" alt=""><figcaption><p>Gambar 6 - Contoh beberapa <em>keywords</em> umum yang sering digunakan</p></figcaption></figure>

Tentu, kata kunci tersebut dapat di evaluasi dan diperbaharui secara periodik dan terus ditingkatkan dari waktu ke waktu. Adapun kata kunci lainnya seperti informasi kartu kredit, npwp, rekam medik, data rahasia perusahaan dapat dibuat dalam satu file konfigurasi terpisah agar lebih mudah dalam melakukan *maintenance*.

#### **Level - 2: Validasi pesan berdasarkan pendekatan Regex**

Setelah mencari pesan berdasarkan kata kunci, langkah selanjutnya adalah memastikan apakah pesan yang telah diambil mengandung data yang relevan atau hanya kata kunci. Untuk melakukan ini, kami menggunakan pola regex (*regular expression*) yang berfungsi untuk mengidentifikasi berbagai jenis data seperti alamat *email*, nomor ponsel, tanggal lahir, nomor paspor, dan sebagainya. Berikut adalah potongan kode yang digunakan dalam metode regex ini agar lebih mudah dipahami.

<figure><img src="https://2269273115-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqORrtdTgv9LCMJlHlnb%2Fuploads%2FGsHaQ3hyxKUOh6lguTvl%2Fimage.png?alt=media&#x26;token=86bfd2d2-089a-40b6-b937-94ce257c23e7" alt=""><figcaption><p>Gambar 7 - Melakukan validasi pada pesan yang didapat menggunakan regex</p></figcaption></figure>

Method `containsEmail()` berfungsi untuk menentukan apakah pesan tersebut mengandung alamat *email* atau tidak. Demikian pula, `contain_mobile_number()` akan mengambil teks sebagai input dan mencari tahu apakah ada nomor ponsel di dalamnya. Kami juga telah menyediakan pola regex khusus untuk mendeteksi nomor ponsel yang sesuai dengan format Indonesia dan India. Sama halnya seperti menggunakan pola regex untuk mengenali tanggal lahir dalam teks pesan.

#### **4. Mengirim Alert Kepada Tim Cybersecurity & Memperingatkan Pengguna**.&#x20;

Setelah mengidentifikasi pesan sebagai pesan yang berpotensi mengandung informasi sensitif dan rahasia atau kredensial, langkah selanjutnya adalah memberi tahu tim *Cybersecurity* melalui notifikasi di saluran Slack mereka. Selain itu, bot juga mengirimkan pesan langsung kepada pengguna yang bersangkutan. Untuk melakukan ini, kami menggunakan metode `chat_postMessage()`. Berikut adalah potongan kode yang digunakan untuk mengirimkan pesan. `message_text_user` adalah pesan peringatan yang dikirim langsung kepada pengguna, sedangkan `message_text_team` adalah pesan peringatan yang diteruskan ke tim keamanan.

<figure><img src="https://2269273115-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqORrtdTgv9LCMJlHlnb%2Fuploads%2F8EgYwfIUEqni6yGkGi4q%2FScreenshot%202024-01-11%20at%2005.17.11.png?alt=media&#x26;token=6ea680d7-d3ab-4c03-8f7d-6a88bb986efa" alt=""><figcaption><p>Gambar 8 - Membuat skrip notifikasi <em>alert</em> untuk <em>user</em> dan tim <em>cybersecurity</em></p></figcaption></figure>

#### **5. Contoh Alert**.&#x20;

Ini adalah contoh pesan peringatan yang dikirimkan kepada pengguna karena terdeteksinya informasi sensitif dan rahasia dalam pesan yang dikirim oleh pengguna di beberapa saluran publik, kami telah menyertakan nama saluran, stempel waktu, tautan ke pesan.

<figure><img src="https://2269273115-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqORrtdTgv9LCMJlHlnb%2Fuploads%2FNnnWZ9hYHhVboJadwj1X%2FScreenshot%202024-01-11%20at%2005.18.20.png?alt=media&#x26;token=9f081b0a-bd6c-4eea-8e34-99eff181bab6" alt=""><figcaption><p>Gambar 9 - Contoh <em>alert</em> yang diterima oleh <em>user</em></p></figcaption></figure>

Demikian pula pesan peringatan akan dikirim ke saluran tim keamanan, pesan peringatan akan terlihat seperti berikut

<figure><img src="https://2269273115-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqORrtdTgv9LCMJlHlnb%2Fuploads%2FSej3SS7xXaCXmwbW3GDa%2FScreenshot%202024-01-11%20at%2005.18.40.png?alt=media&#x26;token=61fab62e-d207-4428-ba2f-b084ff311a4e" alt=""><figcaption><p>Gambar 10 - Contoh <em>alert</em> yang diterima oleh tim <em>cybersecurity</em></p></figcaption></figure>

## Apa Selanjutnya?

Tidak hanya berhenti sampai sini. Akan ada banyak area yang dapat dikembangkan kembali, salah satunya implementasi *auto blocking* terhadap kata kunci yang sesuai dengan *policy* internal. Ini telah menjadi bagian dari roadmap kami kedepan. Konsep ini hampir mirip dengan *Data Leakage Protection*, dimana script yang dikembangkan dapat mencegah *user* dalam melakukan *sharing* informasi sensitif atau rahasia baik disengaja ataupun tidak disengaja.

## Kesimpulan

Implementasi pemantauan informasi sensitif dan rahasia pada Slack adalah langkah penting dalam menjaga keamanan data dan privasi dalam lingkungan kerja digital. Dengan demikian, implementasi pemantauan informasi sensitif dan rahasia pada Slack adalah tindakan yang proaktif untuk menjaga keamanan data dan melindungi privasi pengguna dalam lingkungan kerja digital. Ini adalah langkah yang sangat penting dalam menghadapi ancaman terkait keamanan informasi di dunia maya. Tentu, mengingat ini adalah tahap implementasi awal, konsep dan ide berikutnya dapat dikembangkan sesuai kebutuhan.

## Referensi

1. <https://slack.com/>
2. <https://api.slack.com/>

## Tentang Penulis

<div align="center"><figure><img src="https://2269273115-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqORrtdTgv9LCMJlHlnb%2Fuploads%2FUWPu0nGZ9JDLUcTVGn7I%2Fimage.png?alt=media&#x26;token=253703ac-f636-4245-9b6d-380f92566073" alt="" width="147"><figcaption><p>Amar Shinde, Software Development Engineer in Test, Halodoc</p></figcaption></figure></div>

<div align="center"><figure><img src="https://2269273115-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqORrtdTgv9LCMJlHlnb%2Fuploads%2F21B8QqeWRqRwM49yTlSQ%2Fimage.png?alt=media&#x26;token=99009bf4-8255-4925-b6c0-22f9b4677b6c" alt="" width="147"><figcaption><p>Mohammad Febri Ramadlan, Senior Engineering Manager, Halodoc</p></figcaption></figure></div>

<br>
