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などのサードパーティソリューションもあります。