Share via


Inicio rápido: Crear un recurso Azure Managed CCF mediante el SDK de Azure para JavaScript y TypeScript

Microsoft Azure Managed CCF (Managed CCF) es un servicio nuevo y muy seguro para implementar aplicaciones confidenciales. Para obtener más información sobre Azure Managed CCF, consulte Acerca de Azure Managed Confidential Consortium Framework.

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Documentación de referencia de la API | Código fuente de la biblioteca | Paquete (npm)

Requisitos previos

Instalación

En este artículo de inicio rápido se usa la biblioteca de identidades de Azure, junto con la CLI de Azure o Azure PowerShell, para autenticar al usuario en los servicios de Azure. Los desarrolladores también pueden usar Visual Studio o Visual Studio Code para autenticar las llamadas. Para más información, consulte Autenticación del cliente con la biblioteca cliente de Azure Identity.

Inicio de sesión en Azure

Inicie sesión en Azure mediante el comando az login de la CLI de Azure o el cmdlet Connect-AzAccount de Azure PowerShell.

az login

Si la CLI o PowerShell pueden abrir el explorador predeterminado, lo harán y cargarán una página de inicio de sesión de Azure. En caso contrario, visite https://aka.ms/devicelogin y escriba el código de autorización que se muestra en el terminal.

Si se le pide, inicie sesión con las credenciales de su cuenta en el explorador.

Inicialización de un nuevo proyecto de npm

En un terminal o símbolo del sistema, cree una carpeta de proyecto adecuada e inicialice un npm proyecto. Puede omitir este paso si tiene un proyecto de nodo existente.

cd <work folder>
npm init -y

Instalación de los paquetes

Instalar la biblioteca cliente de identidades de Azure Active Directory.

npm install --save @azure/identity

Instalar la biblioteca cliente del plano de administración de Azure Confidential Ledger.

npm install -save @azure/arm-confidentialledger@1.3.0-beta.1

Instalación global del compilador y las herramientas de TypeScript

npm install -g typescript

Crear un grupo de recursos

Un grupo de recursos es un contenedor lógico en el que se implementan y se administran los recursos de Azure. Use el cmdlet New-AzResourceGroup de Azure PowerShell para crear un grupo de recursos llamado myResourceGroup en la ubicación southcentralus.

New-AzResourceGroup -Name "myResourceGroup" -Location "SouthCentralUS"

Registrar el proveedor de recursos

El tipo de recurso CCF administrado de Azure debe estar registrado en la suscripción antes de crear un recurso.

az feature registration create --namespace Microsoft.ConfidentialLedger --name ManagedCCF

az provider register --namespace Microsoft.ConfidentialLedger

Crear miembros

Genere un par de claves para el miembro. Una vez completados los siguientes comandos, la clave pública del miembro se guarda en member0_cert.pem y la clave privada se guarda en member0_privk.pem.

openssl ecparam -out "member0_privk.pem" -name "secp384r1" -genkey
openssl req -new -key "member0_privk.pem" -x509 -nodes -days 365 -out "member0_cert.pem" -"sha384" -subj=/CN="member0"

Crear la aplicación JavaScript

Usar la biblioteca cliente del plano de administración

El SDK de Azure para JavaScript y la biblioteca typeScript azure/arm-confidentialledger permite operaciones en recursos de CCF administrados, como la creación y eliminación, enumerar los recursos asociados a una suscripción y ver los detalles de un recurso específico.

Para ejecutar los ejemplos siguientes, guarde los fragmentos de código en un archivo con una extensión en la .ts carpeta del proyecto y compilelo como parte del proyecto de TypeScript o compile el script en JavaScript por separado ejecutando:

tsc <filename.ts>

El archivo JavaScript compilado tendrá el mismo nombre, pero una *.js extensión. A continuación, ejecute el script en nodeJS:

node <filename.js>

El código typeScript de ejemplo siguiente crea y ve las propiedades de un recurso CCF administrado.

import  { ConfidentialLedgerClient, ManagedCCFProperties, ManagedCCF, KnownLanguageRuntime, DeploymentType, MemberIdentityCertificate } from "@azure/arm-confidentialledger";
import { DefaultAzureCredential } from "@azure/identity";

