All right. Hello, everyone. My name is Daniel, and I'll be talking about Cascade, which is a new high-level language for implementing SE Linux policy. So, as just said, my name is Daniel. I'm a senior software engineer at Microsoft. I've been there since COVID has, and there's my email address. I'll also, I think, have my email address in the last slide, but my slides are up on the schedule site, too, so if you want to grab my email address. There's the GitHub page for the Cascade repository, and also this is a Rust project, so it's available on crates.io. I just made a new release last night, so the current state of the code as of this presentation is up on crates.io. If you want to download it and play with it. So what I'm going to talk about is I'm going to start with the motivations and goals behind why we made a high-level language for SE Linux and what we're trying to achieve with it, and then I'm going to talk about the language itself in terms of what it looks like, how to use it. It's going to be more of a quick overview than a thorough teach yourself. I don't have enough time for the really in-depth nitty-gritty, but I'll refer you to the documentation if you want to learn more, and then we'll talk about kind of future plans, daydreams, where we'd like to go with this. So anyone who's interacted with SE Linux has probably heard the complaint that SE Linux is hard, comes up a lot. A lot of the perceived challenge of SE Linux has to do with the fact that systems are complicated. I regularly get people being like, oh my gosh, SE Linux is so confusing. What's it doing? I don't understand. My code's not doing this. SE Linux is reporting a denial. Clearly it's a bug in SE Linux, and then it turns out that they're calling some library that's doing something they didn't expect that actually has real security consequences, and they go, oh my gosh, I didn't know that library was doing it. And so in order to write good SE Linux policy, you really have a lot of different things you need to understand. You need to understand the details of how the application you're writing policy for works. You need to understand a lot of the implementation details of the underlying library, of the underlying kernel and system that this is built on top of. You need to understand language details, both of the language that the application is written in in a lot of cases, as well as the language that you're writing the SE Linux policy in. And of course, you need to understand the security goals of your system. And so this is something that, in most contexts, I think one person does not have all this knowledge, at least easily. And abstractions can help. We can abstract away some of these language details and these kernel details. But in my opinion, the current state of SE Linux is that the discovery and usability of the available abstractions is not where it needs to be. So when we write policy, we have a number of challenges. And I'm going to, for most of this talk, I'm going to focus specifically on writing your M4 macro reference policies, style of policy writing, because I think that's what most people are using today, as in terms of how I contrast to Cascade. So if you're writing in reference policy, you have at least four different syntaxes to learn by my account. You've got your, like, your base policy language, you've got your M4 macros on top. If you want to add a fifth, you can say that it's the specific ref policy usage of the M4 macros, the way they've defined interfaces and templates, et cetera. You've got the file context file has its own special syntax. And the constraints was the fourth one I was counting has its own syntax. Because reference policy is architected with a preprocessor first, and then we compile the base policy language into Cil, and then we compile the Cil. And there wasn't a lot of checking earlier. So the Cil could still have errors in it. We get these error messages that you're like, I wrote a macro, I'm getting an error in Cil, what's going on? There's not a lot of checking against policy developer error. And traceability from, hey, I have this ABC denial, or I have this result from my static analysis tool on my binary policy, tracing that back up to a line of source code is extremely difficult. So what we'd like to do is focus our time and development effort on our system functional behavior and security goals. Those are the hard parts, those are the interesting parts, and not be focusing our time on language limitations. So we want to build on top of some prior work, specifically a project called Cil Common Intermediate Language. And this is a quote from the Cil Wiki here, the SC Linux Common Intermediate Language is designed to be a language that sits between one or more high level policy languages, such as the current module language, and the low level kernel policy representation. I think it's, you know, an interesting claim to say that the current module language is a high level language in many senses, but it is. And so Cil is designed exactly for our use case. We want to take a high level language with advanced features, compile it into Cil, and then let Cil handle the low level details for us. And so my understanding from having talked to some of the people who originally implemented Cil is that they envisioned a future with a whole bunch of different high level languages that everyone could go write their own high level language, compile into Cil. We'd have a robust ecosystem. And so far, that has not necessarily materialized yet, but we're hoping to change that. So and let me another note on Cil is as I said a moment ago, I'm generally speaking when I say, you know, cascade adds this, I mean, in comparison to reference policy, Cil has a number of the functionalities here available in native Cil already. So our model that we're using as we develop policy at Microsoft is that we have a relatively small number of quote, policy experts who kind of handle some of the core functionality of the system. We create abstractions, build things that other people can use. We verify the security goals of the policy, we review the policy that comes in, we run static analysis tools, we enhance static analysis tools. We also have a lot of application developers who are writing various applications, and they want to we would like them at least to write some of the policy for their applications because they know what their application does. And so they should use the abstractions created by the policy of developers and need minimal to no policy knowledge. This is the model we're working to get to. And it's had some challenges in terms of the existing language. But that's what we're targeting with cascade. And I think that's a model that's kind of extensible to a lot of people's use cases. So our goals with cascade, the number one goal is we want to improve the usability of writing policy. And specifically, we want to have a very consistent syntax. We want to have a pattern where the simple option is typically the best option. In existing reference policy, your simple option is to write an allow rule. And that is very, very rarely the thing you actually want to do to solve your problems. We want to make the things that you actually want to do look very simple. We want to support mapping our information all the way down from what we get at the end of the binary level up to where that came in source. And where possible, we'd like to abstract away implementation details. That always gets tricky when you start talking to security people and they say, oh, but my security goal really cares about this particular detail. And so there's some of that becomes create the ability for those policy experts to abstract away the implementation details as they desire and move some of that into policy. In some cases, it is abstract away implementation details. For example, the object classes, some of these object classes have overflowed their number of permissions past 32. So we've got capability to process to, et cetera. Cascade just has capability and it knows which permissions are capability to and handles that mapping for you, for example. So we'd like to provide support for a model where our application developers are actually writing policy and that works easy for them and they say, oh, hey, this is not as bad as I thought. Why does SC Linux have this representation? Rep, what's the word? Reputation. Thank you. Okay. And we'd like to also though provide full expressiveness for high assurance just because we're a high level language doesn't mean that we want to abstract things away so much that you're not actually having control of your security goals. So think rust as opposed to like Python. And so we want to also be not by a foundation on which to build additional high level tooling. So this is supposed to be a building block, not the end all be all. And we have some ideas about what that high level tooling will look like. We also would like to check as much as possible at compile time. Obviously you can't turn every single runtime error into a compile error. It would be really nice if we lived in a world where that was possible. But there's a lot of things that in our current ecosystem, both the threat policy and still you can write policy that is correct, compiles, installs, and is just never what you would have wanted on any system. And we're trying to check as much of that as possible as well as providing the ability to add checks in a more featureful way. That exists now. And so ultimately we want to be a high level language. We want to abstract patterns. We want to provide syntactic sugar. We want to do what we can to hand hold and make things easy. So in terms of the external tooling, our core language is built as a library. The last talk I think teed me up really well highlighting how Clang's building as a library enabled him to plug in and do all sorts of interesting things. And that's exactly what we're trying to do, kind of emulating Clang there. That almost all of the Cascade implementation is in a library. We've got this really thin front end to provide a binary compiler.  Now obviously Cascade being a Rust project at the moment that means those tools would need to be written in Rust, which is certainly a deal breaker for like existing IDEs that would like a plug-in written in C. So we'll need to add FFI bindings for C. That's coming soon. That'll be, that'll be the tagline for this talk in a lot of ways. But so we want to make the, all of the, Cascade has the ability to represent kind of intent and meaning in the policy directly in the policy and documentation in terms of documentation comments and then make all that available to the tools so that you can take advantage of the richness of Cascade and whatever tooling you're doing. So far we're focusing just on type enforcement for now. We do want to support all the security models of SE Linux. So currently when Cascade writes a policy it generates two roles. System R and Object R, one user, and it handles all that for you. It does not build MLS-enabled policy. That's coming but not in the near term we got to get type enforcement working better first. We've got a growing fairly robust test suite it now. We want to make sure that future compiler enhancements are safe, regression free, easy to do. These test suites also provide simple functional examples. If you want to look at, here's some working and some non-working Cascade policy. That's a decent set of examples to start with and this is the path there is in the Cascade repository in the data directory. We've got hopefully the names policies and air policies are intuitive. Okay current status so as of yesterday I released version 0.0.2. That's basically just a line in the sand of this is where the project was as of the time of this presentation. If you want to see exactly the details of that there's a change log in the repository. And we've got support for declaring types, AV rules, except never allow it's not implemented yet. And we have inheritance, we have a thing called resource association, I'll talk about that in a little bit. We've got a number of the abstractions and features that you would desire if you're going to implement say a full policy. Many of those are done, many of them those are in progress. And we're still working on some of the the nitty gritty low-level details of stuff that you have to have but like you know port labeling for example not currently supported in Cascade needs to get there. We'll get there in a few months. So we're going to hopefully in a month or two here release 0.1 which will give you a clean build of a sufficiently complex kind of comprehensive policy. And then the goal later this year is going to be we're going to call it 1.0 for a sufficiently comprehensive support for hey I've written something that's you know roughly functionally equivalent to say targeted policy or any existing policy. It's not necessarily as fully featured full but it's kind of done enough that I would say hey go ahead and start using it write your policies in it. So that's coming at that point is when I would aim to make any kind of backwards compatibility promises about hey you write policy that compiles now I intend to compile it for all time or at least until 2.0. And so right now you know if you write policy I do reserve the right at this point to change how the language works and break it. I actually have a pull request open right now that does that. So we're we're changing things I mean it's it's stable-ish but reserve the right to change things. And if you want to see you know the the nitty gritty details of all that I've got a roadmap.md file in the cascade repository that kind of walks through all of our future plans up to 1.0 passed it to 1.1 and 2 and 3 and things that are in the the pipeline down the road. So and we're very open to modifying that that's not this is the dictated plan we must follow. So if there's something that you say hey I would love to adopt cascade I need feature x let me know and we can modify it. So let's go into the details of how the policy language works. So a general rule that I think is an absolute is uh declarations or blocks with curly braces and rules or statements that in in semicolons. So we declared types with either the domain or resource keyword that definitely should have had quotes around domain and quotes around resource. Um and so this is kind of an interesting thing that's I think different from existing precedent that we've put in the language the fact that some of these types refer to processes and some of these refer to resources which maybe is a controversial decision I think it's a feature not a bug that types are types are types in se linux and they're all types. But this really allows us to do some things at the compiler level to make various assumptions about how people are using these things and add additional compile time checking and functionality. Um so we also declare functions with the function keyword and we'll talk about functions in a moment so here's an example to declare a domain called foo this is a type named foo it's just the type that I'm promising to use as a process and I can only use as a process the language will enforce that for me um and it's got a function in it and then we can call it down at the bottom you can see you know in domain bar we're calling foo.sum function probably you know in most cases you'd be calling functions on resources is more of your common but maybe some function is signaling or IPC or whatever and then obviously you got various rules in the function domains can also have rules maybe calls to other domains or built-ins like allow etc. So functions um functions do support full type checking on their arguments that includes the se linux types so if you want to create a type or it's it would technically be an attribute under the hood but in cascade that's now a virtual domain or a virtual resource um if you want to create a virtual resource that's you know some abstraction for say temp files and then you want to say this function only takes temp files then it can take any kind of temp file and you'll get that enforced at compile time these functions are all automatically derivable via inheritance that means that we can define kind of a high level interface that you know all all domains or all all files for example are required to support you know a read function etc and that way we can kind of predictably go in and say if i know that this is a file type i can call read on it i know it'll work and we also don't have boilerplate we've done a couple of kind of ad hoc studies of looking at like if we take this ref policy module and reimplement it in cascade how much is the number of lines of code go down and the big win there is there were 300 lines of interfaces that become essentially zero lines because those interfaces all got derived from a parent type and then going forward we really want to have automated documentation generation on these functions that's it's something that's in progress and integrate with external tooling in all sorts of interesting ways so this is what this is a built-in function actually the allow function here it takes four arguments so you'll know this is one of those uses of the domain and resource separation here because i mean i've made the mistake before writing se linux policy where i accidentally you know say a fu t instead of fu exec t on my target and then everything compiles i get the rule on my system it didn't do what i want to do obviously astute viewers will notice that some allow rules can take a resource as their source and so that's a an asterisk on that that we've got to handle that some other way the details are tbd but we'll figure out something there there's a couple of good options the the square brackets around perm here are a list so the the permissions in this case are a list of permissions at some point i'd like to add some syntactic sugar support for letting you do lists on all of these things but at least in the first cut for now it's just the permissions are a list everything else is single so for now you have to write multiple allow rules if you need say multiple object classes obviously you could write a native cascade wrapper function that would allow that and we'll we'll add some extra sugar at some point so yeah and then the curly brackets at the end obviously would be the contents of this function in the allow case this is a built-in function so it doesn't have any cascade contents it compiles directly down to a still allow rule annotations so a cascade supports all of the things we've talked about so far all the declarations and the statements everything can be annotated so what is an annotation an annotation provides additional metadata about various items that can be used by tooling and by tooling i do mean very generally and broadly now obviously right now the only tooling that exists is the compiler but in the long term we would like to have you know various cascade aware pieces of tooling maybe some of the current tooling can be expanded to be cast get aware in some cases I think we'll write new tooling and anytime we want to have some piece of tooling understand something about cascade we can pass that through in an annotation so so far we've implemented four annotations the associated associated call I'll talk about in a little bit alias is the way in cascade to provide type aliases just a different name for something we also have alias symbol functions which I don't think exist in anything currently so you can provide a new name for a function this is cool for like if you want to refer to directory reads as either read or list because both terms have been around you implement one function you alias it to list make list controls the ability to coerce things into lists so by default kind of under the hood for you permissions are declared with make list so that if when you pass if you want to say allow something something something read it'll coerce that and do a list for you this is kind of one of those compile checking things that we want to say we want to do list coercion to be nice but we don't want to like do it without you kind of opting in because it's a security language we would like to be very predictable so if you intended to pass a list and you can put this on anything and it will get automatically convert coerced into a list if it's used in a list context we've also got some planned ones I'm actually glad to see I put derive and plan I thought I'd put it in currently implemented but I don't actually have a pull request open for it yet it's work in progress I was working on the plan on the way over here and it's almost done derive is the ability to automatically derive your apparent your parent functions it takes a couple of arguments one argument is a list of which parent functions you would like to derive including an option for all if you just want to derive every function your parent has which I think would be the normal thing to use but if you want to say I just want to derive read and write or I want to manually list every function that's up to you the second argument is a strategy argument and so that's a you guys may be familiar with the diamond problem and multiple inheritance the diamond problem is just if I'm a child class I've got two parents and they both provide different implementations of say a read function then how do I know which implementation to use and in traditional programming languages this is a very hard problem we have one huge advantage here in the selenix is broadly not ordered dependent and so just do both is a really reasonable option because it doesn't matter what order we do both in which is why that would normally be a problem so one of the derived strategies available is the union strategy where you just union together the permissions in every parent function and then you also have the option to specify a particular parent name that if there's a naming conflict give me these parents functions if there's some other strategy you're writing cascade and you're like oh I want another strategy let me know happy to implement more strategies there hint and ignore so hint is something I think is going to be really cool but it's very much vaporware at this point and the idea is that we can provide hinting about things that will be used by analysis tooling when you get an ABC denial it can pop up this hint that says hey this is access on say a temp file you probably wanted to create your own new derived temp file that's a you know your specific type temp file you probably didn't want to access temp directly and you can use these things for like you know hey this we think this permission if you encountered this kind of denial that's probably an attack like this really shouldn't happen I'd like to have hint support kind of machine readable and human readable things so that you could then plug that into some kind of incident response thing we'll see we need to flesh out the details of what hints going to look like the other one that we've talked about a lot is ignore which once we add compiler warning support which is also not there yet then ignore will be the way to ignore a compiler warning okay so resource association so it's a very common pattern where policies have some domain say ip tables t and it's got various resource files that are used by it ip tables temp t ip tables conf t ip tables exec t etc in your m4 based policies you'd have to do a whole template setup it's complicated it's confusing if you want to like automate this and so most people don't they just kind of manually do this every time at least in my experience in sill you can set this up via block inheritance that's lacking syntactic sugar and I think for you know someone coming into it going oh my gosh what's this sill block inheritance context concept it's a little kind of confusing so this is kind of a core feature in cascade that I think is going to be more usable for people is what it looks like so I gave the temp file example here you create a virtual resource a virtual resource is just a resource or a domain you can have virtual domain that does not result in a specific type instantiation on the system under the hood it becomes an attribute and so we have this virtual resource temp it's got a associated call which is in this case the manage call because that's what you typically want to do and the associated call every time we associate a resource with the virtual or associated domain with that resource rather then we're going to call that on our new derived resource so when we associate temp with my app it's going to create a resource an actual real resource not a virtual one named my app dot temp and then it's going to call my app dot temp dot manage for you for free and so this is basically we just say we've got this idea of temp files we want to be able to create new temp files and when you create your own new temp file you want to be able to manage it whatever that means you can define that yeah and so this associate you know this takes a list so you can associate multiple different things yeah so here's an example of what that looks like compared to reference policy so this is a pretty common pattern you'll see I've got you know my app I give it the domain type attribute then I declare various resource files associated with it like my app temp t give those the temp attribute etc and then I give out these permissions in the case of a temp file it's typically you know managing files there's in sim links you probably need to know like how I intend to use it right in a comp file it's going to be reading etc and then you've got your rules so in cascade we've declared temp other elsewhere we've stored the knowledge that what we do is manage temp files in the general temp file declaration so we don't need to repeat it every time and so all we do is associate that's actually wrong that should have said associate temp is what that should have said and then it would create the my app t.temp so sorry type on the slides and then we put our rules in there so it gets a lot shorter a lot of the redundant stuff is kind of carried up to generic implementations all right inheritance so we inherit using the inherits keyword and this creates a actual type that is associated with the attribute that is the parent so in this case we've got ip tables temp t that is a child of temp file so again typically I would say you maybe use you should create ip tables temp t of the association but if you wanted to manually create it the inheritance you could do it this way yeah so let's see inheritance has a number of effects so all of the rules from the parent get applied to the child everything rules to the parent gets applied through attributes and the functions the parent functions are required to be implemented right so this is a known interface that people can then rely on as they're writing other policy and if you would like to write those yourself you are free to do so if you say I don't really want exactly what my parent function looks like great and you can derive them automatically which I think will be the common case if your parent has associated resources you get your own associated resources that are used there so you can create like a a generic like application domain that associates various you know temp comp files that everyone needs and then your specific application doesn't even need to worry about the association it just gets a temp file and then we we call associated calls on those copies of our associated resources just like you would with any kind of association so I was told in a someone that was looking over these slides that that was the difference was confusing so I'm trying to clarify the difference here so inheritance is creating a hierarchy of types this domain is a more specific form of this domain so you know IP tables is a more specific sort of application resource association creates a relationship between domains and resources this domain owns this resource by the way when you're building like modules and stuff and saying okay this domain goes in this module all of its resources travel with the domain for free so I don't need to like enumerate all of the different things associated with the IP tables domain that goes in the IP tables module that just comes along for free and associations are carried through inheritance okay conditionals you guys may be familiar with this XKCD cartoon this could probably apply to most cascade terminology decisions that these terms are all kind of interesting and now I'm like I'm going to solve it all and now we've got new usages of the terms SCLIN is conditional terminology is kind of confusing because of historical reasons and there's there's bullions and there's tunables and tunables mean something a little bit different depending on if you're in SIL or if you're in reference policy there's reference policy compiled time macros I was going to like get a whole confusing chart of like here's how everything does and I was like I'm just going to make mistakes so it's complicated so in cascade we've got one kind of conditional and we're calling that a Boolean just to add to the complication of everything because now Boolean means something else in cascade than it does in actual SC Linux world cascade Booleans are either runtime setable or compile time setable so that means that if you have a runtime setable Boolean that is an actual SC Linux Boolean that gets passed through into your source and if you have a compile time setable Boolean then that gets compiled out you can mix and match those Booleans freely and the compiler will handle that for you and take out the compile time ones from the final policy if you're following along in the slides I uploaded sorry the slides not there I added it this morning so that's why you're confused okay flexible build system shout out to Angelina who's a summer intern on our team this year who's currently working on this and so this is this is work in progress as is the conditionals on the last slide if you download the latest and greatest cascade you're gonna go ah conditionals don't work actually you may not notice because they silently don't work which is the best kind of not working so build multi yeah so we want to support a use case where you have multiple systems to find in the same repository with really easy configuration in reference policy-based systems you got to add a bunch of gross shell script rapping around your build system to handle this we also obviously want to have support for building individual modules and we want to be able to really handle a clean dependency resolution I know I've struggled a lot with flipping stuff in modules.com and rest policy and seeing things break and fighting with it for days and it's pretty painful so hopefully we can improve that I'd like to improve optional policy support this is something I've chatted with a few people in the community about a few times I've got a slide on that later so anyways we're gonna have a pretty flexible build system lets you say I've got various systems this is what they contain I can build all of them at once I can build just one and Cascade will kind of handle all that for you nicely under the hood one thing we want to really focus in on is helpful error handling so currently our focus has really been biased towards making sure that if you've written valid Cascade policy it compiles correctly and so the errors are definitely a work in progress and I was looking at setting up a demo and generating some errors and I like generate an error thing I was like ooh that error message is really bad I don't want to put that up on the screen so some of our errors are really good I'm gonna show you one on the next slide that I'm a little proud of but generally speaking so far our errors are a work in progress but that's a really key focus area going forward and I'm like putting up all the bad things our errors are here let me put up here's an error in Cascade so this is it shows you what file we're in and what line number is on it points exactly at where the error was so this is a a one line file that says domain foo inherits bar and when you compile that by itself it says I don't know what bar is something I would like to add in the future that we don't have yet is the kind of spell checking stuff where it says oh bar did you mean bra or whatever because you have a type named that but in this case it says hey bar's not a valid type gives you a thing at the top so going back to the last slide one of the things that I really want to add is the ability to point at multiple code points I was just writing the error message yesterday for if you have a duplicate declaration I try to declare a function named foo and there's already a function named foo and then I was like well I can only point at one code point that's kind of worthless to be like this is a duplicate and you're like of what so that's coming very soon but not there yet but so generally speaking our error messages are inspired by rust error messages if you have written rust code you'll notice this looks basically just like a rust error message there's a library that gives us all this which is awesome and yeah so hopefully these guys are going to be really helpful and they support all these kind of hints that say you know this is what your problem is this is how you should fix it hand holds you a lot more the other thing is definitely a philosophical approach is that if the sill doesn't compile that we generate that's a cascade bug so reference policy will often spit out non-compiling sill and then you get all these gross sill warnings and so yeah our goal is to say we should theoretically if we're bug free we should never compile non-compiling sill code obviously we'll fail at that at times but that's what we're shooting for cross language interaction so sill gives us a lot of this for free and basically if you want to call into cascade stuff from another language say maybe a hypothetical not yet existing high-level language or existing ref policy or whatever we try to pass down as much of our information as we possibly can into sill so that you can call in via sill there's a couple of caveats and gotchas in there we can talk about offline if you want to do that we do need to add additional support in cascade which we haven't done yet but intend to for calling in to say reference policy interfaces or sill macros that are defined elsewhere outside of cascade like an extra in statement or something like that that is on the to-do list so let me jump over and do a really brief demo and wow I cannot see this at all so um I'm in my cascade directory I'm going to go into data policies and these are our test policies so far I'm going to run cast see is this big enough can you guys see it do you want me to get okay I'm saying not it's cool I don't know there's a lot I can do about that unfortunately okay cool um here's a here's a brightness button I don't know if that's going to help at all okay so um cast see you got a nice help string tells you there's not a ton of options so far we're working on that but it generates by default out.sil as it's generated file and let's compile something and show you what it looks like so I just compiled this is associate.cast which is one of our test files it tests the resource association feature it's got a bunch of cascade policy in here and then when I ran the cast see we generated this out.sil file so where are we in the file as you'll notice at the top I didn't write anything about object classes and permissions cascade did our full kernel set of object classes and permissions at the top there's a bunch of stuff that's required to have a compliant policy that cascade kind of put in all this boiler plate for you you get down to the bottom and I wouldn't expect users to generally look at this too much but we got domain and resource here and then we start actually saying and these are the things that we actually declared in our policy and this is the still compilation of the policy that we wrote it's not necessarily very structured still but it's also generated so it's not really intended to be human readable it's intended to be easy for a compiler to generate oh so the other thing I was going to show while we're in here I think let me show you an error let me show you an error message I think is the other thing I want to do I'm just going to do some other stuff but I think we're short on time so I was going to do this one and you can see this is what error messages look like so in this case we said that it foo inherited I can't read this at all it's not bright okay so foo inherited foo parent but it was required to implement foo funk as a result of inheriting foo parent and it didn't do that let me you can see what the the cascade here that generated this error looked like so in this case foo parent defines some function named foo funk and foo inherited it and did not derive or override foo funk and so the users of foo would expect because this is a well-defined interface that foo wouldn't hear it would have a foo funk function and so we get a compiler error that tells us hey we didn't do that okay so that's the end of my very brief brief demo for the sake of having a demo if you would like to try it yourself you can download the github repo also and build from source that's really easy just cargo build you can also get it off of crates.io so if you have cargo installed you can run cargo install sce linux cascade and the name cascade was already taken then you run cast-c you give it your list of source files and then I didn't show I guess let me jump back to the demo really quick once we've built this out.sil file we can then compile it with sce sil-c I do hope that at some point cascade will just do this for you under the hood but right now you've got to run that manually so you can see we got that policy.32 file there which is obviously my sce sil-c is a little bit older it's not generating policy.33 yet but we generated our full system policy we could install that on a system and then watch our system very much not boot because this policy is not really defining what we need to have our system it probably would boot in permissive mode actually but I would certainly not build boot in enforcing mode we'd have to relabel and we don't have any file context statements in our policy so um yeah try it out yourself and have fun all right so I got about five minutes left so I'm going to try to blaze through these future plans pretty quick try to leave a moment for questions at the end so this is kind of where we would like to go so one thing I would really like to add in is better file context support so file context take regexes and types to associate with those regexes and a little bit of other stuff but that's the the bulk of it the thing is these regexes represent paths so if we actually treat them as paths that embed regexes that can let us evaluate our runtime logic a little bit better and say hey you know this this regex can never be applied because there's another path with a more specific regex or you know this isn't possibly a real path like there's no path here that evaluates this way I would love to you mean we use a kind of very small subset of regex patterns and we need it but stuff like .star that we use all the time we can maybe just make that some kind of generic so I think that can become more usable and also oh yeah compile time expansions of so things like what's a good example here um if we want to say that we we want to have something apply to like specifically just files and directories but not simlinks in the current policy languages for that so I think it'd be very reasonable to like take a list for of what object classes you want this to apply to and then expand at compile time into multiple file context to get some more flexible support optional policy I have complained about optional policy quite a bit lately so optional policy is a functionality that's supposed to say if I have a some kind of type that it definitely needs certain access and there's other access that if certain policy is present I should have access to that policy if it's not present that's okay don't break the problem is that's a wonderful intent but in my experience what actually happens when policy developers write this is this is a way to make the compiler happy and so our code doesn't end up reflecting what our tool actually needs to have versus optionally can have it ends up reflecting the particular environment how my compiler was set up when I happened to compile it which makes our policy a lot less portable and a lot harder to change things if my actual policy situation changes and now I took out some module that should have been optional and things are breaking because those things weren't marked optional so one suggestion and this was suggested to me by someone in the community and sadly I forgotten who it was so I apologize to you whoever you are one suggestion is to say that all of our rules by default would be optional but we can opt in with maybe an annotation for what's required so you can see annotation up there then we have this apache.conf.read that would just be optional if apache goes away that's fine the rule goes away but then one use case that we really do want to have is have a block of rules that are optional together and so in this case we've got this hypothetical example that if squid which is a proxy is present on this system I want to call this squid debush chat function and I also need sysadmin for whatever reason right because squid's present I use the sysadmin capability so if we just have every line be optional by default then suddenly sysadmin is something I have unconditionally when I'd really rather not have it if squid's not present I know I need it in that particular case but I don't want to have it because it's really privileged obviously and so have the ability to have a block that says these things need to be optional together in this example here I've written in like an explicit like optional based on the presence of squid rather than existing languages I think infer optional based on what's in the block I think the explicit might be clear so this is an idea I have a boff session at 4pm and this is one of the key things I would like to discuss that I am really low on time so I'm gonna keep trying to move okay so integrations with other security mechanisms is something we've talked about our focus for now and for the next six months to a year is definitely SC Linux first and foremost is our primary thing but at the end of the day we've built up this security model to describe our system and there's no reason we couldn't supplement it to output other security mechanism so I have a hypothetical example of what an IP tables thing might look like that when I declare this port type in SC Linux I have a port con rule that associates it with certain ports that should do with a semi colon sorry just throwing this slide together last night and then we maybe annotate it to say hey I'd like to generate an IP tables rule and then in addition to my still output I could have some IP tables rules output along the sides I had a very brief conversation yesterday with some of the IMA folks about whether we could use this for IMA policy I don't know could we use this for sec comp policy probably not I'm not sure so but this would be really I think an interesting area to explore going forward delete so we've always for a sense before I was involved in SC Linux people have talked about delete as something that I want to be able to delete rules I'm not going to go into all the complexities and it gets weird and complicated and what do you mean and there's a user expectation thing about hey why do I have a denial for this I can see the allow rule I'm looking at the allow rule here not being aware that that allow rule was deleted elsewhere there's complexities there's an idea for like a local delete that wouldn't need any sill integration and would work locally in cascade that might be sufficient for cascade use case but I need to dig more into exactly what cascades use cases plus what broader people in the community want out of delete that's something else to maybe discuss in the bof all right I do want to land on this this is my last bit here audit to cascade so there's a tool called audit to allow that is widely misused and also widely used and the problem with audit to allow and including audit to allow dash R which generates your reference policy interfaces is that adding allow rules is seldom the right answer now right is very context dependent it might your mileage may vary but often you want to change code you want to fix labeling issues a lot of times you want to rerun in permissive mode if your denial says permissive equals one it was the first thing that blocked and you're probably just going to add this allow rule and rerun it sometimes you want to don't audit these things we've been noticing a lot in our environment system D really wants to claim it needs cap net admin and it normally does not need cap net admin and that would be a good hint thing right to say hint you don't actually need cap net admin probably right maybe you want to worry about an attack right if you get in this pattern of every time I see a denial I'm going to blindly allow audit to allow and deny it well there's your path for the attacker to get past your sce linux policy just wait a little bit after for you to allow their attack pattern and so what I would love to do is audit to cascade is to say we've got all this a lot of information about policy intent we've got documentation comments eventually and so we'd like to make a kind of pluggable heuristics engine that looks at ABC denials and gives it a little bit more thought in a machine sense right it follows some kind of heuristics to guess which of those previous things is most likely to be the thing based on your specific denial this would require probably passing a lot of our policy information through is some sort of debug symbols that would end up landing on your target system whether that gets in in sill in the policy binary et cetera or whether that lives in a separate file we'd have to figure out expose all of our cascade documentation directly in audit to cascade and so then what you can get is hey I'm a developer I know nothing about sce linux let me run on to cascade and you get a whole write up about okay I got this denial here's what's going on let me tell you what each of these types are in human readable terms and let me tell you here's five different ways you could fix it in order of preference and if you want to just say I want kind of existing audit to allow behavior just give me something like that you know give it a mode for that that would use cascade functions so that's that's I think the number one place that I'm interested in going with cascade is to be able to kind of add that sort of support I think the base policy language is the platform on which to build that and because the base policy language is built as a library this tool actually can just live on top of that library directly parse your cascade policy and it'll be relatively much easier to write as a result so if you want more info here's my email address again here's the cascade github I would highly recommend if you're looking to learn more about it there's a read me in the cascade github the change log will give you and the roadmap gives you like the really nitty gritty details of what that I just said we do we actually do and what we just said we do I have a pull request open for and we got a docs directory that goes into more detail on how you use the language so thank you very much for your time I'm two minutes over any questions in your negative two minutes yes yeah so that's a great question the question was you know we've got a lot of policy already is there a plan for migration and interoperability with existing policy so I did talk briefly about interoperability I very much want to add some kind of like extern support for cascade so that you can have right cascade modules to inter plug with your existing policy and that's something that's on the plan and we're going to do in the near term and then in terms of migration path I've had a few discussions with some people at Microsoft about automated tooling to migrate policies the the challenge there is that you know with there's a few places where I kind of we kind of go I really would prefer if you write your policy in a much more cascady style rather than kind of blindly migrating it so specifically what that would look like is unclear we already have a couple of non-public yet shell scripts or Python scripts or something that does a little bit of automated migration I think I haven't worked on that directly but yes we would like to have automated migration things and a migration pathway is something we definitely need to have I think so I don't have a great answer yet but I need to so we're working on it hopefully that was helpful great any other questions in the back yep have a virtual question great what GUI programs are helpful to write SE Linux policies and show dependencies sometimes we have some issues with SE Linux policies for Android and edit it in notepad which is very painful and how do you debug SE Linux policies and runtime without audit logs those are a couple of big questions so I guess I don't need to repeat that because that was just said over a mic so the first question is what GUI tools do we have there a long time ago was an IDE plugin for Eclipse called Slide I tried running that on a recent version of Eclipse and it didn't work so I think it's pretty unmaintained at this point other people would probably better people to ask for me I'm not aware of any kind of GUI IDE plugins for SE Linux that are actively maintained and used at this point that's something I hope to change with Cascade because we're building Cascade as this library should be relatively easy to write a really featureful plugin for an IDE but that's not something we have yet so stay tuned in terms of your Cascade policy I think I'm going to maybe decline to take the debug policy denials without an Android question just because of time and it's not necessarily Cascade related so sorry I recommend emailing the SE Linux list for help with those sorts of questions so sorry people who will respond to that on the SE Linux list if you didn't want that question all right I think I'm over time so thank you guys very much for your time


