Нова історія

Активісти не готові до виробництва - і контроль доступу може бути причиною

за Permit.io12m2025/04/16
Read on Terminal Reader

Надто довго; Читати

Ця стаття представляє чотири-періметрову структуру, яка забезпечує робочі процеси AI за допомогою швидкого фільтрації, захисту даних RAG, контролю над зовнішнім доступом та валідації вихідних даних, використовуючи тонкий контроль доступу (ABAC & ReBAC) для підвищення безпеки AI.
featured image - Активісти не готові до виробництва - і контроль доступу може бути причиною
Permit.io HackerNoon profile picture
0-item

-Даніель Басс

Деніел Бас


Підвищення продуктивності додатків за допомогою використання агентів штучного інтелекту стає дуже поширеною практикою - незалежно від того, чи це пов'язано з гіпе в усій галузі або фактичними корисними випадками використання.



These AI agents, however, often require access to highly sensitive data, introducing significant security risks. Without standardized access control solutions, development teams often build security measures from scratch—leading to cases where AI assistants expose sensitive patient information and several AI agents being compromised through sophisticated prompt injection attacks.

AI assistants expose sensitive patient informationsophisticated prompt injection attacks


Захист агентів штучного інтелекту в цьому контексті стає настільки ж важливим, як і можливості самих агентів штучного інтелекту, якщо не більше.

To address this problem, we at Permit.io have been working for a while on a structured security approach I wish to introduce to you today:

Permit.io

The Four-Perimeter Framework.

The Four-Perimeter FrameworkThe Four-Perimeter Framework


This method provides a comprehensive strategy for protecting AI agents by implementing fine-grained access control, ensuring compliance, and mitigating potential attack vectors. Before I go into the solution, let’s talk more about the problem space.

fine-grained access control

Проблема: ризики безпеки штучного інтелекту в чутливих доменах

Traditional application security measures and access control mechanisms fall short when it comes to handling AI agents. While conventional access control systems like role-based access control (RBAC) excel at managing static permissions, they struggle with the dynamic nature of AI responses. Unlike traditional applications where inputs map to predictable outputs and access patterns are well-defined, AI generates unique responses for each query. This means the access control and input validation techniques we’re used to can’t anticipate all possible outputs.

role-based access control (RBAC)


The way AI systems access data also doesn’t fit security standards. To provide accurate and helpful responses, AI agents need broad access to various data sources and knowledge bases. Classic RBAC proves too rigid for this need - you can’t simply assign static permissions when the data requirements change based on context. This calls for a more sophisticated, attribute-based approach that can make dynamic access decisions.

attribute-based


Інша стурбованість полягає в нових векторах атак, які впроваджують системи штучного інтелекту.Конвенціональні заходи безпеки не були розроблені для боротьби з атаками швидкого введення, спробами вилучення моделей або атаками отруєння даних.


Рішення має форму всеосяжної системи безпеки, побудованої навколо чотирьох основних периметрів -

Рішення: рамки чотирьох периметрів

Оскільки додатки AI відрізняються від стандартного програмного забезпечення тим, як вони обробляють входи, отримують дані, виконують дії та генерують виходи, вони також вводять унікальні ризики безпеки.


The Four-Perimeter Framework is designed to enforce identity-aware, fine-grained authorization throughout the AI lifecycle. It introduces security boundaries that govern what data AI models can access, what operations they can perform, and how their responses are validated.

Чотири периметричні рамкиfine-grained authorization throughout the AI lifecycle


