C# 如何使用AWS存储和访问我的第三方API密钥

C# 如何使用AWS存储和访问我的第三方API密钥,c#,asp.net,api,amazon-web-services,encryption,C#,Asp.net,Api,Amazon Web Services,Encryption,我有一个现有的ASP.NET/C#网站,我希望迁移到AWS。 我目前将所有第三方API令牌/凭据存储在我的web.config文件的加密部分中 加密通过正常的aspnet_regiis命令完成,类似于以下命令: aspnet_regiis -pe "connectionStrings" -app "/SampleApplication" -prov "RsaProtectedConfigurationProvider" 这一切都很好 转到AWS世界,我知道我可以使用web.config文件做同

我有一个现有的ASP.NET/C#网站,我希望迁移到AWS。 我目前将所有第三方API令牌/凭据存储在我的web.config文件的加密部分中

加密通过正常的aspnet_regiis命令完成,类似于以下命令:

aspnet_regiis -pe "connectionStrings" -app "/SampleApplication" -prov "RsaProtectedConfigurationProvider"
这一切都很好

转到AWS世界,我知道我可以使用web.config文件做同样的事情,但我想知道是否有更好、更合适的方法来做到这一点

AWS密钥管理服务听起来似乎是为了解决这个问题,但从我所能确定的情况来看,它实际上只是为了存储您的AWS主密钥

我看到人们使用主密钥对上传到AWS web服务器的文本文件进行加密,然后在需要时使用主密钥对文件进行解密。该文件可能包含一个第三方密钥列表,因此是解决问题的一种方法


我试图理解但未能理解的是,这是正确的方法(即将第三方密钥存储在text/json/xml文件中,并使用AWS主密钥加密,存储在服务器上,必要时进行查询)或者在AWS中是否有一种方法可以将我的每个第三方密钥输入web应用程序可以直接查询的某处/某物?

存储Amazon EC2实例的凭据有两个很好的选择。这两种方法都是亚马逊推荐的方法。不要在EC2实例、代码或S3上存储凭据

  • 为您的EC2实例创建IAM角色,分配所需的权限,将此角色分配给您的实例。亚马逊SDK将自动提取这些凭证。这是最简单的方法

  • 在IAM中创建凭据,然后使用EC2参数存储安全地存储凭据


  • 我要做的是将凭据存储在安全的S3存储桶上的INI文件中,然后在配置期间下载并解析。例如s3://credentials示例com/app1.ini。只有实例本身和自动化用户可以访问该bucket。谢谢。这听起来像是我之前听说的,但更具体的说法是将文件存储在S3存储桶中,而不是与实际的网站文件一起存储。AWS角色将允许我安全访问该文件,并且我可以独立于更改网站文件来更新该文件。我开始接受这个想法了,真的很棒。我应该把它作为一个答案吗?当你说“亚马逊SDK将自动提取这些凭证”是什么意思?我在哪里输入亚马逊SDK的第三方密钥?现在AWS参数存储听起来更像是正确的方法。需要进一步研究。非常感谢。我将很快标记您的答案。AWS参数存储正是我想要的。当您创建IAM角色并将该角色分配给EC2实例时,凭据存储在该实例的元数据中。编写AWS SKD是为了按以下顺序搜索凭据:环境变量、概要文件,然后是EC2角色。我的答案中的第一个链接将提供有关EC2角色如何工作的更多详细信息。这是我大部分时间使用的方法。我经常将参数存储也用于DB凭据等@JohnHanley所以这可以用于存储任意应用程序密码、安全令牌,以便在设置期间稍后检索等?