web-dev-qa-db-ja.com

構成管理用のパスワードを保存する際の推奨事項は何ですか?

構成管理システムをバージョン化するための多くの推奨事項を見てきました。アプリケーションのセキュリティに必要なパスワードをどのように扱うことを提案しますか?それらもバージョン化しますか?

4
Ztyx

構成ファイルにパスワードを書き込んでいる場合は、構成ファイルをリビジョン管理にチェックインするときに、それらのパスワードをそのままにしておく方が確かに簡単です。適切なアクセス制御がリポジトリに適用されている限り(リポジトリのアクセス許可と、リポジトリがバックエンドに使用するファイルシステムのアクセス許可の両方)、最初から構成ファイルにそれらを含めるよりも安全性が低下することはありません。 )。このように保存されたパスワードは確かに脆弱ですが、多くの場合、選択の余地はありません。

パスワードを保存するときは常に、パスワードが暗号化されていることを確認するのが最善であり、暗号化されたパスワードデータベースへのアクセスは制限されています。私は通常、これにリビジョン管理システムを使用しません。これは、かなりのオーバーヘッドと複雑さがあり、実際には攻撃対象領域を増やすためだけに役立つためです。

多くの人が管理者パスワードをスプレッドシートやドキュメントに保存しています。ペネトレーションテストに当惑することを楽しんでいない限り、それらの人々のようにならないでください。

最善の解決策は、パスワードを暗号化するソフトウェアを使用し、可能であればオフラインシステムに保存することです。このためのソフトウェアはたくさんあります(そして、必要に応じて積極的にパスワードを変更し、過去のパスワードの記録を保持できるものもあります)。 Hitachi ID Systemsは、このためにエンタープライズグレードの製品を製造しています(開示:私は以前彼らのために働いていました)。 keepassとlastpassも思い浮かびます。

2
Falcon Momot

パスワードを安全に保管して時々取得する必要がある場合は、 Secret Server のような製品を試してください。

自動化の一環としてパスワードをデプロイメントアーティファクトとバンドルすることを検討している場合は、必要に応じてパスワードをクエリし、(潜在的に)安全性を低下させないようにするAPIを備えたツール(Secret Serverなど)を見つけてくださいバージョン管理リポジトリ。

1
Mark McDonald

Chefなどの構成管理ツールを使用している場合は、暗号化されたデータバッグを使用できます。

http://docs.opscode.com/essentials_data_bags_encrypt.html

OTOH、環境によって異なるものについては、システム環境を介して自動化されたスクリプトに渡すことをお勧めします。

http://www.12factor.net/config

CIまたはCDサーバー製品では、値を暗号化された形式で保存できる必要があります。例えばこれが私が働いている製品のドキュメントです。

http://www.thoughtworks-studios.com/docs/go/current/help/deploy_a_specific_build_to_an_environment.html#secure_variables_section

0
ottodidakt