序文 MySQL の権限を簡単に理解すると、MySQL では自分の能力の範囲内で操作が許可され、その限度を超えることはできないということです。 権限制御は MLSQL のライフラインと同じくらい重要です。 MLSQL は、MySQL、Oracle、HDFS、Hive、Kafka、Sorl、ElasticSearch、Redis、API、Web などのさまざまなリソースにアクセスする必要があります。ユーザーごとに、これらのデータ ソース (およびテーブルと列) に対する権限が異なります。 従来のモデルでは、各ユーザーにプロキシ ユーザーが必要であり、各データ ソースでこのプロキシ ユーザーを承認する必要があります。 これは面倒に思えるかもしれませんが、実際には基本的に実装が困難です。さまざまなデータ ソースがさまざまなチームにあるため、アプリケーション プロセス全体に数日、場合によっては数週間かかることがあります。 誰もが感じるかもしれないもう一つの点があります。 非常に苦労してスクリプトを作成し、1 時間実行したところ、突然失敗しました。350 行目でアクセスしたデータ ソースに十分な権限がないことが判明しました。 これは本当に迷惑です。 ここで問題が起こります では、スクリプトを実行する前に、スクリプトに関係するすべてのリソースが承認されているかどうかをどのように確認できるでしょうか? 答えは「はい」です 話題外ですが、 MLSQL は本質的にはコンパイルを必要としない解釈実行言語であるため、タイトルは厳密ではありません。より適切なタイトルは [解析中の権限制御] です。 MLSQL で権限検証が有効になっている場合、最初にスクリプト全体をスキャンし、さまざまなデータ ソースに関する詳細情報を含む必要な情報を抽出します。これにより、実行前に許可されていないライブラリやテーブルにアクセスしたかどうかを確認できます。では、MLSQL はどのようにそれを実現するのでしょうか?次の情報を見てみましょう。 JDBCを接続する場所 ドライバー="com.mysql.jdbc.Driver" および url="jdbc:mysql://${ip}:${host}/db1?${MYSQL_URL_PARAMS}" および user="${user}" パスワード="${password}" db1_ref として; jdbc.`db1_ref.people` をロードします 人として; 追加した人を jdbc.`db1_ref.spam` として保存します。 MLSQL では、すべてのデータ ソースをロード ステートメントを使用してロードする必要があるためです。ロード ステートメントを解析すると、MLSQL はユーザーが現在 JDBC プロトコルに基づいてデータ ソースにアクセスしていることを認識し、URL を通じてこの情報を取得します。
もちろん、このスクリプトのユーザーはスパム テーブルも作成し、情報も抽出されます。
次に、一時テーブル people があるため、このスクリプトには合計 3 つの情報テーブルがあり、これらは AuthCenter に送信されて判断されます。AuthCenter は、現在のユーザーに対してどのテーブルが承認されていないかを MLSQL に伝えます。承認されていないテーブルが見つかった場合、MLSQL は直接例外をスローします。プロセス全体を通して、物理的なプランはまったく実行されず、スクリプトからの情報抽出のみが行われます。 MLSQL では、SELECT ステートメントで Hive テーブルにアクセスすることはできません。Hive テーブルは、LOAD ステートメントを通じてのみロードできます。たとえば、次のステートメントはエラーを報告します。 public.abc から * を table1 として選択します。 select ステートメントでは public.abc ライブラリにアクセスできません。これを使用する必要がある場合は、次のように実行できます。 hive.`public.abc` を abc としてロードします。 abc から * を table1 として選択します。 列レベルの制御を実装する方法 MLSQL はロード ステートメントを解析するときに、現在のユーザーに、どのテーブルがアクセスされ、どの列が承認されているかを尋ねます。次に、最後のロード ステートメントを書き換えて、ユーザーがアクセスを許可されている列のみを含む新しいビューを提供します。 要約する いくつかの効果的な制限により、MLSQL は構文解析レベルですべてのデータ ソース関連情報を直接抽出し、対応する許可センターに送信して判断し、実行時の承認拒否の問題を回避できます。 MLSQL によるこの動きは非常に重要です。これにより、MLSQL システムは基盤となるシステムの権限制御に完全に依存しなくなり、問題が大幅に簡素化されます。 さて、今回の記事は以上です。この記事の内容が皆さんの勉強や仕事に少しでも参考になれば幸いです。123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Linux 仮想マシンの IP アドレスを変更し、ゲートウェイを確認し、ネットワーク環境を構成する方法に関するチュートリアル
>>: Axios はリクエストをキャンセルし、重複リクエストを回避します
目次序文sudo書き込み権限を追加するgit 2.9.0をインストールopenssl 1.1.1l ...
概要: MySQL JDBC 抽出にはどのような方法を使用すればよいでしょうか? その方法を説明しま...
目次1. クロージャとは何ですか? 2. 閉鎖の役割序文: JavaScript部分ではクロージャが...
Nginx グローバル変数Nginx には、$variable 名を通じて使用できるグローバル変数が...
html4:コードをコピーコードは次のとおりです。 <フォーム> <p>&l...
Nginx は、多くの優れた機能を備えた強力で高性能な Web およびリバース プロキシ サーバーで...
この記事では、ポップアップウィンドウをクリックしたときにポップアップログインボックスを実現するための...
ssh は私が最も頻繁に使用する 2 つのコマンドライン ツールのうちの 1 つです (もう 1 つ...
LinuxリモートMySQLデータベースの展開、参考までに、具体的な内容は次のとおりです。 1.0 ...
サブスクリプションメッセージテンプレートを選択または作成するWeChat アプレットにログインし、「...
この記事では、アンカー配置を実装するためのVueの具体的なコードを例として紹介します。具体的な内容は...
上記:このドキュメントは、3 台の仮想マシンが相互に ping を実行できること、ファイアウォールが...
この記事では、Vue開発ツリー構造コンポーネントの具体的なコードを例として紹介します。具体的な内容は...
この記事では、ショッピングカートを実装するためのJavaScriptの具体的なコードを参考までに紹介...
以前、開発で頻繁に pip ダウンロードを使用する必要がありました。pip ソースを国産ソースに変更...