Lumaktaw sa nilalaman
Seguridad

Ano ang nagpoprotekta sa isang tenant, sabihin nang tuwiran.

Walang sertipikasyong hindi namin hawak, walang pang-uri na kapalit ng kontrol. Narito ang ipinatutupad, kung saan ito ipinatutupad, at kung ano ang kulang.

Labing-anim na workspace, at walang anuman sa pagitanIsang apat-sa-apat na lattice ng mga workspace cell, bawat isa ay may operator, susi, bersiyon ng config, at audit log. Ang mga puwang sa pagitan nila ay iginuhit bilang solidong guhit, at walang landas na tumatawid dito kahit saan sa larawan. May isang cell na binuksan sa tatlong beses ang laki: isang repository na nakatali sa workspace, isang API key at isang webhook secret na parehong may key id, at isang audit log na dagdag-lamang na ipinatutupad ng trigger sa database.Mga workspaceEstruktural ang paghihiwalay01020304050607080910111213141516Isang workspaceworkspace_idkailangan ito ng bawat query sa data layerapi_key(kid)iniikot sa magkapatong na panahonwebhook_secret(kid)iniikot sa parehong paraanaudit_logdagdag lamang — ipinatutupad ng DB triggerWalang landas na tumatawid sa puwang — ang kawalan mismo ang puntoBawat query sa data layer ay kumukuha ng workspace. Walang call site na makakalaktaw nito.
Labing-anim na workspace. Walang linyang iginuhit sa pagitan ng dalawang kahon, dahil walang maisusulat sa pagitan nila.
Multi-tenancy

Estruktura ang paghihiwalay, hindi pagbabantay.

Bawat query sa datos na pag-aari ng isang workspace ay may dalang workspace id sa kondisyon nito. Walang daan ng akses na walang saklaw na puwedeng makalimutang gamitin.

Ang karaniwang pagkabigo ang inaalis ng disenyong ito: isang tamang sistema, na may bagong endpoint na isinulat nang minadali at nakaligtaan ang isang WHERE clause. Kung tumatanggi ang data layer na sumagot sa tanong na hindi nagpangalan ng workspace, hindi nagiging leak ang endpoint na iyon pagka-compile — hindi nga ito nagko-compile.

Ipinapako ng mga adbersaryong leak test ang katangiang ito sa halip na magtiwala sa kaugalian, dahil kasinghusay lang ng huling taong bumasa ng file ang isang kaugalian.

internal/tenancy · migrations/0002

Ang talaan

Nasa database ang pagiging puwede-lang-dagdagan ng audit log, hindi sa aplikasyon.

Nagre-raise ng error ang isang trigger sa anumang update o delete. Patakaran ang aplikasyong nagpapasyang huwag baguhin ang kasaysayan; kontrol ang database na tumatangging baguhin ito.

Ito ang pagkakaibang tinatanong ng auditor at karaniwang hindi masagot ng vendor. Kung ang tanging humahadlang sa pabalik na pag-edit ay wala lang code path na gumagawa nito, kaya iyon ng isang support script, isang migration, o isang operator na may console — at hindi malalaman ng log.

internal/tenancy · migrations/0002 audit_log_immutable()

Mga kredensyal

Umiikot ang mga key nang walang downtime. Hindi napa-phish ang pag-sign in.

Ang pag-ikot ng key na kailangang may maintenance window ay pag-ikot na hindi nangyayari.

Dalawang volume, at ang planong nasa pagitanDalawang isometric na volume na nakatayo sa dalawang magkahiwalay na tipak ng may guhit na lupa, at may patayong plano sa pagitan nila na nakikita mula sa gilid. Ang kaliwang volume ay sa operator, hati sa apat na kompartimento: Stripe, NOWPayments, bangko, at wallet. Ang kanang volume ay sa platform, hati sa ledger, mga run, mga claim, at outbox. Apat na linya ang tumatawid sa planong nasa pagitan, may label mismo sa plano: pangyayari, instruksiyon, resibo, at utos. Walang linyang may dalang pera, at ang kanang volume ay walang kompartimentong makakahawak ng balanse.Dalawang volume · isang plano · walang pintoSTRIPELedgerNOWPAYMENTSMga runBangkoMga claimWalletOutboxOperatorXEXHangganan ng kustodiyaPangyayariInstruksyonResiboUtosWalang volume na tumatawidNasa mga kompartimento ng operator ang pera at hindi kailanman kinokopya papunta sa amin.Apat na bagay ang tumatawid sa planong ito. Wala ni isa sa mga ito ang balanse, at wala ring susi.
Dalawang volume, isang plano sa pagitan. Walang pinto doon.
  1. 01

    Mga key id na nagsasapawan ang bisa

    May key id ang API key at webhook signing key ng bawat workspace. Habang umiikot, parehong may bisa ang luma at bago, kaya lilipat ka ayon sa sarili mong iskedyul at saka babawiin ang luma.

    internal/tenancy · internal/outbox/sign.go

  2. 02

    Passkey para sa mga miyembro at sa mga operator

    WebAuthn na kinakailangan ang user verification at discoverable credential — hindi opsyonal, dahil nasa harap mismo ng daloy ng pera ang mga token na ito. Hinahanap ng discoverable login ang account mula mismo sa kredensyal, kaya walang tinitipa at wala ring mapa-phish.

    internal/passkey

  3. 03

    Two-factor sa authenticator, tamang pag-iimbak

    Hindi puwedeng i-hash ang TOTP secret — muling kinukuwenta ng beripikasyon ang mga code mula rito — kaya sinesyelyuhan ang mga sikreto ng miyembro gamit ang AES-256-GCM sa ilalim ng subkey na naka-ukol sa konteksto, sa halip na itago nang hayag. Isinusulat pabalik ang counter ng tinanggap na code, kaya hindi na ito magagamit muli sa loob ng bisa nito.

    internal/membertotp · internal/secretbox

  4. 04

    I-hash kung kaya, iselyo kung hindi

    Hinahash ang password o recovery code, dahil ang kailangan lang sagutin ng platform ay “ito ba iyon?”. Ang sikretong kailangang mabasa muli ng platform ay sinesyelyuhan, at ang mga imbakang mas matanda pa sa konstruksyong ito ay inililipat na, hindi iniiwan sa dati.

    internal/secretbox

