【问题标题】:Executable to launch an Azure Virtual Machine用于启动 Azure 虚拟机的可执行文件
【发布时间】:2019-11-22 14:10:14
【问题描述】:

我需要创建工具,以便没有经验/非技术的用户可以在 Azure 上使用(这意味着连接和启动/停止)虚拟机。对于连接,RDP 连接做得足够好,而且很容易上手。另一方面,要启动/停止虚拟机,您通常需要访问 Azure 门户(除了对非技术用户而言并不简单),这会导致一些访问策略问题。一种选择可能是让虚拟机始终“开启”,但即使用户每周只需要几个小时,我们也会按 100% 的时间付费。

这就是为什么我研究了创建一个脚本的可能性,该脚本可以放入可执行文件中,只需单击 exec 即可自动启动虚拟机。我已经看过这个stackoverflow问题: Start azure virtual machine without azure portal

建议创建一个启动虚拟机的 Azure PowerShell 脚本。唯一的问题是启动一个 powershell 脚本超出了使用它的人的技术水平。最重要的是,需要为 powershell 安装 Azure 附加组件(如果我理解正确的话),这取决于机器和用户对其拥有的权限是不可能的。

所以我的问题是:您对我如何制作一个简单的程序(例如可以在任何机器上运行而没有任何依赖关系的可执行文件的形式)有任何想法,它将启动一个 azure 虚拟机?

我想过一个解决方案,但它似乎非常复杂:创建一个“超低成本”的虚拟机,它可以 100% 运行,然后创建一个 exec 来指示这个 VM 按需启动另一个虚拟机?

感谢您的帮助

【问题讨论】:

  • 您现在可以在 Azure Functions 中托管 PoSh 脚本,这样就可以托管用于启动和停止相应服务的所有逻辑,而无需运行 VM。功能可以通过点击 url 来触发,也可以通过点击简单网页上的按钮来启动。这是我在支持需要为最终用户提供自动化的团队时关注的场景,例如实验室配置/取消配置。

标签: azure cloud virtual-machine rdp


【解决方案1】:

我对 powershell 脚本超出了可以运行 exe 文件的用户范围的想法有疑问。如果构建得当,ps1 应该只是双击,就像 exe 一样。

除此之外,您还有几个障碍需要考虑。

  1. 您的用户无法访问他们需要与之交互的资源。 这可以通过通过脚本传递自定义 PScredential 对象并从文件中提取凭据来完成。您将使用 ConvertFrom-SecureString 构建凭证文件,然后使用 CovertTo-SecureString 将其导入。这样做的最大问题是,如果用户可以看到该文件的存储位置,他们可能会编写脚本来访问该文件并获得特权访问。

  2. 您的用户无权运行执行脚本所需的 powershell 资源。为此,您需要在脚本上建立 runas 权限,我认为创建一个 exe 可能是最好的途径。尽管您可以让初始脚本调用具有提升权限的另一个 shell 并完成它。

有一些工具,比如 PowerGUI,可以将 ps1 文件编译成 exe 格式。正确编译且安全的 exe 文件将隐藏调用安全字符串文件的脚本,并允许在程序中内置自定义 runas 权限。

【讨论】:

  • 感谢您的回答:1)我同意 ps1 可以通过将其编译为 exe 格式,让没有经验的用户轻松运行 2)但仍然存在如果用户会发生什么的问题没有 powershell 本身(例如 MAC 用户)并且没有用于 powershell 的 Azure 插件?理想情况下,我希望与用户环境几乎零交互并设置 3)关于构建“脚本的 runas 权限”,如果用户没有提升权限来访问 powershell,我真的不明白如何解决问题,它不会改变吗?
猜你喜欢
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 2014-12-12
  • 2018-06-18
  • 1970-01-01
  • 2021-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多