2017-06-11 8 views
1

REX-Rayドッカープラグイン(AWSクレデンシャルを設定で使用するサービス)を初期化するクラウド初期スクリプトを作成します。 私は以下の方法を検討しました。しかし、これらの方法にはいくつかの欠点がある。ハードコードなしのクラウド-initでAWSアクセスキー(秘密鍵)を参照する方法

  1. クラウド初期スクリプトのハードコードアクセスキー/秘密鍵。

    問題:これは安全ではありません。

  2. IAMロールを作成し、インスタンスメタデータからアクセスキー、秘密鍵を参照します。

    問題:アクセスキーは、一定期間内に期限切れになります。 REX-Rayデーモンプロセスを再起動する必要があるため、一時的にサービスを利用できません。

アクセスキー/秘密キー、または別の方法が存在する場合はそれを参照する方が良い方法を教えてください。

ありがとうございます。

+0

IAMの役割でアクセスキーの有効期限が切れているのはなぜですか? – helloV

+0

私の英語は申し訳ありませんでした。上記(2)では、インスタンスのメタデータ(例えば、http://169.254/169.254/.../security-credentials)からキー/秘密鍵にアクセスしたいと考えています。下記の文書によると、返された資格は "Expiration"フィールドで期限切れになります。 "http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials – tristar

+0

ドッカープラグインは自動的に資格情報を取得する必要があります。 AWS CLIまたはAWS SDKを使用しているのですか?何が書かれていますか? – helloV

答えて

1
に従うよう、テラフォームはオプションでshared_credentials_file属性を提供することにより、構成内の別の場所を指定することができます

この場所をチェックします

ドッカープラグインは資格情報を自動的に取得する必要があります。何もする必要はありません。 AWS資格情報に環境変数を設定しないでください。

AWS CLI/AWS SDKは、メタデータサーバーから資格情報を自動的に取得します。

+0

あなたは、アクセスキー/秘密鍵が期限切れで自動的に更新されたことを確認した後、デーモンプロセス(ドッカープラグイン)をrexrayしても、 をEBSボリュームにアクセスすることができます。私はAWS APIクライアント(ドッカープラグイン)が信用証明書のライフサイクルを守っていることを理解していますので、 に気を付ける必要はありません。私は資格を管理するためにこのメソッドを受け入れます。あなたのアドバイスをありがとう。 – 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"です。テラフォームはインライン資格情報を検出し、あるいは環境にするために失敗した場合

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など)を定義する場合は、 クラウド初期化スクリプト(またはシェルスクリプト)を用意する必要があります。秘密鍵などの値(安全ではないようです)。 ハードコーディング資格が存在する場合、それを避ける方法を知りたいのですが(Terraformはこれをうまく処理できますか?) – tristar

+0

はい、EC2の役割を使用することができます(また、EC2の役割もお勧めします)。 IAMロールを作成してインスタンスにアタッチするだけです。 Terraformは、実行するたびに資格情報のメタデータAPIエンドポイントに問い合わせます。ただし、資格情報はローテートされますが、実行する必要があるたびに常にテラフォームが新しいテイクフォームを取得します。これはここで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

関連する問題