Краткое руководство. Создание ресурса Azure Managed CCF с помощью пакета SDK Azure для .NET
Azure Managed CCF (Managed CCF) — это новая и высокозащищенная служба для развертывания конфиденциальных приложений. Дополнительные сведения об управляемом CCF и примеры вариантов использования см. в разделе "О платформе управляемого конфиденциального консорциума Azure".
Из этого краткого руководства вы узнаете, как создать управляемый ресурс CCF с помощью клиентской библиотеки управления .NET.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Справочная документация по API | Исходный код библиотеки | Пакет (NuGet).
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Версии .NET, поддерживаемые пакетом SDK Azure для .NET.
- OpenSSL на компьютере под управлением Windows или Linux.
Настройка
Создание консольного приложения .NET
В командной оболочке выполните следующую команду, чтобы создать проект с именем
managedccf-app
.dotnet new console --name managedccf-app
Перейдите в только что созданный каталог managedccf-app и выполните следующую команду, чтобы создать проект:
dotnet build
Выходные данные сборки не должны содержать предупреждений или ошибок.
Build succeeded. 0 Warning(s) 0 Error(s)
Установка пакета
Установите клиентская библиотека Azure Managed CCF для .NET с помощью NuGet:
dotnet add package Azure.ResourceManager.ConfidentialLedger --version 1.1.0-beta.2
В этом кратком руководстве также необходимо установить клиентская библиотека пакета SDK Azure для удостоверений Azure:
dotnet add package Azure.Identity
Создание или изменение группы ресурсов
Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов 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"
Создание приложения .NET
Использование клиентской библиотеки уровня управления
Пакет SDK Azure для .NET (azure/arm-confidentialledger) позволяет выполнять операции с ресурсами Управляемого CCF, такими как создание и удаление, перечисление ресурсов, связанных с подпиской, и просмотр сведений о конкретном ресурсе. Следующий фрагмент кода создает и просматривает свойства ресурса Управляемого CCF.
Добавьте следующие директивы в начало Program.cs.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Azure;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.ConfidentialLedger;
using Azure.ResourceManager.ConfidentialLedger.Models;
using Azure.ResourceManager.Resources;
Аутентификация и создание клиента
В этом кратком руководстве пользователь, вошедший в систему, используется для проверки подлинности в Управляемом CCF Azure, который является предпочтительным методом для локальной разработки. В этом примере используется класс DefaultAzureCredential()из библиотеки удостоверений Azure, который позволяет использовать один и тот же код в разных средах с разными параметрами для предоставления удостоверения.
// get your azure access token, for more details of how Azure SDK get your access token, please refer to https://learn.microsoft.com/en-us/dotnet/azure/sdk/authentication?tabs=command-line
TokenCredential cred = new DefaultAzureCredential();
Создайте клиент Azure Resource Manager и выполните проверку подлинности с помощью учетных данных маркера.
// authenticate your client
ArmClient client = new ArmClient(cred);
Создание управляемого ресурса CCF
// this example assumes you already have this ResourceGroupResource created on azure
// for more information of creating ResourceGroupResource, please refer to the document of ResourceGroupResource
string subscriptionId = "0000000-0000-0000-0000-000000000001";
string resourceGroupName = "myResourceGroup";
ResourceIdentifier resourceGroupResourceId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
ResourceGroupResource resourceGroupResource = client.GetResourceGroupResource(resourceGroupResourceId);
// get the collection of this ManagedCcfResource
ManagedCcfCollection collection = resourceGroupResource.GetManagedCcfs();
// invoke the operation
string appName = "confidentialbillingapp";
ManagedCcfData data = new ManagedCcfData(new AzureLocation("SouthCentralUS"))
{
Properties = new ManagedCcfProperties()
{
MemberIdentityCertificates =
{
new ConfidentialLedgerMemberIdentityCertificate()
{
Certificate = "-----BEGIN CERTIFICATE-----MIIBsjCCATigA...LjYAGDSGi7NJnSkA-----END CERTIFICATE-----",
Encryptionkey = "",
Tags = BinaryData.FromObjectAsJson(new Dictionary<string, object>()
{
["additionalProps1"] = "additional properties"
}),
}
},
DeploymentType = new ConfidentialLedgerDeploymentType()
{
LanguageRuntime = ConfidentialLedgerLanguageRuntime.JS,
AppSourceUri = new Uri(""),
},
NodeCount = 3,
},
Tags =
{
["additionalProps1"] = "additional properties",
},
};
ArmOperation<ManagedCcfResource> lro = await collection.CreateOrUpdateAsync(WaitUntil.Completed, appName, data);
ManagedCcfResource result = lro.Value;
// the variable result is a resource, you could call other operations on this instance as well
// but just for demo, we get its data from this resource instance
ManagedCcfData resourceData = result.Data;
// for demo we just print out the id
Console.WriteLine($"Succeeded on id: {resourceData.Id}");
Просмотр свойств управляемого ресурса CCF
Следующий фрагмент кода извлекает ресурс Управляемого CCF и выводит его свойства.
// this example assumes you already have this ResourceGroupResource created on azure
// for more information of creating ResourceGroupResource, please refer to the document of ResourceGroupResource
string subscriptionId = "0000000-0000-0000-0000-000000000001";
string resourceGroupName = "myResourceGroup";
ResourceIdentifier resourceGroupResourceId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
ResourceGroupResource resourceGroupResource = client.GetResourceGroupResource(resourceGroupResourceId);
// get the collection of this ManagedCcfResource
ManagedCcfCollection collection = resourceGroupResource.GetManagedCcfs();
// invoke the operation
string appName = "confidentialbillingapp";
ManagedCcfResource result = await collection.GetAsync(appName);
// the variable result is a resource, you could call other operations on this instance as well
// but just for demo, we get its data from this resource instance
ManagedCcfData resourceData = result.Data;
// for demo we just print out the id
Console.WriteLine($"Succeeded on id: {resourceData.Id}");
Вывод списка управляемых ресурсов CCF в группе ресурсов
Следующий фрагмент кода извлекает ресурсы Управляемого CCF в группе ресурсов.
// this example assumes you already have this ResourceGroupResource created on azure
// for more information of creating ResourceGroupResource, please refer to the document of ResourceGroupResource
string subscriptionId = "0000000-0000-0000-0000-000000000001";
string resourceGroupName = "myResourceGroup";
ResourceIdentifier resourceGroupResourceId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
ResourceGroupResource resourceGroupResource = client.GetResourceGroupResource(resourceGroupResourceId);
// get the collection of this ManagedCcfResource
ManagedCcfCollection collection = resourceGroupResource.GetManagedCcfs();
// invoke the operation and iterate over the result
await foreach (ManagedCcfResource item in collection.GetAllAsync())
{
// the variable item is a resource, you could call other operations on this instance as well
// but just for demo, we get its data from this resource instance
ManagedCcfData resourceData = item.Data;
// for demo we just print out the id
Console.WriteLine($"Succeeded on id: {resourceData.Id}");
}
Console.WriteLine($"Succeeded");
Вывод списка управляемых ресурсов CCF в подписке
Следующий фрагмент кода извлекает ресурсы Управляемого CCF в подписке.
// this example assumes you already have this SubscriptionResource created on azure
// for more information of creating SubscriptionResource, please refer to the document of SubscriptionResource
string subscriptionId = "0000000-0000-0000-0000-000000000001";
ResourceIdentifier subscriptionResourceId = SubscriptionResource.CreateResourceIdentifier(subscriptionId);
SubscriptionResource subscriptionResource = client.GetSubscriptionResource(subscriptionResourceId);
// invoke the operation and iterate over the result
await foreach (ManagedCcfResource item in subscriptionResource.GetManagedCcfsAsync())
{
// the variable item is a resource, you could call other operations on this instance as well
// but just for demo, we get its data from this resource instance
ManagedCcfData resourceData = item.Data;
// for demo we just print out the id
Console.WriteLine($"Succeeded on id: {resourceData.Id}");
}
Console.WriteLine($"Succeeded");
Очистка ресурсов
Другие статьи по управляемым CCF можно создать на основе этого краткого руководства. Если вы планируете продолжить работу с последующими краткими руководствами и руководствами, вы можете оставить эти ресурсы на месте.
В противном случае, когда вы закончите работу с ресурсами, созданными в этой статье, используйте команду azure CLI az group delete для удаления группы ресурсов и всех содержащихся в ней ресурсов.
az group delete --resource-group myResourceGroup
Следующие шаги
В этом кратком руководстве вы создали ресурс Управляемого CCF с помощью пакета SDK Для Python Azure для конфиденциального реестра. Дополнительные сведения об Управляемом CCF Azure и их интеграции с приложениями см. в следующих статьях: