仕事のために、しばらくの間、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
重要なパラメータは次のとおりです。
- 認証タイプ(認証)
- 新しいデータベースを作成するためのデフォルトパス(DFTDBPATH)
- サーバーのネットワーク検出(DISCOVER)
特定のデータベースの設定を次のように表示できます。
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に接続できない場合にのみ有効にすることをお勧めします。
ログイン
インスタンスレベルの権限は、データベースマネージャーの構成で指定されます。 これらは次の特権です。
- SYSADM
- SYSCTRL
- SYSMAINT
- シスモン
これらの特権は、ユーザーがメンバーになるグループを指定することにより設定されます。 dbmcfgでは、これらはそれぞれ
SYSADM_GROUP 、
SYSCTRL_GROUP 、
SYSMAINT_GROUP、および
SYSMON_GROUPパラメーター
です 。
さらに、特定のデータベースの特権があります。 これらの特権には、データベースへのアクセス(CONNECTAUTH)、テーブルの作成(CREATETABAUTH)、ルーチンの作成(EXTERNALROUTINEAUTH)などが含まれます。 これらの特権は、
SYSCAT.DBAUTHビューで表示できます
。最後に、特定のデータ(テーブル、ルーチンなど)にアクセスする特権。 ここのすべては非常に簡単ですが、いくつかの機能もあります。
テーブルのアクセス権限は、
SYSCAT.TABAUTHビューで表示できます。 付与される特権のタイプは、特権自体(SELECTAUTH、DELETEAUTHなど)に応じて、個別の列に格納されます。 REFERENCESおよびUPDATE特権に対してGRANTコマンドを使用して特権を付与する場合、これらの特権が適用される列の名前も指定できます。 この場合、これに関する情報は
SYSCAT.COLAUTHビューで表示できます。ルーチン(関数、プロシージャー、およびメソッド)の特権は
SYSCAT.ROUTINEAUTHにあります。 SPECIFICNAMEフィールドとTYPENAMEフィールドに応じて、すべてが簡単なわけではありませんが、特定のスキームのすべてのルーチンに特権を付与できます。
読者がこの記事を気に入ったら、ラベルベースのアクセス制御を使用したDB2でのデータ保護について説明します