JavaScript için Azure Gizli Kayıt Defteri REST istemci kitaplığı - sürüm 1.0.0
Azure Gizli Kayıt Defteri, sabit, kurcalamaya karşı dayanıklı bir kayıt defterinde günlüğe kaydetmeye yönelik bir hizmet sağlar. Azure Gizli Bilgi İşlem portföyünün bir parçası olarak, Azure Gizli Kayıt Defteri SGX kuşatmalarında çalışır. Microsoft Research'ün Gizli Konsorsiyum Çerçevesi üzerine kurulmuştur.
Bu kitaplığı kullanmak için lütfen hizmetin belgelerine ve Rest istemci belgelerimize yoğun bir şekilde güvenin
Önemli bağlantılar:
Başlarken
Şu anda desteklenen ortamlar
- Node.js sürüm 14.x.x veya üzeri
Önkoşullar
- Bir Azure aboneliği.
- Azure Gizli Kayıt Defteri'nin çalışan bir örneği.
- Gizli Kayıt Defteri'nde kayıtlı bir kullanıcı, genellikle ARM kaynağı oluşturma sırasında atanmış ve ayrıcalıklara sahip
Administrator
.
@azure-rest/confidential-ledger
paketini yükleyin
ile npm
JavaScript için Azure Condifential Ledger REST istemci kitaplığını yükleyin:
npm install @azure-rest/confidential-ledger
İstemci oluşturma ve kimlik doğrulaması
Azure Active Directory kullanma
Bu belgede, Azure Active Directory aracılığıyla Gizli Kayıt Defteri'nde kimlik doğrulaması yapmak için DefaultAzureCredential kullanımı gösterilmektedir. Ortam değişkenlerini Azure Portal'da bulabilirsiniz. Ancak, ConfidentialLedger
@azure/kimlik kimlik bilgilerini kabul eder.
DefaultAzureCredential
çoğu Azure SDK istemci senaryolarını otomatik olarak işler. Başlamak için AAD uygulamasının istemci kimliği, kiracı kimliği ve istemci gizli dizisi değerlerini ortam değişkenleri olarak ayarlayın: AZURE_CLIENT_ID
, AZURE_TENANT_ID
, AZURE_CLIENT_SECRET
.
Ardından istemcinin DefaultAzureCredential
ConfidentialLedger
kimliğini doğrulayabilecektir.
İstemciyi oluşturmak için Gizli Kayıt Defterinizin URL'si ve kimliği de gerekir. Bu URL'yi Azure CLI veya Azure Portal'dan alabilirsiniz.
Gizli Kayıt Defterleri güvenli bir şekilde oluşturulan ve bir kapanımda depolanan otomatik olarak imzalanan sertifikaları kullandığından, her Gizli Kayıt Defteri için imza sertifikasının önce Gizli Kayıt Defteri Kimlik Hizmeti'nden alınması gerekir.
import ConfidentialLedger, { getLedgerIdentity } from "../../src";
const { ledgerIdentityCertificate } = await getLedgerIdentity(
// for example, test-ledger-name
LEDGER_IDENTITY,
// for example, https://identity.confidential-ledger.core.azure.com
IDENTITY_SERVICE_URL
);
const credential = new DefaultAzureCredential();
// ENDPOINT example: https://test-ledger-name.confidential-ledger.azure.com
const ledgerClient = ConfidentialLedger(ENDPOINT, ledgerIdentityCertificate, credential);
İstemci sertifikası kullanma
Azure Active Directory'ye alternatif olarak, istemciler Azure Active Directory belirteci yerine karşılıklı TLS'de bir istemci sertifikasıyla kimlik doğrulamayı seçebilir. Bu tür bir CertificateCredential
kimlik doğrulaması için istemciye, her ikisi de PEM biçiminde bir sertifika ve özel anahtardan oluşan bir geçirilmelidir.
import ConfidentialLedger, { getLedgerIdentity } from "@azure-rest/confidential-ledger";
// Get the signing certificate from the Confidential Ledger Identity Service
const { ledgerIdentityCertificate } = await getLedgerIdentity(
LEDGER_IDENTITY,
IDENTITY_SERVICE_URL
);
// both cert (certificate key) and key (private key) are in PEM format
const cert = PUBLIC_KEY;
const key = PRIVATE_KEY;
// Create the Confidential Ledger Client
// ENDPOINT example: https://test-ledger-name.confidential-ledger.azure.com
const ledgerClient = ConfidentialLedger(env.ENDPOINT, ledgerIdentityCertificate, {
tlsOptions: {
cert,
key,
},
});
Önemli kavramlar
Defter girişleri ve hareketleri
Azure Gizli Kayıt Defteri'ne yapılan her yazma işlemi, hizmette sabit bir kayıt defteri girişi oluşturur. İşlem olarak da adlandırılan yazma işlemleri, her yazma işlemiyle artan işlem kimlikleriyle benzersiz olarak tanımlanır. Yazıldıktan sonra, kayıt defteri girişleri herhangi bir zamanda alınabilir.
Makbuzlar
Gizli Kayıt Defteri'nde yapılan durum değişiklikleri, Merkle ağacı olarak adlandırılan bir veri yapısına kaydedilir. Yazma işlemlerinin doğru kaydedildiğini kriptografik olarak doğrulamak için herhangi bir işlem kimliği için merkle kanıtı veya alındı bilgisi alınabilir.
Koleksiyonlar
Çoğu kullanım örneğinde tek bir kayıt defteri olsa da, anlamlı veya mantıksal olarak farklı veri gruplarının aynı Gizli Kayıt Defteri'nde depolanması gerektiğinde toplama özelliğini sağlarız.
Kayıt defteri girişleri, koleksiyon tanımlayıcıları tarafından alınır. Gizli Kayıt Defteri, bir koleksiyon belirtilmeden gönderilen girişler için her zaman sabit, hizmet tarafından belirlenen bir koleksiyon kimliği kabul eder.
Kullanıcılar
Kullanıcılar Azure yerine doğrudan Gizli Kayıt Defteri ile yönetilir. Kullanıcılar AAD tabanlı olabilir, AAD nesne kimlikleriyle veya sertifika tabanlı olabilir ve PEM sertifika parmak izleriyle tanımlanır.
Gizli bilgi işlem
Azure Gizli Bilgi İşlem , verilerinizi bulutta işlenirken yalıtmanıza ve korumanıza olanak tanır. Azure Gizli Kayıt Defteri, Azure Gizli Bilgi İşlem sanal makinelerinde çalışır ve bu sayede kullanımdaki verilerin şifrelenmesiyle daha güçlü veri koruması sağlar.
Gizli Konsorsiyum Çerçevesi
Azure Gizli Kayıt Defteri, Microsoft Research'ün açık kaynak Gizli Konsorsiyum Çerçevesi (CCF) üzerine kurulmuştur. CCF'nin altında uygulamalar, uygulama işlemini değiştirmek ve yönetmek için teklif gönderebilen bir üye konsorsiyumu tarafından yönetilir. Azure Gizli Kayıt Defteri'nde Microsoft Azure bir üye kimliğine sahip olur ve gizli kayıt defterindeki iyi durumda olmayan düğümleri değiştirme veya kapanım kodunu yükseltme gibi idare eylemlerini gerçekleştirmesine olanak sağlar.
Örnekler
Bu bölümde aşağıdaki örnekler için kod parçacıkları bulunur:
- Defter Girişini Deftere Naklet
- Hareket Kimliğine Göre Defter Girişi Alma
- Tüm Defter Girişlerini Al
- Tüm Koleksiyonları Al
- Koleksiyon İçin İşlemleri Alma
- Liste Kapanım Tırnakları
Defter Girişini Deftere Naklet
const entry: LedgerEntry = {
contents: contentBody,
};
const ledgerEntry: PostLedgerEntryParameters = {
contentType: "application/json",
body: entry,
};
const result = await client.path("/app/transactions").post(ledgerEntry);
Hareket Kimliğine Göre Defter Girişi Alma
const status = await client
.path("/app/transactions/{transactionId}/status", transactionId)
.get();
Tüm Defter Girişlerini Al
const ledgerEntries = await client.path("/app/transactions");
Tüm Koleksiyonları Al
const result = await client.path("/app/collections").get();
Koleksiyon İçin İşlemleri Alma
const getLedgerEntriesParams = { queryParameters: { collectionId: "my collection" } };
const ledgerEntries = await client.path("/app/transactions").get(getLedgerEntriesParams);
Liste Kapanım Tırnakları
// Get enclave quotes
const enclaveQuotes = await confidentialLedger.path("/app/enclaveQuotes").get();
// Check for non-success response
if (enclaveQuotes.status !== "200") {
throw enclaveQuotes.body.error;
}
// Log all the enclave quotes' nodeId
Object.keys(enclaveQuotes.body.enclaveQuotes).forEach((key) => {
console.log(enclaveQuotes.body.enclaveQuotes[key].nodeId);
});
Tam Örnek
import ConfidentialLedger, { getLedgerIdentity } from "@azure-rest/confidential-ledger";
import { DefaultAzureCredential } from "@azure/identity";
export async function main() {
// Get the signing certificate from the Confidential Ledger Identity Service
const ledgerIdentity = await getLedgerIdentity("<my-ledger-id>");
// Create the Confidential Ledger Client
const confidentialLedger = ConfidentialLedger(
"https://<ledger-name>.eastus.cloudapp.azure.com",
ledgerIdentity.ledgerIdentityCertificate,
new DefaultAzureCredential()
);
// Get enclave quotes
const enclaveQuotes = await confidentialLedger.path("/app/enclaveQuotes").get();
// Check for non-success response
if (enclaveQuotes.status !== "200") {
throw enclaveQuotes.body.error;
}
// Log all the enclave quotes' nodeId
Object.keys(enclaveQuotes.body.enclaveQuotes).forEach((key) => {
console.log(enclaveQuotes.body.enclaveQuotes[key].nodeId);
});
}
main().catch((err) => {
console.error(err);
});
Sorun giderme
Günlüğe Kaydetme
Günlüğün etkinleştirilmesi hatalarla ilgili yararlı bilgilerin ortaya çıkarılmasına yardımcı olabilir. HTTP isteklerinin ve yanıtlarının günlüğünü görmek için ortam değişkenini AZURE_LOG_LEVEL
olarak info
ayarlayın. Alternatif olarak, günlüğü çalışma zamanında içinde çağrılarak setLogLevel
@azure/logger
etkinleştirilebilir:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Günlükleri etkinleştirme hakkında daha ayrıntılı yönergeler için @azure/günlükçü paketi belgelerine bakabilirsiniz.
Sonraki adımlar
Bu kitaplığın nasıl kullanılacağına ilişkin ayrıntılı örnekler için lütfen samples dizinine göz atın.
Katkıda bulunma
Bu kitaplığa katkıda bulunmak isterseniz, kodu derleme ve test etme hakkında daha fazla bilgi edinmek için lütfen katkıda bulunma kılavuzunu okuyun.
İlgili projeler
Azure SDK for JavaScript
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin