Best practices voor productie

Keychain abstraheert de ondertekeningsbackend, maar het beheren van een ondertekenaar in productie blijft jouw verantwoordelijkheid. Deze praktijken zijn van toepassing op alle backends; zie Een backend kiezen voor de selectie ervan.

Scheid hot- en cold-ondertekenaars

Gebruik een operationele ondertekenaar met laag saldo ("hot") voor frequente, geautomatiseerde transacties, en een aparte ondertekenaar met hoge waarde ("cold") voor treasury-bewegingen. Onderbouw de cold-ondertekenaar met MPC-bewaring of een cloud-HSM en vereis goedkeuringsbeleid voordat deze ondertekent. Omdat de interface identiek is, kan elke rol een andere backend gebruiken zonder de aanroeplocaties te wijzigen.

Roteer sleutels weloverwogen

Op Solana is de ondertekeningssleutel het accountadres, dus het roteren van een sleutel levert een nieuw adres op. Plan rotatie als een migratie: voorzie een nieuwe sleutel, wijs de relevante bevoegdheden opnieuw toe (of verplaats fondsen) naar het nieuwe adres, en pensioneer daarna de oude. Gebruik afzonderlijke sleutels per omgeving zodat devnet-sleutels nooit opnieuw worden gebruikt op mainnet.

Verleen minimale toegangsrechten

Beperk de inloggegevens van elke backend tot het minimum dat nodig is om te ondertekenen. Voor AWS KMS zijn dat kms:Sign, kms:DescribeKey en kms:GetPublicKey op de specifieke sleutel (de beschikbaarheidscontrole gebruikt de laatste twee); geef de voorkeur aan IAM-rollen boven statische inloggegevens. Pas hetzelfde principe toe op Vault-beleid en API-sleutels van beheerde wallets.

Plan voor beschikbaarheid

Externe backends zijn afhankelijk van een netwerkservice. Controleer de beschikbaarheid voordat je op een signer vertrouwt (isAvailable() in TypeScript, is_available() in Rust en Python, IsAvailable(ctx) in Go), probeer mislukte aanvragen die alleen ondertekenen opnieuw met backoff, en definieer een terugvaloptie voor storingen. Probeer een backend die ook uitzendt (broadcast) niet blindelings opnieuw (Crossmint, Fordefi native auto mode): zie Onbevestigde broadcasts afhandelen. Keychain dwingt HTTPS af voor geconfigureerde basis-URL's, weigert redirects en past een standaard time-out voor aanvragen toe.

Onbevestigde broadcasts afhandelen

Crossmint en Fordefi native auto mode ondertekenen en verzenden transacties server-side, dus een mislukte aanroep betekent niet dat er niets is aangekomen. Als de provider de transactie mogelijk heeft geaccepteerd, meldt Keychain BROADCAST_UNCONFIRMED (SignerError::BroadcastUnconfirmed in Rust). De fout bevat de transactie-ID van de provider wanneer het aanmaken is geaccepteerd, en bevat altijd de idempotentiesleutel waaronder het aanmaakverzoek is verstuurd, afgeleid van het bericht.

  • Stem eerst af met de provider aan de hand van de transactie-ID, voordat je iets anders doet.
  • Het opnieuw versturen van de byte-identieke transactie is veilig: de idempotentiesleutel voorkomt duplicaten.
  • Het opnieuw opbouwen van de transactie (bijvoorbeeld met een nieuwe blockhash) levert een nieuwe sleutel en dus een nieuwe overdracht op.

Bescherm geheimen en transport

  • Externe backends dwingen HTTPS af voor geconfigureerde basis-URL's en weigeren redirects. De enige uitzondering is Vault, dat gewoon HTTP accepteert op loopback, zodat een lokale vault server -dev werkt.
  • Verstrek API-sleutels, tokens en inloggegevens vanuit een geheimenbeheerder of omgevingsvariabelen — codeer ze nooit hard of leg ze vast in versiebeheer.
  • Keychain zuivert foutreacties om te voorkomen dat geheimen in logs terechtkomen; houd uw eigen logging vrij van onbewerkte inloggegevens en sleutelmateriaal.

Monitor en controleer ondertekening

Volg het slagingspercentage, de latentie en het aantal mislukkingen van ondertekening, en stel waarschuwingen in voor pieken — zie de statistieken in Productiegereedheid. Schakel auditlogs aan de providerzijde in (KMS, Vault of bewaarder) en vergelijk deze met de transacties die uw applicatie indient.

Weet wat Keychain controleert

  • Keychain valideert de ondertekeningsstap, niet je transactie: er is geen simulatie, geen controle van de transactie-inhoud en geen policy engine. Dwing dit af in je applicatie of via de beleidsinstellingen van de provider.
  • Fordefi native manual mode herschrijft de transactie (blockhash, Compute Budget- feeinstructies) voordat deze wordt ondertekend. Ga verder met de transactie die wordt teruggegeven, nooit met de transactie die je hebt ingediend, en voer deze uit vóór andere signers.
  • Rust zet tussenliggende sleutelbuffers op nul (zeroize); Python en Go kunnen dat niet. Behandel bij de Memory- backend in die talen het volledige procesgeheugen als gevoelig.
  • Bij Ledger is het scherm van het apparaat de enige betrouwbare beschrijving van wat er wordt ondertekend. Schakel de functie unsafe-debug of TRACE-logging voor solana_remote_wallet niet in op productie, aangezien beide details van apparaat en transactie loggen.

Bekijk het beveiligingsmodel voor het volledige plaatje.

Is this page helpful?

Inhoudsopgave

Pagina Bewerken
© 2026 Solana Foundation. Alle rechten voorbehouden.