Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As UDFs (funções definidas pelo usuário) avançadas permitem que o código personalizado seja executado no mesmo TEE (Ambiente de Execução Confiável) que o razão. Esse recurso estende os benefícios da garantia de confidencialidade e integridade ao código personalizado. Além disso, ele dá suporte ao RBAC (Controle de Acesso Baseado em Função) personalizado para autorização.
Importante
As funções definidas pelo usuário estão atualmente em VERSÃO PRÉVIA na versão 2024-08-22-previewda API.
Você pode solicitar acesso para esta versão prévia por meio deste formulário de inscrição.
Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.
Dica
Para cenários mais simples, como lógica personalizada simples ou integração direta com a API do ledger, consulte funções definidas pelo usuário simples no Ledger confidencial do Azure.
Casos de uso
Aqui estão alguns cenários em que funções avançadas definidas pelo usuário podem ser benéficas:
- Análise e agregação de dados: informações confidenciais podem ser processadas no TEE e informações agregadas podem ser compartilhadas com os stakeholders.
- Proteção de informações confidenciais: informações confidenciais como dados pessoais, pontuação de crédito e informações de integridade podem ser compartilhadas com outras cargas de trabalho confidenciais após o atestado.
Pré-requisitos
- CLI do Azure ou Azure PowerShell.
- Proprietário da assinatura: um razão confidencial só pode ser criado por usuários que tenham permissões de Proprietário na assinatura do Azure. Confirme se você tem o acesso apropriado antes de continuar com este início rápido.
Este tutorial pressupõe que você criou uma instância do razão. Você pode criar um usando o portal do Azure, a CLI do Azure ou o Azure PowerShell.
Desenvolvendo aplicativos
Os aplicativos de ledger são desenvolvidos usando TypeScript e transformados em um pacote JavaScript. Para saber mais sobre o processo de desenvolvimento, consulte a documentação da Estrutura Consulte do Consórcio (CCF).
Importante
Somente os administradores podem implantar aplicativos e gerenciar o RBAC personalizado no razão. O restante da seção pressupõe que um Administrador execute os comandos.
Usamos o aplicativo bancário disponível no repositório azureconfidentialledger-app-samples (https://github.com/microsoft/azureconfidentialledger-app-samples) para demonstrar o recurso.
Observação
O aplicativo bancário expõe APIs para cenários bancários comumente usados, como abrir contas, depositar e transferir fundos usando funções e ações personalizadas.
Entrar no Azure
Observação
O razão confidencial do Azure dá suporte ao Microsoft Entra ID pronto para uso. Se o aplicativo se integrar a outros provedores de identidade, entre em contato com o suporte ao cliente para configurá-lo no razão.
Obtenha um token de ID do Microsoft Entra.
az login --use-device-code
az account get-access-token --resource https://confidential-ledger.azure.com
Copie o valor bruto do token da saída.
Baixar a identidade do razão
Um razão é identificado exclusivamente por um certificado chamado certificado de serviço. Ele é usado para estabelecer uma conexão segura com o razão. Baixe-o de um endpoint conhecido e salve-o em servicer_cert.pem.
Observação
contoso é o nome do razão. Substitua-o pelo nome do razão apropriado.
curl https://identity.confidential-ledger.core.azure.com/ledgerIdentity/contoso --silent | jq ' .ledgerTlsCertificate' | xargs echo -e > service_cert.pem
Implantar o aplicativo
Implante o pacote de aplicativos JavaScript invocando o ponto de extremidade /app/userDefinedEndpoints.
apiVersion="2024-08-22-preview"
content_type_application_json="Content-Type: application/json"
bundle="/path/to/bundle.json"
authorization="Authorization: Bearer raw_token_value"
server_identity="--cacert service_cert.pem"
# Deploy the application
#
curl $server_identity -X PUT "https://contoso.confidential-ledger.azure.com/app/userDefinedEndpoints?api-version=$apiVersion" -H "$content_type_application_json" -H "$authorization" -d @$bundle
# View the application
#
curl $server_identity "https://contoso.confidential-ledger.azure.com/app/userDefinedEndpoints?api-version=$apiVersion" -H "$authorization"
Observação
Funções definidas pelo usuário avançadas e funções simples definidas pelo usuário são recursos mutuamente exclusivos. Você não pode criar ou executar UDFs simples se UDFs avançadas estiverem definidas, e vice-versa. Para alternar entre os dois, siga as instruções na página de visão geral da UDF.
Criar funções e usuários
O aplicativo bancário usa duas personas, ou seja, um gerente e um caixa. Criamos funções e usuários para representá-las.
Observação
Cada usuário é representado por um certificado exclusivo.
Observação
Os usuários do aplicativo podem receber as funções internas, ou seja, Administrador, Colaborador e Leitor. As funções personalizadas diferenciam maiúsculas de minúsculas e as funções internas não diferenciam maiúsculas de minúsculas. Um usuário pode receber várias funções ou nenhuma função.
apiVersion="2024-08-22-preview"
content_type_application_json="Content-Type: application/json"
content_type_merge_patch_json="Content-Type: application/merge-patch+json"
authorization="Authorization: Bearer raw_token_value"
curve="secp384r1"
server_identity="--cacert service_cert.pem"
# These actions must match (case-sensitive) the values defined in the application.
#
role_actions='{"roles":[{"role_name":"manager","role_actions":["/banking/accounts/post","/banking/accounts/put","/banking/accounts/get","/banking/accounts/patch"]},{"role_name":"teller","role_actions":["/banking/accounts/put","/banking/accounts/get","/banking/accounts/patch"]}]}'
# Create the roles.
#
curl $server_identity -X PUT "https://contoso.confidential-ledger.azure.com/app/roles?api-version=$apiVersion" -H "$content_type_application_json" -H "$authorization" -d $role_actions
# View the roles
#
curl $server_identity "https://contoso.confidential-ledger.azure.com/app/roles?api-version=$apiVersion" -H "$authorization"
# Create a certificate for the manager user.
#
openssl ecparam -out "manager_privk.pem" -name "$curve" -genkey
openssl req -new -key "manager_privk.pem" -x509 -nodes -days 365 -out "manager_cert.pem" -sha384 -subj=/CN="manager"
manager_cert_fingerprint=$(openssl x509 -in "manager_cert.pem" -noout -fingerprint -sha256 | cut -d "=" -f 2)
manager_user="{\"user_id\":\"$manager_cert_fingerprint\",\"assignedRoles\":[\"manager\"]}"
# Create a certificate for the teller user.
#
openssl ecparam -out "teller_privk.pem" -name "$curve" -genkey
openssl req -new -key "teller_privk.pem" -x509 -nodes -days 365 -out "teller_cert.pem" -sha384 -subj=/CN="teller"
teller_cert_fingerprint=$(openssl x509 -in "teller_cert.pem" -noout -fingerprint -sha256 | cut -d "=" -f 2)
teller_user="{\"user_id\":\"$teller_cert_fingerprint\",\"assignedRoles\":[\"teller\"]}"
# Create the manager user.
#
curl $server_identity -X PATCH "https://contoso.confidential-ledger.azure.com/app/ledgerUsers/$manager_cert_fingerprint?api-version=$apiVersion" -H "$content_type_merge_patch_json" -H "$authorization" -d $manager_user
# Create the teller user.
#
curl $server_identity -X PATCH "https://contoso.confidential-ledger.azure.com/app/ledgerUsers/$teller_cert_fingerprint?api-version=$apiVersion" -H "$content_type_merge_patch_json" -H "$authorization" -d $teller_user
# View the users
#
curl $server_identity "https://contoso.confidential-ledger.azure.com/app/ledgerUsers?api-version=$apiVersion" -H "$authorization"
Atualizar a configuração de runtime (opcional)
A configuração de runtime do JavaScript pode ser atualizada chamando o ponto de extremidade /app/userDefinedEndpoints/runTimeOptions. Para demonstrar isso, vamos definir o tempo máximo de execução como 2.000 ms.
apiVersion="2024-08-22-preview"
content_type_merge_patch_json="Content-Type: application/merge-patch+json"
authorization="Authorization: Bearer raw_token_value"
runtime_options="{\"max_heap_bytes\":1024,\"max_stack_bytes\":1024,\"max_execution_time_ms\":2000,\"log_exception_details\":false,\"return_exception_details\":false,\"max_cached_interpreters\":1024}"
server_identity="--cacert service_cert.pem"
# Patch the runtime options
#
curl $server_identity -X PATCH "https://contoso.confidential-ledger.azure.com/app/userDefinedEndpoints/runTimeOptions?api-version=$apiVersion" -H "$content_type_merge_patch_json" -H "$authorization" -d $runtime_options
# View the runtime options
#
curl $server_identity "https://contoso.confidential-ledger.azure.com/app/userDefinedEndpoints/runTimeOptions?api-version=$apiVersion" -H "$authorization"
Agora você está pronto para acessar os endpoints do aplicativo e enviar transações.
Limpar os recursos
Outros guias de início rápido e tutoriais desta coleção se baseiam neste guia de início rápido. Se você planeja continuar a trabalhar com os tutoriais e inícios rápidos subsequentes, deixe esses recursos onde estão.
Quando não forem mais necessários, você poderá usar o comando az group delete da CLI do Azure para remover o grupo de recursos e todos os recursos relacionados:
az group delete --name "myResourceGroup"
Próximas etapas
Neste tutorial, você implantou um aplicativo JavaScript personalizado em uma instância de razão confidencial. Para saber mais sobre o ledger confidencial do Azure e como integrá-lo aos seus aplicativos, continue com estes artigos.