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でのデータ保護について説明します



All Articles