Рамка складається з чотирьох частин:


  1. Prompt Filtering - Забезпечення того, що тільки підтверджені, безпечні входи досягають моделей AI.
  2. RAG Data Protection - Контроль доступу AI до зовнішніх джерел знань.
  3. Secure External Access - Визначення дозволів агента AI при взаємодії з зовнішніми інструментами.
  4. Response Enforcement - Застосування перевірок відповідності та фільтрація вихідів, що генеруються AI.
  • Prompt Filtering – забезпечення того, щоб тільки перевірені, безпечні входи досягали моделей AI.
  • Фільтрування швидко
  • Захист даних RAG – контроль доступу штучного інтелекту до зовнішніх джерел знань.
  • Захист даних RAG
  • Забезпечення зовнішнього доступу – визначення дозволів агента AI при взаємодії з зовнішніми інструментами.
  • Безпечний зовнішній доступ
  • Реалізація відповідей – застосування перевірок відповідності та фільтрація вихідних продуктів, що генеруються AI.
  • Реалізація відповіді


    Застосовуючи принципи контролю доступу з тонким зерном (FGA) по всіх цих периметрів, агенти штучного інтелекту залишаються безпечними, аудиторними та відповідними - без втрати їх гнучкості та функціональності.


    Регулювання доступу з тонким зерном (FGA)безпечний, аудитоспроможний і відповідний

    Where Does FGA Come In?

    Як вже згадувалося раніше, традиційні методи контролю доступу, такі як RBAC, не справляються з динамічною, контекстно-залежною поведінкою штучного інтелекту.


    • ABAC для Prompt Filtering моделі AI обробляють неструктуровані входи, що ускладнює застосування традиційних правил безпеки.
    • ABAC для Prompt Filtering моделі AI обробляють неструктуровані входи, що ускладнює застосування традиційних правил безпеки.ABAC для Prompt Filtering


      ReBAC для захисту даних RAG Retrieval-augmented generation (RAG) дозволяє моделям AI витягувати інформацію з векторних баз даних. ReBAC забезпечує природний спосіб посилення безпеки в цьому налаштуванні шляхом визначення відносин між користувачами, джерелами даних та агентами AI. Замість того, щоб призначати статичні дозволи, ReBAC динамічно надає або заперечує доступ на основі того, як об'єкти даних відносяться один до одного — дозволяючи контекст-свідомі дозволи на пошук.ReBAC для захисту даних RAG Retrieval-augmented generation (RAG) дозволяє моделям штучного інтелекту витягувати інформацію з векторних баз даних. ReBAC забезпечує природний спосіб забезпечення безпеки в цьому налаштуванні шляхом визначення відносин між користувачами, джерелами даних та агентами штучного інтелекту.Замість того, щоб призначати статичні дозволи, ReBAC динамічно надає або заперечує доступ на основі того, як об'єкти даних відносяться один до одного — дозволяючи контекст-свідомі дозволи на пошук.ReBAC для захисту даних RAG


      Поєднуючи ABAC і ReBAC, додатки AI отримують гнучкі механізми управління доступом, орієнтовані на політики, які адаптуються до різних робочих процесів AI без необхідності ручного втручання.


      Як виглядає крок за кроком впровадження?

      Let's walk through a practical implementation to see the Four-Perimeter Framework in action. This example secures an AI agent by validating prompts, enforcing data protection, restricting external access, and moderating responses—leveraging Permit.io AI Access Control integrations at each step.

      Чотири Perimeter Framework в діїпідтвердження закликів, забезпечення захисту даних, обмеження зовнішнього доступу та модерація відповідейPermit.io AI Access ControlPermit.io

      1. Використання пробного фільтрування

      1. Використання Prompt Filtering

      Перший периметр безпеки зосереджений на валідації та очищенні входів штучного інтелекту, перш ніж вони досягають моделі.Ми можемо застосувати структуровану обробку входів та застосувати політики доступу до запрошень, перш ніж вони досягають моделі штучного інтелекту:


      • Контроль доступу на основі ролі, атрибуту та відносин здійснюється, забезпечуючи, щоб тільки затверджені параметри передавалися до AI.
      • Всі порушення політики реєструються та блокуються в режимі реального часу, зберігаючи аудитоспроможну сліду рішень щодо доступу.
      • Перевірки авторизації вбудовані в поточний валідаційний трубопровід, запобігаючи несанкціонованим даним впливати на вихід AI.
      • Роль, атрибут і контроль доступу на основі відносин здійснюються, забезпечуючи, що тільки затверджені параметри передаються до AI.
      • Будь-які порушення політики реєструються та блокуються в режимі реального часу, зберігаючи аудиторний слід рішення про доступ.

    • Ось три способи фільтрування запрошень - від найпростішого до найсучаснішого:


      1. Токенна валідація - Ефективний метод для простих перевірок, таких як довжина запису або загальна допустимість запущених входів в системі. Функції перевірки дозволів у цьому методі вивчають структуровані атрибути текстових записів.
      2. Паттерна відповідність - у цьому методі перевірка дозволів вивчає закономірності в тексті запису. Перевірка, наприклад, чи відповідає закономірність запиту SQL або прикладу коду.
      3. Класифікація AI - найсучасніший метод у цьому списку, класифікація AI використовує AI для аналізу запису за допомогою спеціальної системної записки, класифікуючи
      4. Токенна валідація - Ефективний метод для простих перевірок, таких як довжина прописки або загальна допустимість запущених входів в системі.Застосування токенів
      5. Відповідність шаблонів - у цьому методі перевірка дозволів розглядає шаблони в текстовому записі.Перевірка, наприклад, чи відповідає шаблон SQL-запиту або прикладу коду.
      6. Паттерні відповіді
      7. Класифікація AI - найсучасніший метод в цьому списку, класифікація AI використовує AI для аналізу промпту за допомогою спеціального системного промпту, класифікуючи його в структурований вхід, який може бути точно проаналізований в перевірці дозволів.
      8. Класифікація ІТ



        Фільтрування за допомогою PydanticAI

        Підтримка фільтрації з PydanticAI

        Щоб найкраще продемонструвати реалізацію ефективного фільтрації проб, ось приклад використання інструментів PydanticAI для фільтрації входів користувачів до агентів AI. PydanticAI - це рамка агентів, яка використовує знамениту бібліотеку Python Pydantic та її можливості статичного друку і перетворює її на структуровану структуру AI, яка обробляє неструктуровані дані.


        The following GitHub repository contains a full implementation of the framework for PydanticAI: github.com/permitio/permit-pydanticai

        github.com/permitio/permit-pydanticai


        перевірка
         @financial_agent.tool async def validate_financial_query( ctx: RunContext[PermitDeps], query: FinancialQuery, ) -> bool: ""Ключові перевірки: - Користувач явно вибрав на AI фінансову консультацію, Фальшивий інакше "" спробуйте: #Classify якщо прохання запитує пораду_seeking_advice = classify_promptforad_vice(query.vice) Return Information: The financial query to validate Returns: bool: True if user has consented to AI advice, False otherwise "" try: #Classify if the prompt is requesting advice is_seeking_ad
        @financial_agent.tool
        async def validate_financial_query(
            ctx: RunContext[PermitDeps],
            query: FinancialQuery,
        ) -> bool:
            """Key checks:
            - User has explicitly opted in to AI financial advice
            - Consent is properly recorded and verified
            - Classifies if the prompt is requesting advice
        
            Args:
                ctx: Context containing Permit client and user ID
                query: The financial query to validate
        
            Returns:
                bool: True if user has consented to AI advice, False otherwise
            """
            try:
                # Classify if the prompt is requesting advice
                is_seeking_advice = classify_prompt_for_advice(query.question)
        
                permitted = await ctx.deps.permit.check(
                    # The user object with their attributes
                    {
                        "key": ctx.deps.user_id,
                    },
                    # The action being performed
                    "receive",
                    # The resource being accessed
                    {
                        "type": "financial_advice",
                        "attributes": {"is_ai_generated": is_seeking_advice},
                    },
                )
        
                if not permitted:
                    if is_seeking_advice:
                        return "User has not opted in to receive AI-generated financial advice"
                    else:
                        return "User does not have permission to access this information"
        
                return True
        
            except PermitApiError as e:
                raise SecurityError(f"Permission check failed: {str(e)}")
        

        2. Захист персональних даних –

        2. Захист персональних даних –

        Далі, ми захищаємо recovery-augmented generation (RAG) запити, гарантуючи, що моделі AI можуть отримати доступ тільки до авторизованих джерел знань.Повернення збільшеного покоління (RAG)авторизовані джерела знань


        • Фінограмована політика використовує передові моделі фільтрації даних, такі як управління доступом на основі відносин, щоб дозволити передові фільтрації запитів до двигуна політики.
        • Векторні та графічні джерела, пов'язані з агентами AI, мають метадані, які можуть допомогти двигуну маніпулювати неструктурованим запитом, фільтруючи його, щоб включати тільки дозволені дані.
        • Кожен раз, коли агент отримує дані з бази знань RAG, він фільтрує результати за дозволом користувача.
        Політика з тонким зерном використовує передові моделі фільтрації даних, такі як контроль доступу на основі відносин, щоб дозволити передові фільтрації запитів до двигуна політики.
      9. Векторні та графічні джерела, пов'язані з агентами AI, мають метадані, які можуть допомогти двигуну маніпулювати неструктурованим запитом, фільтруючи його, щоб включати тільки дозволені дані.
      10. Кожен раз, коли агент отримує дані з бази знань RAG, він фільтрує результати за дозволом користувача.

      11. Коли програма агента виконує фільтрацію RAG, вона використовує один з наступних методів:


        • FilterObjects — У цьому методі графічне застосування отримує всі відповідні дані з RAG, а потім фільтрує їх за дозволами користувача. Перевага цієї функції полягає в тому, що воно зберігає двигун політики без статусу і не знає даних RAG.
        • GetUserPermissions - У цьому методі агент надає RAG неструктурований запит. RAG потім викликає функцію GetUserPermissions, додаючи запит фільтра до неструктурованого запиту RAG. Це дозволяє фільтрувати запит тільки до ресурсів, до яких користувач може отримати доступ.
      12. FilterObjects — У цьому методі графічний додаток отримує всі відповідні дані з RAG, а потім фільтрує їх за дозволами користувача.FilterObjects
      13. GetUserPermissions - У цьому методі агент надає RAG неструктурований запит. RAG потім викликає функцію GetUserPermissions, додаючи запит фільтра до неструктурованого запиту RAG. Це дозволяє фільтрувати запит тільки до ресурсів, до яких користувач може отримати доступ.GetUserPermissionsGetUserPermissions


        Захист даних RAG з Langchain

        Захист даних RAG з Langchain

        Langchain, знаменита рамка додатків AI, відома (також) своїми компонентами-ретриверами, які надають велику підтримку в налаштованих ретриверах, які можуть бути зібрані з будь-яким джерелом даних, що полегшує впровадження безпечного RAG. Наприклад, за допомогою SelfQueryRetriever ви можете упакувати звичайний RAG з функцією GetUserPermissions, яка додасть фільтровані дані до запиту. Ось приклад PermitSelfQueryRetriever, який отримує користувача, дію та тип ресурсів RAG для фільтрації результатів для LLM:

        SelfQueryRetrieverGetUserPermissions
         # 1. Будівництво невеликих вбудованих в пам'яті векторних сховищ = OpenAIEmbeddings() vectorstore = FAISS.from_documents(docs, embedding=embeddings) # 2. Ініціалізація PermitSelfQueryRetriever retriever = PermitSelfQueryRetriever( api_key=os.getenv("PERMIT_API_KEY", ""), pdp_url=os.getenv("PERMIT_PDP_URL"), user=USER, resource_type=RESOURCE_TYPE, action=ACTION, llm=embeddings, vectorstore=vectorstore, enable_limit=False, 
        # 1. Build a small in-memory vector store
          embeddings = OpenAIEmbeddings()
          vectorstore = FAISS.from_documents(docs, embedding=embeddings)
        
        # 2. Initialize the PermitSelfQueryRetriever
        retriever = PermitSelfQueryRetriever(
            api_key=os.getenv("PERMIT_API_KEY", ""),
            pdp_url=os.getenv("PERMIT_PDP_URL"),
            user=USER,
            resource_type=RESOURCE_TYPE,
            action=ACTION,
            llm=embeddings,
            vectorstore=vectorstore,
            enable_limit=False,
        )
        

      14. The following repository contains the full implementation of the framework for Langchain: https://github.com/permitio/langchain-permit

        https://github.com/permitio/langchain-permit

        3. Безпечний зовнішній доступ –

        3. Безпечний зовнішній доступ –

        Агенти штучного інтелекту часто взаємодіють з зовнішніми API, сервісами та інструментами автоматизації. Без належного контролю доступу вони ризикують виконувати несанкціоновані дії. Таким чином, ми повинні переконатися, що операції, спрямовані на штучний інтелект, обмежені на основі політики ідентичності машини.


        • Using models like MCP, which defines a server-client model where AI agents interact with external services, is a great step in enabling security for AI external access (e.g., databases, APIs, payment systems).
        • The AI action infrastructure can use a service like Permit.io to perform authorization checks at the action level, checking who’s making a request and what action they want to perform.
        • Developers are able to assign machine identities to AI agents, limiting their capabilities to pre-approved functions only.
        Використання моделей, таких як MCP, яка визначає модель сервера-клієнта, де агенти штучного інтелекту взаємодіють з зовнішніми службами, є великим кроком у забезпеченні безпеки для зовнішнього доступу до штучного інтелекту (наприклад, бази даних, API, платіжні системи).
      15. The AI action infrastructure can use a service like Permit.io to perform authorization checks at the action level, checking who’s making a request and what action they want to perform.
      16. Permit.ioРозробники можуть призначати ідентичності машин агентам AI, обмежуючи їх можливості тільки попередньо затвердженими функціями.


        Хоча GPT і інтерфейси природної мови не є новими, дозволити їм виконувати дії від імені користувачів є досить новим викликом, з яким стикаються багато інженерів.


        1. Безпека прямого доступу - найпростіший рівень. Користувач запитує агента ІТ для виконання операції, наприклад, HTTP-розмови. Агент ІТ вміє перевіряти, чи дозволяється операція, враховуючи поточний контекст і користувача.
        2. Спілкування агента-агента - на цьому наступному рівні ми вимагаємо каскадного потоку ідентичності та дозволів, які дозволяють агенту виконувати дії самостійно на основі принципу найменшої привілеї. На цьому рівні ми хотіли б використовувати зв'язок між ідентичностями - людським і нелюдським - для каскаду різних рівнів дозволів.
        3. Доступний потік запитів
        4. Безпека прямого доступу - найпростіший рівень. Користувач просить агента AI виконати операцію, наприклад, HTTP-дзвінок.Безпека прямого доступу
        5. Спілкування від агента до агента - на цьому наступному рівні нам потрібен каскадний потік ідентичності та дозволів, які дозволяють агентам виконувати дії самостійно на основі принципу найменшої привілеї.Спілкування агента з агентом
        6. Потоки запитів доступу - найбільш захоплюючий рівень зовнішнього доступу - це коли агент AI розуміє необхідність запитувати доступ безпосередньо від людського користувача, коли він хоче виконати операцію.Потоки запитів доступу


          MCP, Human-in-the-Loop і зовнішній доступ

          MCP, Human-in-the-Loop і зовнішній доступ

          Model Context Protocol - це новий протокол, запроваджений Anthropic, який вирішує проблему дозволу агентам AI виконувати проактивні дії і служить найбільшим засобом для забезпечення зовнішнього доступу.


          У наступному прикладі ми показуємо MCP-сервер, який знає, як управляти потоками запитів доступу, приводячи людей в ланцюг і використовуючи API Permit.io для запиту дозволів.


          You can see the full code example for the MCP access request server here: https://github.com/permitio/permit-mcp

          https://github.com/permitio/permit-mcp


          @mcp.tool() async def request_access(username: str, resource_name: str) -> dict: ""Iniciate access request call to a specific resource in the system Args: username: The username of the person requesting access resource: The resource type the user is requesting access for resource_name: The name of the restaurant to request access for """ = wait permit.elements.login_as({ "userId": slugify(username), "tenant: "default"}) print(login_sending_default) url ="https://pay.permit.io/v2/facts/{PROJECT_ID}/{ENV_ID} /{ENV_@mcp.tool()
          async def request_access(username: str, resource: str, resource_name: str) -> dict:
            """
            Initiate access request call to a specific resource in the system
          
            Args:
              username: The username of the person requesting access
              resource: The resource type the user is request access for
              resource_name: The name of the restaurant to request access for
          
            """
            
            login = await permit.elements.login_as({ "userId": slugify(username), "tenant": "default"})
            print(login)
            
            url = f"https://api.permit.io/v2/facts/{PROJECT_ID}/{ENV_ID}/access_requests/{ELEMENTS_CONFIG_ID}/user/{slugify(username)}/tenant/default"
            payload = {
                "access_request_details": {
                    "tenant": "default",
                    "resource": resource,
                    "resource_instance": resource_name['id'],
                    "role": "viewer",
                },
                "reason": f"User {username} requests role 'viewer' for {resource_name}"
            }
            headers = {
                "authorization": "Bearer YOUR_API_SECRET_KEY",
                "Content-Type": "application/json",
            }
            async with httpx.AsyncClient() as client:
                await client.post(url, json=payload, headers=headers)
                return "Your request has been sent. Please check back later."
          

          4 Затвердити відповіді AI –

          4 Валідуйте відповіді AI –

          Останній периметр примушує до зміцнення контенту та дотримання відповідей, що генеруються AI. Це можна зробити, створюючи робочий процес, який застосовує фільтрацію, засновану на політиці, перш ніж доставляти вихід AI:


          Перевірка дозволів може бути додана до програми агента, що дозволяє здійснювати виконання політики на кожному кроці ланцюга, перш ніж користувач фактично отримає відповідь.
        7. Комбіновані робочі процеси з перевірки даних та авторизації забезпечують, що тільки підтверджені та дозволені дані можуть переходити вперед.
        8. Відповідь, що повертається користувачам, може бути редагована на основі заздалегідь визначених обмежень, що дозволяє маскувати дані або повідомляти користувача про обмеження використання.
    Перевірка дозволів може бути додана до програми агента, що дозволяє здійснювати виконання політики на кожному кроці ланцюга, перш ніж користувач отримає відповідь.
  • Комбіновані робочі процеси з перевірки даних та авторизації забезпечують, що тільки перевірлені та дозволені дані можуть рухатися вперед.
  • Відповідь, що повертається користувачам, може бути редагована на основі попередньо визначених обмежень, що дозволяє маскувати дані або повідомляти користувача про обмеження використання.



    Фільтрування відповідей за допомогою Langflow

    Фільтрування відповідей за допомогою Langflow

    In the following example, we use Langflow, a visual no-code AI applications editor, to create a permissions check component that’s positioned before any chat response to the user. Using LangFlow's friendly flow modeling capabilities, you can easily append another component that masks unwanted details in returned responses. This repository contains all the access control components required for secured Langflow applications.

    This repository


    Заключення

    Системи штучного інтелекту швидко інтегруються в додатки в різних галузях, але їх рамки безпеки залишаються недорозвиненими порівняно з традиційним програмним забезпеченням.Без належного контролю доступу, що усвідомлює ідентичність, агенти штучного інтелекту ризикують викрити конфіденційні дані, виконати несанкціоновані операції та генерувати відповіді, які не відповідають рекомендаціям щодо відповідності.


    The Four-Perimeter Framework пропонує структурований спосіб забезпечення робочих процесів AI на кожному етапі - від валідації запитів і захисту даних з збільшеним виявленням (RAG) до контролю зовнішніх дій, спрямованих на AI, і забезпечення відповідності відповідності.


    Instead of building access control from scratch, Permit.io’s AI Access Control integrations with PydanticAI, LangChain, MCP, and LangFlow allow teams to embed security directly into their AI applications—without disrupting development workflows. Try it yourself here.

    Try it yourself here


    Це означає, що ця галузь все ще відносно нова, і кращі практики для захисту агентів штучного інтелекту все ще розвиваються. рамка чотирьох периметрів є експериментальним підходом, і хоча вона забезпечує міцний фундамент, я визнаю, що розгортання в реальному світі завжди вимагає подальшого удосконалення та адаптації.


    I’d love to hear your feedback, thoughts, and ideas on how to improve this framework to make it even better for production-ready AI systems - comment here, or hit me up in our Slack community.

    Slack community
    L O A D I N G
    . . . comments & more!

    About Author

    Permit.io HackerNoon profile picture
    Permit.io@permit
    Never Build Permissions Again

    ПОВІСИТИ БИРКИ

    ЦЯ СТАТТЯ БУЛА ПРЕДСТАВЛЕНА В...

    Trending Topics

    blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks