Injeção de segredo em pontos de extremidade online (versão prévia)

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)

A injeção de segredo no contexto de um ponto de extremidade online é um processo de recuperação de segredos (como chaves de API) de repositórios de segredos e injeção em seu contêiner de usuário executado dentro de uma implantação online. Os segredos são eventualmente acessados com segurança por meio de variáveis de ambiente, que são usadas pelo servidor de inferência que executa seu script de pontuação ou pela pilha de inferência que você traz com uma abordagem de implantação BYOC (traga seu próprio contêiner).

Importante

Esse recurso está atualmente em visualização pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos.

Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

Problema declarado

Ao criar uma implantação online, talvez você queira usar segredos de dentro da implantação para acessar serviços externos. Alguns desses serviços externos incluem o serviço OpenAI do Microsoft Azure, os Serviços de IA do Azure e a Segurança de Conteúdo de IA do Azure.

Para usar os segredos, você precisa encontrar uma maneira de passá-los com segurança para o contêiner de usuário executado dentro da implantação. Não recomendamos a inclusão de segredos como parte da definição de implantação, pois essa prática exporia os segredos na definição de implantação.

Uma abordagem melhor é o armazenamento dos segredos em repositórios de segredos e recuperação com segurança de dentro da implantação. No entanto, essa abordagem apresenta seu próprio desafio: como a implantação deve se autenticar nos repositórios de segredos para recuperar segredos. Como a implantação online executa seu contêiner de usuário usando a identidade de ponto de extremidade, que é uma identidade gerenciada, você pode usar o RBAC do Azure para controlar as permissões da identidade do ponto de extremidade e permitir que o ponto de extremidade recupere segredos dos repositórios de segredos. O uso dessa abordagem exige que você execute as seguintes tarefas:

  • Atribua as funções corretas à identidade do ponto de extremidade para que ela possa ler segredos dos repositórios de segredos.
  • Implemente a lógica de pontuação para a implantação para que ela use a identidade gerenciada do ponto de extremidade para recuperar os segredos dos repositórios de segredos.

Embora essa abordagem de uso de uma identidade gerenciada seja uma maneira segura de recuperar e injetar segredos, a injeção de segredo por meio do recurso de injeção de segredo simplifica ainda mais o processo de recuperação de segredos para conexões de workspace e cofres de chaves.

Identidade gerenciada associada ao ponto de extremidade

Uma implantação online executa seu contêiner de usuário com a identidade gerenciada associada ao ponto de extremidade. Esta identidade gerenciada, chamada identidade do ponto de extremidade é um Microsoft Entra ID que dá suporte ao RBAC do Azure. Portanto, você pode atribuir funções do Azure à identidade para controlar as permissões necessárias para executar operações. A identidade de ponto de extremidade pode ser uma identidade atribuída ao sistema (SAI) ou uma identidade atribuída ao usuário (UAI). Você pode decidir quais desses tipos de identidades usar ao criar o ponto de extremidade.

  • Para uma identidade atribuída pelo sistema, a identidade é criada automaticamente quando você cria o ponto de extremidade, e as funções com permissões fundamentais (como a permissão de pull do Registro de Contêiner do Azure e o leitor de dados de blob de armazenamento) são atribuídas automaticamente.
  • Para uma identidade atribuída pelo usuário, você precisa primeiro criar a identidade e, em seguida, associá-la ao ponto de extremidade ao criá-lo. Você também é responsável por atribuir funções adequadas à UAI conforme necessário.

Para obter mais informações sobre como usar identidades gerenciadas de um ponto de extremidade, consulte Como acessar recursos de pontos de extremidade com identidades gerenciadas e o exemplo de usando identidades gerenciadas para interagir com serviços externos.

Atribuição de função para a identidade do ponto de extremidade

As seguintes funções são exigidas pelos repositórios de segredos:

  • Para segredos armazenados em conexões de workspace em seu workspace: Workspace Connections fornece uma API de Segredos de Lista (versão prévia) que exige que a identidade que chama a API tenha a função Azure Machine Learning Workspace Connection Secrets Reader (ou equivalente) atribuída à identidade.
  • Para segredos armazenados em um Microsoft Azure Key Vault externo: o Key Vault fornece uma API Obter Versões do Segredo que exige que a identidade que chama a API tenha a função Key Vault Secrets User (ou equivalente) atribuída à identidade.

Implementação da injeção de segredo

Depois que segredos (como chaves de API) são recuperados de repositórios de segredos, há duas maneiras de injetá-los em um contêiner de usuário executado dentro da implantação online:

  • Injete segredos por conta própria, usando identidades gerenciadas.
  • Injete segredos usando o recurso de injeção de segredo.

Ambas as abordagens envolvem duas etapas:

  1. Primeiro, recupere segredos dos repositórios de segredos usando a identidade do ponto de extremidade.
  2. Em segundo lugar, insira os segredos no contêiner do usuário.

Injeção de segredo por meio do uso de identidades gerenciadas

Na definição de implantação, você precisa usar a identidade do ponto de extremidade para chamar as APIs de repositórios de segredos. Você pode implementar essa lógica no script de pontuação ou em scripts de shell executados em seu contêiner BYOC. Para implementar a injeção de segredo por meio do uso de identidades gerenciadas, consulte o exemplo para usar identidades gerenciadas para interagir com serviços externos.

Injeção de segredo por meio do recurso de injeção de segredo

Para usar o recurso de injeção de segredo, em sua definição de implantação, mapeie os segredos (aos quais você deseja se referir) de conexões de workspace ou do Key Vault para as variáveis de ambiente. Essa abordagem não exige que você escreva um código em seu script de pontuação ou em scripts de shell executados em seu contêiner BYOC. Para mapear os segredos das conexões de workspace ou do Key Vault para as variáveis de ambiente, as seguintes condições devem ser atendidas:

  • Durante a criação do ponto de extremidade, se um ponto de extremidade online foi definido para impor o acesso a repositórios de segredos padrão (conexões de workspace no workspace atual), sua identidade de usuário que cria a implantação no ponto de extremidade deverá ter permissões para ler segredos de conexões do workspace.
  • A identidade do ponto de extremidade que a implantação usa deve ter permissões para ler segredos de conexões do workspace ou do Key Vault, conforme referenciado na definição de implantação.

Observação

  • Se o ponto de extremidade tiver sido criado com êxito com um SAI e o sinalizador definido para impor o acesso aos repositórios de segredo padrão, o ponto de extremidade terá automaticamente a permissão para conexões do workspace.
  • No caso em que o ponto de extremidade usou uma UAI ou o sinalizador para impor o acesso a repositórios de segredo padrão não foi definido, a identidade do ponto de extremidade pode não ter a permissão para conexões do workspace. Em tal situação, você precisa atribuir manualmente a função para as conexões do workspace à identidade do ponto de extremidade.
  • A identidade do ponto de extremidade não receberá permissão automaticamente para o Key Vault externo. Se você estiver usando o Key Vault como um repositório de segredo, precisará atribuir manualmente a função do Key Vault à identidade do ponto de extremidade.

Para obter mais informações sobre como usar a injeção de segredo, consulte Implantar modelos de machine learning em pontos de extremidade online com injeção de segredo (versão prévia).