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

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

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

Пакет исходного кода библиотеки исходного кода | библиотеки | API (центральный репозиторий Maven)

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

Настройка

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

Вход в Azure

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

az login

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

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

Установка зависимостей

<dependency>
    <groupId>com.azure.resourcemanager</groupId>
    <artifactId>azure-resourcemanager-confidentialledger</artifactId>
    <version>1.0.0-beta.3</version>
</dependency>

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

Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов 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"

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

Пакет SDK Azure для Библиотеки Java (azure-resourcemanager-confidentialledger) позволяет выполнять операции с управляемыми ресурсами CCF, такими как создание и удаление, перечисление ресурсов, связанных с подпиской, и просмотр сведений о конкретном ресурсе. Следующий фрагмент кода создает и просматривает свойства ресурса Управляемого CCF.

import com.azure.core.management.AzureEnvironment;
import com.azure.core.management.exception.ManagementException;
import com.azure.core.management.profile.AzureProfile;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.resourcemanager.confidentialledger.ConfidentialLedgerManager;
import com.azure.resourcemanager.confidentialledger.fluent.models.ManagedCcfInner;
import com.azure.resourcemanager.confidentialledger.models.DeploymentType;
import com.azure.resourcemanager.confidentialledger.models.LanguageRuntime;
import com.azure.resourcemanager.confidentialledger.models.ManagedCcfProperties;
import com.azure.resourcemanager.confidentialledger.models.MemberIdentityCertificate;
import java.util.*;

public class AzureJavaSdkClient {
    public static void main(String[] args) {
      try {
          AzureProfile profile = new AzureProfile("<tenant id>","<subscription id>", AzureEnvironment.AZURE);
          ConfidentialLedgerManager manager = ConfidentialLedgerManager.authenticate(new DefaultAzureCredentialBuilder().build(), profile);

          MemberIdentityCertificate member0 = new MemberIdentityCertificate()
              .withCertificate("-----BEGIN CERTIFICATE-----\nMIIBvjCCAUSgAwIBAgIUA0YHcPpUCtd...0Yet/xU4G0d71ZtULNWo\n-----END CERTIFICATE-----")
              .withTags(Map.of("Dept", "IT"));
          List<MemberIdentityCertificate> members = new ArrayList<MemberIdentityCertificate>();
          members.add(member0);

          DeploymentType deployment = new DeploymentType().withAppSourceUri("").withLanguageRuntime(LanguageRuntime.JS);
          ManagedCcfProperties properties = new ManagedCcfProperties()
              .withDeploymentType(deployment)
              .withNodeCount(5)
              .withMemberIdentityCertificates(members);

          ManagedCcfInner inner = new ManagedCcfInner().withProperties(properties).withLocation("southcentralus");

          // Send Create request
          manager.serviceClient().getManagedCcfs().create("myResourceGroup", "confidentialbillingapp", inner);

          // Print the Managed CCF resource properties
          ManagedCcfInner app = manager.serviceClient().getManagedCcfs().getByResourceGroup("myResourceGroup", "confidentialbillingapp");
          printAppInfo(app);

          // Delete the resource
          manager.serviceClient().getManagedCcfs().delete("myResourceGroup", "confidentialbillingapp");
        } catch (ManagementException ex) {
            // The x-ms-correlation-request-id is located in the Header
            System.out.println(ex.getResponse().getHeaders().toString());
            System.out.println(ex);
        }
    }

    private static void printAppInfo(ManagedCcfInner app) {
        System.out.println("App Name: " + app.name());
        System.out.println("App Id: " + app.id());
        System.out.println("App Location: " + app.location());
        System.out.println("App type: " + app.type());
        System.out.println("App Properties Uri: " + app.properties().appUri());
        System.out.println("App Properties Language Runtime: " + app.properties().deploymentType().languageRuntime());
        System.out.println("App Properties Source Uri: " + app.properties().deploymentType().appSourceUri());
        System.out.println("App Properties NodeCount: " + app.properties().nodeCount());
        System.out.println("App Properties Identity Uri: " + app.properties().identityServiceUri());
        System.out.println("App Properties Cert 0: " + app.properties().memberIdentityCertificates().get(0).certificate());
        System.out.println("App Properties Cert tags: " + app.properties().memberIdentityCertificates().get(0).tags());
    }
}

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

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

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

az group delete --resource-group myResourceGroup

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

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