Also > 1. The Authentication token. How will this long lived token work without being insecure. Who and what will generate it? How will we identify top-level requests for Variables in order to be able to add Variable RBAC/ACLs. This is an important enough thing that I think it needs discussion before we vote on this AIP.
We are currently discussing - in the security team - approach for JWT token handling, so likely we could move the discussion there, it does have some security implications and I think we should bring our finding to the devlist when we complete it, but I think we should add this case there. IMHO we should have a different approach for UI, different for Tasks, different for Triggerer, and different for DagProcessor. (possibly the Trigerer and DagProcessor could be the same because they share essentially the same long-living token. Ash - I will add this to the discussion there. J. On Thu, Aug 7, 2025 at 2:23 PM Jarek Potiuk <ja...@potiuk.com> wrote: > Ah.. So if we are talking about a more complete approach - seeing those > comments from Ash - make me think if we should have another AIP. > (connected) about splitting the distributions. We have never finalized it > (nor even discussed id) but Ash - you had some initial document for that. > So maybe we should finalize it and rather than specify it in this AIP - > have a separate AIP about distribution split that AIP-92 could depend on. > It seems much more reasonable to split "distribution and code split" from > parsing isolation I think and implement them separately/in parallel. > > Reading Ash comments (and maybe I am going a bit further than Ash) it > calls for something that I am a big proponent of - splitting "airflow-core" > and having a different "scheduler". "webserver", "dag processor" and > "triggerer" distributions. Now - we have the capability of having "shared" > code - we do not need "common" code to make it happen - because we can > share code. > > What it could give us - on top of clean client/server split, we could have > different dependencies used by those distributions. Additionally, we could > also split-off the executors from providers and finally implement it in the > way that scheduler does not use providers at all (not even cncf.kubernetes > nor celery providers installed in scheduler nor webserver but "executors" > packages instead. The code sharing approach with symlinks we have now will > make it a .... breeze :) . That would also imply sharing "connection" > definitions through DB, and likely implementing "test connection" > feature properly finally (i.e executing test connection in worker / > triggerer rather than in web server which is a reason why we disabled it by > default now). This way "api-server" would not need any of the providers to > be installed either which IMHO is the biggest win from a security point of > view. > > And the nice thing about it is that it would be rather transparent when > anyone uses "pip install apache-airflow" - it would behave exactly the > same, no more complexity involved, simply more distributions installed when > 'apache-airflow" meta-distribution is used, but it would allow those who > want to implement a more complex and secure setup to have different > "environments" with modularized pieces of airflow installed - only > "apache-airflow-dag-processor + task-sdk + providers" where dag-processor > is run, only "apache-airflow-scheduler + executors" where scheduler is > installed only "apache-airflow-task-sdk + providers" where workers are > running, only "apache-airflow-api-server" where api-server is running and > only "apache-airflow-trigger + task-sdk + providers" . > > I am happy (Ash If you are fine with that) to take that original document > over and lead this part and new AIP to completion (including > implementation), I am very much convinced that this will lead to much > better dependency security and more modular code without impacting the > "apache-airflow" installation complexity. > > If we do it this way- the part of code/clean split would be "delegated > out" from AIP-92 to this new AIP and turned into dependency. > > J. > > > On Thu, Aug 7, 2025 at 1:51 PM Ash Berlin-Taylor <a...@apache.org> wrote: > >> This AIP is definitely heading in the right direction and is a feature >> I’d like to see. >> >> For me the outstanding things that need more detail: >> >> 1. The Authentication token. How will this long lived token work without >> being insecure. Who and what will generate it? How will we identify >> top-level requests for Variables in order to be able to add Variable >> RBAC/ACLs. This is an important enough thing that I think it needs >> discussion before we vote on this AIP. >> 2. Security generally — how will this work, especially with the >> multi-team? I think this likely means making the APIs work on the bundle >> level as you mention in the doc, but I haven’t thought deeply about this >> yet. >> 3. API Versioning? One of the the key driving goals with AIP-72 and the >> Task Execution SDK was the idea that “you can upgrade the API server as you >> like, and your clients/workers never need to work” — i.e. the API server is >> 100% working with all older versions of the TaskSDK. I don’t know if we >> will achieve that goal in the long run but it is the desire, and part of >> why we are using CalVer and the Cadwyn library to provide API versioning. >> 4. As mentioned previously, not sure the existing serialised JSON format >> for DAGs is correct, but since that now has version and we already have the >> ability to upgrade that somewhere in the Airflow Core that doesn’t >> necessarily become a blocker/pre-requisite for this AIP. >> >> I think Dag parsing API client+submission+parsing process manager should >> either live in the Task SDK dist, or in a new separate dist that uses >> TaskSDK, but crucially not in apache-airflow-core. My reason for this is >> that I want it to be possible for the server components (scheduler, API >> server) to not need task-sdk installed (just for cleanliness/avoiding >> confusion about what versions it needs) and also vice-verse, to be able to >> run a “team worker bundle” (Dag parsing, workers, triggered/async workers) >> on whatever version of TaskSDK they choose, again without >> apache-airflow-core installed for avoidance of doubt. >> >> Generally I would like this as it means we can have a nicer separation of >> Core and Dag parsing code, as the dag parsing itself uses the SDK, it would >> be nice to have a proper server/client split, both from a tighter security >> point-of-view, but also from a code layout point of view. >> >> -ash >> >> >> > On 7 Aug 2025, at 12:36, Jarek Potiuk <ja...@potiuk.com> wrote: >> > >> > Well, you started it - so it's up to you to decide if you think we have >> > consensus, or whether we need a vote. >> > >> > And It's not a question of "informal" vote but it's rather clear >> following >> > the https://www.apache.org/foundation/voting.html that we either need a >> > LAZY CONSENSUS or VOTE thread. Both are formal. >> > >> > This is the difficult part when you have a proposal, to assess (by you) >> > whether we are converging to consensus or whether vote is needed. There >> is >> > no other body or "authority" to do it for you. >> > >> > J. >> > >> > On Thu, Aug 7, 2025 at 1:02 PM Sumit Maheshwari <sumeet.ma...@gmail.com >> > >> > wrote: >> > >> >> Sorry for nudging again, but can we get into some consensus on this? I >> mean >> >> if this AIP isn't good enough, then we can drop it altogether and >> someone >> >> can rethink the whole thing. Should we do some kind of informal voting >> and >> >> close this thread? >> >> >> >> On Mon, Aug 4, 2025 at 3:32 PM Jarek Potiuk <ja...@potiuk.com> wrote: >> >> >> >>>>> My main concern with this right now is the serialisation format of >> >> DAGs >> >>> — >> >>>> it wasn’t really designed with remote submission in mind, so it need >> >> some >> >>>> careful examination to see if it is fit for this purpose or not. >> >>> >> >>> I understand Ash's concerns - the format has not been designed with >> >>> size/speed optimization in mind so **possibly** we could design a >> >> different >> >>> format that would be better suited. >> >>> >> >>> BUT ... Done is better than perfect. >> >>> >> >>> I think there are a number of risks involved in changing the format >> and >> >> it >> >>> could significantly increase time of development with uncertain gains >> at >> >>> the end - also because of the progress in compression that happened >> over >> >>> the last few years. >> >>> >> >>> It might be a good idea to experiment a bit with different compression >> >>> algorithms for "our" dag representation and possibly we could find the >> >> best >> >>> algorithm for "airflow dag" type of json data. There are a lot of >> >>> repetitions in the JSON representation and I guess in "our" json >> >>> representation there are some artifacts and repeated sections that >> simply >> >>> might compress well with different algorithms. Also in this case >> >>> speed matters (and CPU trade-off). >> >>> >> >>> Looking at compression "theory" - before we experiment with it - >> there is >> >>> the relatively new standard "zstandard" >> https://github.com/facebook/zstd >> >>> compression opensourced in 2016 which I've heard good things about - >> >>> especially that it maintains a very good compression rate for text >> data, >> >>> but also it is tremendously fast - especially for decompression >> (which is >> >>> super important factor for us - we compress new DAG representation far >> >> less >> >>> often than decompress it in general case). It is standardized in RFC >> >>> https://datatracker.ietf.org/doc/html/rfc8878 and there are various >> >>> implementations and it is even being added to Python standard library >> in >> >>> Python 3.14 >> https://docs.python.org/3.14/library/compression.zstd.html >> >> and >> >>> there is a very well maintained python binding library >> >>> https://pypi.org/project/zstd/ to Yann Collet (algorithm author) >> ZSTD C >> >>> library. And libzstd is already part of our images - it is needed by >> >> other >> >>> dependencies of ours. All with BSD licence, directly usable by us. >> >>> >> >>> I think this one might be a good candidate for us to try, and possibly >> >> with >> >>> zstd we could achieve both size and CPU overhead that would be >> comparable >> >>> with any "new" format we could come up with - especially that we are >> >>> talking merely about processing a huge blob between "storable" >> >> (compressed) >> >>> and "locally usable" state (Python dict). We could likely use a >> streaming >> >>> JSON library (say the one that is used in Pydantic internally >> >>> https://github.com/pydantic/jiter - we already have it as part of >> >>> Pydantic) >> >>> to also save memory - we could stream decompressed stream into jitter >> so >> >>> that both the json dict and string representation does not have to be >> >>> loaded fully in memory at the same time. There are likely lots of >> >>> optimisations we could do - I mentioned possibly streaming the data >> from >> >>> API directly to DB (if this is possible - not sure) >> >>> >> >>> J. >> >>> >> >>> >> >>> On Mon, Aug 4, 2025 at 9:10 AM Sumit Maheshwari < >> sumeet.ma...@gmail.com> >> >>> wrote: >> >>> >> >>>>> >> >>>>> My main concern with this right now is the serialisation format of >> >>> DAGs — >> >>>>> it wasn’t really designed with remote submission in mind, so it need >> >>> some >> >>>>> careful examination to see if it is fit for this purpose or not. >> >>>>> >> >>>> >> >>>> I'm not sure on this point, cause if we are able to convert a DAG >> into >> >>>> JSON, then it has to be transferable over the internet. >> >>>> >> >>>> In particular One of the things I worry about is that the JSON can >> get >> >>> huge >> >>>>> — I’ve seem this as large as 10-20Mb for some dags >> >>>> >> >>>> >> >>>> Yeah, agree on this, thats why we can transfer compressed data >> instead >> >> of >> >>>> real json. Of course, this won't guarantee that the payload will >> always >> >>> be >> >>>> small enough, but we can't say that it'll definitely happen either. >> >>>> >> >>>> I also wonder if as part of this proposal we should move the Callback >> >>>>> requests off the dag parsers and on to the workers instead >> >>>> >> >>>> let's make such a "workfload" implementation stream that could >> support >> >>> both >> >>>>> - Deadlines and DAG parsing logic >> >>>> >> >>>> >> >>>> I don't have any strong opinion here, but it feels like it's gonna >> blow >> >>> up >> >>>> the scope of the AIP too much. >> >>>> >> >>>> >> >>>> On Fri, Aug 1, 2025 at 2:27 AM Jarek Potiuk <ja...@potiuk.com> >> wrote: >> >>>> >> >>>>>> My main concern with this right now is the serialisation format of >> >>>> DAGs — >> >>>>> it wasn’t really designed with remote submission in mind, so it need >> >>> some >> >>>>> careful examination to see if it is fit for this purpose or not. >> >>>>> >> >>>>> Yep. That might be potentially a problem (or at least "need more >> >>>> resources >> >>>>> to run airflow") and that is where my "2x memory" came from if we do >> >> it >> >>>> in >> >>>>> a trivial way. Currently we a) keep the whole DAG in memory when >> >>>>> serializing it b) submit it to database (also using essentially some >> >>> kind >> >>>>> of API (implemented by the database client) - so we know the whole >> >>> thing >> >>>>> "might work" but indeed if you use a trivial implementation of >> >>> submitting >> >>>>> the whole json - it basically means that the whole json will have to >> >>> also >> >>>>> be kept in the memory of API server. But we also compress it when >> >>> needed >> >>>> - >> >>>>> I wonder what are the compression ratios we saw with those 10-20MBs >> >>> Dags >> >>>> - >> >>>>> if the problem is using strings where bool would suffice, >> compression >> >>>>> should generally help a lot. We could only ever send compressed data >> >>> over >> >>>>> the API - there seems to be no need to send "plain JSON" data over >> >> the >> >>>> API >> >>>>> or storing the plain JSON in the DB (of course that trades memory >> for >> >>>> CPU). >> >>>>> >> >>>>> I wonder if sqlalchemy 2 (and drivers for MySQL/Postgres) have >> >> support >> >>>> for >> >>>>> any kind if binary data streaming - because that could help a lot of >> >> if >> >>>> we >> >>>>> could use streaming HTTP API and chunk and append the binary chunks >> >>> (when >> >>>>> writing) - or read data in chunks ans stream them back via the API. >> >>> That >> >>>>> could seriously decrease the amount of memory needed by the API >> >> server >> >>> to >> >>>>> process such huge serialized dags. >> >>>>> >> >>>>> And yeah - I would also love the "execute task" to be implemented >> >> here >> >>> - >> >>>>> but I am not sure if this should be part of the same effort or maybe >> >> a >> >>>>> separate implementation? That sounds very loosely coupled with DB >> >>>>> isolation. And it seems a common theme - I think that would also >> make >> >>> the >> >>>>> sync Deadline alerts case that we discussed at the dev call today. I >> >>>> wonder >> >>>>> if that should not be kind of parallel (let's make such a >> "workfload" >> >>>>> implementation stream that could support both - Deadlines and DAG >> >>> parsing >> >>>>> logic. We have already two "users" for it and I really love the >> >> saying >> >>>> "if >> >>>>> you want to make something reusable - make it usable first" - seems >> >>> like >> >>>>> we might have good opportunity to make such workload implementation >> >>>> "doubly >> >>>>> used" from the beginning which would increase chances it will be >> >>>>> "reusable" for other things as well :). >> >>>>> >> >>>>> J. >> >>>>> >> >>>>> >> >>>>> On Thu, Jul 31, 2025 at 12:28 PM Ash Berlin-Taylor <a...@apache.org> >> >>>> wrote: >> >>>>> >> >>>>>> My main concern with this right now is the serialisation format of >> >>>> DAGs — >> >>>>>> it wasn’t really designed with remote submission in mind, so it >> >> need >> >>>> some >> >>>>>> careful examination to see if it is fit for this purpose or not. >> >>>>>> >> >>>>>> In particular One of the things I worry about is that the JSON can >> >>> get >> >>>>>> huge — I’ve seem this as large as 10-20Mb for some dags(!!) (which >> >> is >> >>>>>> likely due to things being included as text when a bool might >> >>> suffice, >> >>>>> for >> >>>>>> example) But I don’t think “just submit the existing JSON over an >> >>> API” >> >>>>> is a >> >>>>>> good idea. >> >>>>>> >> >>>>>> I also wonder if as part of this proposal we should move the >> >> Callback >> >>>>>> requests off the dag parsers and on to the workers instead — in >> >>> AIP-72 >> >>>> we >> >>>>>> introduced the concept of a Workload, with the only one existing >> >>> right >> >>>>> now >> >>>>>> is “ExecuteTask” >> >>>>>> >> >>>>> >> >>>> >> >>> >> >> >> https://github.com/apache/airflow/blob/8e1201c7713d5c677fa6f6d48bbd4f6903505f61/airflow-core/src/airflow/executors/workloads.py#L87-L88 >> >>>>>> — it might be time to finally move task and dag callbacks to the >> >> same >> >>>>> thing >> >>>>>> and make dag parsers only responsible for, well, parsing. :) >> >>>>>> >> >>>>>> These are all solvable problems, and this will be a great feature >> >> to >> >>>>> have, >> >>>>>> but we need to do some more thinking and planning first. >> >>>>>> >> >>>>>> -ash >> >>>>>> >> >>>>>>> On 31 Jul 2025, at 10:12, Sumit Maheshwari < >> >> sumeet.ma...@gmail.com >> >>>> >> >>>>>> wrote: >> >>>>>>> >> >>>>>>> Gentle reminder for everyone to review the proposal. >> >>>>>>> >> >>>>>>> Updated link: >> >>>>>>> >> >>>>>> >> >>>>> >> >>>> >> >>> >> >> >> https://cwiki.apache.org/confluence/display/AIRFLOW/%5BWIP%5D+AIP-92+Isolate+DAG+processor%2C+Callback+processor%2C+and+Triggerer+from+core+services >> >>>>>>> >> >>>>>>> On Tue, Jul 29, 2025 at 4:37 PM Sumit Maheshwari < >> >>>>> sumeet.ma...@gmail.com >> >>>>>>> >> >>>>>>> wrote: >> >>>>>>> >> >>>>>>>> Thanks everyone for reviewing this AIP. As Jarek and others >> >>>>> suggested, I >> >>>>>>>> expanded the scope of this AIP and divided it into three phases. >> >>>> With >> >>>>>> the >> >>>>>>>> increased scope, the boundary line between this AIP and AIP-85 >> >>> got a >> >>>>>> little >> >>>>>>>> thinner, but I believe these are still two different >> >> enhancements >> >>> to >> >>>>>> make. >> >>>>>>>> >> >>>>>>>> >> >>>>>>>> >> >>>>>>>> On Fri, Jul 25, 2025 at 10:51 PM Sumit Maheshwari < >> >>>>>> sumeet.ma...@gmail.com> >> >>>>>>>> wrote: >> >>>>>>>> >> >>>>>>>>> Yeah, overall it makes sense to include Triggers as well to be >> >>> part >> >>>>> of >> >>>>>>>>> this AIP and phase out the implementation. Though I didn't >> >>> exclude >> >>>>>> Triggers >> >>>>>>>>> because "Uber" doesn't need that, I just thought of keeping the >> >>>> scope >> >>>>>> of >> >>>>>>>>> development small and achieving them, just like it was done in >> >>>>> Airlfow >> >>>>>> 3 by >> >>>>>>>>> secluding only workers and not DAG-processor & Triggers. >> >>>>>>>>> >> >>>>>>>>> But if you think Triggers should be part of this AIP itself, >> >>> then I >> >>>>> can >> >>>>>>>>> do that and include Triggers as well in it. >> >>>>>>>>> >> >>>>>>>>> On Fri, Jul 25, 2025 at 7:34 PM Jarek Potiuk <ja...@potiuk.com >> >>> >> >>>>> wrote: >> >>>>>>>>> >> >>>>>>>>>> I would very much prefer the architectural choices of this AIP >> >>> are >> >>>>>> based >> >>>>>>>>>> on >> >>>>>>>>>> "general public" needs rather than "Uber needs" even if Uber >> >>> will >> >>>> be >> >>>>>>>>>> implementing it - so from my point of view having Trigger >> >>>> separation >> >>>>>> as >> >>>>>>>>>> part of it is quite important. >> >>>>>>>>>> >> >>>>>>>>>> But that's not even this. >> >>>>>>>>>> >> >>>>>>>>>> We've been discussing for example for Deadlines (being >> >>> implemented >> >>>>> by >> >>>>>>>>>> Dennis and Ramit a possibility of short, notification-style >> >>>>>> "deadlines" >> >>>>>>>>>> to be send to triggerer for execution - this is well advanced >> >>> now, >> >>>>> and >> >>>>>>>>>> whether you want it or not Dag-provided code might be >> >> serialized >> >>>> and >> >>>>>> sent >> >>>>>>>>>> to triggerer for execution. This is part of our "broader" >> >>>>>> architectural >> >>>>>>>>>> change where we treat "workers" and "triggerer" similarly as a >> >>>>> general >> >>>>>>>>>> executors of "sync" and "async" tasks respectively. That's >> >> where >> >>>>>> Airflow >> >>>>>>>>>> is >> >>>>>>>>>> evolving towards - inevitably. >> >>>>>>>>>> >> >>>>>>>>>> But we can of course phase things in out for implementation - >> >>> even >> >>>>> if >> >>>>>> AIP >> >>>>>>>>>> should cover both, I think if the goal of the AIP and preamble >> >>> is >> >>>>>> about >> >>>>>>>>>> separating "user code" from "database" as the main reason, it >> >>> also >> >>>>>> means >> >>>>>>>>>> Triggerer if you ask me (from design point of view at least). >> >>>>>>>>>> >> >>>>>>>>>> Again implementation can be phased and even different people >> >> and >> >>>>> teams >> >>>>>>>>>> might work on those phases/pieces. >> >>>>>>>>>> >> >>>>>>>>>> J. >> >>>>>>>>>> >> >>>>>>>>>> On Fri, Jul 25, 2025 at 2:29 PM Sumit Maheshwari < >> >>>>>> sumeet.ma...@gmail.com >> >>>>>>>>>>> >> >>>>>>>>>> wrote: >> >>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>>> #2. Yeah, we would need something similar for triggerers as >> >>>> well, >> >>>>>>>>>> but >> >>>>>>>>>>>> that >> >>>>>>>>>>>> can be done as part of a different AIP >> >>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>>> You won't achieve your goal of "true" isolation of user code >> >> if >> >>>> you >> >>>>>>>>>> don't >> >>>>>>>>>>>> do triggerer. I think if the goal is to achieve it - it >> >> should >> >>>>> cover >> >>>>>>>>>>> both. >> >>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>>> My bad, should've explained our architecture for triggers as >> >>>> well, >> >>>>>>>>>>> apologies. So here it is: >> >>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>>> - Triggers would be running on a centralized service, so >> >> all >> >>>> the >> >>>>>>>>>> Trigger >> >>>>>>>>>>> classes will be part of the platform team's repo and not >> >> the >> >>>>>>>>>> customer's >> >>>>>>>>>>> repo >> >>>>>>>>>>> - The triggers won't be able to use any libs other than std >> >>>> ones, >> >>>>>>>>>> which >> >>>>>>>>>>> are being used in core Airflow (like requests, etc) >> >>>>>>>>>>> - As we are the owners of the core Airflow repo, customers >> >>> have >> >>>>> to >> >>>>>>>>>> get >> >>>>>>>>>>> our approval to land any class in this path (unlike the >> >> dags >> >>>> repo >> >>>>>>>>>> which >> >>>>>>>>>>> they own) >> >>>>>>>>>>> - When a customer's task defer, we would have an allowlist >> >> on >> >>>> our >> >>>>>>>>>> side >> >>>>>>>>>>> to check if we should do the async polling or not >> >>>>>>>>>>> - If the Trigger class isn't part of our repo (allowlist), >> >>> just >> >>>>>>>>>> fail the >> >>>>>>>>>>> task, as anyway we won't be having the code that they used >> >> in >> >>>> the >> >>>>>>>>>>> trigger >> >>>>>>>>>>> class >> >>>>>>>>>>> - If any of these conditions aren't suitable for you (as a >> >>>>>>>>>> customer), >> >>>>>>>>>>> feel free to use sync tasks only >> >>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>>> But in general, I agree to make triggerer svc also >> >> communicate >> >>>> over >> >>>>>>>>>> apis >> >>>>>>>>>>> only. If that is done, then we can have instances of >> >> triggerer >> >>>> svc >> >>>>>>>>>> running >> >>>>>>>>>>> at customer's side as well, which can process any type of >> >>> trigger >> >>>>>>>>>> class. >> >>>>>>>>>>> Though that's not a blocker for us at the moment, cause >> >>> triggerer >> >>>>> are >> >>>>>>>>>>> mostly doing just polling using simple libs like requests. >> >>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>>> On Fri, Jul 25, 2025 at 5:03 PM Igor Kholopov >> >>>>>>>>>> <ikholo...@google.com.invalid >> >>>>>>>>>>>> >> >>>>>>>>>>> wrote: >> >>>>>>>>>>> >> >>>>>>>>>>>> Thanks Sumit for the detailed proposal. Overall I believe it >> >>>>> aligns >> >>>>>>>>>> well >> >>>>>>>>>>>> with the goals of making Airflow well-scalable beyond a >> >>>>> single-team >> >>>>>>>>>>>> deployment (and AIP-85 goals), so you have my full support >> >>> with >> >>>>> this >> >>>>>>>>>> one. >> >>>>>>>>>>>> >> >>>>>>>>>>>> I've left a couple of clarification requests on the AIP >> >> page. >> >>>>>>>>>>>> >> >>>>>>>>>>>> Thanks, >> >>>>>>>>>>>> Igor >> >>>>>>>>>>>> >> >>>>>>>>>>>> On Fri, Jul 25, 2025 at 11:50 AM Sumit Maheshwari < >> >>>>>>>>>>> sumeet.ma...@gmail.com> >> >>>>>>>>>>>> wrote: >> >>>>>>>>>>>> >> >>>>>>>>>>>>> Thanks Jarek and Ash, for the initial review. It's good to >> >>> know >> >>>>>>>>>> that >> >>>>>>>>>>> the >> >>>>>>>>>>>>> DAG processor has some preemptive measures in place to >> >>> prevent >> >>>>>>>>>> access >> >>>>>>>>>>>>> to the DB. However, the main issue we are trying to solve >> >> is >> >>>> not >> >>>>> to >> >>>>>>>>>>>> provide >> >>>>>>>>>>>>> DB creds to the customer teams, who are using Airflow as a >> >>>>>>>>>> multi-tenant >> >>>>>>>>>>>>> orchestration platform. I've updated the doc to reflect >> >> this >> >>>>> point >> >>>>>>>>>> as >> >>>>>>>>>>>> well. >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> Answering Jarek's points, >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> #1. Yeah, had forgot to write about token mechanism, added >> >>> that >> >>>>> in >> >>>>>>>>>> doc, >> >>>>>>>>>>>> but >> >>>>>>>>>>>>> still how the token can be obtained (safely) is still open >> >> in >> >>>> my >> >>>>>>>>>> mind. >> >>>>>>>>>>> I >> >>>>>>>>>>>>> believe the token used by task executors can be created >> >>> outside >> >>>>> of >> >>>>>>>>>> it >> >>>>>>>>>>> as >> >>>>>>>>>>>>> well (I may be wrong here). >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> #2. Yeah, we would need something similar for triggerers as >> >>>> well, >> >>>>>>>>>> but >> >>>>>>>>>>>> that >> >>>>>>>>>>>>> can be done as part of a different AIP >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> #3. Yeah, I also believe the API should work largely. >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> #4. Added that in the AIP, that instead of dag_dirs we can >> >>> work >> >>>>>>>>>> with >> >>>>>>>>>>>>> dag_bundles and every dag-processor instance would be >> >> treated >> >>>> as >> >>>>> a >> >>>>>>>>>> diff >> >>>>>>>>>>>>> bundle. >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> Also, added points around callbacks, as these are also >> >>> fetched >> >>>>>>>>>> directly >> >>>>>>>>>>>>> from the DB. >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> On Fri, Jul 25, 2025 at 11:58 AM Jarek Potiuk < >> >>>> ja...@potiuk.com> >> >>>>>>>>>>> wrote: >> >>>>>>>>>>>>> >> >>>>>>>>>>>>>>> A clarification to this - the dag parser today is likely >> >>> not >> >>>>>>>>>>>> protection >> >>>>>>>>>>>>>> against a dedicated malicious DAG author, but it does >> >>> protect >> >>>>>>>>>> against >> >>>>>>>>>>>>>> casual DB access attempts - the db session is blanked out >> >> in >> >>>> the >> >>>>>>>>>>>> parsing >> >>>>>>>>>>>>>> process , as are the env var configs >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>> >> >>>>>> >> >>>>> >> >>>> >> >>> >> >> >> https://github.com/apache/airflow/blob/main/task-sdk/src/airflow/sdk/execution_time/supervisor.py#L274-L316 >> >>>>>>>>>>>>>> - >> >>>>>>>>>>>>>> is this perfect no? but it’s much more than no protection >> >>>>>>>>>>>>>> Oh absolutely.. This is exactly what we discussed back >> >> then >> >>> in >> >>>>>>>>>> March >> >>>>>>>>>>> I >> >>>>>>>>>>>>>> think - and the way we decided to go for 3.0 with full >> >>>> knowledge >> >>>>>>>>>> it's >> >>>>>>>>>>>> not >> >>>>>>>>>>>>>> protecting against all threats. >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> On Fri, Jul 25, 2025 at 8:22 AM Ash Berlin-Taylor < >> >>>>>>>>>> a...@apache.org> >> >>>>>>>>>>>>> wrote: >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> A clarification to this - the dag parser today is likely >> >>> not >> >>>>>>>>>>>> protection >> >>>>>>>>>>>>>>> against a dedicated malicious DAG author, but it does >> >>> protect >> >>>>>>>>>>> against >> >>>>>>>>>>>>>>> casual DB access attempts - the db session is blanked out >> >>> in >> >>>>>>>>>> the >> >>>>>>>>>>>>> parsing >> >>>>>>>>>>>>>>> process , as are the env var configs >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>> >> >>>>>> >> >>>>> >> >>>> >> >>> >> >> >> https://github.com/apache/airflow/blob/main/task-sdk/src/airflow/sdk/execution_time/supervisor.py#L274-L316 >> >>>>>>>>>>>>>>> - is this perfect no? but it’s much more than no >> >> protection >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> On 24 Jul 2025, at 21:56, Jarek Potiuk < >> >> ja...@potiuk.com> >> >>>>>>>>>> wrote: >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> Currently in the DagFile processor there is no built-in >> >>>>>>>>>>> protection >> >>>>>>>>>>>>>>> against >> >>>>>>>>>>>>>>>> user code from Dag Parsing to - for example - read >> >>> database >> >>>>>>>>>>>>>>>> credentials from airflow configuration and use them to >> >>> talk >> >>>>>>>>>> to DB >> >>>>>>>>>>>>>>> directly. >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>> >> >>>>>> >> >>>>>> >> >>>>> >> >>>> >> >>> >> >> >> >>