Papalabas na trapiko

Walang lumalabas sa URL na ikaw ang nag-configure.

Ang destinasyon ng isang webhook ay likas na input na naiimpluwensiyahan ng umaatake — URL iyon na tinipa ng tenant, at saka ito tatawagin ng platform mula sa loob ng sarili nitong network.

Pinapatakbo ng dispatcher ang egress guard bago ipadala ang request, sa halip na pagkatiwalaan ang hostname; iyon lang ang pagkakasunod na may saysay: ang tsek na ginawa matapos ang resolution, o ginawa sa teksto sa halip na sa aktuwal na address, ay siya mismong tsek na sadyang nilalampasan ng DNS rebinding. Pinapayagan lang ang loopback at pribadong destinasyon sa sandbox at sa end-to-end na pagsubok, at tahasang flag ang pagluwag na iyon, hindi paghula sa kapaligiran.

internal/outbox/ssrf.go · internal/outbox/dispatcher.go

Kustodiya

Hindi kami kustodyan, at tumatanggi ang code na maging kustodyan.

Walang pondo ng miyembro. Walang private key. Walang kredensyal ng platform sa loob ng paraan ng bayad ng isang tenant.

Sa iyo nagbabayad ang mga miyembro

Naka-configure ang bawat paraan ng bayad gamit ang sariling kredensyal ng tenant, sa sariling account ng tenant.

internal/rails

Tinatanggihan ng konpigurasyon ang sa amin

Tinatanggihan ang pag-iimbak ng kredensyal na katulad ng sa mismong platform. Umiiral ang tsek na ito dahil ang “gamitin muna natin ang sa atin” ang paraan kung paano nagiging institusyong pinansyal ang isang software vendor nang hindi sinasadya.

internal/rails

Nag-uutos ang claim, hindi ito naglilipat

Nirereserba ng isang claim ang eksaktong mga linya sa ledger at naglalabas ng isang tagubilin. Sa iyo ang pagsasagawa, at sa iyo rin ang perang isasagawa laban dito.

internal/claims

Pagkakakilanlan

Beripikasyon nang walang itinatabing dokumento.

Sa sarili mong account tumatakbo ang session ng provider. Ang bumabalik ay isang desisyon at isang handle na hindi na maibabalik.

Sapat lang ang handle na iyon para ipatupad ang isang tao, isang posisyon, at wala nang iba. Hindi ito sapat para buuin muli ang isang pagkakakilanlan, at iyon mismo ang punto: ang pinakaligtas na paraan ng pag-iingat ng scan ng pasaporte ay ang hindi pag-iingat nito, at hindi maibubunyag ng isang breach ang datos na hindi naman naitabi.

internal/verification

Hindi namin inaangkin

Ang mga hindi namin inaangkin.

Kung pinupunan mo ang isang vendor questionnaire, ito ang mga hanay na babagsak kami. Mas mabuting malaman dito kaysa sa ikaapat na buwan.

Wala kaming hawak na SOC 2 report. Wala pang penetration test na isinagawa ng ikatlong partido. Wala kaming inilalathalang pangako sa availability, dahil wala pa ritong sumusukat nito. Nagbibigay ang XEX ng mga kontrol at talaan; hindi ito nagbibigay ng lisensya, at hindi ito legal na payo. Kung legal ba ang iyong compensation plan sa bansang pinagbebentahan mo, ikaw ang dapat magpatunay niyan, at iyan mismo ang hinihingi ng aming mga tuntunin ng platform.
Pag-uulat ng kahinaan
Wala pang bug-bounty program ngayon, at walang bayad na iniaalok para sa isang ulat. Iulat ang kahinaan sa pamamagitan ng daan ng seguridad sa pahina ng kontak; kukumpirmahin namin ang pagtanggap at sasabihin kung ano ang ginagawa namin. Pakiusap, huwag sumubok sa workspace ng isang tenant na live — kumuha ng libreng sandbox, na siyang buong produkto, at doon sumubok.

See /contact#security

Susunod

Ipadala ang questionnaire, o kumuha ng sandbox at tingnan mo mismo.

Parehong maayos. Mas mabilis lang ang isa.