Multilocação para Cortex Agents¶
A multilocação permite que um único Cortex Agent atenda a vários locatários e, ao mesmo tempo, aplique o isolamento de dados entre eles. Você isola os locatários configurando os atributos de sessão no bloco variables na API agent:run e os emparelha com políticas de acesso a linhas (RAP) em suas tabelas Snowflake. Antes que o agente execute qualquer SQL gerado, o Snowflake define os atributos da sessão que você forneceu e a política de acesso a linhas filtra as linhas com base nesses valores.
Essa abordagem segue um modelo de responsabilidade compartilhada. O Snowflake fornece as ferramentas – atributos de sessão e políticas de acesso a linhas – e você é responsável por configurá-las corretamente para impor os limites de seu locatário.
Como funciona a multilocação¶
Quando você chama a API agent:run, você pode incluir um bloco variables que define um ou mais atributos imutáveis da sessão. A política de acesso a linhas em sua tabela faz referência a esses atributos para filtrar dados do locatário atual.
O fluxo de execução é:
Você chama uma API
agent:runcom um blocovariablesque inclui valores específicos do locatário.Antes de executar qualquer SQL gerado, os atributos são definidos na sessão do Snowflake.
O SQL gerado é executado na sessão em que as variáveis estão ativas.
A política de acesso a linhas da tabela avalia os atributos da sessão e filtra as linhas.
Atributos da sessão¶
O bloco variables oferece suporte a atributos de sessão imutáveis, configurados usando is_immutable_session_attribute: true. Depois que o valor de um atributo é definido, ele não pode ser modificado pelo SQL gerado, por execução de códigos ou por invocação de ferramentas durante a sessão. Isso garante que o contexto do locatário não possa ser alterado durante a execução do agente.
Para configurar atributos de sessão no bloco variables na API agent:run, use o seguinte parâmetro:
Propriedade |
Tipo |
Descrição |
|---|---|---|
|
Booliano |
Define a variável como um atributo imutável que não pode ser modificado durante a sessão. |
Configuração de variáveis em agent:run¶
Passe as variáveis na API agent:run para definir o contexto de locatário para cada de invocação:
Nesse exemplo, region é definido como um atributo de sessão imutável. A chave é region e o valor é NORTH. O valor é definido antes de executar a consulta, para que a política de acesso a linhas possa fazer referência a ele. Os atributos da sessão persistem durante a interação e não podem ser substituídos.
Políticas de acesso a linhas com atributos de sessão¶
Para impor o isolamento de locatário, a Snowflake recomenda fortemente o uso de um atributo de sessão em uma política de acesso a linhas. A política filtra linhas para que cada locatário veja apenas seus próprios dados.
Criação de uma política de acesso a linhas
O exemplo a seguir cria uma política de acesso a linhas que filtra linhas com base no atributo de sessão region:
Aplique a política à sua tabela:
Quando o agente executa uma consulta na tabela sales, a política de acesso a linhas avalia o atributo de sessão region e retorna somente as linhas em que a coluna region corresponde ao valor definido na chamada agent:run.
Práticas recomendadas¶
Siga estas recomendações ao configurar a multilocação com Cortex Agents:
Use atributos de sessão imutáveis para políticas de acesso a linhas. Defina
is_immutable_session_attribute: truepara qualquer variável referenciada por uma política de acesso a linhas. Os atributos imutáveis não podem ser modificados pelo SQL gerado nem pela execução de ferramentas.Defina o escopo das variáveis para o nível mais restrito. Defina apenas as variáveis exigidas para cada invocação. Não passe variáveis de que o agente não precisa para a solicitação atual.
Teste suas políticas de acesso a linhas de forma independente. Verifique se suas políticas de acesso a linhas filtram corretamente, testando-as com instruções
SETfora do agente antes da implementação.
Controle de acesso¶
A tabela a seguir descreve os privilégios necessários para a configuração de multilocação:
Privilégio |
Objeto |
Necessário para |
|---|---|---|
MODIFY |
Agente |
Configuração das instruções do agente com variáveis de prompt |
USAGE |
Agente |
Invocação do agente com atributos de sessão |
CREATE ROW ACCESS POLICY |
Esquema |
Criação de políticas de acesso a linhas |
ADD ROW ACCESS POLICY |
Tabela |
Atribuição de política de acesso a linhas para uma tabela |
OWNERSHIP |
Agente |
Controle completo sobre a configuração do agente |
Limitações¶
As seguintes limitações se aplicam à multilocação com Cortex Agents:
Escopo da sessão: Os atributos da sessão persistem durante a interação e não podem ser substituídos.
O Snowflake fornece atributos de sessão imutáveis e políticas de acesso a linhas para isolar locatários. Você é responsável por configurá-los corretamente para impor os limites de locatários.