AWSEC2ユーザーデータの暗号化

Aug 18 2020

ユーザーからパスワードを含む入力を受け取り、それをEC2インスタンスに渡すユースケースがあります。Ec2インスタンスのwithからURLにアクセスします-http://169.254.169.254/latest/user-data/ ユーザーデータを取得し、適切なパスワードを設定します。

問題は、ユーザーデータがAWSCLIツールで表示されることです。

aws ec2 describe-instance-attribute --instance-id --attribute userData --output text --query "UserData.Value" | base64 --decode

これは大きなセキュリティリスクを課します。

機密/秘密のデータを送信するための最良の方法は何ですか?

ローカルインスタンスに秘密鍵を作成し、EC2に公開鍵を作成する鍵ペアを作成してみました。PowerShellを使用して暗号化/復号化し、EC2にフェッチする正しい方法は何でしょうか?

回答

1 ChrisWilliams Aug 18 2020 at 00:39

推奨されるアプローチは、秘密を外部ソースに保存することです。

AWSは、秘密、保存するためのサービスがある秘密マネージャを。このサービスを使用すると、インスタンスがユーザーデータでアクセスする必要のあるシークレットを含むシークレットを作成できます。次に、AWS CLIを介して、シークレット値を取得する権限を持つIAMロールをインスタンスに付与します。

または、AWS SSMパラメータストアサービスを利用して、シークレットをSecureStringタイプとして保存することもできます。これは、AWS CLIを介してシークレットを取得し、それをスクリプトで使用するシークレットマネージャーと同様に機能します。

AWSソリューションにシークレットを保存したくない場合に同様の機能を提供するHashicorpVaultなどのサードパーティソリューションもあります。