Keychain abstrahoi allekirjoitustaustajärjestelmän, mutta allekirjoittajan käyttäminen tuotannossa on edelleen sinun vastuullasi. Nämä käytännöt koskevat kaikkia taustajärjestelmiä; katso Taustajärjestelmän valinta sopivan valitsemiseen.
Erota kuumat ja kylmät allekirjoittajat
Käytä pienellä saldolla toimivaa ("kuumaa") allekirjoittajaa toistuviin, automatisoituihin tapahtumiin ja erillistä korkean arvon ("kylmää") allekirjoittajaa treasury-siirtoihin. Turvaa kylmä allekirjoittaja MPC-säilyllä tai pilvi-HSM:llä ja vaadi hyväksymiskäytännöt ennen sen allekirjoitusta. Koska rajapinta on identtinen, kukin rooli voi käyttää eri taustajärjestelmää muuttamatta kutsupisteitä.
Kierrä avaimia harkitusti
Solanassa allekirjoitusavain on tilin osoite, joten avaimen kierto tuottaa uuden osoitteen. Suunnittele kierto migraationa: luo uusi avain, siirrä asiaankuuluvat valtuudet (tai varat) uuteen osoitteeseen ja poista sitten vanha käytöstä. Käytä eri ympäristöissä erillisiä avaimia, jotta devnet-avaimia ei koskaan käytetä uudelleen mainnetissä.
Myönnä vähimmäisoikeudet
Rajaa kunkin taustajärjestelmän tunnistetiedot minimiin, joka tarvitaan allekirjoittamiseen. AWS KMS:lle
se tarkoittaa kms:Sign-, kms:DescribeKey- ja kms:GetPublicKey-oikeuksia tietylle avaimelle
(saatavuustarkistus käyttää kahta jälkimmäistä); suosi IAM-rooleja
staattisten tunnistetietojen sijaan. Sovella samaa periaatetta Vault-käytäntöihin ja hallittuihin
lompakko-API-avaimiin.
Varaudu saatavuuteen
Etätaustajärjestelmät riippuvat verkkopalvelusta. Tarkista saatavuus ennen allekirjoittajaan
luottamista (isAvailable() TypeScriptissä, is_available() Rustissa ja Pythonissa,
IsAvailable(ctx) Gossa), yritä pelkästään allekirjoittavien taustajärjestelmien virheitä uudelleen viivästyksellä ja määritä
varapolku katkoksille. Älä yritä sokeasti uudelleen lähettävää taustajärjestelmää
(Crossmint, Fordefin natiivi automaattitila): katso
Käsittele vahvistamattomat lähetykset. Keychain
pakottaa HTTPS:n määritetyille perus-URL-osoitteille, hylkää uudelleenohjaukset ja soveltaa oletuspyyntöaikakatkaisua.
Käsittele vahvistamattomat lähetykset
Crossmint ja Fordefin natiivi automaattitila allekirjoittavat ja lähettävät tapahtuman palvelinpuolella, joten
epäonnistunut kutsu ei tarkoita, ettei mitään mennyt perille. Kun palveluntarjoaja on saattanut
hyväksyä tapahtuman, Keychain ilmoittaa BROADCAST_UNCONFIRMED
(SignerError::BroadcastUnconfirmed Rustissa). Virhe sisältää palveluntarjoajan
tapahtumatunnuksen, jos luonti hyväksyttiin, ja aina myös idempotenssiavaimen,
jolla luontipyyntö lähetettiin ja joka johdetaan viestistä.
- Täsmäytä tilanne palveluntarjoajan kanssa tapahtumatunnuksen avulla ennen kuin teet mitään muuta.
- Täsmälleen samanlaisen tapahtuman lähettäminen uudelleen on turvallista: idempotenssiavain estää kaksoiskäsittelyn.
- Tapahtuman uudelleenrakentaminen (esimerkiksi uudella blockhashilla) tuottaa uuden avaimen ja siten uuden siirron.
Suojaa salaisuudet ja siirto
- Etätaustajärjestelmät pakottavat HTTPS:n määritetyille perus-URL-osoitteille ja hylkäävät uudelleenohjaukset.
Ainoa poikkeus on Vault, joka sallii tavallisen HTTP:n loopback-osoitteessa, jotta paikallinen
vault server -devtoimii. - Toimita API-avaimet, tokenit ja tunnistetiedot salaisuudenhallintajärjestelmästä tai ympäristömuuttujista — älä koskaan kovakoodaa niitä tai tallenna niitä versionhallintaan.
- Keychain puhdistaa virhevastauksista salaisuudet, jotta ne eivät vuoda lokeihin; pidä omat lokisi vapaana raakatunnistetiedoista ja avainmateriaalista.
Valvo ja tarkasta allekirjoituksia
Seuraa allekirjoitusten onnistumisastetta, viivettä ja virhemääriä sekä hälytä piikkitilanteissa — katso mittarit kohdasta Tuotantovalmius. Ota käyttöön palveluntarjoajan puolen tarkastuslokit (KMS, Vault tai säilyttäjä) ja sovita ne yhteen sovelluksesi lähettämien tapahtumien kanssa.
Tiedä, mitä Keychain tarkistaa
- Keychain validoi allekirjoitusvaiheen, ei tapahtumaasi: simulointia, tapahtuman sisällön tarkistusta tai käytäntömoottoria ei ole. Toteuta nämä sovelluksessasi tai palveluntarjoajan käytäntöhallinnoissa.
- Fordefin natiivi manuaalitila kirjoittaa tapahtuman uudelleen (blockhash, Compute Budget -maksuohjeet) ennen sen allekirjoittamista. Jatka sen palauttamasta tapahtumasta, älä koskaan lähettämästäsi, ja suorita se ennen muita allekirjoittajia.
- Rust nollaa avainten väliaikaispuskurit; Python ja Go eivät pysty siihen. Kun käytät Memory- taustajärjestelmää näillä kielillä, käsittele koko prosessin muistia arkaluonteisena.
- Ledgerin kanssa laitteen näyttö on ainoa luotettava kuvaus siitä, mitä
allekirjoitetaan. Älä ota tuotannossa käyttöön
unsafe-debug-ominaisuutta taiTRACE-lokitustasolana_remote_wallet-moduulille, koska molemmat kirjaavat laitteen ja tapahtuman tietoja.
Katso tietoturvamalli kokonaiskuvan saamiseksi.
Is this page helpful?