2017-06-11 53 views
1

我想编写初始化REX-Ray docker插件(在其配置上使用AWS凭证的服务)的cloud-init脚本。 我已经考虑了以下方法。但是,这些方法有一些缺点。如何在没有硬编码的情况下在cloud-init中引用AWS访问密钥(密钥)

  1. cloud-init脚本中的硬代码访问密钥/密钥。

    问题:这不安全。

  2. 创建IAM角色,然后从实例元数据中引用访问密钥,密钥。

    问题:访问密钥将在一定时间内过期。 所以我需要重新启动REX-Ray守护进程,这会导致服务暂时不可用。

请告诉我哪个是更好的方法来引用访问密钥/秘密密钥,或者如果它存在,则以其他方式。

在此先感谢。

+0

你为什么说IAM角色的访问密钥到期? – helloV

+0

对不起,我的英文不好。在上述(2)中,我想从实例元数据(例如“http://169.254/169.254/.../security-credentials”)访问密钥/密钥。根据以下文件,返回的凭证将在“过期”字段中过期。 “http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials – tristar

+0

docker插件应该自动获取凭证。不必做任何事情,插件是使用AWS CLI还是任何AWS开发工具包?它的内容是什么? – helloV

回答

1

docker插件应该自动获取凭证。你不必做任何事情。不要为AWS凭证设置任何环境变量。

AWS CLI/AWS SDK将自动从元数据服务器获取凭据。

+0

正如您所说,我已经确认访问密钥/密钥已经过期并自动刷新,然后rexray守护进程(docker插件)仍然可以访问EBS卷的 。我了解AWS API客户端(docker插件)负责证书生命周期,因此我们不需要关心它。我会接受这种方法来管理凭证。感谢您的建议。 – tristar

1

可以使用的身份验证下面的方法

环境变量

出口接入和环境环境密钥如下:

$ export AWS_ACCESS_KEY_ID="anaccesskey" 
$ export AWS_SECRET_ACCESS_KEY="asecretkey" 

共享凭据文件

你可以使用AWS凭证文件来指定您的凭证。 Linux和OS X上的默认位置为$ HOME/.aws/credentials,或Windows用户的“%USERPROFILE%.aws \ credentials”。如果terraform无法在线检测凭证,或者在环境中,Terraform将检查这个位置

您可以选择通过提供shared_credentials_file属性指定的配置不同的位置如下

provider "aws" { 
    region     = "us-west-2" 
    shared_credentials_file = "/Users/tf_user/.aws/creds" 
    profile     = "customprofile" 
} 

https://www.terraform.io/docs/providers/aws/

+0

感谢您的回复。为了定义环境变量或使用“〜/ .aws/credentials”文件, 我认为它需要在启动时创建一个文件或定义环境变量。 但是,要在引导时创建文件(例如“〜/ .aws/credentials”)文件或定义环境变量(例如AWS_SECRET_ACCESS_KEY),需要准备cloud-init脚本(或shell脚本)和硬编码密钥等值(似乎不安全)。 所以我想知道如何避免硬编码证书的方式(Terraform可以很好地处理这个问题?)。 – tristar

+0

是的,你可以使用EC2角色(并且它是推荐的方式)。只需创建一个IAM角色并将其附加到您的实例即可。 Terraform每次运行时只会询问元数据API端点的凭证。但请注意,该凭证已轮换,但每次需要运行时,terraform将始终获得新凭证。这是如何在这里创建EC2的IAM角色http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials –

+0

感谢您的建议,我知道即使是来自EC2角色的访问密钥/密钥(通过实例元数据)已过期, AWS SDK(Docker插件在内部使用它)关心其生命周期。所以我们不需要关心凭证的生命周期(这是推荐的方式)。 – tristar

相关问题