and grab it when they're done, probably extra in the process. I'm going to die, man. Ooh, good job. All right, you're good, sir.


Welcome, everybody. We're so glad you could join us for our webinar where we discuss our one-year master program in water and sustainable development. If you're watching from YouTube or Facebook and you're logged in, then you have the opportunity to ask questions using the chat. So please use that if you have any questions about our program. But before you do that, please do introduce yourself and let us know where you're from because we always like to know who is watching and from around the world. Let me start by introducing myself. My name is Laura Kwak and I work in the communication office of IHE Delft. And I will be your webinar host today. My colleague Eibald Skok, he's also from the communication office. He's making sure that everything runs smoothly behind the scenes. He will be checking the chat and making sure that the most relevant and frequently asked questions are covered by our panel for us to cover later on. But feel free to already ask a question when it pops up and we will gather them. So helping me open this webinar is Charlotte. She's Professor of Hydraulic Engineering for Land and Water Development. But most importantly in this case, she is the Vice Rector of Academic and Student Affairs. So welcome, Charlotte, to this webinar. Glad you could be here. Yeah, I thought we would just kick it off with a conversation about studying at IHE and what that's like. So maybe could you mention a couple of top reasons why someone would want to study at IHE? Well, of course I can count a few, quite a number, but I think a really important one is if you're really passionate about water and if you're passionate about contributing to water and sustainable development, I think IHE Delft is a really nice place to start because I think there you get people with similar passions and ambitions, career ambitions. The other thing that is really, really nice at IHE Delft is the number of international students that are coming here. It's really a very international environment. So if you are in a classroom, it's easy to have all classmates of different countries and the country is mostly Africa, Asia, Latin America. So it's really international. You learn from each other. You build a great network and you inspire each other. So it's a really international environment which I really, from day to day, I still appreciate that. Yeah, me too. And besides it being super international, I think it's also a multi-disciplinary environment because we have sort of water subjects, a broad spectrum of them being taught at IHE. Could you maybe talk about that a little bit? Yeah, yeah, indeed. I mean, we have near all disciplines related to water under one roof here. And of course, I mean, water challenges and water problems are never single disciplinary. I mean, there's always for tackling complex water issues, you always need to draw upon different disciplines like multi-disciplinary or interdisciplinary. And in our education, we really pay attention to the multi-disciplinary. So you can, you know, because there's so many disciplines in the building, you can really learn from other disciplines working at the same problem, the same water issues, but also interdisciplinary so that people from different disciplines are working together, tackling a certain water related challenge. Yeah, so almost. Go ahead. So it's indeed in the classroom, but of course, also when you're walking through the corridors and doing projects and assignments, you will meet a lot of people from different disciplines. Okay, and something of something else that our students have in common, I think, or maybe not all of them, but a lot of our students, they're mid-career professionals. Can you explain what that does in terms of being educated together? Well, you know, of course, you can learn from each other and you can learn about other experiences. So for example, if you're learning about a certain theory, you can immediately apply it. You can immediately relate to that and also other people can relate to that. So if you do group work and everybody comes with some experience that they can share, I think that really enriches the education and the learning at IHE. And apart from just the students at IHE, we also have quite a number of great lecturing colleagues. Could you maybe talk about them a little bit? Yeah, yeah, we have actually quite, we are proud of our staff. We have quite good people. There are people who are actually quite well known in their field. They get prizes, like, well, even last week, we had a professor who got recognized for with a Life Achievement Award International. And so that is, of course, very, very nice. And that shows that people are really well known in their fields, experts in their field. So yeah, I mean, I can also add, I mean, if we're talking about people teaching, it's not only our own staff, it's not only IHE staff, but we have a lot of guest lecturers as well. And they come from the industry, they come from this field experience, and they bring yet another aspect of the particular discipline or this particular topic in. So we draw also a lot on guest lecturers, and some of them are also quite well known in their field. Yeah, indeed. And I think when you come to IHE Delft, of course, you're then living in and around Delft. Could you share with us kind of how that enriches the experience as well? It's a very nice town. It's an old, it's a relatively small town with a historic center. So it's really, it's a touristy town. So, but it's also a student town. So you see a lot of students around. Of course, we have the TU Delft here and are some other colleges. So there's a lot of facilities also for students. It's lively. There's a lot of restaurants, bars, and cafes. So it's a nice lively town. And fortunately now we are opening up again after Corona. So that really brings a different atmosphere in. And plus, I mean, I should say that it's also very centrally located in the Netherlands. And we have good train. So in two hours you're in Brussels, in three hours you're in Paris. And also to England, to Britain, there are trains. So it's also easy to go around. It's centrally located. It's safe. It's a lovely town. Yeah. And a great way to explore Europe further indeed. I think I've asked all the questions I want to ask. But do you have some, maybe some last words for those people who are thinking about studying with us? Well, if you're passionate about water, if you want to contribute to water and development, sustainable development. And if you really enjoy meeting new people, international people from all over international, and you enjoy the international environment, then I think IG is the place for you. And of course be prepared to work hard. Yes. That also. Yeah. But no, a lot of fun. Okay, Charlotte, thank you very much for taking the time to open this meeting with me. And have a great day. Thank you. Thank you for inviting me. Thanks. Okay. Bye-bye. So for the rest of the time that we have, we have an hour approximately. Just now I will show a video by Professor Graham Jewett. He's our professor of hydrology. And he walks us through some of the aspects of this new master program, the one year master. After that is done. I will be introducing our panel, who consists of two people, Enika Maylis. She's our senior fellowship and admission officer. So she deals with getting you admitted into the program. And also Laszlo Hayde. He's a senior lecturer in irrigation engineering, but more importantly for this webinar, he's also the program manager of the MSc program in water and sustainable development, the program that we are discussing today. So without further ado, I will switch on the video. Water is our most important resource. From its role as a life-sustaining liquid to its cultural and spiritual values, water has and always will be intricately enmeshed with humans and the society's environment in which we live. Over the past 60 plus years, IHE Delft Institute for Water Education has provided education and training programs on different aspects of water. Since our inception as a technical institute dealing almost exclusively with floods, through to the inclusion of integrated water resources management and aspects of management and governance in our programs. And now, in the time of sustainable development goals and the imperatives of addressing issues associated with climate change, IHE Delft remains a leading institution globally when it comes to delivering relevant and topical education programs. Our extensive alumni network across the world bears testament to this. Water is a big deal on the global agenda and I'm sure in your country too. So the interest in studying water and its role in sustainable development is rarely at an all-time high. And of course associated with this is that people from different backgrounds and with different interests become interested in water and have different entry points in which they would like to study water. So as society evolves, so do we at IHE and that provides the impetus for a brand new master's program, the Master of Science in Water and Sustainable Development. My name is Graeme Jewett. I'm Professor of Hydrology and Vice Chair of the Committee which has been developing our new Master of Science. In this short video I'd like to explain some of the key elements which form the new degree structure at IHE Delft and the options that you have to join us. The program is focused on managers and practitioners and aims to provide skills to support you in the job that you will do when you return home. Very importantly, this will take only one year to complete. It is still a fully fledged MSc accredited by the Dutch MVO. That's the organisation responsible for accreditation of education programs here in the Netherlands. Of course, being a one year program also means that hard work is expected from the students. But as our program evolves, so do our education approaches and we believe that we've created a truly innovative education program that will be achievable in 12 months. That program kicks off in 2022 and we are welcoming applications now. At IHE we fully recognise that the nature of water-related problems and development options needs an interdisciplinary approach. So while we retain our disciplinary strength in the new program, we also provide training for the more general scientists and many opportunities for interdisciplinary collaboration, such as specific weeks in which students from all disciplines interact and fieldwork in group projects. In fact, this philosophy of interdisciplinary underpins the program. We have rarely looked at the structuring content of the new degree and thought carefully about the skills and topics that are going to support water and sustainable development in the future. So you will see that core components like hydrology, hydraulics, environmental sciences, wastewater treatment, sanitation, governance and management and others are there but have had a refresh to gear them towards the future. This translates into four clear tracks which address these major water challenges. Water food and energy, water hazards risk and climate, water and health and water resources and ecosystem health. Let's now look at the specifics of the program. It has been designed to give you some choice about the topics you study. So when you apply, you begin by choosing one of four tracks and a profile in that track. These profiles are engineering and hydrology, management and governance, environment, sanitation and digital innovation, something we see as a big topic for the future. So here are two examples. You have a background in civil engineering and you wish to explore the linkages between drainage and sewerage and treatment processes and technologies and their planning and management including the financing of water treatment plants. So this profile designed in the water and health track will prepare you for this. Or you have a background in environmental sciences and agriculture and you are interested in developing sustainable water resources management solutions with a focus on ecosystems which produce food for people. So think about rice from wetlands or aquaculture in a leg. You could then follow an environmental profile within the water resources and ecosystem health or the water food and energy tracks. So these are only two examples and since everyone has different requirements and different interests, we also recognize that the nature of water and the people who engage with water don't always follow strict profiles. So there's also an opportunity for you to build your own profile. Now this is something which is done in discussion with your coach which is another innovation in the new MSc program. Coaches are there to support and guide you as you move through the program. They make sure that you're comfortable with the choices of your modules or they suggest sensible alternatives. Then of course it wouldn't be a master of science without a research component. Now most likely you will start thinking about your research thesis after about three months into the program maybe for some a bit before that. Once again your coach will assist you to make the best choice of topic for your career goals. You may want to co-design a topic with your employer or you could choose a subject which addresses a specific need of your country or perhaps you want to focus on an issue with a view to working in the development field in the future. IG Delft is quite a small institute but we have a very large reputation. At IG you will get to know students and staff from all over the world and you will hear about the water challenges and experiences that they bring. This also means that you will get to know people from many other disciplines and learn from them and their experiences. Our alumni tell us that the highlights of their time at IG are the field trips both in and outside of the Netherlands, life in Delft, which is a very safe and friendly city, the different cultural evenings and festive events organised by staff and students and making friends for life from all over the world. The alumni of IG make up one of the largest water networks in the world. There are now more than 23,000 former students, most of them still working in water or related fields. So we invite you to join the MSc programme, graduate from the MSc programme and join that extensive network of our alumni. Yes, I am here. So I was talking but I'll start over again so I've now brought our panel on screen, Les Loheide and Inika Maylis. So welcome to this panel, they'll be able to answer your questions, many of them. Maybe Inika, we can start with you. Can you maybe walk us through the registration process? Yes, thank you, Laura. Yes, the students have to start looking at the website and see what the programme is about and prepare their application very well. So what's the background, what work are you doing and what are your future plans and what is the programme with the different tracks and profiles. So think really what you want and then you go to the place at the website where you find the information about the admission requirements and the application and also go through that very well and prepare your documents in advance and then you see there a button and that's apply now and when you click there you can create a user account and then you first will be requested to fill in your personal data prior education and work experience and then you select the study programme and in the application form there are five motivation questions which you have to answer and you have to indicate your preferred track and profile and then you have to upload all your documents and submit your application and then upon receipt we will see if you can be admitted and you will be informed within four weeks. Okay, thanks very much and I know there are currently a lot of scholarship opportunities open. Could you maybe tell us a little bit about that Inneke? Yes indeed. There are many opportunities for scholarship at the moment which are open. So the Orange Knowledge Programme, OKP and the deadline is the 15th of March. There you should be from an eligible country so you can find that on the website if your country is eligible for OKP and then for OKP there are also other requirements so you have to read carefully if you meet those requirements like one important one is that you need to be employed and that your employer has to confirm paying your salary while you're studying and then you have to prepare your application carefully and then we strongly advise you to apply for it because if you have a good application there's quite a good chance for being awarded the scholarship. Then we also have Rotary Scholarships, that line is 15th of April and the Rotary Scholarships are only available for the tracks water and health and water resources and ecosystem health and then we have also from students from Sahel, MENA and SIDS countries they can apply and the deadline is the 1st of May and we have to join Japan World Bank Scholarship Programme which hasn't opened yet that will open at the end of March and the deadline is the 27th of May and you may already read about it on the website and see what are the requirements so that you can also prepare yourself well for it and then there are many more other scholarships opportunities you can find it on the website and you can also pay the course yourself or your employer and you're also advised to search yourself for other opportunities which are not mentioned on the website which may be specifically there for your country and even if you can't find anything we advise you to submit an application for admission because sometimes through the year there come new scholarships and then we look into the list of applicants who have been admitted so that may also happen so if you are interested in the program and meet the admission criteria we strongly advise you to apply for admission. Okay and we have a question coming in also about scholarship can someone from the Dutch side of St. Martin with the Dutch passport can she come in for duo financing as a Dutch citizen? That's best that you inquire with duo I think then that is that is possible but duo is also alone of course and the fees we use the regular fees which are quite high compared to the tuition fee at the Dutch universities for Dutch students but I advise you to check that with duo and see what are the requirements. Okay thanks so Brianna please check that yourself. Laszlo turning to you could you maybe talk a little bit about what happens before you come to IHE Delft I heard in the video I heard coaches mentioned I heard prep courses could you maybe explain a little bit? Yes thank you Laura for this very interesting question and it's important as it was also mentioned by Professor Graham Jewitt that the coaching is indeed the key feature of our new program can you please show my slide and which is explaining a little bit that thing yeah exactly so that's that is also mentioning that when you start your studying or even before actually when there are financially admitted students so that means that also the financial conditions of the the fee coverage is already solved then each students are getting in contact with the coaches the coaches are helping and supporting the students to setting their own learning goals and as you can see on this slide also there is a portfolio also to be developed by the students and that is reflecting also how the the goals and the career ambitions are analyzed by the students themselves and also assesses the progress and building of the portfolio and so on together with the students but also there is an important thing that if it comes out during those discussions even before you arrive to IHE that we are developing preparatory courses you can see a list here nine preparatory courses actually actually on different topics and if there is some need for your studies in the field what you have selected you would like to check or develop your basic knowledge for that particular direction then these preparatory courses can help in that. Okay good to hear and also I heard in the video that there are modules and also mixed weeks could you maybe show and tell a little bit about those? Yes exactly also on this slide you see that how the the program is built up actually so the elements of the program there are the track modules and also in between the tech track modules you can also see the mixed weeks. Mixed weeks have basically three objectives or three different parts one is that after two modules the first few days of the week are spent for the examinations of those modules before then the second part is to develop a certain kind of trans interdisciplinary skills basically so I would say that transdisciplinary skills to be developed and so on which are practiced the modules afterwards so the theoretical basis let me just tell you a couple of examples critical reading presentation skills reading the literature in a critical way scientific writing these kind of things are the skills but we are also thinking about this really needs for master students and those are developed during those weeks theoretically and then practiced in the coming modules afterwards and the third element of those mixed weeks is basically having contact with the coaches and working on the portfolio development as mentioned before. Okay thank you that's a very clear answer looking at the questions coming in there is something about oh yeah there's this question maybe I will take this away and show the question on screen so Inika I think this is for you is it possible to apply for this MSc while waiting for graduation at an undergraduate level? Yes that is possible if you're but you should then be about to graduate this year so you need to be graduated before August and we need a proof then that you will be graduating but that is possible most of the applicants have graduated and are mid-career professionals but there are also some young graduates we have that every year and that's possible. Okay thanks another question is about age limits are there any age limits for our program? No there are no age limits for applying and being academically admitted but scholarships providers they may often have an age limit so that's that's what you have to check them but if you will be paying yourself or your employer then then it's possible. And I'm going to show the rest of the question on screen and maybe that's something for Laszlo to talk about because the background is in laboratory science, water quality control and public health and if they if they are eligible for these courses or for this master program? Well I would say that we have one track which is water and health also having sanitation as a profile in that one so it seems to me that if you have a bachelor of science level diploma already then I think it might be possible for you but of course this has to be worked out in the application material so that well there are several things asked so I would say it's difficult to give a direct answer that yes you can be eligible yes of course I would say but well depending on the the background the study background and also the professional background if there is any practical experience and as you mentioned there is so that that can be an option so I would say it's better to to fill the application materials and then we'll see. Okay thanks and that brings me to another point for you maybe Laszlo about the tracks and profiles what are they? Yeah okay then let's go back a little bit to our slides and these are the tracks so we have the thematic tracks and the disciplinary profiles so the four thematic tracks those are water food and energy water hazards risk and climate water and health and water resources and ecosystem health and when we are talking about profiles within all those tracks there are different profiles which are coming up and those are engineering and hydrology governance and management environment sanitation and digital innovation actually these are disciplinary profiles now that does not mean that even if you are choosing a track and the profile which we also require through the application process to name one track and one profile it does not necessarily mean that you have to stick to that one what you have chosen at the beginning stick to that one all along your studies so also well based on the discussions with your coaches and also working out your portfolio and your personal goals career ambitions during the discussions with the coaches there are different ways that you can follow one track and maybe one profile or even a different profile modules all along the one track studies but I can also show another example here so for instance choosing modules from one track and maybe two different profiles and choosing the rest of the modules from another track depending on the interest depending on the career ambitions as it was already mentioned so this gives quite a great variety and flexibility in building up the the learning trajectory what is designed for one particular student okay that's that's quite clear and a follow-up question that was asked is and I will remove this so we can see you again are there limited slots for each track and is it possible to change your applied track upon discussion with your coach I think you mentioned it briefly but just to be safe and yeah yeah exactly so that's the issue that while it has to be discussed with the coaches not not only within the track or inside the track but also possible to choose some topics some modules from another track as well so there is quite really a large flexibility opportunity in the program okay thanks that's really really clear um and I think some people are aware that we are also having a two-year master program oh this is not the one I wanted to show the two-year master program under development because a question is is it possible to change the one-year master to a two-year master well it's a difficult question and the reason why is it difficult that well you might have recognized on our website Alireza that we are not starting the two-year master program now so I would say what there are still discussions going on on this and the conditions have to be worked out so there are quite some restrictions but theoretically it is possible however the one-year master program is starting right now in this year I mean in October but the two-year master program is not starting this year we are still developing that one and starting it in 2023 so if you really would like to move from the one-year program to the two-year program then you will have a time gap so some kind of a time difference here so that that's why it is very difficult to answer this question theoretically it is possible practically this time it is rather difficult yes okay that's also very clear and then a very important question but I think we've covered it is it really one-year for an msc program yes it is yes that's the short answer the longer one was partly included in the presentation of professor Graham Jewitt also that this will be a very intensive program so maybe I can tell you that well I usually tell it to the students coming in and the first days that here in IHE we try to keep you busy and that is specifically valid so that's well especially valid for this one-year program that we really have to keep you busy there there are no breaks no summer break the program goes continuously all along the year from the beginning to the end including the research part everything so that means you have to be very highly motivated to join IHE for sure and I here have a question for Inneke is it allowed to apply in case someone doesn't have an ibt or ielts but is fluent in English applying for admission is always possible without the English test so everybody can can already apply when they do not have the English test and if applicants meet all the admission requires they may receive a conditional admission error but it is required to get the final admission so it's important if you are going to apply for a scholarship then before the scholarship deadline you need to have this unconditional admission so therefore it's important to register to do the English test if your country is required to submit an English test with the application and I just showed another question that you have answered is it possible to present the English language certificate later and you said yes and this is another question about the English proficiency is it possible but it's not after the financial admission it's it's part of the the academic mission process so if someone applies then it's a conditional admission yes so you have to have it done before you are actually allowed to join and this question here is it possible to apply by using English proficiency from university now there's the English requirements are on on the website there is a list with countries which are exempted and if your country is not on that list you are required to do the English language test so even if your university writes a statement because we have this is the experience that it's required for those countries even if they may have followed the bachelor in English okay and I think some more questions about applying if my transcript is not on the US or British scale do you have any official means of conversion or validation that I can use there's always on the transcript there there is usually an explanation of the mark so you have to when you apply you have to upload the transcript with also the translation of the marks and we have a list of all countries and we can see what is then the minimum required GPA for admission okay this one may be for a less slow and interesting question will there be lots of group work projects presentations definitely yes so I also mentioned those skills which we are also developing those are including presentation skills group work is among them there is also a special module so also in the different modules in the different topics there are also some things some assignments what you have to solve in groups but also there are some specific projects what is designed for group work actually it will be an interdisciplinary project so then also the groups are formulated in an interdisciplinary way so that yes there will be a lot of group and presentations are also required by the students and so on okay thank you and there are quite a few questions about how people's backgrounds match up with with what we offer so for example this one does someone with a master of engineering in civil engineering working in the transport sector stand a chance of being selected well theoretically yes civil engineering is is an important background study for our programs well the transport sector is just your working experience but as it was mentioned by Inneke before that even without the work experience somebody can apply so if you were very good in your studies in civil engineering especially in the water related subjects in your studies then there is a chance and well of course you have to write a nice motivation letter why would you like to change from the field of transportation transport design and so on development towards water related topics but yes it is possible okay thank you and I see it quite an interesting question that we haven't had before the years after graduation what kind of job opportunities and visa admissions are available to foreigners I think this is from someone who wants to work in the Netherlands so who would be able to answer this one well I know that for the visa I can mention that if you have graduated in the Netherlands with a master degree then you can apply for a third year visa so this is a special visa and then you have the opportunity to stay for one year in the Netherlands to serve for a job so this is what I know but Laszlo can tell more about the type of jobs available in this field yeah first of all I don't know where you are from I mean but the the the thing is that most of our students are coming from least developed or developing countries and the main objective of IHE is also to train those students to go back to their country and and work for their country and develop the knowledge of others in their country so that is the main objective of our work at IHE so basically well that's that's why it is an interesting question that looking for job opportunities in the Netherlands that was answered by Inaker that while the visa issues and so on but on the other hand if you are interested at what are the job opportunities after finishing IHE then I would say that we have quite a big alumni network and we are following also the well the the carriers of the alumni and what we can recognize is that most of the people when they are returning with their diploma from IHE they have quite good jobs and also some promotion even in their present jobs or before jobs and that is going quite quickly well then I can also add such kind of interesting details that it happened in the past that we had four ministers in the field of water all around the world at the same time who were IHE alumni so that that is also giving you an idea that well maybe if you would like to graduate from IHE then you can also become a minister not everybody that graduates from IHE becomes a minister but there is the opportunity there so I think you've also answered the question that I've just shown about navigating and discovering areas of work and impact after the program indeed by using our alumni community as a big factor. Yeah and actually we also have several discussions and the portfolio development is also related to that one so lifelong learning is basically an important issue for our study programs as well so then we try to include also the skill development and also additional things what we are discussing and also the wideness the broadness of the different fields which are included in the program also serving that. Okay nice question here. Laszlo mentions that selected students will be matched with a coach when does this usually start and how long will it take? Well when somebody is financially admitted then the the coaches are informed that there is a student in certain fields that who is financially admitted already and then within a couple of weeks I would say the coach will take contact online with the student and start to discuss the objectives the learning objectives the selected track selected profile whether that one is really matching the best with the goals of the student and if there are well additional studies needed or the preparatory course is needed then and that will be also discussed so I would say that as soon as somebody is financially admitted these discussions are starting and obviously they will keep contact with the coach even all along with the studies. Yeah okay clear. I have a question with the last word in another statement because it was misspelled I'm currently working in the wastewater industry how could this program be beneficial to my current job and how much will it cost it's supposed to say cost? So maybe the first part the wastewater industry Laszlo you can talk about that. Yeah well of course there is a disciplinary profile which is existing in several tracks and that's actually the well let me check no not in well not in different tracks but actually in one track the water food and energy no sorry the water and health yeah the water and health track has a sanitation profile in that profile I see the really opportunities for you that it seems to me that it can be beneficial if you look at those modules and well I have to mention that on our website several details of the different tracks and profiles are already available so you can read a lot even about the module content of several modules so I suggest you to study those and that can be really beneficial for your job and how much that costs maybe Ineke can talk about a bit. Yeah the cost for a one-year program so the fees and then it's including insurance and cost for the residence permit that's around 20 000 euro and then besides you have the cost of living for the 12 months so that's around 10 000 euros for a year okay and then of course the flight tickets and some some other transportation costs but you find all the cost on the website also that you can look more in detail and following up about costs do you have to pay all the fee before being financially admitted or are there a possibility for installments? The tuition fee needs to be paid before the program starts there's a certain deadline that it needs to be paid and after that has been paid or you have a confirmed scholarship then we start making all the arrangements for the visa and arranging you're coming to the Netherlands. Okay and then there's quite a lot of questions still here and we're running out of time so I'm going to pick the most important ones is it possible to apply for PhD after this program is over? Maybe Loslo you can explain that? Yeah well applying PhD where that's the question from my side then yes there are different places institutions universities all around the world where you can apply for PhD definitely you have to check the conditions and the requirements of those places where you are applying for that but here I would like to mention that while also it was also touched before that we shall have a two-year program and that is the one which is more towards the research direction so those who would like to go further for academic career or research direction and applying for a PhD later they will have the opportunity also to go for the two-year program which is called research master the title will be the same so research master in water and sustainable development that will be the two-year program that is more aiming for going for a PhD but depending on the requirements depending on the place where you would like to apply it is possible. Okay moving on I see a question are there any restrictions to apply for scholarship if I'm working in a humanitarian organization? I think Inika this one is for you. It depends on the on the on the sponsor you're looking for I know for the Orange Knowledge Program then students working for an international NGO are not eligible but for other sponsors I don't know each sponsor has its own requirement so it's important to check with all the the sponsor what are the requirements to find out if you are eligible. Okay and then another question I think also for you Inika is there a way to get in touch with the alumni community but also Laszlo can answer Ifina or maybe I can answer because I work at the communication office and yay I can answer a question I wasn't expecting that but we have an alumni officer at the communication office and she manages a lot of country alumni groups so if you're from a certain country and you want to discuss what life is like at IHE and how difficult things are or what kind of future prospects there are then do reach out to her her name is Maria Laura Sorrentino you can find her on our website and she will be able to connect you with the correct alumni community for you. But it's interesting Laura I have recognized that one of my present students at IHE is also present in our webinar now and I have seen already an answer given by him or a suggestion given by him recognizing that there is a country fellow also being in the in the chat so that was also quite a nice example that also present students can be reached directly so that's maybe even a better and more direct getting information. Okay yes nice nice addition to that. There is a question that has less to do with this master program that we're discussing but are there any available PhD programs at IHE Delfts? Yes of course well we also have master programs we also have PhD programs no undergraduate level programs but we have several online and short courses as well so this is the portfolio of IHE Delft if you like so yes there are PhD programs and the application opportunities and the application process is also described on the website. And post PhD program I don't think we have that but we do have post PhD opportunities I think sometimes. Postdoc programs program we don't have but different research projects and while other activities going on which might have the opportunity to advertise postdoc positions but that is basically position based and specific requirements working in that direction of the project. Okay thank you very much let me see there's a question about the coaches whether the coach stays with you throughout the whole program. Yes the idea is so yes. Okay very straightforward answer and I think this one is for Inika I can get my IELTS degree in three months later can this person give it in June 2022 I think it's already been slightly discussed. I think we already discussed it's you can apply for admission without the English test if you don't have it available right now but then you will get a conditional admission and for scholarship it's required to have an unconditional admission so you have to look at the scholarship deadline if you have certain scholarship in mind if you intend to pay the the fees by yourself then the deadline for submitting the English test results is the same as the financial confirmation deadline so the same deadline you have to prove that you will pay the course fees. Okay this question that I have now is related I think also to something we already discussed is it possible to join the research master after this program or does a person have to start from scratch I think you did already cover it less low but maybe just shortly making sure that everybody understands. Yeah well there was a similar question indeed about this the only problem is that the research master is not starting this year so actually the the one year master program is starting in October 2022 and we start the two year research master in 2023. Now if somebody has finished the one year program and is going to apply for the research master afterwards actually I cannot really answer that question at the moment now because the the research master requirements are still under development now but most probably I would say that well several things can be accepted in involved or exempted some modules and some things so it's difficult to answer it now but theoretically I see the possibility for that. And I'm guessing that the answer will become clearer once the research master actually starts. Yes obviously. So it might be worth your while to wait for the research master to start before you go for the one year master. I think we have time for two more questions is there some sort of support network which could help graduated students from the program to articulate from their countries in order to help tackle similar water related problems this is I'm going to interpret this question as is it possible to connect with other alumni once you've graduated to discuss similar water related problems or yeah I think this again goes back to the alumni community. Yes it seems to me as well so I'm also having some difficulty to understand that but it looks like to get in touch with graduated students I would say that this is going towards the alumni community and well of course as it was discussed that we try to keep contact with our students even there is Maria Laura who is dealing with that so there is an opportunity and you can get in contact with the alumni network through IHE so that is possible as Laura explained before. And I think to mention two other things we also have sort of we working together with Josh's water jobs who publishes a lot of water related jobs around the world so there's that connection and also we have quite a close connection with the water youth network that we've worked with and many of the people in there are our alumni as well so there are opportunities once you come to IHE to keep connected even after graduation actually that's one of our strong points compared to other universities. I am going to show one more question my background is in soil and water resource management can you apply on MSc on hydrology? So Loslo this one I think is for you. Soil and water resource management well of course I would be really interested to see your transcript what topics and what subjects were included in your studies before but at the moment I would say yes so soil and water resource management well water resource management is definitely in strong link with hydrology and also we have one of the tracks is water resources and ecosystem health but also in the other tracks there are several hydrology related directions or disciplinary profiles so I see the opportunity and while looking at soil it goes to agricultural water use and so on so then towards irrigation that is also possible so yes there are different directions I think you can go for. Okay and then maybe to end up with because we are almost out of time I'm going to show this one which is maybe not so much a question but it's a nice positive note to end on great to attend this presentation I'm more inspired to apply for the program I'm from Mexico in the middle of an exacerbated water crisis caused by irregular urban growth in a drylands ecosystems thank you a lot hopefully see you in the Institute. So I hope that all of our viewers are equally inspired to apply and we look forward to receiving all of your applications. Inika and Loslo thank you very much for attending this and have a nice evening goodbye thanks bye bye and all the rest of you watching from around the world it was great to have you here we look forward to receiving your applications and if you have any further questions please do reach out to us either by sending us an email or through our social media channels we look forward to seeing you at IHE goodbye everybody