10bet网址
MySQL 5.6リファレンスマニュアル
下载本手册
PDF(美国高级主任)- 26.8 mb
PDF (A4)- 26.8 mb


6.3.9プロキシユザ

認証プラグインを使用したMySQLサーバーへの認証が発生すると,接続中の(外部)ユーザーを権限チェックのために別のユーザーとして処理するようにプラグインから要求されることがあります。これにより,外部ユ,ザ,を2番目のユ,ザ,のプロキシにすることができます。2番目のユザの権限を持ことができます。言い換えると,外部ユ,ザ,はプロキシユザ(偽装できるユーザーまたは別のユーザーと呼ばれるようになるユーザー)であり,2番目のユーザーはプロキシ対象ユザ(プロキシユザが実行できるアデンティティを持ユザ)です。

このセクションでは,プロキシユザ機能の動作にいて説明します。認証プラグ化学键ンに関する一般的な情報に化学键いては,セクション6.3.7“プラガブル認証”を参照してください。プロキシユザがサポートされている独自の認証プラグインを作成することに関心がある場合は、セクション24.2.4.9.4 "認証プラグ”を参照してください。

プロキシ処理を発生させるには,次の条件を満たす必要があります。

  • 接続中のクライアントがプロキシユーザーとして処理されるときに,プラグインはプロキシ対象ユーザーの名前を示すために,別の名前を返す必要があります。

  • プロキシユザのアカウントがプラグンで認証されるように設定する必要があります。创建用户または格兰特ステトメントを使用して,アカウントをプラグンに関連付けます。

  • プロキシユ,ザ,のアカウントは,プロキシ対象アカウントの代理権限を持必要があります。これを行うには,格兰特ステ,トメントを使用します。

次のような定義にいて検討します。

CREATE USER 'empl_external'@'localhost' IDENTIFIED WITH auth_plugin AS 'auth_string';CREATE USER 'employee'@'localhost'授权代理'employee'@'localhost'到'empl_external'@'localhost';

クラ▪▪アントがロ▪▪カルホストからempl_externalとして接続すると,MySQLはauth_pluginを使用して認証を実行します。auth_pluginが(“auth_string”の内容に基づいて,おそらく一部の外部認証システムを参照することで)サ,バ,に员工というユ,ザ,名を返す場合は,このクラ,员工ロカルユザとして処理するように求めるサバへのリクエストとして機能します。

この場合,empl_externalはプロキシユザ,员工はプロキシ対象ユ,ザ,です。

サ,バ,はempl_external员工に対する代理権限を持っているかどうかをチェックすることで,empl_externalユ,ザ,に対して员工のプロキシ認証を実行できることを確認します。(この権限が付与されていない場合は,エラーが発生します)。

プロキシ処理が発生したときに,用户()およびCURRENT_USER ()関数を使用すると,接続中のユーザーと現在のセッション中に権限が適用されるアカウントとの相違点を確認できます。先ほど説明した例では,これらの関数は次の値を返します。

mysql> SELECT USER(), CURRENT_USER();+-------------------------+--------------------+ | 用户()| CURRENT_USER () | +-------------------------+--------------------+ | empl_external@localhost | employee@localhost  | +-------------------------+--------------------+

認証プラグ@ @ンの名前を指定する认同句のあとに,ユザの接続時にサバがプラグンに渡す文字列を指定する作为句が続く場合があります。作为句が必要であるかどうかは,各プラグ。必要な場合,認証文字列の形式は,プラグesc escンを使用する目的によって異なります。許可される認証文字列の値にいては,特定のプラグンに関するドキュメントを参照してください。

プロキシ権限の付与

外部ユ,ザ,が別のユ,ザ,として接続し,その権限を持,ことができるようにするには,特別な代理権限が必要です。この権限を付与するには,格兰特ステ,トメントを使用します。例:

授权代理'proxied_userproxy_user”;

proxy_userは,接続時に外部で認証された有効なMySQLユ,ザ,を表している必要があります。そうでない場合は,接続の試行に失敗します。proxied_userは,接続時にロ,カルで認証された有効なユ,ザ,を表している必要があります。そうでない場合は,接続の試行に失敗します。

対応する撤销構文は次のとおりです。

撤销代理'proxied_user“来自”proxy_user”;

MySQL格兰特および撤销構文の拡張機能は,通常どおりに動作します。例:

授权代理'a'到'b', 'c', 'd';授权代理'a'到'd',由…授权代理'a'到'd'与授权选项;授权代理'a'到" @ ";撤销代理'a'从'b', 'c', 'd';

前述の例では,“@”はデフォルトのプロキシユ,ザ,であり,任意のユザを意味します。デフォルトのプロキシユ、ザ、に、いては、このセクションの後半で説明します。

次のような場合に,代理権限を付与できます。

  • 自分でproxied_userによる:アカウント名のユ,ザ,名とホスト名の両方の部分で,用户()の値がCURRENT_USER ()およびproxied_userと完全に一致する必要があります。

  • proxied_userに対する授权代理…有授权选项を持ユザによる。

MySQLのaapl . exeンストアカウントは,“@”(まり,)代理…有授权选项権限を持っています。これにより,はプロキシユーザーを設定したり,プロキシユーザーを設定するための権限をほかのアカウントに委任したりできます。たとえば,は次の操作を実行できます。

创建用户“admin”@“localhost”授权代理上“@”到“管理员”@“本地主机”与授权选项;

この時点で,管理ユ,ザ,は特定のすべての授权代理マッピングを管理できます。たとえば,管理は次の操作を実行できます。

