(1/25 18:00~、ダウンロード再開)
DEFINER/INVOKER
DEFINER指定:
Stored/Viewに対して実行アカウントがExecute/Selectできる権限さえあれば、Stored/Viewの内容はDEFINERの権限で実行される→Stored/Viewが実行できない可能性は少ない(DEFINERがroot@localhost なら、ほぼ確実に実行できる筈。)
INVOKER指定:
Stored/Viewに対してExecute/Selectできる権限があっても、Stored/Viewの内容は実行アカウントの権限に基づき実行される→Stored/Viewが実行できない可能性は、DEFINER指定に比し大きい。
例:
CREATE DEFINER = 'admin'@'localhost' PROCEDURE p1()
SQL SECURITY DEFINER (or INVOKER)
BEGIN
UPDATE t1 SET counter = counter + 1;
END;
DEFINER指定:
Stored/Viewに対して実行アカウントがExecute/Selectできる権限さえあれば、Stored/Viewの内容はDEFINERの権限で実行される→Stored/Viewが実行できない可能性は少ない(DEFINERがroot@localhost なら、ほぼ確実に実行できる筈。)
INVOKER指定:
Stored/Viewに対してExecute/Selectできる権限があっても、Stored/Viewの内容は実行アカウントの権限に基づき実行される→Stored/Viewが実行できない可能性は、DEFINER指定に比し大きい。
例:
CREATE DEFINER = 'admin'@'localhost' PROCEDURE p1()
SQL SECURITY DEFINER (or INVOKER)
BEGIN
UPDATE t1 SET counter = counter + 1;
END;
DEFINER指定:実行アカウントに Execute権限さえあれば、t1テーブルのUPDATE権限は不要( 'admin'@'localhost'の権限で実行される)
INVOKER指定:INVOKER(実行者) は Execute権限とUPDATE権限の両方必要。
尚、下記サイトでは、セキュリティ上、INVOKER の使用を推奨している。
参考サイト
http://dev.mysql.com/doc/refman/5.0/en/stored-programs-security.html
http://dev.mysql.com/doc/refman/5.0/en/stored-programs-security.html
(対応の日本語頁は無く、DEFINER | INVOKERに関する日本語サイトも少なし)
以上
0 件のコメント:
コメントを投稿