Краткое руководство. Создание ресурса Azure Managed CCF с помощью пакета SDK Azure для JavaScript и TypeScript
Microsoft Azure Managed CCF (Managed CCF) — это новая и высокозащищенная служба для развертывания конфиденциальных приложений. Дополнительные сведения об Управляемом CCF Azure см. в разделе "О платформе управляемого конфиденциального консорциума Azure".
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Справочная документация по API | Исходный код библиотеки | Пакет (npm).
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Версии Node.js, поддерживаемые пакетом SDK Azure для JavaScript.
- OpenSSL на компьютере под управлением Windows или Linux.
Настройка
В этом кратком руководстве для проверки подлинности пользователя в службах 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 и их интеграции с приложениями см. в следующих статьях: