web-dev-qa-db-ja.com

Elastic Beanstalkの環境変数は、秘密の値を保存するのに適切な場所ですか?

DjangoアプリケーションをElastic Beanstalkにデプロイしました。その環境変数設定インターフェイスを使用して、APIキーをソースに保存するのではなく、ここに保存するつもりです https: //stackoverflow.com/a/178786 )。

これを行った後、私はBeanstalkが環境変数と呼んでいるものは実際にはシェル環境変数(ここで言及されている https://stackoverflow.com/a/24564832/378638 )ではなく、構成ファイル内のインスタンス(ここで説明しているように https://stackoverflow.com/a/24566283/378638 )。

これはセキュリティの問題のようです。これは、秘密鍵をソースから遠ざけるという目的を無効にしませんか?私はそれらがリポジトリに存在しないことを理解していますが、インスタンスからは引き続きアクセスできます。

リスクを誤解していますか?私は継承によるシステム管理者ですので、ここで私の無知を許してください。設定ファイルを介してBeanstalk変数をシェル環境変数としてロードし、ルートからしかアクセスできないので次に進むべきですか、それとも私の懸念は有効ですか?ありがとうございました。

15
M. Keller

秘密をソースコードに入れないことのポイントは、それらがソースcontrolに入らないようにすることです。これは、オープンソースプロジェクトで特に役立ちます。

展開するとき、シークレットがファイルまたはenvvarにあるかどうかは関係ありません。重要なのは、プログラムを実行しているOSユーザーだけがそれを読み取ることができるということです。これは、便利なenvvarsのデフォルトです。

ルートは常にすべてを読み取ることができます。したがって、Amazonはrootであるため、必要に応じて秘密の値を知ることができます。

それらは サポートを行う 高価なハードウェアセキュリティモジュール(HSM)ですが、キーが読めなくなります。もちろん、HSMを使用して自分のデータを復号化し、実際のキーを取得することはできません。

したがって、Amazonを信頼するか、自分でホストするか、コロケーションする必要があります。

12
Neil McGuigan