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 allekirjoittamiseen tarvittavaan minimiin. AWS KMS:n osalta
tämä tarkoittaa oikeuksia kms:Sign, kms:DescribeKey ja kms:GetPublicKey kyseiseen avaimeen
(saatavuustarkistus käyttää kahta jälkimmäistä). Suosi IAM-rooleja staattisten
tunnistetietojen sijaan. Noudata samaa periaatetta Vault-käytännöissä ja hallinnoitujen lompakkojen API-
avaimissa.
Varaudu saatavuuteen
Etätaustajärjestelmät riippuvat verkkopalvelusta. Tarkista saatavuus ennen kuin luotat
allekirjoittajaan (isAvailable() TypeScriptissä, is_available() Rustissa ja Pythonissa,
IsAvailable(ctx) Go:ssa), toista pelkästään allekirjoittavien kutsujen epäonnistumiset backoff-viiveellä ja määritä
vaihtoehtoinen reitti katkostilanteita varten. Älä toista sokeasti lähettävää taustajärjestelmää
(Crossmint, Fordefin natiivi auto-tila): katso
Vahvistamattomien lähetysten käsittely. Keychain
pakottaa HTTPS:n määritetyille perus-URL-osoitteille, hylkää uudelleenohjaukset ja käyttää oletusarvoista
pyyntöjen aikakatkaisua.
Vahvistamattomien lähetysten käsittely
Crossmint ja Fordefin natiivi auto-tila allekirjoittavat ja lähettävät transaktion palvelinpuolella, joten
epäonnistunut kutsu ei tarkoita, ettei mitään ole mennyt perille. Kun palveluntarjoaja on voinut hyväksyä
transaktion, Keychain raportoi virheen BROADCAST_UNCONFIRMED
(Rustissa SignerError::BroadcastUnconfirmed). Virhe sisältää palveluntarjoajan
transaktiotunnuksen, jos luontipyyntö hyväksyttiin, ja aina myös idempotenssiavaimen,
jolla luontipyyntö lähetettiin ja joka johdetaan viestistä.
- Täsmäytä tilanne palveluntarjoajan kanssa transaktiotunnuksen avulla ennen kuin teet mitään muuta.
- Tavu tavulta identtisen transaktion uudelleenlähetys on turvallista: idempotenssiavain poistaa kaksoiskappaleet.
- Transaktion 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 hyväksyy pelkän 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 transaktiotasi: simulointia, transaktion sisällön tarkistusta tai käytäntömoottoria ei ole. Toteuta nämä omassa sovelluksessasi tai palveluntarjoajan käytäntöhallinnassa.
- Fordefin natiivi manuaalitila muokkaa transaktiota (blockhash, Compute Budget -maksuohjeet) ennen sen allekirjoittamista. Jatka sen palauttamasta transaktiosta, älä koskaan lähettämästäsi, ja suorita se ennen muita allekirjoittajia.
- Rust nollaa avainten välipuskurit muistista; Python ja Go eivät pysty siihen. Kun käytät Memory- taustajärjestelmää näillä kielillä, pidä 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-lokitusta moduulillesolana_remote_wallet, sillä molemmat kirjaavat laitteen ja transaktion tiedot lokiin.
Katso tietoturvamalli kokonaiskuvaa varten.
Is this page helpful?