2017-06-11 107 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

相關問題