我正在研究C#PowerShell模块,它将成为一些服务REST API的简单包装。我想以PowerShell标准/ .NET标准为目标,并使模块在所有受支持的平台上可用。
对于此应用,身份验证需要API令牌,该令牌是由用户在服务网站上发布的。每次打开会话时都输入密钥非常不便,因此我需要某种方法将API密钥安全地存储在用户个人资料中。
问题是-我找不到一种简单的方法来加密具有透明跨平台支持的数据。最初,我想使用SecureString
,但它是(a)deprecated,而(b)在Linux上似乎没有很好的支持。在理想的情况下,我希望具有某种类似于Windows加密的机制-用户证书对API密钥进行加密,然后将结果放入用户文件夹中的文本文件中。
这不是财务或任务关键型应用程序,不需要一流的安全性,但仍然对我的主文件夹中的纯文本秘密敏感,这使我感到紧张。是的,我正在与您交谈,AWS开发工具包作者:)
答案 0 :(得分:0)
我的第一个想法是:“只需将密钥保存到ENV变量中……” 但是,如果我正确理解了OP的问题,就必须限制未经授权就读该机密,即使是在OP的计算机上。
我可以看到的一个选择就是创建一个文件夹(或者可能是文件),并仅授予一个特定用户访问权限。最终,人们可以创建一个新的用户帐户,该帐户将用于在Powershell中运行代码,并授予该新用户专有的读取机密文件的权限。这样可以防止一些来自OP帐户的第三方程序读取机密文件。