1

mysql user を使用せずに mysql でデータベースをバックアップすることは可能ですか?

問題: ansible を使用してバックアップ システムを作成したいのですが、これらのバックアップを実行するには、ユーザーとパスワードの mysql ユーザーを宣言する必要があるため、データベースのバックアップ時に問題があります。したがって、セキュリティと効率の理由から、ユーザーとパスワードを宣言せずにバックアップしたいと考えています。

4

1 に答える 1

2

まず最初に

  • 資格情報をスクリプトに含めないでください。

  • ソース コードまたはあらゆる種類のソース コード リポジトリ (資格情報専用に作成した Git リポジトリを含む) に資格情報を含めないでください。

2つの条件のいずれかの下で、これを合理的に「行うことができました」。

  • データベースにユーザー名/パスワードがありませんでした (非常にありそうもなく、アドバイスもありません)
  • データベースがオフラインです (何らかのコピーを使用してクローンを作成できます)

しかし、これらをしないでください!

なぜだめですか?

  • 安全ではありません
  • 安全じゃない
  • データベースとビジネスを不必要に危険にさらしています
  • ほとんどの場合、データベースには機密情報が含まれており、暗号化して保存しないことを選択した場合でも、保護しないでおくべきではありません。
  • バックアップを作成するために、データベースをオフラインにすることに頼るべきではありません。ダウンタイムは無駄な時間であり、ダウンタイムのすべての瞬間がお金と潜在的な顧客を犠牲にします。

本番マシンでデータベースを保存/利用する方法

  • 可能であれば暗号化する必要があります
  • 強力なユーザー名とパスワードで常に保護する必要があります。これらは、データベースに対する最も一般的な攻撃を阻止します。
  • 暗号化は、最も高度な攻撃を除いて、ほぼすべての攻撃を阻止します。
  • サービスが稼働している間は、バックアップのユーザー名とパスワードを自動的に (定期的に) 変更することも検討できますし、検討する必要があります。

今、あなたはおそらく考えているでしょう...どうやってこれを行うと思いますか?資格情報をスクリプトに含めることはできないとおっしゃいました。

じゃあどうすればいいの?

代わりに、安全な資格情報配布方法を利用する必要があります。それは単純なものでも複雑なものでもかまいません。ただし、一般的に、資格情報配布サービスのいくつかの経験則があります。

  • クレデンシャルは、それらを要求したクライアント マシンのディスクに保存しないでください。クライアントは、必要な期間だけクレデンシャルを保持する必要があります。キャッシュ (メモリ内) は、資格情報の要求が非常に頻繁に発生する一時的な期間に受け入れられる場合があります。
  • クレデンシャルは、可能であればメモリ内で暗号化され、プレーン テキストとして保存されないようにする必要があります。各クライアントはランダムな暗号化キーを使用できます。ここで留意すべきことは、排除することは不可能であるため、攻撃対象領域を最小限に抑えることです。
  • サービス/配布方法は、許可されたマシンのみがアクセスできる必要があります
  • サービス (およびクライアント) は、考えられる DDOS または既知のネットワーク攻撃から保護するなど、ファイアウォールによって適切に保護する必要があります。
  • サービスは、ホストまたはアベイラビリティ ゾーンの障害を想定して動作する必要があります。これらの問題を検出し、必要に応じてフェイルオーバーできる必要があります。
  • 署名されたサーバー証明書を使用し、クライアントがそれらを常に検証するようにします。これは内部サービスのみであるべきであるため、自己署名ルートを選択することもできます
  • 許可されていないマシンによるサービスへの許可されていないアクセスを制限し、セキュリティを向上させるために、(可能であれば) 署名付きクライアント証明書を使用することもできますし、そうすべきです (これはあると便利ですが、一部の製品ではこれが提供されていません)。
  • このサービスは、特定の資格情報を既知の許可されたマシンにのみ提供する必要があります
  • このサービスは、HTTPS などの暗号化された安全なチャネル (内部ネットワークであっても) を介してのみ、これらの資格情報を提供する必要があります。

資格情報をアプリケーションに配布する既存の方法は多数あります。可能な限り、独自に開発するのではなく、すでにテストおよび証明されているものを使用することを強くお勧めします。

注:本番用の秘密鍵/証明書も同様の方法で配布する必要があります。それらをインストール パッケージやソース リポジトリに含めないでください。マシンが実質的にダウンしているときに、マシン上に置いたままにしておいてください。起動スクリプトで必要な証明書をダウンロードできます。サービスが終了したら、シャットダウン スクリプトを使用して秘密鍵/証明書ファイルを完全に消去できます。一部のアプリケーションは、サービスの実行中にこれらのファイルを再読み取りまたはロックするため、アプリケーションの起動後にこれらのファイルを消去するとは言いません。

注 2:これは、攻撃や侵害を完全に阻止することを意図したものではありません。これらの推奨事項は、攻撃対象領域を制限することのみを目的としています。なぜなら、放置しておくものが多いほど、攻撃者はそれらを見つけるだけでなく、使用することも容易になるからです.

安全な認証情報配布方法の例をいくつか示します。

于 2016-12-23T23:32:06.033 に答える