授权代理莎莉给乔;

デフォルトのプロキシユザ

一部またはすべてのユ,ザ,が特定の外部プラグ,空白のMySQLユーザーを作成し,そのプラグインを使用して認証するように設定し,(空白のユーザーとは異なる場合に)プラグインが認証された実際のユーザー名を返すことができるようにします。たとえば,ldap認証を実装するa ldap_authという名前の仮のプラグ@ @ンが存在すると仮定します。

创建id为“O=Oracle, OU=MySQL”的用户;CREATE USER 'developer'@'localhost'CREATE USER 'manager'@'localhost'GRANT PROXY ON 'manager'@'localhost' TO " @ ";GRANT PROXY ON 'developer'@'localhost' TO " @ ";

ここで,クラ。

Mysql——user=myuser——password='myuser_pass'…

サバでは,MySQLユザとして定義されたmyuserが見かりません。ただし,クラアントのユザ名およびホスト名と一致する空白のユザアカウント(“@”)があるため、サ、バ、はそのアカウントと照合してクラ、アントを認証します。サ,バ,はa ldap_authを呼び出して,それをユ,ザ,名とパスワ,ドとしてmyuserおよびmyuser_passに渡します。

a ldap_authプラグ电子邮箱ンによって,myuser_passmyuserの正しいパスワードでないことがLDAPディレクトリで検出された場合は,認証に失敗し,サーバーは接続を拒否します。

パスワ,ドが正しく,a ldap_authによってmyuserが開発者であることが検出された場合は,MySQLサ,バ,にmyuserではなく,开发人员というユ,ザ,名が返されます。サ,バ,は,(実行するための代理権限を持っているため)“@”开发人员として認証できることを確認し,接続を受け入れます。セッションは,开发人员の権限を持っているmyuserで続行されます。(これらの権限は,dbaが格兰特ステ,トメントを使用して設定するべきですが,表示されません。)用户()およびCURRENT_USER ()関数は,次の値を返します。

mysql> SELECT USER(), CURRENT_USER();+------------------+---------------------+ | 用户()| CURRENT_USER () | +------------------+---------------------+ | myuser@localhost | developer@localhost  | +------------------+---------------------+

代わりに,プラグmyuserがマネジャであることがldapディレクトリで検出された場合は,ユザ名として经理が返され,セッションは经理の権限を持myuserで続行されます。

mysql> SELECT USER(), CURRENT_USER();+------------------+-------------------+ | 用户()| CURRENT_USER () | +------------------+-------------------+ | myuser@localhost | manager@localhost  | +------------------+-------------------+

単純にするために,外部認証はマルチレベルで実行できません。前述の例では,开发人员の証明書も,经理の証明書も考慮されません。ただし,クラ开发人员または经理アカウントと照合して直接認証を試みる場合は,引き続き使用されます(そのため,これらのアカウントにはパスワードを割り当てられるはずです)。

デフォルトのプロキシアカウントは,任意のホストと一致するをホスト部分で使用します。デフォルトのプロキシユ,ザ,を設定する場合は,ホスト部分で“%”を含むアカウントもチェックするように注意してください。その理由は,これらのアカウントは任意のホストにも一致しますが,サーバー内部でアカウント行をソートする際に使用されるルールによって,よりも優先されるためです(セクション6.2.4“アクセス制御,ステ,ジ1:接続の検証”を参照してください)。

MySQLのesc esc esc esc esc esc esc esc esc esc esc esc esc esc esc esc esc esc esc esc esc esc esc esc esc esc esc

创建用户“@”创建用户" @'%' IDENTIFIED BY 'some_password';

1番目のアカウントの目的は,それ以外の場合は,より具体的なアカウントと一致しないユーザーの接続を認証する際に使用されるデフォルトのプロキシユーザーとして機能することです。2番目のアカウントは,たとえば,匿名ユーザーとして独自のアカウントを持っていないユーザーを有効にするために,作成されることがあります。

ただし,この構成では,一致のル,ルによって“@”よりも先に“@‘%’がソ,トされるため,1番目のアカウントは使用されません。より具体的などのアカウントにも一致しないアカウントの場合,サ,バ,は“@”ではなく,“@‘%’と照合して認証を試みます。

デフォルトのプロキシユーザーを作成する場合は,デフォルトのプロキシユーザーよりも優先されるために,そのユーザーが目的どおりに動作することを妨げるその他の既存の任意のユ,ザ,に一致するアカウントがないかどうかチェックします。このようなアカウントをすべて削除する必要がある場合もあります。

プロキシユ,ザ,のシステム変数

次の2。

  • proxy_user:プロキシ処理が使用されていない場合,この値はです。それ以外の場合は,プロキシユ,ザ,のアカウントを示します。たとえば,クライアントがデフォルトのプロキシアカウントを使用して認証する場合、この変数は次のように設定されます。

    mysql> SELECT @@proxy_user+--------------+ | @@ proxy_user  | +--------------+ | ''@'' | +--------------+
  • external_user:認証プラグンは外部ユザを使用して,MySQLサバへの認証を行うことがあります。たとえば,Windows のネイティブ認証を使用するときは、Windows の API を使用して認証するプラグインに、ログイン ID を渡す必要がありません。ただし、認証には引き続き Windows ユーザー ID が使用されます。このプラグインは、読み取り専用のセッション変数external_userを使用して,この外部ユーザーID(または最初の512 utf - 8バイト)をサーバーに返すことがあります。プラグesc escンがこの変数を設定しない場合,その値はです。