Mycatのセキュリティ設定

権利プロファイル

1.ユーザーラベルのアクセス許可の制御

現在、Mycatはミドルウェアの接続制御をそれほど複雑に制御しておらず、現在、ミドルウェアロジックライブラリレベルでの読み取りおよび書き込み権限のみを制御しています。これは、server.xmlのユーザータグを介して構成されます。
//server.xmlファイルのユーザー部分でユーザーパスワードおよびその他の情報を構成します

ここに画像の説明を挿入します
2.特権ラベルのアクセス制御

ユーザーラベルの下の特権ラベルは、ロジックライブラリ(スキーマ)とテーブル(テーブル)に対して洗練されたDMLアクセス許可制御を実行できます。

特権ラベルの下のcheck属性は、trueの場合、権限チェックを有効にし、falseは有効にせず、デフォルトはfalseです。Mycatのユーザーのスキーマ属性は複数のロジックライブラリ(スキーマ)で構成できるため、特権の下位ノードスキーマノードも複数で構成でき、複数のデータベースと複数のテーブルに対してきめ細かいDMLアクセス許可制御が実行されます。

// t1テーブルのすべての権限は禁止されています

 <user name="mycat" defaultAccount="true">   //针对mycat用户
                <property name="password">123456</property>
                <property name="schemas">TESTDB</property>
                <property name="defaultSchema">TESTDB</property>
                <!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->

                <!-- 表级 DML 权限设置 -->

                <privileges check="true">
                        <schema name="TESTDB" dml="1111" >  //TESTDB逻辑库所有权限
                                <table name="t1" dml="0000"></table>  //t1表没有任何权限
                        </schema>
                </privileges>

        </user>

!mycatを再起動します
// mycatテストにログインします

mysql -umycat -p123456 -P 8066 -h192.168.1.61

mysql> use TESTDB;

mysql> select * from t1;
ERROR 3012 (HY000): The statement DML privilege check is not passed, reject for user 'mycat'
//没有权限查看t1表

構成手順

DML権限 増やす(挿入) 更新 表示(選択) 削除
0000 禁止する 禁止する 禁止する 禁止する
0010 禁止する 禁止する できる 禁止する
1110 できる できる できる 禁止する
1111 できる できる できる できる

SQLインターセプト

ファイアウォールラベルはファイアウォールを定義するために使用され、ファイアウォールの下のホワイトホストラベルはIPホワイトリストを定義するために使用され、ブラックリストはSQLブラックリストを定義するために使用されます。

1.ホワイトリスト

ホワイトリストを設定して、特定のホストのユーザーがMycatにアクセスできる一方で、他のホストのユーザーはMycatにアクセスできないようにすることができます。

<firewall>
           <whitehost>
              <host host="192.168.1.67" user="mycat"/>   //mycat用户只允许在1.67主机上登录
           </whitehost>

mycatを再起動します

2.ブラックリストブラックリストを
設定することにより、Mycatは、操作の追加、削除、変更、チェックなど、特定のSQL操作をブロックできます。

<firewall>
           <whitehost>
              <host host="192.168.1.67" user="mycat"/>
           </whitehost>
       <blacklist check="true">
        <property name="deleteAllow">false</property> //不可以使用delete语句
       </blacklist>
        </firewall>

設定可能なブラックリストSQLブロッキング関数のリスト

構成項目 デフォルト値 説明
selelctAllow true SELECTステートメントの実行を許可するかどうか
deleteAllow true DELETEステートメントの実行を許可するかどうか
updateAllow true UPDATEステートメントの実行を許可するかどうか
insertAllow true INSERTステートメントの実行を許可するかどうか
createTableAllow true テーブルの作成を許可するかどうか
setAllow true SET構文の使用を許可するかどうか
alterTableAllow true ALTERTableステートメントの実行を許可するかどうか
dropTableAllow true テーブルの変更を許可するかどうか
commitAllow true コミット操作を許可するかどうか
rollbackAllow true ロールバック操作を許可するかどうか

trueは許可し、falseは拒否します

おすすめ

転載: blog.csdn.net/weixin_45310323/article/details/114448123