MySQL
GRANTによるセキュリティ
サーチ…
ベストプラクティス
ルート(および他のSUPER特権ユーザー)を
GRANT ... TO root@localhost ...
これにより、他のサーバーからのアクセスが防止されます。あなたは非常に少数の人にSUPERを渡すべきです、そして、彼らは彼らの責任を認識するべきです。アプリケーションはSUPERを持つべきではありません。
アプリケーションログインは、使用する1つのデータベースに制限します。
GRANT ... ON dbname.* ...
そうすれば、アプリケーションコードをハックする人はdbnameを越えることができません。これは、次のいずれかによってさらに洗練されます。
GRANT SELECT ON dname.* ... -- "read only"
GRANT ... ON dname.tblname ... -- "just one table"
読み込み専用には、「安全な」ものが必要な場合もあります
GRANT SELECT, CREATE TEMPORARY TABLE ON dname.* ... -- "read only"
あなたが言うように、絶対的なセキュリティはありません。私のここでのポイントは、あなたがハッカーを遅らせるためにいくつかのことを行うことができることです。 (正直な人たちのために同じことが起こります。)
ごくまれに、rootだけが利用可能な何かを行うためにアプリケーションが必要な場合があります。これは、 SECURITY DEFINER
を持つ「ストアドプロシージャ」(およびルートがそれを定義する)を介して実行できます。それは、SPが行うことだけを公開します。たとえば、ある特定のテーブルで特定のアクションが実行されます。
ホスト(user @ hostの)
「ホスト」は、ホスト名またはIPアドレスのいずれかです。また、ワイルドカードも使用できます。
GRANT SELECT ON db.* TO sam@'my.domain.com' IDENTIFIED BY 'foo';
例:注:これらは通常引用する必要があります
localhost -- the same machine as mysqld
'my.domain.com' -- a specific domain; this involves a lookup
'11.22.33.44' -- a specific IP address
'192.168.1.%' -- wild card for trailing part of IP address. (192.168.% and 10.% and 11.% are "internal" ip addresses.)
localhost
を使用すると、サーバーのセキュリティに依存します。ベストプラクティスのためには、 root
はlocalhostを通してのみ許可されるべきです。場合によっては、これらは同じことを意味します: 0.0.0.1
と::1
。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow