Db2-database-security
DB2-データベースセキュリティ
この章では、データベースのセキュリティについて説明します。
前書き
DB2データベースと機能は、セキュリティ制御の2つの異なるモードで管理できます。
- 認証
- 承認
認証
認証とは、ユーザーが実行を許可されているアクティビティを実行する権限に従ってのみログインすることを確認するプロセスです。 ユーザー認証は、オペレーティングシステムレベルまたはデータベースレベル自体で実行できます。 網膜や図柄などの生体認証用の認証ツールを使用することにより、ハッカーや悪意のあるユーザーからデータベースを保護します。
データベースセキュリティは、db2データベースシステムの外部から管理できます。 セキュリティ認証プロセスのタイプは次のとおりです。
- オペレーティングシステム認証に基づきます。
- ライトウェイトディレクトリアクセスプロトコル(LDAP)
DB2の場合、セキュリティサービスは別個の製品としてオペレーティングシステムの一部です。 認証の場合、ユーザーIDまたはユーザー名、およびパスワードの2つの異なる資格情報が必要です。
承認
DB2データベースマネージャーによって管理されているDB2データベースシステム内のDB2データベースとその機能にアクセスできます。 許可は、DB2データベースマネージャーによって管理されるプロセスです。 マネージャは、現在認証されているユーザーに関する情報を取得します。これは、ユーザーが実行またはアクセスできるデータベース操作を示します。
許可に使用できる許可のさまざまな方法を次に示します。
プライマリ許可:認証IDを直接付与します。
二次許可:ユーザーがメンバーである場合、グループとロールに付与します
パブリック許可:すべてのユーザーにパブリックに許可します。
コンテキスト依存許可:信頼できるコンテキストロールに付与します。
以下のカテゴリーに基づいて、ユーザーに許可を与えることができます。
- システムレベルの認証
- システム管理者[SYSADM]
- システム制御[SYSCTRL]
- システムメンテナンス[SYSMAINT]
- システムモニター[SYSMON]
権限は、インスタンスレベルの機能を制御します。 権限は、グループの特権を提供し、メンテナンスと権限の操作を制御します。 たとえば、データベースとデータベースオブジェクト。
- データベースレベルの承認
- セキュリティ管理者[SECADM]
- データベース管理者[DBADM]
- アクセス制御[ACCESSCTRL]
- データアクセス[DATAACCESS]
- SQL管理者。 [SQLADM]
- ワークロード管理管理者[WLMADM]
- 説明する[EXPLAIN]
当局は、データベース内でコントロールを提供します。 データベースの他の権限には、LDADおよびCONNECTが含まれます。
- オブジェクトレベルの承認:オブジェクトレベルの承認では、オブジェクトに対して操作が実行されたときに特権を確認します。
- コンテンツベースの認証:ユーザーは、ラベルベースのアクセス制御[LBAC]を使用して、特定のテーブルの個々の行および列に読み取りおよび書き込みアクセスできます。
DB2テーブルと構成ファイルは、許可名に関連付けられた許可を記録するために使用されます。 ユーザーがデータにアクセスしようとすると、記録された権限により次の権限が検証されます。
- ユーザーの許可名
- ユーザーに属するグループ
- ユーザーに直接付与されるロールまたはグループに間接的に付与されるロール
- 信頼されたコンテキストを通じて取得されたアクセス許可。
SQLステートメントの操作中、DB2許可モデルは以下の許可の組み合わせを考慮します。
- SQLステートメントに関連付けられた1次許可IDに付与された許可。
- SQLステートメントに関連付けられた2次許可ID。
- PUBLICに付与
- トラステッドコンテキストロールに付与されます。
インスタンスレベルの権限
インスタンス関連の権限について説明します。
システム管理権限(SYSADM)
インスタンスレベルでの最高レベルの管理権限です。 SYSADM権限を持つユーザーは、インスタンス内でいくつかのデータベースおよびデータベースマネージャーコマンドを実行できます。 SYSADM権限を持つユーザーは、次の操作を実行できます。
- データベースをアップグレードする
- データベースを復元する
- データベースマネージャーの構成ファイルを更新します。
システム制御権限(SYSCTRL)
これは、システム制御権限の最高レベルです。 データベースマネージャインスタンスおよびそのデータベースに対してメンテナンスおよびユーティリティ操作を実行するために提供されます。 これらの操作はシステムリソースに影響を与える可能性がありますが、データベース内のデータに直接アクセスすることはできません。
SYSCTRL権限を持つユーザーは、次のアクションを実行できます。
- データベース、ノード、または分散接続サービス(DCS)ディレクトリの更新
- ユーザーをシステムレベルから強制的に外す
- データベースレベルの作成または削除
- 表スペースの作成、変更、またはドロップ
- 任意の表スペースを使用する
- データベースの復元
システム保守権限(SYSMAINT)
これは、システム制御権限の第2レベルです。 データベースマネージャインスタンスおよびそのデータベースに対してメンテナンスおよびユーティリティ操作を実行するために提供されます。 これらの操作は、データベース内のデータへの直接アクセスを許可せずにシステムリソースに影響します。 この権限は、ユーザーが機密データを含むデータベースマネージャーインスタンス内でデータベースを維持するために設計されています。
SYSMAINT以上のレベルのシステム権限を持つユーザーのみが、次のタスクを実行できます。
- バックアップを取る
- バックアップの復元
- ロールフォワードリカバリ
- インスタンスの開始または停止
- 表領域の復元
- db2trcコマンドの実行
- インスタンスレベルのユーザーまたはデータベースレベルのユーザーの場合、システムモニターのスナップショットを取得します。
SYSMAINTを持つユーザーは、次のタスクを実行できます。
- テーブルスペースの状態を問い合わせる
- ログ履歴ファイルの更新
- テーブルの再編成
- RUNSTATS(コレクションカタログ統計)の使用
システム監視権限(SYSMON)
この権限を使用すると、ユーザーはデータベースマネージャーインスタンスまたはそのデータベースのスナップショットを監視または取得できます。 SYSMON権限により、ユーザーは次のタスクを実行できます。
- データベースマネージャーモニタースイッチを取得する
- モニタースイッチを入手する
- スナップショットを取得する
- LIST
- アクティブなデータベースのリスト
- リストアプリケーション
- データベースパーティショングループのリスト
- DCSアプリケーションのリスト
- リストパッケージ
- リスト表
- リストテーブルコンテナ
- リスト表領域
- リストの利益
- モニターのリセット
- モニタースイッチの更新
データベース権限
各データベース機関は、データベースで何らかのアクションを実行するための許可IDを保持しています。 これらのデータベース権限は、特権とは異なります。 以下は、いくつかのデータベース機関のリストです。
*ACCESSCTRL* :すべてのオブジェクト特権とデータベース権限を付与および取り消すことができます。
*BINDADD* :データベースに新しいパッケージを作成できます。
*CONNECT* :データベースへの接続を許可します。
*CREATETAB* :データベースに新しいテーブルを作成できます。
*CREATE_EXTERNAL_ROUTINE* :アプリケーションおよびデータベースのユーザーが使用するプロシージャを作成できます。
*DATAACCESS* :データベーステーブルに保存されているデータにアクセスできます。
*DBADM* :データベース管理者として機能します。 ACCESSCTRL、DATAACCESS、およびSECADMを除く他のすべてのデータベース権限を付与します。
*EXPLAIN* :テーブル内のデータにアクセスする特権を保持することなく、クエリプランを説明できます。
*IMPLICIT_SCHEMA* :ユーザーは、CREATEステートメントを使用してオブジェクトを作成することにより、暗黙的にスキーマを作成できます。
*LOAD* :データをテーブルにロードできます。
*QUIESCE_CONNECT* :静止中のデータベースへのアクセスを許可します(一時的に無効)。
*SECADM* :データベースのセキュリティ管理者として機能できます。
*SQLADM* :SQLステートメントを監視および調整できます。
*WLMADM* :ワークロード管理者として機能することができます
特権
SETSESSIONUSER
許可ID特権には、許可IDに対するアクションが含まれます。 SETSESSIONUSER特権と呼ばれる特権は1つだけです。 これは、ユーザーまたはグループに付与でき、セッションユーザーがIDを特権が付与された任意の許可IDに切り替えることができます。 この特権は、ユーザーSECADM権限によって付与されます。
スキーマ特権
この権限には、データベース内のスキーマに対するアクションが含まれます。 スキーマの所有者には、テーブル、ビュー、インデックス、パッケージ、データ型、関数、トリガー、プロシージャ、エイリアスなどのスキーマオブジェクトを操作するためのすべての権限があります。 ユーザー、グループ、ロール、またはPUBLICには、次の特権を持つ任意のユーザーを付与できます。
- CREATEIN :スキーマ内にオブジェクトを作成できます
- ALTERIN :スキーマ内のオブジェクトを変更できます。
ドロピン
これにより、スキーマ内のオブジェクトを削除できます。
表領域の権限
これらの権限には、データベース内の表領域に対するアクションが含まれます。 ユーザーには、表領域のUSE特権を付与できます。 その後、特権により、テーブルスペース内にテーブルを作成できます。 特権所有者は、表領域の作成時に、表領域に対してWITH GRANT OPTIONコマンドを使用してUSE特権を付与できます。 また、SECADMまたはACCESSCTRL権限には、表スペースに対する特権を使用する権限があります。
テーブルとビューの特権
ユーザーは、テーブルおよびビューの特権を使用できるようにするには、データベースに対するCONNECT権限が必要です。 テーブルとビューの特権は次のとおりです。
コントロール
これは、ドロップおよび付与を含む、テーブルまたはビューのすべての特権を提供し、個々のテーブル特権をユーザーに取り消します。
ALTER
ユーザーはテーブルを変更できます。
DELETE
ユーザーは、テーブルまたはビューから行を削除できます。
インデックス
ユーザーは表またはビューに行を挿入できます。 インポートユーティリティも実行できます。
参考文献
これにより、ユーザーは外部キーを作成および削除できます。
SELECT
ユーザーは、テーブルまたはビューから行を取得できます。
更新
ユーザーは、テーブル、ビューのエントリを変更できます。
パッケージ特権
ユーザーには、データベースに対するCONNECT権限が必要です。 パッケージは、特定のアプリケーションにとって最も効率的な方法でデータにアクセスするためのデータベースマネージャーの情報を含むデータベースオブジェクトです。
コントロール
ユーザーにパッケージの再バインド、ドロップ、実行の権限を提供します。 この特権を持つユーザーには、BINDおよびEXECUTE特権が付与されます。
BIND
ユーザーはそのパッケージをバインドまたは再バインドできます。
実行
パッケージを実行できます。
インデックス特権
この特権は、インデックスに対するCONTROL特権を自動的に受け取ります。
シーケンス特権
シーケンスは、シーケンスに対するUSAGEおよびALTER特権を自動的に受け取ります。
日常的な特権
データベース内の関数、プロシージャ、メソッドなどのルーチンのアクションが含まれます。