Como usar o Azure Functions para criptografia de dados

Por Fernando Viana e Sá
Como usar o Azure Functions para criptografia de dados

A criptografia de dados é essencial para proteger informações sensíveis e, quando combinada com ferramentas de automação como o Power Automate, torna-se ainda mais poderosa. O Azure Functions, um serviço de computação sem servidor que permite executar pequenos trechos de código na nuvem, pode desempenhar um papel fundamental na implementação de criptografia em seus fluxos de trabalho automatizados. Este artigo irá guiá-lo sobre como usar o Azure Functions no Power Automate para criptografar e descriptografar dados, garantindo que seus processos de negócios permaneçam seguros.

Por Que Usar o Azure Functions para Criptografia de Dados?

O Azure Functions oferece várias vantagens para a criptografia de dados:

Escalabilidade: O Azure Functions escala automaticamente com base na demanda, tornando-o ideal para processar grandes volumes de dados.

Flexibilidade: Você pode escrever funções no Azure Functions em várias linguagens de programação (por exemplo, C#, Python, JavaScript) e personalizar o processo de criptografia para atender às suas necessidades específicas.

Integração: O Azure Functions pode ser facilmente integrado ao Power Automate, permitindo o processamento contínuo de dados em seus fluxos de trabalho.

Configurando o Azure Functions para Criptografia

Para começar, siga os seguintes passos:

Passo 1: Criar um Azure Function App

Entre no portal do Azure.

Navegue até “Criar um recurso” e procure por “Function App”.

Preencha os detalhes necessários (Assinatura, Grupo de Recursos, Nome do Function App, Stack de Runtime, Região, etc.).

Clique em “Criar” para implantar seu Function App.

Passo 2: Escrever o Código de Criptografia

No portal do Azure, navegue até seu novo Function App criado.

Crie uma nova função dentro do aplicativo, escolhendo a linguagem de sua preferência (por exemplo, C#, Python).

Escreva o código para lidar com a criptografia e descriptografia. Aqui está um exemplo em C# usando criptografia AES:

C#

using System;
using System.IO;
using System.Security.Cryptography;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

public static class EncryptFunction
{
    [FunctionName("EncryptData")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("Processing encryption request.");

        string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
        var data = JsonConvert.DeserializeObject<EncryptRequest>(requestBody);

        if (data == null || string.IsNullOrEmpty(data.PlainText) || string.IsNullOrEmpty(data.Key))
        {
            return new BadRequestObjectResult("Invalid input.");
        }

        try
        {
            using (Aes aesAlg = Aes.Create())
            {
                aesAlg.Key = Convert.FromBase64String(data.Key);
                aesAlg.GenerateIV();

                ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);

                using (MemoryStream msEncrypt = new MemoryStream())
                {
                    msEncrypt.Write(aesAlg.IV, 0, aesAlg.IV.Length);

                    using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                    using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                    {
                        swEncrypt.Write(data.PlainText);
                    }

                    var encryptedData = msEncrypt.ToArray();
                    return new OkObjectResult(Convert.ToBase64String(encryptedData));
                }
            }
        }
        catch (Exception ex)
        {
            log.LogError($"Error during encryption: {ex.Message}");
            return new StatusCodeResult(500);
        }
    }

    public class EncryptRequest
    {
        public string PlainText { get; set; }
        public string Key { get; set; }
    }
}

Passo 3: Implantar a Função

Após escrever o código da função, implante-o diretamente do portal do Azure ou do seu ambiente de desenvolvimento local usando Visual Studio ou VS Code.

Teste a função enviando requisições HTTP POST com os dados de entrada necessários (por exemplo, texto puro e chave de criptografia).

Integrando Azure Functions ao Power Automate

Uma vez que sua função no Azure esteja funcionando, você pode integrá-la ao seu fluxo de trabalho no Power Automate.

Passo 1: Criar um Novo Fluxo no Power Automate

Abra o Power Automate e crie um novo fluxo. Escolha o gatilho que melhor se adapte ao seu fluxo de trabalho (por exemplo, quando um item é criado no SharePoint ou um novo email chega).

Adicione uma ação “HTTP” ao fluxo. Essa ação enviará os dados para sua função no Azure.

Passo 2: Configurar a Ação HTTP

Defina o método como “POST”.

Insira a URL da sua função no Azure (você pode encontrar isso no portal do Azure, na seção “Obter URL da função”).

No corpo da requisição, passe os dados que precisam ser criptografados, como este exemplo:

JSON

{
  "PlainText": "@{triggerOutputs()?['body/TextToEncrypt']}",
  "Key": "<your-encryption-key>"
}

Passo 3: Manipular a Resposta

Após a função retornar os dados criptografados, use a saída nos próximos passos do seu fluxo. Por exemplo, você pode armazenar os dados criptografados em um banco de dados ou enviá-los por email.

Passo 4: Descriptografia (Opcional)

Se você precisar descriptografar os dados posteriormente em seu fluxo de trabalho, pode criar uma função similar no Azure que lide com a descriptografia e chamá-la do Power Automate usando outra ação HTTP.

Melhores práticas para usar Azure Functions

Proteja Suas Chaves: Armazene suas chaves de criptografia com segurança no Azure Key Vault e recupere-as dentro de sua função no Azure para evitar expô-las no código.

Otimizar Desempenho: Criptografar e descriptografar grandes volumes de dados pode consumir muitos recursos. Considere usar os recursos de escalabilidade do Azure Functions para lidar com cargas altas de forma eficiente.

Tratamento de Erros: Implemente um tratamento robusto de erros dentro de suas funções no Azure e do fluxo do Power Automate para gerenciar qualquer problema durante a criptografia ou descriptografia.

Monitoramento e Logs: Use o Azure Application Insights ou outras ferramentas de log para monitorar o desempenho e a segurança de suas funções no Azure.

Conclusão

O Azure Functions, quando combinado com o Power Automate, oferece uma solução flexível e escalável para implementar criptografia de dados em seus fluxos de trabalho automatizados. Seja para criptografar informações sensíveis antes de armazená-las ou para descriptografá-las para processamento, o Azure Functions fornece as ferramentas necessárias para alcançar isso de forma integrada. Seguindo os passos descritos acima, você pode garantir que seus dados permaneçam seguros enquanto aproveita o poder da automação em seus processos de negócios.

Veja também nosso artigo sobre Modernização de bancos e financeiras com SharePoint e Power Platform.

Ver mais artigos

Entre em Contato

Vamos juntos transformar sua dor
em solução!

#moveFast