存储Amazon AWS Id和密钥的最安全的位置在哪里?

Ida*_*ter 3 security web-config amazon-web-services secret-key

我正在使用ASP.NET开发一个应用程序.我想知道存储Amazon AWS Id和密钥的最安全的地方在哪里?

我想到了两种可能性:在实际的AmazonAPI.cs(类)本身作为私有成员.第二,作为web.config中的appSettings变量?

我必须通过API调用提供这些凭据才能使用AWS API for .NET.我不使用网络服务拨打电话.该调用是通过.cs类文件进行的,该文件是我为封装Amazon API调用而特别制作的.

你可以请:提供一个示例代码,演示如何完成它(一种好的方法就像在这里找到的那样) - 如果使用ASP.NET 4.0,可能有更好的方法,但我不确定.同样,我想在web.config中加密以下内容:

<appSettings>
 <add key="AWSAccessKey" value="" />
 <add key="AWSSecretKey" value="" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

谢谢.

顺便说一句:还有一个选项可以使用IAM用户临时凭证 - 你对它有什么了解吗?

Ale*_*son 6

您不应将AWS Access Keys和Secrets存储在您的代码中.AWS使用IAM角色,实例假定这些角色直接获得解决此问题的权限.AWS在部署时为EC2实例提供IAM角色.

使用IAM角色将权限委托给在Amazon EC2上运行的应用程序 http://docs.aws.amazon.com/IAM/latest/UserGuide/roles-usingrole-ec2instance.html

编辑:AWS SDK的当前版本鼓励您:

A)使用EC2角色凭证(推荐)

将代码部署到EC2实例时,代码将自动在角色的上下文中运行.因此,您要为分配给EC2实例的IAM角色添加权限.

B)使用凭证文件

在生产中使用角色时,您可以在本地/本地计算机上进行开发时使用此技术.这种方法也允许您使用不同的帐户.只需在需要时为配置添加更多配置文件部分.

  1. 在c:\ aws_service_credentials中创建一个名为凭据的凭证文件(无扩展名)
  2. 将以下内容添加到app.config中
    <configuration> <appSettings> <add key="AWSProfileName" value="development"/> <add key="AWSProfilesLocation" value="C:\aws_service_credentials\credentials"/> </appSettings> </configuration>
  3. 在右侧文件夹中添加凭证文件(例如,C:\ aws_service_credentials\credentials)
    [development] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

请参阅http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html以设置您的凭据.

确保在进程可以访问的文件夹中创建配置文件(例如,文件夹和文件的Everyone权限).如果您以管理员身份运行应用程序,这可能不是问题,但如果您将应用程序作为服务或后台应用程序运行.默认情况下,在C:\中创建的文件夹未打开以供所有人阅读,因此如果您缺少权限,请添加权限.

C)直接向您的应用配置添加凭据(不推荐)

建议不要使用此方法,因为如果您的应用配置可以共享且密钥已泄露.

<add key="AWSAccessKey" value="key"/>
<add key="AWSSecretKey" value="secret"/>
<add key="AWSRegion" value="eu-west-1" />
Run Code Online (Sandbox Code Playgroud)