在jenkins或S3上encryption并在EC2实例上解密

我想使用AWS CodeDeploy在应用程序上自动部署新代码。 我正在使用AWS来运行我的应用程序。 我想要做的是以下几点:

  1. 在jenkins中构build应用程序(也在AWS上运行)
  2. 在S3上发送已编译的应用程序,以及由CodeDeploy挂钩(AfterInstall)自动设置的一些环境variables
  3. CodeDeploy将负责其余的步骤

我想知道的是,在S3上encryption这些env vars(它们是在一个文本文件中)并在实例内解密它们时,是否有AWS实践? 如果没有,你有什么指示我怎么能达到我想要的(在S3上这些环境的一些安全性)?

PS在S3中上传这些环境variables并设置每个部署的原因是因为它们往往会改变。 我不想在形象中烤他们。 此外,远离环境variables是不可取的。

将数据放入Amazon S3时,有两种方法可以对数据进行encryption:

  1. 客户端encryption,或
  2. 服务器端encryption。

客户端encryption

亚马逊没有任何内置的客户端encryption机制。 你必须自己动手:使用你喜欢的工具在Jenkins中encryption数据,然后上传它。 当从S3下载对象时,在对象下载后解密对象。

有一种方法可以做到这一点,就是使用7z来压缩使用AES256encryption的存档。 另一个是使用OpenSSL。

服务器端encryption

亚马逊有一个内置的服务器端encryption机制。

如果使用AWS CLI将file upload到S3,则可以使用--server-side-encryption命令行参数在服务器上encryption文件。 当下载对象时,它们将自动解密。

但是,请注意,这不会保护对象不被任何人通过S3 API下载。 如果任何人使用有效的AWS凭证并下载该文件,则该文件将对其开放。

它所保护的是有人通过非API方式访问对象,如直接访问数据中心。

最后的笔记

如果您希望这些文件对除您以外的任何人都无法读取,那么您需要客户端encryption。