Aracılığıyla paylaş


Hızlı Başlangıç: JavaScript ve TypeScript için Azure SDK'sını kullanarak Azure Yönetilen CCF kaynağı oluşturma

Microsoft Azure Yönetilen CCF (Yönetilen CCF), gizli uygulamaları dağıtmak için yeni ve son derece güvenli bir hizmettir. Azure Yönetilen CCF hakkında daha fazla bilgi için bkz . Azure Yönetilen Gizli Konsorsiyum Çerçevesi Hakkında.

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

API başvuru belgeleri | Kitaplık kaynak kodu | Paketi (npm)

Önkoşullar

Kurulum

Bu hızlı başlangıçta Azure Hizmetleri'nde kullanıcının kimliğini doğrulamak için Azure CLI veya Azure PowerShell ile birlikte Azure Kimlik kitaplığı kullanılmaktadır. Geliştiriciler, aramalarının kimliğini doğrulamak için Visual Studio veya Visual Studio Code da kullanabilir. Daha fazla bilgi için bkz . Azure Identity istemci kitaplığıyla istemcinin kimliğini doğrulama.

Azure'da oturum açma

Azure CLI az login komutunu veya Azure PowerShell Bağlan-AzAccount cmdlet'ini kullanarak Azure'da oturum açın.

az login

CLI veya PowerShell varsayılan tarayıcınızı açabiliyorsa bunu yapar ve bir Azure oturum açma sayfası yükler. Aksi takdirde, terminalinizde görüntülenen yetkilendirme kodunu ziyaret edin https://aka.ms/devicelogin ve girin.

İstenirse, tarayıcıda hesap kimlik bilgilerinizle oturum açın.

Yeni bir npm projesi başlatma

Terminalde veya komut isteminde uygun bir proje klasörü oluşturun ve bir npm proje başlatın. Mevcut bir düğüm projeniz varsa bu adımı atlayabilirsiniz.

cd <work folder>
npm init -y

Paketleri yükleme

Azure Active Directory kimlik istemci kitaplığını yükleyin.

npm install --save @azure/identity

Azure Gizli Kayıt Defteri yönetim düzlemi istemci kitaplığını yükleyin.

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

TypeScript derleyicisini ve araçlarını genel olarak yükleme

npm install -g typescript

Kaynak grubu oluşturma

Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır. Southcentralus konumunda myResourceGroup adlı bir kaynak grubu oluşturmak için Azure PowerShell New-AzResourceGroup cmdlet'ini kullanın.

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

Kaynak sağlayıcısını kaydetme

Kaynak oluşturmadan önce Azure Yönetilen CCF kaynak türünün aboneliğe kaydedilmesi gerekir.

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

az provider register --namespace Microsoft.ConfidentialLedger

Üye oluşturma

Üye için bir anahtar çifti oluşturun. Aşağıdaki komutlar tamamlandıktan sonra, üyenin ortak anahtarı öğesine member0_cert.pem kaydedilir ve özel anahtar öğesine member0_privk.pemkaydedilir.

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 uygulamasını oluşturma

Yönetim düzlemi istemci kitaplığını kullanma

JavaScript için Azure SDK ve TypeScript kitaplığı azure/arm-confidentialledger , Yönetilen CCF kaynakları üzerinde oluşturma ve silme, abonelikle ilişkili kaynakları listeleme ve belirli bir kaynağın ayrıntılarını görüntüleme gibi işlemlere olanak tanır.

Aşağıdaki örnekleri çalıştırmak için lütfen kod parçacıklarını uzantılı bir .ts dosyaya proje klasörünüzde kaydedin ve TypeScript projenizin bir parçası olarak derleyin veya betiği çalıştırarak ayrı olarak JavaScript'e derleyin:

tsc <filename.ts>

Derlenen JavaScript dosyası aynı ada ancak bir uzantıya *.js sahip olacaktır. Ardından nodeJS'de betiği çalıştırın:

node <filename.js>

Aşağıdaki örnek TypeScript kodu Yönetilen CCF kaynağının özelliklerini oluşturur ve görüntüler.

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

Yönetilen CCF kaynağını silme

Aşağıdaki kod parçası Yönetilen CCF kaynağını siler. Diğer Yönetilen CCF makaleleri bu hızlı başlangıcı temel alabilir. Sonraki hızlı başlangıçlar ve öğreticilerle çalışmaya devam etmek istiyorsanız, bu kaynakları yerinde bırakmak isteyebilirsiniz.

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

Kaynakları temizleme

Diğer Yönetilen CCF makaleleri bu hızlı başlangıcı temel alabilir. Sonraki hızlı başlangıçlar ve öğreticilerle çalışmaya devam etmek istiyorsanız, bu kaynakları yerinde bırakmak isteyebilirsiniz.

Aksi takdirde, bu makalede oluşturulan kaynakları tamamladığınızda, kaynak grubunu ve içerdiği tüm kaynakları silmek için Azure CLI az group delete komutunu kullanın.

az group delete --resource-group myResourceGroup

Sonraki adımlar

Bu hızlı başlangıçta, Gizli Kayıt Defteri için Azure Python SDK'sını kullanarak bir Yönetilen CCF kaynağı oluşturdunuz. Azure Yönetilen CCF ve uygulamalarınızla tümleştirme hakkında daha fazla bilgi edinmek için şu makalelere geçin: