セキュリティの問題に関連しているので、私の考えが正しいことを確認したいと思います。
私たちは、db2データベースを使用するWebベースのアプリケーションを持っています。 db2はdb2inst1
このユーザーとして実行されます。
これで、Webアプリケーションのユーザーがdb2バックアップ・イメージをplayschoolと呼ばれるデータベースに復元できるようにしたいです。このゲームスクールを使用すると、本番データベースに害を与えることなく「プレイ」することができます。これを行うには、db2restore
PHP関数を介してPHPスクリプトを実行する必要がありますexec()
。
十分安全ですか?以下の条件では、誰もPHPユーザーとしてdb2コマンドを乱用または実行できないことを確認してください。
この行を次に追加します。
/etc/sudoers
php ALL=(db2inst1) NOPASSWD: /opt/eduserver/bin/db2restore
次に、PHPスクリプト
db2restore
でこのコマンドを実行します。exec('sudo -u db2inst1 /opt/eduserver/bin/db2restore');
ノート
- すべてのエンドユーザーがWebインターフェースを介してdb2restoreを実行する権限を持っているわけではありません。
- エンドユーザーはサーバーのコマンドラインにアクセスできません。
- Webサーバーを介してdb2restoreにアクセスできません。
ベストアンサー1
私はこれに本質的に間違ったことがないと思います。注目すべき唯一のことは、例えば、db2restoreファイルがルートではなくdb2inst1に属している場合、誰かがdb2restoreのコンテンツでゲームをプレイできることです。
また、このPlayschoolデータベースが本番システムにないとします。もしそうなら、開発者が本番データベースにログインしているなら、これは悪い考えです。
通常、データベースへのアクセスを許可するときは、常にデータベースにユーザーアカウントを作成し、その特定のユーザーアカウントに特定の機能(追加、削除など)を付与します。