Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O CCF Gerenciado do Microsoft Azure (CCF Gerenciado) é um serviço novo e altamente seguro para implantar aplicativos confidenciais. Para obter mais informações sobre o CCF Gerenciado do Azure, consulte Sobre o Azure Managed Confidential Consortium Framework.
Se você não tiver uma conta do Azure, crie uma conta gratuita antes de começar.
Documentação | de referência da APICódigo-fonte da biblioteca | Pacote (npm)
Pré-requisitos
- Uma assinatura do Azure – crie uma gratuitamente.
- Node.js versões compatíveis com o SDK do Azure para JavaScript.
- OpenSSL em um computador que executa o Windows ou o Linux.
Configuração
Este início rápido usa a biblioteca de Identidade do Azure, juntamente com a CLI do Azure ou o Azure PowerShell, para autenticar o usuário nos Serviços do Azure. Os desenvolvedores também podem usar o Visual Studio ou o Visual Studio Code para autenticar suas chamadas. Para obter mais informações, consulte Autenticar o cliente com a biblioteca de clientes da Identidade do Azure.
Entrar no Azure
Entre no Azure usando o comando az login da CLI do Azure ou o cmdlet Connect-AzAccount do Azure PowerShell.
az login
Se a CLI ou o PowerShell puder abrir seu navegador padrão, ele o fará e carregará uma página de entrada do Azure. Caso contrário, visite https://aka.ms/devicelogin e insira o código de autorização exibido em seu terminal.
Se solicitado, entre com suas credenciais de conta no navegador.
Inicializar um novo projeto npm
Em um terminal ou prompt de comando, crie uma pasta de projeto adequada e inicialize um npm projeto. Você poderá ignorar essa etapa se tiver um projeto de nó existente.
cd <work folder>
npm init -y
Instalar os pacotes
Instale a biblioteca de clientes de identidade do Azure Active Directory.
npm install --save @azure/identity
Instale a biblioteca de clientes do plano de gerenciamento do Razão Confidencial do Azure.
npm install -save @azure/arm-confidentialledger@1.3.0-beta.1
Instalar o compilador e as ferramentas do TypeScript globalmente
npm install -g typescript
Criar um grupo de recursos
Um grupo de recursos é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados. Use o cmdlet New-AzResourceGroup do Azure PowerShell para criar um grupo de recursos chamado myResourceGroup no local do southcentralus .
New-AzResourceGroup -Name "myResourceGroup" -Location "SouthCentralUS"
Registrar o provedor de recursos
O tipo de recurso ccf gerenciado do Azure deve ser registrado na assinatura antes de criar um recurso.
az feature registration create --namespace Microsoft.ConfidentialLedger --name ManagedCCF
az provider register --namespace Microsoft.ConfidentialLedger
Criar membros
Gere um par de chaves para o membro. Depois que os comandos a seguir forem concluídos, a chave pública do membro será salva member0_cert.pem e a chave privada será salva em 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"
Criar o aplicativo JavaScript
Usar a biblioteca de clientes do plano de gerenciamento
O SDK do Azure para JavaScript e a biblioteca TypeScript azure/arm-confidentialledger permite operações em recursos ccf gerenciados, como criação e exclusão, listando os recursos associados a uma assinatura e exibindo os detalhes de um recurso específico.
Para executar os exemplos abaixo, salve os snippets de código em um arquivo com uma .ts extensão na pasta do projeto e compile-os como parte do projeto TypeScript ou compile o script em JavaScript separadamente executando:
tsc <filename.ts>
O arquivo JavaScript compilado terá o mesmo nome, mas uma *.js extensão. Em seguida, execute o script no nodeJS:
node <filename.js>
O código TypeScript de exemplo a seguir cria e exibe as propriedades de um recurso ccf gerenciado.
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);
}
})();
Excluir o recurso ccf gerenciado
A parte de código a seguir exclui o recurso CCF gerenciado. Outros artigos do CCF gerenciado podem se basear neste início rápido. Se você planeja continuar trabalhando com os guias de início rápido e tutoriais subsequentes, convém deixar esses recursos em vigor.
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);
}
})();
Limpar recursos
Outros artigos do CCF gerenciado podem se basear neste início rápido. Se você planeja continuar trabalhando com os guias de início rápido e tutoriais subsequentes, convém deixar esses recursos em vigor.
Caso contrário, quando terminar de usar os recursos criados neste artigo, use o comando az group delete da CLI do Azure para excluir o grupo de recursos e todos os recursos contidos.
az group delete --resource-group myResourceGroup
Próximas etapas
Neste início rápido, você criou um recurso ccf gerenciado usando o SDK do Python do Azure para Razão Confidencial. Para saber mais sobre o CCF Gerenciado do Azure e como integrá-lo aos seus aplicativos, continue com estes artigos: