Azure Confidential Ledger REST ügyfélkódtár JavaScripthez – 1.0.0-s verzió
Az Azure Confidential Ledger szolgáltatást biztosít a nem módosítható, illetéktelen módosításokat ellenőrző tranzakciónaplóba való naplózáshoz. Az Azure Confidential Computing-portfólió részeként az Azure Confidential Ledger SGX-enklávékban fut. A Microsoft Research Confidential Consortium Framework keretrendszerére épül.
A kódtár használatához nagy mértékben támaszkodjon a szolgáltatás dokumentációjára és a Rest-ügyfél dokumentációjára
Főbb hivatkozások:
Első lépések
Jelenleg támogatott környezetek
- Node.js 14.x.x vagy újabb verzió
Előfeltételek
- Egy Azure-előfizetés.
- Az Azure Confidential Ledger futó példánya.
- Egy regisztrált felhasználó a Bizalmas tranzakciónaplóban, amely általában ARM-erőforrás létrehozásakor van hozzárendelve, jogosultságokkal
Administrator
.
Telepítse a(z) @azure-rest/confidential-ledger
csomagot
Telepítse a JavaScripthez készült Azure Condifential Ledger REST-ügyfélkódtárat a következővel npm
:
npm install @azure-rest/confidential-ledger
Az ügyfél létrehozása és hitelesítése
Az Azure Active Directory használata
Ez a dokumentum bemutatja, hogy a DefaultAzureCredential használatával hitelesíthető a bizalmas tranzakciónaplóban az Azure Active Directoryn keresztül. A környezeti változókat az Azure Portalon találja. ConfidentialLedger
A @azure/identitás hitelesítő adatait azonban elfogadja.
DefaultAzureCredential
automatikusan kezeli a legtöbb Azure SDK-ügyfélforgatókönyvet. Elsőként állítsa be az AAD-alkalmazás ügyfél-azonosítójának, bérlőazonosítójának és titkos ügyfélkulcsának értékeit környezeti változóként: AZURE_CLIENT_ID
, AZURE_TENANT_ID
, AZURE_CLIENT_SECRET
.
DefaultAzureCredential
Ezután hitelesíteni tudja az ügyfeletConfidentialLedger
.
Az ügyfél létrehozásához szükség van a Confidential Ledger URL-címére és azonosítójára is, amelyet az Azure CLI-ből vagy az Azure Portalról szerezhet be.
Mivel a bizalmas tranzakciónaplók biztonságosan létrehozott és enklávéban tárolt önaláírt tanúsítványokat használnak, az egyes bizalmas tranzakciónaplók aláíró tanúsítványát először le kell kérni a Confidential Ledger Identity Service-ből.
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);
Ügyféltanúsítvány használata
Az Azure Active Directory helyett az ügyfelek dönthetnek úgy, hogy kölcsönös TLS-ben hitelesítik magukat egy ügyféltanúsítvánnyal az Azure Active Directory-jogkivonat helyett. Az ilyen típusú hitelesítéshez az ügyfelet át kell adni egy CertificateCredential
tanúsítványból és egy titkos kulcsból álló tanúsítványból, mind PEM formátumban.
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,
},
});
Fő fogalmak
Főkönyvi tételek és tranzakciók
Az Azure Confidential Ledgerbe történő minden írás egy nem módosítható tranzakciónapló-bejegyzést hoz létre a szolgáltatásban. Az írásokat( más néven tranzakciókat) egyedileg azonosítják az egyes írásokkal növekvő tranzakcióazonosítók. Írás után a tranzakciónapló-bejegyzések bármikor lekérhetők.
Nyugták
A bizalmas tranzakciónapló állapotváltozásai egy Merkle-fának nevezett adatstruktúrába kerülnek. Ha kriptográfiailag ellenőrizni szeretné, hogy az írások helyesen lettek-e mentve, lekérhető egy Merkle-igazolás vagy nyugta bármely tranzakcióazonosítóhoz.
Gyűjtemények
Bár a legtöbb használati eset egy tranzakciónaplót foglal magában, a gyűjtési funkciót abban az esetben biztosítjuk, ha szemantikailag vagy logikailag különböző adatcsoportokat kell ugyanabban a bizalmas tranzakciónaplóban tárolni.
A tranzakciónapló-bejegyzéseket a rendszer a gyűjteményazonosítójuk alapján kéri le. A Confidential Ledger mindig egy állandó, szolgáltatás által meghatározott gyűjteményazonosítót fog feltételezni a gyűjtemény megadása nélkül elküldött bejegyzésekhez.
Felhasználók
A felhasználók kezelése közvetlenül a Bizalmas tranzakciónaplóval történik, nem pedig az Azure-on keresztül. A felhasználók lehetnek AAD-alapúak, az AAD-objektumazonosítójuk vagy a tanúsítványalapúak, amelyeket a PEM-tanúsítvány ujjlenyomata azonosít.
Bizalmas számítások
Az Azure Confidential Computing lehetővé teszi az adatok elkülönítését és védelmét a felhőben történő feldolgozásuk során. Az Azure Confidential Ledger Azure Confidential Computing virtuális gépeken fut, így erősebb adatvédelmet biztosít a használatban lévő adatok titkosításával.
Confidential Consortium Framework
Az Azure Confidential Ledger a Microsoft Research nyílt forráskódú Confidential Consortium Framework (CCF) keretrendszerére épül. A CCF értelmében az alkalmazásokat tagokból álló konzorcium kezeli, amely javaslatokat nyújthat be az alkalmazásművelet módosítására és szabályozására. Az Azure Confidential Ledgerben a Microsoft Azure rendelkezik egy tagidentitással, amely lehetővé teszi olyan irányítási műveletek végrehajtását, mint a nem kifogástalan állapotú csomópontok cseréje a Bizalmas tranzakciónaplóban, vagy az enklávékód frissítése.
Példák
Ez a szakasz a következő minták kódrészleteit tartalmazza:
- Könyvelési tétel
- Tranzakcióazonosító szerinti tranzakció tételének lekérése
- Az összes tranzakciónapló-tétel lekérése
- Az összes gyűjtemény lekérése
- Gyűjtemény tranzakcióinak lekérése
- Enklávé-idézetek listázása
Könyvelési tétel
const entry: LedgerEntry = {
contents: contentBody,
};
const ledgerEntry: PostLedgerEntryParameters = {
contentType: "application/json",
body: entry,
};
const result = await client.path("/app/transactions").post(ledgerEntry);
Tranzakcióazonosító szerinti tranzakció tételének lekérése
const status = await client
.path("/app/transactions/{transactionId}/status", transactionId)
.get();
Az összes tranzakciónapló-tétel lekérése
const ledgerEntries = await client.path("/app/transactions");
Az összes gyűjtemény lekérése
const result = await client.path("/app/collections").get();
Gyűjtemény tranzakcióinak lekérése
const getLedgerEntriesParams = { queryParameters: { collectionId: "my collection" } };
const ledgerEntries = await client.path("/app/transactions").get(getLedgerEntriesParams);
Enklávé-idézetek listázása
// 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);
});
Teljes példa
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);
});
Hibaelhárítás
Naplózás
A naplózás engedélyezése hasznos információkat deríthet fel a hibákról. A HTTP-kérések és -válaszok naplójának megtekintéséhez állítsa a környezeti változót értékre AZURE_LOG_LEVEL
info
. A naplózás futásidőben is engedélyezhető a következő hívásával setLogLevel
@azure/logger
:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
A naplók engedélyezésére vonatkozó részletesebb utasításokért tekintse meg a @azure/logger csomag dokumentációját.
Következő lépések
A kódtár használatára vonatkozó részletes példákért tekintse meg a mintakönyvtárat.
Közreműködés
Ha hozzá szeretne járulni ehhez a kódtárhoz, olvassa el a közreműködői útmutatót , amelyből többet is megtudhat a kód buildeléséhez és teszteléséhez.
Kapcsolódó projektek
Azure SDK for JavaScript