QueryProxy
Doküman menüsü

Slack entegrasyonu

Sorgu taleplerini Slack'ten etkileşimli düğmelerle onaylayıp reddedin — uçtan uca HMAC-SHA256 imzalarıyla doğrulanır.

Güncelleme:

Slack entegrasyonuyla yeni sorgu talepleri bir kanala Approve / Reject düğmeleriyle duyurulur; kararlar QueryProxy’ye geri akar — webdekiyle aynı kurallarla (rol denetimi, kendine onay yok) ve kriptografik doğrulamayla.

Kurulum

  1. api.slack.com/apps adresinden çalışma alanınız için bir Slack uygulaması oluşturun.

  2. Incoming Webhooks’u etkinleştirin ve onay kanalınız (ör. #db-approvals) için bir webhook ekleyin.

  3. Interactivity’yi etkinleştirin ve istek URL’sini şuna ayarlayın:

    https://queryproxy-sunucunuz/webhooks/slack/interactions
  4. QueryProxy’de ChatOps’u açın; webhook URL’sini ve uygulamanın signing secret’ını yapıştırın. İkisi de şifreli saklanır. İlk kurulum secret’sız kaydedilemediği için bu adımı bir sistem yöneticisi yapar; sonrasında webhook URL’sini ve açık/kapalı bayrağını takımın DBA’leri güncellemeye devam eder. Webhook URL’si https:// olmalı ve host’u izin listesinde bulunmalıdır (varsayılan olarak hooks.slack.com, *.webhook.office.com ve *.logic.azure.com; liste sohbet sağlayıcıları arasında ortaktır; QUERYPROXY_CHAT_WEBHOOK_ALLOWED_HOSTS ile genişletin).

  5. Sistem yöneticisi olarak Teams & Users → Manage users ekranını açın ve her onaylayıcının Slack üye kimliğini girin (ör. U0123ABC — Slack profilinde Copy member ID ile görünür). Bu eşleme, Slack tıklamalarını QueryProxy kullanıcılarına bağlar.

Kırıcı değişiklik — signing secret’ı yalnızca sistem yöneticisi belirleyebilir. Bir DBA artık secret’ı giremez ya da döndüremez; webhook URL’si ve enabled bayrağı DBA’lerde kalır. Mevcut secret’ı değiştirmek için yönetici, yürürlükteki secret’ı da girmek zorundadır — secret bilgisi, rotasyonu uçtan devralmadan ayıran tek şeydir. Gerekçe: HMAC yalnızca “çağıranın secret’ı bildiğini” kanıtlar, “şu kişi onayladı” demez; secret’ı kendi seçebilen bir DBA, kendi talebini bir meslektaşı adına onaylayıp denetim izine o kişinin adını yazdırabiliyordu. ChatOps’u zaten kurmuş kurulumlarda secret’ın yükseltmeden sonra bir kez döndürülmesi önerilir.

Aynı gerekçeyle entegrasyonu silmek de yalnızca sistem yöneticisinin işidir: yeniden kurmak için gereken secret’ı ancak bir yönetici girebildiği için, silme düğmesi bir DBA’in elinde takımın ChatOps’tan tek yönlü çıkışı olurdu. DBA’in gündelik, geri alınabilir kontrolü Enabled bayrağını kapatıp kaydetmektir.

Nasıl görünür

Bir talep gönderildiğinde QueryProxy; talep sahibi, bağlantı, SQL önizlemesi (400 karakterde kesilir; QUERYPROXY_CHAT_INCLUDE_SQL=false ile kapatılır) ve üç aksiyonla bir mesaj yayınlar: Approve, Reject ve Open in QueryProxy. Karardan sonra mesaj yerinde güncellenir — düğmeler kaybolur ve sonuç görünür; bayat bir mesajdan ikinci kez karar verilemez.

Slack’ten yapılan redler “Rejected via Slack by <isim>” genel gerekçesini kaydeder. Yazılı gerekçe için web arayüzünden reddedin.

Kırıcı değişiklik — bu sürümden önce gönderilmiş mesajlardaki düğmeler çalışmaz. Her Approve / Reject düğmesi artık, yalnızca o talebe bağlı, 24 saat ömürlü ve tek kullanımlık bir aksiyon token’ı taşır. Eski mesajlarda böyle bir token yoktur; tıklama doğrulanamadı mesajıyla geri çevrilir. O talepleri web arayüzünden karara bağlayın — yeni gönderilen talepler token’lı düğmelerle gelir.

Güvenlik

Slack’ten gelen her geri çağrı, herhangi bir şey olmadan önce doğrulanır:

  • İmza — X-Slack-Signature başlığı v0=HMAC_SHA256("v0:{timestamp}:{raw_body}", signing_secret) ile sabit zamanlı karşılaştırmayla eşleşmelidir.
  • Tekrar koruması — X-Slack-Request-Timestamp’e göre ±5 dakikadan eski istekler reddedilir.
  • Aksiyon token’ı — düğmenin taşıdığı token canlı, kullanılmamış ve tam olarak o talebe bağlı olmalıdır. Böylece geri çağrı, QueryProxy’nin gerçekten yayınladığı bir mesajı yanıtlar ve her mesaj yalnızca bir kez karar verir; secret’ı elinde tutmak tek başına yoktan bir karar uydurmaya ya da yakalanmış bir tıklamayı yeniden oynatmaya yetmez. Token karar gerçekten kaydedildikten sonra yakılır — yetkilendirmeye takılan bir tıklama kanalın hakkını harcamaz.
  • Kimlik — tıklayan Slack kullanıcısı, bir yöneticinin oluşturduğu eşleme üzerinden bir QueryProxy kullanıcısına çözülmeli; bu kullanıcı ya entegrasyonun takımına üye olup o takımda DBA rolünü taşımalı ya da admin olmalıdır. Eşlenmemiş veya yetkisiz kullanıcılar özel bir hata mesajı görür; hiçbir şey değişmez.
  • Kurallar — kendine onay Slack’te de aynen engellidir. Webde olduğu gibi admin’ler DBA rolü kuralını ve kendine onay engelini aşabilir; kuralı aşan bir admin onayı denetim günlüğünde işaretlenir.

Sahte veya bayat bir geri çağrı 401 döner ve hiçbir durumu değiştirmez. Webhook ucu ayrıca hız sınırlıdır.

Gezinmek için ok tuşları, açmak için Enter.