web-dev-qa-db-ja.com

ユーザーにSUPER権限を付与することに危険はありますか?

Dbのプロシージャの復元に問題があったので、dbuserにSUPER権限を付与しました。

このユーザーは私のWebアプリケーションで使用されているのと同じユーザーなので、ユーザーにSUPER権限を付与することに危険があるかどうかを知りたいのですが。

2
carla

ユーザーにその職務を実行するために必要なよりも多くのアクセス権を与えることは常に悪い考えです。

このユーザーは、私のWebアプリケーションで使用されているのと同じユーザーです

コードのバグまたは使用しているライブラリ/モジュールの1つが原因でアプリケーションがハッキングされた場合、攻撃者はこのユーザーとしてアクションを実行できるようになる可能性があるため、このユーザーがを完全に破壊できる特権を持っている場合同じサーバー上のアプリケーションデータベースと他のデータベースの場合、攻撃者はこれらの危険な特権も取得します。

アプリケーションユーザーは、アプリケーションが必要とする通常のタスクのために行動するために必要な最低限の特権を持っている必要があります。大規模なシステムの場合、システムのさまざまな部分に複数のアプリケーションユーザーがいて、それぞれが制限された権限を持ち、データベース内の無関係なオブジェクトとの相互作用をブロックすることは珍しくありません。データベースおよびサーバーの管理をより一般的に許可する他の特権は、個別の管理ユーザーにのみ付与する必要があります。

アプリケーションユーザーが管理者特権を必要とする状況にある場合は、そのような必要性を取り除く(または可能な限り制限する)ためにデザインをリファクタリングすることをお勧めします。

これが一般的に良いアイデアである理由の詳細については、最小特権のプリンシパル(つまり https://en.wikipedia.org/wiki/Principle_of_least_privilege )を参照してください。

4
David Spillett

ドキュメントを読むと:

SUPER権限により、アカウントはCHANGE MASTER TO、KILL、またはmysqladmin killを使用して、他のアカウントに属するスレッドを強制終了できます(独自のスレッドはいつでも強制終了できます)、PURGE BINARY LOGS、グローバルシステム変数を変更するためのSET GLOBALを使用した構成変更、mysqladmin debugコマンド、ロギングの有効化または無効化、read_onlyシステム変数が有効な場合でも更新の実行、スレーブサーバーでのレプリケーションの開始と停止、ストアドプログラムとビューのDEFINER属性でのアカウントの指定、および接続(1回) max_connectionsシステム変数によって制御される接続制限に達した場合。

そして、私たちは多くの力を借りて責任を負うことを見てきました! SUPERの付与により、事故を回避するための新しい変数が導入されたことをご存知ですか-> super_read_only

したがって、 "dbuser"がSUPERユーザーが実行できることを実行してはならない場合は、それを取り消してください。理想的には、最低限の特権を与えるべきです。

2
mysql_user