gpt4 book ai didi

c# - Quartz.net Scheduler 远程访问的安全性

转载 作者:行者123 更新时间:2023-11-30 17:06:45 24 4
gpt4 key购买 nike

我们目前正在寻找一个计划应用程序来集成到我们的解决方案中。我们非常接近锁定 Quartz.net,但有一个交易破坏者我无法在 Stackoverflow 或 Google 上找到任何解决方案。

问题在于通过 API 进行远程访问,例如:

NameValueCollection properties = new NameValueCollection();
properties["quartz.scheduler.instanceName"] = "instanceName";
properties["quartz.scheduler.proxy"] = "true";
properties["quartz.scheduler.proxy.address"] = "tcp://localhost:555/QuartzScheduler";

ISchedulerFactory sf = new StdSchedulerFactory(properties);
IScheduler sched = sf.GetScheduler();

我们目前了解到,任何用户都可以使用与上述类似的代码,然后使用调度程序实例来管理/更改/添加作业等。问题是,我们需要限制这种访问(因为用户上下文此运行可以访问敏感信息)。

在我们的理想情况下,我们希望锁定对指定用户的远程访问。这将允许授权用户从界面管理 Quartz。如果这不可能,那么我们将寻求一种解决方案,在不破坏从同一台机器访问 API 的能力的情况下锁定远程访问(缺点是用户需要登录服务器来管理 quartz)。

如果我们是第一个有此要求的组织,我会感到非常惊讶,其他人是如何解决这个问题的?

最佳答案

简而言之,没有内置的身份验证/授权方案。

首先,即使恶意用户可以访问界面(如果人们怀有敌意,对我来说这似乎是一个不安全的网络),这个人也只能管理调度程序。因此,可以披露的信息是作业/触发器名称和组。用户可能会恶意触发作业运行,但其编码不够健壮,无法在最初预期的更频繁的运行中存活下来。

外部方无法访问允许执行的作业,这包括连接字符串等或实际作业逻辑。外部方也无法添加服务器的 bin 目录中不存在的更多作业 - 因此作业被锁定并且实际上不会发生任何意外。

我想到的一件事是,用户可以使用参数安排 native 作业,以在使用服务权限运行的系统上做一些有害的事情。

解决这个问题的一种方法是使用简单的控制界面,如网络服务/网络应用程序,它会处理权限等问题,并会连接到本地主机的 Windows 服务,否则该服务会受到防火墙保护。

关于c# - Quartz.net Scheduler 远程访问的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15239354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com