cloudformation / user data ...传递操作系统用户密码而不回显日志

时间:2015-10-07 15:18:39

标签: linux amazon-web-services amazon-cloudformation

所以我试图弄清楚如何在从cloudformation传递到操作系统后不显示我的密码。所以首先我在我的cloudformation脚本中使用下面的" NoEcho"我输入的密码开始了......

" DBPASS" :{     " NOECHO" :" true",     "说明" :" oracle用户的密码",     "类型" :" String",     "&MINLENGTH#34; :" 1",     "的MaxLength" :" 20"   },

然后在我的云形成的用户数据部分中,我在下面为oracle用户设置密码。但问题是用户回显到boot.log / cloud-init.log,所以密码是可见的......我试图隐藏密码,以便在日志中看不到。

" DBPASS =&#34 ;, { "参考":" DBPASS" }, " \ n",

" echo -e \" $ DBPASS \ n $ DBPASS \" | passwd $ oracle \ n",

然后我想做下面的事情,但不知道如何传入" DBPASS"变量输入两次..

stty -echo 阅读DBPASS stty echo

我的目标是为oracle用户设置密码而不回显日志......

2 个答案:

答案 0 :(得分:0)

如果您需要保护敏感信息不被EC2实例读取,那么您不应该将其放在用户数据启动脚本中 ,无论它是否作为Cloud-init default log output的一部分存储,因为用户数据脚本仍然可以作为{{3}的一部分阅读}。

请参阅EC2文档的instance metadata部分中的重要注意事项:

  

重要

     

虽然您只能从实例本身访问实例元数据和用户数据,但数据不受加密方法的保护。任何可以访问该实例的人都可以查看其元数据。因此,您应采取适当的预防措施来保护敏感数据(例如长期加密密钥)。您不应将敏感数据(如密码)存储为用户数据。

作为敏感数据的另一种替代方法,您可以将内容上传到专用S3存储桶,然后使用来自用户数据脚本的Instance Metadata and User Data将其下载到EC2实例。有关此方法的详细信息,请参阅问题aws s3 cp my answer

答案 1 :(得分:0)

您可以从命令行将数据库凭据作为参数传递。您需要在启动Cloudformation堆栈时传递这些凭据,但在任何地方都不会显示。查看此template,其中DB参数是从参数提供的('默认'未在参数中设置。因此,您必须在启动云形式堆栈时传递它们)