IBM DB2の概要

仕事のために、しばらくの間、IBM DB2 DBMSに対処する必要がありました。 なぜなら システムは商用であり、ロシア語ではインターネット上にあまり情報がないため、このDBMSのいくつかの機能を説明することにしました。



エントリーポイント



DBMSのエントリポイントから始めましょう。 SQL SERVERでは、エンドポイントはインスタンスであり、その中にはもちろん個別のデータベースが存在する場合がありますが、構成とセキュリティモデルはインスタンス全体で同じです。 DB2では、エントリポイントは次のようになります-インスタンス(特定のポートに対応)-データベース。 この場合、構成はインスタンス全体用であり、個別のデータベース用です。

インスタンスの構成は、db2コマンドを使用して表示できます。

get database manager configuration

Database Manager Configuration

Node type = Enterprise Server Edition with local and remote clients

Database manager configuration release level = 0x0b00

CPU speed (millisec/instruction) (CPUSPEED) = 2.912790e-07
Communications bandwidth (MB/sec) (COMM_BANDWIDTH) = 1.000000e+02

Max number of concurrently active databases (NUMDB) = 8
Federated Database System Support (FEDERATED) = YES
Transaction processor monitor name (TP_MON_NAME) =

Default charge-back account (DFT_ACCOUNT_STR) =

Java Development Kit installation path (JDK_PATH) = /home/db2inst1/sqllib/java/jdk32

Diagnostic error capture level (DIAGLEVEL) = 3
Notify Level (NOTIFYLEVEL) = 3
Diagnostic data directory path (DIAGPATH) = /home/db2inst1/sqllib/db2dump

Default database monitor switches
Buffer pool (DFT_MON_BUFPOOL) = OFF


パラメータが示される場所、その意味と解釈。 短縮版も可能です:

get dbm cfg

またはクエリを使用して:

select name, value from sysibmadm.dbmcfg

重要なパラメータは次のとおりです。

特定のデータベースの設定を次のように表示できます。

connect to sample (sample - )

get database manager configuration


または、以前とほぼ同じリクエスト:

select name, value from sysibmadm.dbcfg

認証



DB2と他のDBMSの大きな違いは、認証モデルです。 SQL ServerやMySQLのような内部ユーザーはいません。 すべての認証は、DBMSの外部(プラグインによって動的にロードされる)-オペレーティングシステムまたは外部プラグイン(Kerberos、GSS API)によって実行されます。 認証タイプは、データベースマネージャー構成のAUTHENTICATIONパラメーターで設定されます。 デフォルト値はSERVERです。ユーザー名とパスワードはクリアテキストで送信され、このペアはオペレーティングシステムを使用して正しいかどうかがチェックされます。 ユーザー名とパスワードが正しい場合、そのユーザーまたはグループに属するユーザー(許可されたすべてのユーザーを含む特別なPUBLICグループを含む)は、CONNECT特権を持ちます。 これらの特権は、 SYSCAT.DBAUTHテーブルで表示できます。

select GRANTEE from SYSCAT.DBAUTH where CONNECTAUTH = 'Y'

設定時の大きな間違いは、CLIENT認証タイプを有効にすることです。 この場合、DB2は接続されたクライアントに認証を委任し、PUBLICにCONNECT特権がある場合、すべてのユーザーがデータベースに接続し、PUBLICが持つすべてのデータにアクセスできます。 ユーザー名は、オペレーティングシステムから取得されます。 つまり、管理者ユーザーとしてData Studioを介して接続すると、このユーザーが持つすべての特権が付与されます。 また、この場合、どのコンピューターからアクセスされた場合でも違いはありません。 このタイプの認証は、サーバーとクライアントの間に安全なチャネルがあり、他のクライアントがDBMSに接続できない場合にのみ有効にすることをお勧めします。

ログイン



インスタンスレベルの権限は、データベースマネージャーの構成で指定されます。 これらは次の特権です。

これらの特権は、ユーザーがメンバーになるグループを指定することにより設定されます。 dbmcfgでは、これらはそれぞれSYSADM_GROUPSYSCTRL_GROUPSYSMAINT_GROUP、およびSYSMON_GROUPパラメーターです

さらに、特定のデータベースの特権があります。 これらの特権には、データベースへのアクセス(CONNECTAUTH)、テーブルの作成(CREATETABAUTH)、ルーチンの作成(EXTERNALROUTINEAUTH)などが含まれます。 これらの特権は、 SYSCAT.DBAUTHビューで表示できます

最後に、特定のデータ(テーブル、ルーチンなど)にアクセスする特権。 ここのすべては非常に簡単ですが、いくつかの機能もあります。

テーブルのアクセス権限は、 SYSCAT.TABAUTHビューで表示できます。 付与される特権のタイプは、特権自体(SELECTAUTH、DELETEAUTHなど)に応じて、個別の列に格納されます。 REFERENCESおよびUPDATE特権に対してGRANTコマンドを使用して特権を付与する場合、これらの特権が適用される列の名前も指定できます。 この場合、これに関する情報はSYSCAT.COLAUTHビューで表示できます。

ルーチン(関数、プロシージャー、およびメソッド)の特権はSYSCAT.ROUTINEAUTHにあります。 SPECIFICNAMEフィールドとTYPENAMEフィールドに応じて、すべてが簡単なわけではありませんが、特定のスキームのすべてのルーチンに特権を付与できます。

読者がこの記事を気に入ったら、ラベルベースのアクセス制御を使用したDB2でのデータ保護について説明します

Source: https://habr.com/ru/post/J128932/


All Articles