Поделиться через


Краткое руководство. Создание ресурса Azure Managed CCF с помощью пакета SDK Azure для JavaScript и TypeScript

Microsoft Azure Managed CCF (Managed CCF) — это новая и высокозащищенная служба для развертывания конфиденциальных приложений. Дополнительные сведения об Управляемом CCF Azure см. в разделе "О платформе управляемого конфиденциального консорциума Azure".

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Справочная документация по API | Исходный код библиотеки | Пакет (npm).

Необходимые компоненты

Настройка

В этом кратком руководстве для проверки подлинности пользователя в службах Azure используется библиотека удостоверений Azure, а также Azure CLI или Azure PowerShell. Разработчики также могут использовать Visual Studio или Visual Studio Code для проверки подлинности своих вызовов. Дополнительные сведения см. в статье Проверка подлинности клиента с использованием клиентской библиотеки удостоверений Azure.

Вход в Azure

Вход в Azure с помощью команды az login Azure CLI или командлета Connect-AzAccount Azure PowerShell.

az login

Если в CLI или PowerShell можно запустить браузер по умолчанию, откроется браузер со страницей входа в Azure. В противном случае самостоятельно откройте страницу https://aka.ms/devicelogin и введите код авторизации, отображаемый в терминале.

При запросе выполните вход в браузере с помощью учетных данных.

Инициализация нового проекта npm

В терминале или командной строке создайте подходящую папку npm проекта и инициализировать проект. Этот шаг может пропустить, если у вас есть существующий проект узла.

cd <work folder>
npm init -y

Установка пакетов

Установите клиентную библиотеку удостоверений Azure Active Directory.

npm install --save @azure/identity

Установите клиентская библиотека уровня управления конфиденциальным реестром Azure.

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

Глобальная установка компилятора и средств TypeScript

npm install -g typescript

Создание или изменение группы ресурсов

Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов Azure и управление ими. Используйте командлет Azure PowerShell New-AzResourceGroup , чтобы создать группу ресурсов с именем myResourceGroup в расположении southcentralus .

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

Регистрация поставщика ресурсов

Перед созданием ресурса Необходимо зарегистрировать тип ресурса Azure Managed CCF в подписке.

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

az provider register --namespace Microsoft.ConfidentialLedger

Создание членов

Создайте пару ключей для элемента. После завершения следующих команд открытый ключ члена сохраняется и member0_cert.pem закрытый ключ сохраняется в 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"

Создание приложения JavaScript

Использование клиентской библиотеки уровня управления

Пакет SDK Azure для JavaScript и библиотеки TypeScript azure/arm-конфиденциальное число позволяет выполнять операции с управляемыми ресурсами CCF, такими как создание и удаление, перечисление ресурсов, связанных с подпиской, и просмотр сведений о конкретном ресурсе.

Чтобы выполнить приведенные ниже примеры, сохраните фрагменты кода в файл с .ts расширением в папку проекта и скомпилируйте его как часть проекта TypeScript или скомпилируйте скрипт в JavaScript отдельно, выполнив следующую команду:

tsc <filename.ts>

Скомпилированный файл JavaScript будет иметь то же имя, но *.js расширение. Затем запустите скрипт в nodeJS:

node <filename.js>

Следующий пример кода TypeScript создает и просматривает свойства ресурса Управляемого CCF.

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);
    }
})();

Удаление управляемого ресурса CCF

Следующий фрагмент кода удаляет управляемый ресурс CCF. Другие статьи по управляемым CCF можно создать на основе этого краткого руководства. Если вы планируете продолжить работу с последующими краткими руководствами и руководствами, вы можете оставить эти ресурсы на месте.

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);
    }
})();

Очистка ресурсов

Другие статьи по управляемым CCF можно создать на основе этого краткого руководства. Если вы планируете продолжить работу с последующими краткими руководствами и руководствами, вы можете оставить эти ресурсы на месте.

В противном случае, когда вы закончите работу с ресурсами, созданными в этой статье, используйте команду azure CLI az group delete для удаления группы ресурсов и всех содержащихся в ней ресурсов.

az group delete --resource-group myResourceGroup

Следующие шаги

В этом кратком руководстве вы создали ресурс Управляемого CCF с помощью пакета SDK Для Python Azure для конфиденциального реестра. Дополнительные сведения об Управляемом CCF Azure и их интеграции с приложениями см. в следующих статьях: