如何在我的python应用程序中保护我的AWS访问ID和密钥

mic*_*luk 10 python amazon-web-services

我正在使用Python创建应用程序并在某些模块中使用Amazon Web Services.

我现在正在硬编码我的AWS访问ID和*.py文件中的密钥.或者将来可能会将它们移出到配置文件中.

但是有一个问题,我如何从其他人那里保护AWS信息?据我所知,python是一种易于解编译的语言.

有没有办法做到这一点?


那么我正在做的是一个应用程序,以帮助用户从云上传/下载东西.我正在使用Amazon S3作为云存储.我知道Dropbox也使用S3,所以我想知道他们如何保护密钥.


经过一天的研究,我找到了一些东西.我现在正在使用boto(用于python的AWS库).我可以使用'generate_url(X)'函数来获取应用程序访问S3中对象的URL.该网址将在X秒内过期.所以我可以为我的应用程序构建一个Web服务,为他们提供网址.AWS密钥不会设置到应用程序中,而是设置到Web服务中.

听起来不错,但到目前为止我只能用这个功能下载对象,上传不起作用.任何机构都知道如何使用它进行上传?


有没有人知道如何使用boto的key.generate_url()来获取用于将内容上传到S3的临时URL?

bwi*_*ght 9

如果您要分发代码,则无法保护您的密钥.任何有权访问您的服务器或源代码的人都可以访问它们.

您可以采取两项措施来保护自己免受恶意使用密钥的侵害.

  1. 使用amazon IAM服务创建一组密钥,这些密钥仅具有执行脚本所需任务的权限.http://aws.amazon.com/iam/

  2. 如果您有移动应用程序或其他需要用户帐户的应用程序,则可以创建服务以为每个用户创建临时令牌.用户必须拥有有效的令牌和密钥才能执行任何操作.如果您想阻止用户使用您的密钥,您可以停止为他们生成新的令牌.http://awsdocs.s3.amazonaws.com/STS/latest/sts-api.pdf


如果您正在创建允许人们上传内容的应用程序,请专门针对S3.保护您的帐户和其他用户信息的唯一方法是让他们为您注册一个帐户.

  1. 该应用程序的第一步是与您的服务器进行身份验证.
  2. 一旦您的服务器进行身份验证,您就向amazons令牌服务器发出请求并返回令牌
  3. 然后,您的应用程序使用exe和令牌中内置的键发出请求.
  4. 根据应用于此用户的权限,他只能上传到分配给他的存储桶.

如果这看起来非常困难,那么您可能还没准备好设计一个可以帮助用户将数据上传到S3的应用程序.如果您只分发1个密钥,即使您可以隐藏用户可以编辑任何用户添加的任何数据的密钥,您也会遇到严重的安全问题.

解决此问题的唯一方法是让每个用户创建自己的AWS账户,您的应用程序将帮助他们将文件上传到他们的S3账户.如果是这种情况,那么您不必担心保护密钥,因为用户在安装应用程序后将负责添加自己的密钥.