summaryrefslogtreecommitdiff
path: root/runtime/permissions.rs
AgeCommit message (Collapse)Author
2024-09-30refactor: bury descriptor parsing in PermissionsContainer (#25936)David Sherret
Closes https://github.com/denoland/deno/issues/25634
2024-09-28refactor: use deno_path_util (#25918)David Sherret
2024-09-26feat: add `--allow-import` flag (#25469)Bartek Iwańczuk
This replaces `--allow-net` for import permissions and makes the security sandbox stricter by also checking permissions for statically analyzable imports. By default, this has a value of `--allow-import=deno.land:443,jsr.io:443,esm.sh:443,raw.githubusercontent.com:443,gist.githubusercontent.com:443`, but that can be overridden by providing a different set of hosts. Additionally, when no value is provided, import permissions are inferred from the CLI arguments so the following works because `fresh.deno.dev:443` will be added to the list of allowed imports: ```ts deno run -A -r https://fresh.deno.dev ``` --------- Co-authored-by: David Sherret <dsherret@gmail.com>
2024-09-16refactor(permissions): split up Descriptor into Allow, Deny, and Query (#25508)David Sherret
This makes the permission system more versatile.
2024-06-06refactor: remove `PermissionsContainer` in deno_runtime (#24119)David Sherret
Also removes permissions being passed in for node resolution. It was completely useless because we only checked it for reading package.json files, but Deno reading package.json files for resolution is perfectly fine. My guess is this is also a perf improvement because Deno is doing less work.
2024-04-19feat(runtime): Allow embedders to perform additional access checks on file ↵Matt Mastracci
open (#23208) Embedders may have special requirements around file opening, so we add a new `check_open` permission check that is called as part of the file open process.
2024-03-12refactor: add `deno_permissions` crate (#22236)Divy Srivastava
Issue https://github.com/denoland/deno/issues/22222 ![image](https://github.com/denoland/deno/assets/34997667/2af8474b-b919-4519-98ce-9d29bc7829f2) This PR moves `runtime/permissions` code to a upstream crate called `deno_permissions`. The `deno_permissions::PermissionsContainer` is put into the OpState and can be used instead of the current trait-based permissions system. For this PR, I've migrated `deno_fetch` to the new crate but kept the rest of the trait-based system as a wrapper of `deno_permissions` crate. Doing the migration all at once is error prone and hard to review. Comparing incremental compile times for `ext/fetch` on Mac M1: | profile | `cargo build --bin deno` | `cargo plonk build --bin deno` | | --------- | ------------- | ------------------- | | `debug` | 20 s | 0.8s | | `release` | 4 mins 12 s | 1.4s |
2022-12-18refactor(permissions): factor out PermissionPrompter trait, add callbacks ↵Bartek Iwańczuk
(#16975) This commit refactors several things in "runtime/permissions" module: - splits it into "mod.rs" and "prompter.rs" - adds "PermissionPrompter" trait with two implementations: * "TtyPrompter" * "TestPrompter" - adds "before" and "after" prompt callback which can be used to hide progress bar in the CLI (to be done in a follow up) - "permissions_prompt" API returns "PromptResponse" enum, instead of a boolean; this allows to add "allow all"/"deny all" functionality for the prompt
2022-12-14fix(permissions): Allow ancestor path for --allow-ffi (#16765)sigmaSd
This commit changes "--allow-ffi" flag to support "parent paths", ie. if an FFI library is loaded we are checking if the library has an ancestor path in the allowlist for the FFI permission descriptor.
2022-10-26chore(unstable): rename Deno.getUid() and Deno.getGid() (#16432)Colin Ihrig
This commit renames `Deno.getUid()` to `Deno.uid()` and renames `Deno.getGid()` to `Deno.gid()`.
2022-10-05feat(npm): implement Node API (#13633)Divy Srivastava
This PR implements the NAPI for loading native modules into Deno. Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com> Co-authored-by: DjDeveloper <43033058+DjDeveloperr@users.noreply.github.com> Co-authored-by: Ryan Dahl <ry@tinyclouds.org>
2022-09-29refactor(cli): use shared sys kind parser in flags.rs (#16087)Yoshiya Hinosawa
2022-09-28feat: add --allow-sys permission flag (#16028)Yoshiya Hinosawa
2022-09-27feat: Add requesting API name to permission prompt (#15936)Bartek Iwańczuk
Co-authored-by: Leo Kettmeir <crowlkats@toaxl.com>
2022-09-27fix(runtime): refresh perm prompt 3 lines instead of 4 (#16049)Yoshiya Hinosawa
2022-09-22feat: Refresh interactive permission prompt (#15907)Bartek Iwańczuk
Co-authored-by: David Sherret <dsherret@users.noreply.github.com>
2022-09-22perf: fs optimizations - part 1 (#15873)Divy Srivastava
2022-09-19chore: fix clippy warnings (#15944)Ben Noordhuis
Stop allowing clippy::derive-partial-eq-without-eq and fix warnings about deriving PartialEq without also deriving Eq. In one case I removed the PartialEq because it a) wasn't necessary, and b) sketchy because it was comparing floating point numbers. IMO, that's a good argument for enforcing the lint rule, because it would most likely have been caught during review if it had been enabled.
2022-08-27perf(runtime): optimize allocations in read/write checks (#15631)Divy Srivastava
2022-08-24feat(unstable): add more permission checks for ext/node/ (#15581)Bartek Iwańczuk
2022-08-18feat(ext/flash): An optimized http/1.1 server (#15405)Divy Srivastava
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com> Co-authored-by: Ben Noordhuis <info@bnoordhuis.nl> Co-authored-by: crowlkats <crowlkats@toaxl.com> Co-authored-by: Ryan Dahl <ry@tinyclouds.org>
2022-08-10fix(permissions): ignore empty values (#15447)Leo Kettmeir
2022-07-15chore: fix Windows specific clippy errors (#15212)David Sherret
2022-06-26build: require safety comments on unsafe code (#13870)Luca Casonato
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com> Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
2022-04-18fix(permissions): fallback to denied access if the permission prompt fails ↵David Sherret
(#14235)
2022-03-20fix: actually don't inherit runtime permissions (#14024)Luca Casonato
2022-03-16BREAKING: don't inherit permissions by default (#13668)Luca Casonato
Previously specifying permissions: {} was the same as specifying permissions: "inherit". Now it will be the same as permissions: "none". Not specifying any permissions (permissions: undefined) still means permissions: "inherit".
2022-02-24chore: upgrade to Rust 1.59 (#13767)David Sherret
2022-02-17chore(permissions): clean up duplicate arguments (#13700)Leo Kettmeir
2022-02-17feat: never prompt for hrtime permission (#13696)Ryan Dahl
2022-02-17feat: Add hint to permission prompt to display allow flag (#13695)Ryan Dahl
2022-02-15chore(ext/timers): move ext/timers to ext/web (#13665)Andreu Botella
2022-01-15chore: upgrade to rust 1.58 (#13377)David Sherret
2022-01-07chore: update copyright to 2022 (#13306)Ryan Dahl
Co-authored-by: Erfan Safari <erfanshield@outlook.com>
2021-12-18refactor: use `once_cell` instead of `lazy_static` (#13135)Divy Srivastava
2021-12-15feat(ext/ffi): implement UnsafePointer and UnsafePointerView (#12828)Elias Sjögreen
2021-10-26chore: fix flaky permissions tests on windows (#12552)David Sherret
2021-10-13fix(runtime/ops/worker_host): move permission arg parsing to Rust (#12297)Nayeem Rahman
2021-09-30fix: worker environment permissions should accept an array (#12250)David Sherret
2021-09-24fix(cli/permissions): ensure revoked permissions are no longer granted (#12159)Nayeem Rahman
Fixes #12153
2021-09-23perf(ops): optimize permission check (#11800)Aaron O'Mullan
* perf(ops): optimize permission check Removes the overhead of permission check on access granted (should be common case): Delta measured on `perf_now` from `deno_common` bench: - before: `528ns/op - after: `166ns/op` So ~3x faster
2021-09-14fix: permission prompt stuffing on Windows (#11969)David Sherret
2021-09-09fix: permission prompt stuffing (#11931)Ryan Dahl
Fixes #9750
2021-08-06feat: ffi to replace plugins (#11152)Elias Sjögreen
This commit removes implementation of "native plugins" and replaces it with FFI API. Effectively "Deno.openPlugin" API was replaced with "Deno.dlopen" API.
2021-07-30chore: upgrade Rust to 1.54.0 (#11554)Yusuke Tanaka
2021-07-06chore: use parking_lot for synchronization primitives to align with tokio ↵David Sherret
(#11289) parking_lot is already transitively used in tokio via the "full" cargo feature
2021-06-29feat: Add "deno_net" extension (#11150)Bartek Iwańczuk
This commits moves implementation of net related APIs available on "Deno" namespace to "deno_net" extension. Following APIs were moved: - Deno.listen() - Deno.connect() - Deno.listenTls() - Deno.serveHttp() - Deno.shutdown() - Deno.resolveDns() - Deno.listenDatagram() - Deno.startTls() - Deno.Conn - Deno.Listener - Deno.DatagramConn
2021-06-07chore(tools): Fix stdout buffer of launched process getting full causing ↵David Sherret
tools/lint.js to hang on Windows (#10888) Also fix Windows only clippy issues.
2021-05-10Switch grant/deny prompt to yes/no (#10547)Ryan Dahl
2021-04-14refactor: move timers to deno_timers op crate (#10179)Ben Noordhuis
Move timers out of runtime/ and into a standalone op crate.