勤務先の会社の本番環境へのアクセスをどのように制限しますか?


8

私が働いている会社では、devospsエンジニア(現在、私と同僚の2人のメンバーのみ)が、本番データベースにアクセスできる唯一の人です。

したがって、他の開発者が本番データベースでMySQLクエリを実行する必要がある場合。彼らはクエリを2人のエンジニアに送信して実行させます。

本番データベースに対してコマンドを実行する必要がある状況は次のとおりです。

  1. データベースには破損したデータが含まれているため、バグが発生します。バグを修正するコマンドを実行します。

  2. バグが報告されています。また、データベース内の現在の値を確認したいと考えています。

  3. ある顧客が自分のデータを変更したいと考えています。しかし、私たちのWebアプリケーションには変更を行う機能がありません。したがって、MySQLコマンドをデータベースに直接送信して、顧客の要件を完了する必要があります。

  4. QAチームは、運用環境でテストアカウントを作成しました。また、他のテストを実行できるように、アカウントのステータスを変更したいと考えています。

これにより、他の同僚に多くの中断が生じます。日中にプログラムを開発する場合、クエリを実行するためだけにコンテキストを切り替える必要があることがよくあります。

これは会社にとって良いアーキテクチャではないと思います。会社の本番環境へのアクセス許可をどのように制御しますか?

私たちの生産データベースは、機密の顧客情報で構成されています。データが漏洩した場合、当社は数百万ドルの罰金を科される可能性があります。

回答:


5

質問がデータベースの変更を管理する方法である場合は、Flywayのようなものを検討してください。これにより、リポジトリ内の追跡された構成ファイルを介して変更を制御し、自動化および制御されたプロセスを介してそれらを適用できます。通常のコードレビューとプロモーションの手順を使用してください。

「開発者が任意のSQLコマンドを実行するようにバグを停止させるにはどうすればよいですか」という質問の場合は、それを自動化する方法をスクリプトで作成するか、ロックされたアカウントで使用するサードパーティのUIを彼らに与えて、防止することを検討することをお勧めします。機密テーブルを変更および制限します。YMMVは、DBのレイアウトによって異なります。


私の質問はについてhow do I get devs to stop bugging me to run arbitrary SQL commandsです。ProxySQLを使用して機密の顧客データをマスクし、他の開発者が本番データベースを読み取ることができると思います。
ブライアン

それらを台無しにしたり、機密データを見たりしないようにしようとしていますか?前者は、mysql-web-uiのようなものでROアクセスを与えることができます。Phil Wの回答で述べられているように、2番目にはRBACが必要です。
TheFiddlerWins

4

データベースの移行と呼ばれる概念を使用して、データベーススキーマとデータの変更をソースコード管理に組み込むことができます。これらは、部分的に自動化された展開プロセスの一部として、開発環境およびステージング環境で実行できます。

たとえば、私の環境(PHP Webアプリケーション)では、スキーマの更新にDoctrineスキーマを使用し、データ変更にYii2移行を使用しています。それぞれのコマンドは、各環境に変更をデプロイするために必要なすべてのコマンドを実行する7行のbashスクリプトの一部です


3

最初の問題がわかりました。DevOpsは、ビルドからエクスプロイトまでアプリケーションを処理できるチームを構築することです。
開発者はデータベースにアクセスできる必要があります。多くの人にとって現実であるさまざまなケースと、自分と同僚をボトルネックにして、自分の作業を妨げている主な欠点を引用しました。

他の回答は、実際にアプリケーション配信プロセスの一部として統合する必要があるスキーマ変更または計画変更に適切に対処しますが、開発者が原因を理解するためにDBをダンプする必要がある場合、ライブアクセスのニーズを迅速に修正することはできません。バグとその例を修正する方法。

すでにコメントで引用ProxySQLのようなものは、MySQLデータベースの[OK]をすることができ、物事をログに記録するようにMySQLを設定することも良い方法かもしれない、MySQLは商用提供しています、監査プラグインあなたの開発者をさせるの問題に答えることがデータベースにアクセスし、あなたを満たします何が行われたかを追跡するためのCISO要件。

Mysql DBだけではなく、それらのアクセスを監査する必要がある場合は、アプリケーションのアクションではなく、ユーザーのアクションのログを監査するように各システムを構成するのは面倒です。物事を閉じたままにしておくことはさらに悪いことです。1人の開発者がいつかアプリケーションにDBシェルを統合してこの障害を回避し、最終的には適切なアクセス制御なしに本番環境で稼働し、すべてのデータを公開します。このポリシーを確認する会社。

strongDMが役立つ(そしてDB要求だけではなく監査を許可する)私が知っている商用ソリューションが1つあります。これは、sshおよびrdpセッションを監査することもできます。デバッグ目的でアプリケーションをホストするマシン。


0

...私と他の同僚...は、本番データベースにアクセスできる唯一の人々です。

それは良い出発点です。
馬が走り去った後、DBAは安定したドアを閉めようとすることがよくあります。

他の開発者が本番データベースでMySQLクエリを実行する必要がある場合...

質問:
開発者が運用データベースに対して何かを実行しいるのはなぜですか?

会社の本番環境へのアクセス許可をどのように制御しますか?

役割ベースのアクセス制御。

ユーザーには、ジョブの役割で必要なときに各データベースへのアクセス権が与えられます。役割は、各データベース内のテーブルへのアクセス権を与えるために使用されます。これらのアカウントが作成されて付与されるロールのプロセスは、集中管理され、厳密に監査されます。

開発者は、開発データベースの外部で「ハンズオン」、更新アクセスを行うべきでありませ。 それ以外はすべて、事前に準備され、制御された(できれば自動化された)チャネルを介してスクリプト化、テスト、監査、およびリリースする必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.