Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 使用安全参数自动化EC2设置_Amazon Web Services_Amazon S3_Amazon Ec2_Amazon Iam_User Data - Fatal编程技术网

Amazon web services 使用安全参数自动化EC2设置

Amazon web services 使用安全参数自动化EC2设置,amazon-web-services,amazon-s3,amazon-ec2,amazon-iam,user-data,Amazon Web Services,Amazon S3,Amazon Ec2,Amazon Iam,User Data,我的问题是相当间接和笼统的,但我希望你的想法。 我想自动化EC2实例的创建,包括web应用程序的完整安装和配置。 为此,我需要在此过程中在服务器上设置SSL密钥、访问密钥等。 该服务器用于生产,不应访问其中某些详细信息/参数的用户将具有非特权用户的shell访问权限 如果我要在“用户数据”中设置秘密参数,任何人都可以使用$curl提取它们http://169.254.169.254/latest/user-data 如果我要将所有机密内容放在安全S3中,并给实例一个访问它的角色,那么未经授权的

我的问题是相当间接和笼统的,但我希望你的想法。 我想自动化EC2实例的创建,包括web应用程序的完整安装和配置。 为此,我需要在此过程中在服务器上设置SSL密钥、访问密钥等。 该服务器用于生产,不应访问其中某些详细信息/参数的用户将具有非特权用户的shell访问权限

  • 如果我要在“用户数据”中设置秘密参数,任何人都可以使用
    $curl提取它们http://169.254.169.254/latest/user-data
  • 如果我要将所有机密内容放在安全S3中,并给实例一个访问它的角色,那么未经授权的用户仍然可以从这个bucket中cp/get
  • 我使用Chef local mode/Chef solo/Chef zero作为设置的一部分,但我的存储库也可以被不应该访问这些信息的人访问
我想到了一个明显错误的想法,即创建一个允许从实例访问机密存储桶的策略,然后将该策略更改为用户数据脚本的最后一部分。但我相信有一种不那么疯狂的方式可以做到这一点


有什么想法吗?我在AWS文档中找不到关于此的任何内容…

您可以加密用户数据,在启动时解密以配置主机,然后删除私钥。我对此有一些想法,但总结一下:

  • 使用以下内容创建一个公私密钥对:
    $openssl req-nodes-x509-days 10000-newkey rsa:4096-keyout private.key-out public.crt-subc'/'

  • 创建一个AMI,包括文件系统中某个地方的私钥

  • 启动实例并使用公钥加密用户数据

  • 在配置脚本结束时,从文件系统中删除私钥,这样用户数据就不能再次解密


  • 将来从AMI启动的任何实例当然都会有私钥,因此您需要确保没有其他用户可以创建实例。

    这是一个好主意,但我应该提到,我还需要避免依赖自定义AMI。在这种情况下,生成密钥对,将私钥放入S3,在启动时下载,解密用户数据,从本地文件系统和S3中删除私钥。你能以更直接的方式编辑你的问题吗?使用一个简单的,我想允许XXXX,拒绝访问YYY。对我直截了当,因为我对这一点很困惑,所以说“如果我是某某,Xxx可以做yyy”。