MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

23.5.17.2 NDB Cluster および MySQL の権限

このセクションでは、NDB Cluster に関連して MySQL 特権システムがどのように機能するか、および NDB Cluster をセキュアに保つためのこれの影響について説明します。

標準 MySQL 権限は、「NDB Cluster」テーブルに適用されます。 これには、データベース、テーブル、およびカラムのレベルで付与されるすべての MySQL 権限タイプ (SELECT 権限、UPDATE 権限、DELETE 権限など) が含まれます。 その他の MySQL サーバーの場合と同様に、ユーザーおよび権限の情報は mysql システムデータベースに格納されます。 NDB テーブル、このようなテーブルを含むデータベース、およびこのようなテーブル内のカラムに対する権限を付与および取り消すために使用される SQL ステートメントは、(その他の) MySQL ストレージエンジンを含むデータベースオブジェクトとの接続に使用される GRANT および REVOKE ステートメントとすべての点で同じです。 CREATE USER および DROP USER ステートメントについても、同じことが当てはまります。

デフォルトでは、MySQL 付与テーブルは MyISAM ストレージエンジンを使用することに注意してください。 このため、これらのテーブルは通常、NDB Cluster 内の SQL ノードとして機能する MySQL サーバー間で複製または共有されません。 言い換えると、デフォルトでは、ユーザーおよびそれらの権限を変更しても自動的に SQL ノード間に反映されません。 必要に応じて、NDB Cluster SQL ノード間での MySQL ユーザーおよび特権の自動配布を有効にできます。詳細は、セクション23.5.12「NDB_STORED_USER での分散 MySQL 権限」 を参照してください。

逆に、MySQL には権限を拒否する方法がないため (権限は最初の場所で取り消すことも付与しないこともできますが、拒否することもできません)、ある SQL ノード上の NDB テーブルに対する特別な保護はありません (これは、ユーザー権限の自動配布を使用していない場合でも当てはまります)。 これを示す明確な例として、任意のデータベースオブジェクトに対して任意のアクションを実行できる MySQL の root アカウントが挙げられます。 このアカウントを config.ini ファイルの空の [mysqld] または [api] セクションと組み合わせると、著しく危険になる可能性があります。 その理由を理解するために、次のようなシナリオを検討します。

これらの条件が true の場合、だれでも --ndbcluster --ndb-connectstring=management_host を使用して MySQL Server を起動し、この NDB Cluster にアクセスできます。 MySQL root アカウントを使用すると、このユーザーは次のアクションを実行できます。

つまり、ローカルネットワークの外部から直接アクセスできる場合は、安全な NDB Cluster を持つことはできません。

重要

MySQL の root アカウントのパスワードは空のままにしないでください。 これは、NDB Cluster SQL ノードとして MySQL を実行している場合と同様に、スタンドアロン (非クラスタ) MySQL Server として実行している場合にも当てはまり、NDB Cluster で MySQL Server を SQL ノードとして構成する前に、MySQL インストールプロセスの一部として実行するようにしてください。

NDB Cluster 分散特権機能を採用する場合は、NDB ストレージエンジンを手動で使用するように mysql データベース内のシステムテーブルを変換するだけではありません。 代わりに、この目的のために提供されているストアドプロシージャーを使用してください。セクション23.5.12「NDB_STORED_USER での分散 MySQL 権限」を参照してください。

それ以外の場合、SQL ノード間で mysql システムテーブルを同期する必要がある場合は、標準の MySQL レプリケーションを使用してこれを実行することも、スクリプトを使用して MySQL サーバー間でテーブルエントリをコピーすることもできます。

サマリー.  NDB Cluster に関する MySQL 特権システムについて覚えておくべきもっとも重要な点を次に示します:

  1. ある SQL ノード上で確立されたユーザーおよび権限は、クラスタ内のその他の SQL ノードで自動的に存在することも、有効になることもありません。 逆に、クラスタ内のある SQL ノード上のユーザーまたは権限を削除しても、その他の SQL ノードからユーザーまたは権限は削除されません。

  2. NDB Cluster 配布でこの目的のために提供されている SQL スクリプトとそれに含まれているストアドプロシージャーを使用して、MySQL ユーザーおよび権限を SQL ノード間で配布できます。

  3. NDB Cluster 内のある SQL ノードから NDB テーブルに対する権限が MySQL ユーザーに付与されると、そのユーザーは、権限配布を使用していない場合でも、データの元となった SQL ノードに関係なく、そのテーブル内の任意のデータを「参照」できます。