// Please replace these variables with appropriate values for your project
const subscriptionId = "0000000-0000-0000-0000-000000000001";
const rgName = "myResourceGroup";
const ledgerId = "testApp";
const memberCert0 = "-----BEGIN CERTIFICATE-----\nMIIBvjCCAUSgAwIBAg...0d71ZtULNWo\n-----END CERTIFICATE-----";
const memberCert1 = "-----BEGIN CERTIFICATE-----\nMIIBwDCCAUagAwIBAgI...2FSyKIC+vY=\n-----END CERTIFICATE-----";

async function main() {
    console.log("Creating a new instance.")
    const client = new ConfidentialLedgerClient(new DefaultAzureCredential(), subscriptionId);

    const properties = <ManagedCCFProperties> {
        deploymentType: <DeploymentType> {
            appSourceUri: "",
            languageRuntime: KnownLanguageRuntime.JS
        },
        memberIdentityCertificates: [
            <MemberIdentityCertificate>{
                certificate: memberCert0,
                encryptionkey: "",
                tags: { 
                    "owner":"member0"
                }
            },
            <MemberIdentityCertificate>{
                certificate: memberCert1,
                encryptionkey: "",
                tags: { 
                    "owner":"member1"
                }
            },
        ],
        nodeCount: 3,
    };

    const mccf = <ManagedCCF> {
        location: "SouthCentralUS",
        properties: properties,
    }

    const createResponse = await client.managedCCFOperations.beginCreateAndWait(rgName, ledgerId, mccf);
    console.log("Created. Instance id: " +  createResponse.id);

    // Get details of the instance
    console.log("Getting instance details.");
    const getResponse = await client.managedCCFOperations.get(rgName, ledgerId);
    console.log(getResponse.properties?.identityServiceUri);
    console.log(getResponse.properties?.nodeCount);

    // List mccf instances in the RG
    console.log("Listing the instances in the resource group.");
    const instancePages = await client.managedCCFOperations.listByResourceGroup(rgName).byPage();
    for await(const page of instancePages){
        for(const instance of page)
        {
            console.log(instance.name + "\t" + instance.location + "\t" + instance.properties?.nodeCount);
        }
    }

    console.log("Delete the instance.");
    await client.managedCCFOperations.beginDeleteAndWait(rgName, ledgerId);
    console.log("Deleted.");
}

(async () => {
    try {
        await main();
    } catch(err) {
        console.error(err);
    }
})();

Eliminación del recurso de Managed CCF

En el siguiente fragmento de código se elimina el recurso de Managed CCF Otros artículos de Managed CCF pueden basase en este inicio rápido. Si tiene pensado seguir trabajando en otras guías de inicio rápido y tutoriales, considere la posibilidad de dejar estos recursos activos.

import  { ConfidentialLedgerClient, ManagedCCFProperties, ManagedCCF, KnownLanguageRuntime, DeploymentType, MemberIdentityCertificate } from "@azure/arm-confidentialledger";
import { DefaultAzureCredential } from "@azure/identity";

const subscriptionId = "0000000-0000-0000-0000-000000000001"; // replace
const rgName = "myResourceGroup";
const ledgerId = "confidentialbillingapp";

async function deleteManagedCcfResource() {
    const client = new ConfidentialLedgerClient(new DefaultAzureCredential(), subscriptionId);

    console.log("Delete the instance.");
    await client.managedCCFOperations.beginDeleteAndWait(rgName, ledgerId);
    console.log("Deleted.");
}

(async () => {
    try {
        await deleteManagedCcfResource();
    } catch(err) {
        console.error(err);
    }
})();

Limpieza de recursos

Otros artículos de Managed CCF pueden basase en este inicio rápido. Si tiene pensado seguir trabajando en otras guías de inicio rápido y tutoriales, considere la posibilidad de dejar estos recursos activos.

De lo contrario, cuando haya terminado con los recursos creados en este artículo, use el comando az group delete de la CLI de Azure para eliminar el grupo de recursos y todos los recursos que contiene.

az group delete --resource-group myResourceGroup

Pasos siguientes

En este inicio rápido, ha creado un recurso de Managed CCF mediante el SDK de Python de Azure para Confidential Ledger. Para más información sobre Azure Managed CCF y cómo integrarlo con las aplicaciones, continúe con los artículos siguientes: