Keychain imzalama arka ucunu soyutlar; ancak bir imzalayıcıyı üretim ortamında işletmek hâlâ sizin sorumluluğunuzdadır. Bu uygulamalar tüm arka uçlar için geçerlidir; bir arka uç seçmek için bkz. Arka uç seçimi.
Sıcak ve soğuk imzalayıcıları ayırın
Sık gerçekleştirilen otomatik işlemler için düşük bakiyeli bir operasyonel ("sıcak") imzalayıcı, hazine transferleri için ise ayrı bir yüksek değerli ("soğuk") imzalayıcı kullanın. Soğuk imzalayıcıyı MPC saklama veya bir bulut HSM ile destekleyin ve imzalamadan önce onay politikaları zorunlu kılın. Arayüz aynı olduğundan, her rol çağrı noktalarını değiştirmeden farklı bir arka uç kullanabilir.
Anahtarları planlı biçimde döndürün
Solana'da imzalama anahtarı aynı zamanda hesap adresidir; dolayısıyla bir anahtarı döndürmek yeni bir adres oluşturur. Rotasyonu bir geçiş olarak planlayın: yeni bir anahtar sağlayın, ilgili yetkileri (veya fonları) yeni adrese yeniden atayın, ardından eskisini devre dışı bırakın. Her ortam için ayrı anahtarlar kullanarak devnet anahtarlarının mainnet'te hiçbir zaman yeniden kullanılmamasını sağlayın.
En az ayrıcalıklı erişim sağlayın
Her arka ucun kimlik bilgilerini yalnızca imzalamak için gereken minimum düzeyle sınırlandırın. AWS KMS için bu, belirli anahtar üzerinde kms:Sign, kms:DescribeKey ve kms:GetPublicKey izinleridir
(kullanılabilirlik kontrolü son ikisini kullanır); statik kimlik bilgileri yerine IAM rollerini tercih edin. Aynı ilkeyi Vault politikalarına ve yönetilen cüzdan API
anahtarlarına da uygulayın.
Kullanılabilirliği planlayın
Uzak arka uçlar bir ağ hizmetine bağlıdır. Bir imzalayıcıya güvenmeden önce kullanılabilirliğini kontrol edin
(TypeScript'te isAvailable(), Rust ve Python'da is_available(), Go'da IsAvailable(ctx)), yalnızca imzalama yapan arka uçlardaki hataları geri çekilme (backoff) ile yeniden deneyin ve kesintiler için bir yedek yol belirleyin. Yayın yapan bir arka ucu (Crossmint, Fordefi native auto mode) gelişigüzel yeniden denemeyin: bkz.
Onaylanmamış yayınları ele alma. Keychain,
yapılandırılmış temel URL'lerde HTTPS zorunlu kılar, yönlendirmeleri reddeder ve varsayılan bir
istek zaman aşımı uygular.
Onaylanmamış yayınları ele alma
Crossmint ve Fordefi native auto mode, imzalama ve yayınlamayı sunucu tarafında yapar; dolayısıyla başarısız bir çağrı, hiçbir şeyin ağa ulaşmadığı anlamına gelmez. Sağlayıcı işlemi kabul etmiş olabilecekse Keychain BROADCAST_UNCONFIRMED hatasını bildirir
(Rust'ta SignerError::BroadcastUnconfirmed). Hata, oluşturma isteği kabul edildiğinde sağlayıcının işlem kimliğini taşır; ayrıca mesajdan türetilen ve oluşturma isteğinin gönderildiği idempotency anahtarını her zaman taşır.
- Başka herhangi bir şey yapmadan önce işlem kimliğini kullanarak sağlayıcıyla mutabakat sağlayın.
- Bayt düzeyinde aynı işlemi yeniden göndermek güvenlidir: idempotency anahtarı bunu tekilleştirir.
- İşlemi yeniden oluşturmak (örneğin yeni bir blockhash ile) yeni bir anahtar ve dolayısıyla yeni bir transfer üretir.
Gizli bilgileri ve aktarımı koruyun
- Uzak arka uçlar, yapılandırılmış temel URL'lerde HTTPS zorunlu kılar ve yönlendirmeleri reddeder.
Tek istisna Vault'tur; yerel bir
vault server -devçalışabilsin diye loopback üzerinde düz HTTP'yi kabul eder. - API anahtarlarını, token'ları ve kimlik bilgilerini bir gizli bilgi yöneticisinden veya ortam değişkenlerinden sağlayın — bunları hiçbir zaman doğrudan koda gömmeyIn veya kaynak denetimine işlemeyin.
- Keychain, hata yanıtlarını gizli bilgilerin günlüklere sızmasını önlemek amacıyla arındırır; kendi günlüklerinizi ham kimlik bilgileri ve anahtar materyalinden uzak tutun.
İmzalamayı izleyin ve denetleyin
İmzalama başarı oranını, gecikmeyi ve hata sayısını takip edin, ani artışlarda uyarı alın — bkz. Üretime Hazırlık içindeki metrikler. Sağlayıcı tarafı denetim günlüklerini (KMS, Vault veya saklama sağlayıcısı) etkinleştirin ve bunları uygulamanızın gönderdiği işlemlerle karşılaştırın.
Keychain'in neleri denetlediğini bilin
- Keychain, işleminizi değil imzalama adımını doğrular: simülasyon, işlem içeriği kontrolü ve politika motoru yoktur. Bunları uygulamanızda veya sağlayıcının politika denetimlerinde uygulayın.
- Fordefi native manual mode, işlemi imzalamadan önce yeniden yazar (blockhash, Compute Budget ücret talimatları). Gönderdiğiniz işlemden değil, döndürülen işlemden devam edin ve bunu diğer imzalayıcılardan önce çalıştırın.
- Rust ara anahtar arabelleklerini sıfırlar (zeroize); Python ve Go bunu yapamaz. Bu dillerde Memory arka ucunu kullanırken tüm işlem belleğini hassas kabul edin.
- Ledger ile, neyin imzalandığına dair güvenilir tek açıklama cihaz ekranıdır. Üretim ortamında
unsafe-debugözelliğini veyasolana_remote_walletiçinTRACEgünlüğünü etkinleştirmeyin; her ikisi de cihaz ve işlem ayrıntılarını günlüğe kaydeder.
Tüm tablo için güvenlik modeline bakın.
Is this page helpful?