Megosztás a következőn keresztül:


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

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_LEVELinfo. 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.

Megjelenések