データベースのグルーミング(4)データベースのセキュリティと整合性

データベースのグルーミング(4)データベースのセキュリティと整合性

セキュリティ

データベースセキュリティの不正使用によるデータ漏洩を防止するためのデータベース、改変または破壊の保護

不安データベース

  • 非認証されたユーザーは、悪意のある破壊---ユーザ認証とアクセス制御ビューのデータベースへのアクセス
  • データベースの重要なデータや機密データが漏洩している---強制アクセス制御、データの暗号化は、暗号化された伝送を格納しています。監査
  • オペレーティングシステムのセキュリティの脆弱性やセキュリティ環境、ネットワークプロトコル、セキュリティ関連

データベースシステムのセキュリティモデル

画像20191030135216713.png

セキュリティ対策は、1つの層のセットです。ユーザ要求は、コンピュータ・システム、第一識別するために、ユーザ入力に基づいてシステムにアクセスするユーザの認証を、唯一の合法的ユーザコンピュータシステムへのアクセスを許可する前に、ユーザは、システム、データベース管理システムに入ったが、他にも、アクセス制御、ユーザのみが実行することを可能にします法的措置:オペレーティングシステムは、独自の保護対策があります。最終的なデータもであってもよく、パスワード形式のデータベースに保存されています。

データベースのセキュリティ技術と関連します

ユーザー認証、アクセス制御多層、監査、ビュー、データの暗号化

ユーザー認証

各ユーザーは、独特のアイデンティティを与えています

静的パスワード認証(パスワード)、認証動的パスワード(ワンタイムパスワードOTPトークンSMS)、等

アクセス制御

データベース--DBMSアクセス制御メカニズムにアクセスするには、資格のあるユーザーへのアクセスを確認します

ユーザー権限の定義

データ辞書(へのユーザー権限を登録するには、データオブジェクトを操作するユーザーの権限の権限

合法的な権限を確認します

ユーザーがデータベースにアクセスするための操作要求を発行した後、DBMSは、セキュリティ権限のチェックルールに従って、データ辞書検索に基づいて、許可が拒否されていません

2つのアクセス制御方法

独立したアクセス制御方法
  • 別のユーザーがデータベース・オブジェクトへの異なるアクセス権を持っているために、同じ主題について異なるユーザが異なる権限を持ち、ユーザーが他のユーザーに委任自分自身にアクセスすることができます。そのため、自律アクセス制御が非常に柔軟です。
  • SQL GRANTおよびREVOKEステートメントは実現しています。
  • ユーザー権限:+データベース・オブジェクト・タイプの操作
  • ユーザーの定義アクセスが定義することですこれは、データベース・オブジェクトのユーザーに対して実行できる操作の種類をデータベースシステムでは、アクセスを定義するために呼ば許可を
  • リレーショナル・データベース・システム、アクセス制御だけでなく、オブジェクトデータ自体(データベーステーブル、属性列のデータ)、ならびにデータベース・スキーマ(含むデータベース、ベーステーブル、ビューのインデックスを作成するなど、)
強制アクセス制御方法
  • 各データベースオブジェクトはある程度のマークされているセキュリティ分類、各ユーザーは、ライセンスの特定のレベルが付与されます。任意のオブジェクトの場合、ユーザーは、彼らだけがアクセスできる前に、正当なライセンスを持っています。したがって、比較的厳格な強制アクセス制御。(Aのみ特定のデータBを表示する権限が付与されているような、B自体がマークされたデータを使用して、強制アクセス制御をコピースプレッドを作った関係なく、コピーの、唯一のユーザは、高密度マーカーとラインのデータを操作することができます)

オーソライズ

ユーザー:法的なデータベースユーザ

目的:等テーブル、ビュー、次のようなデータベース内のデータ・オブジェクトの様々なタイプのアクセスすることができ、

権限:データオブジェクト上で操作することができます。権限分割(など、変更、作成、など)をシステム権限と権利オブジェクト(例えば、SELECT、INSERT、等)。

授权语句:
    GRANT  <权限>[,<权限>]  ...   [ON <对象类型>  <对象名>]
                           TO  <用户> [,<用户>]  …   [ WITH GRANT OPTION ];
 撤销权限:
    REVOKE  <权限> [,…]  [ON <对象类型> <对象名>] FROM <用户> [,…] ;
    
    GRANT  UPDATE(Sno),SELECT  ON  TABLE  Students TO   U1,U2;/*把查询Student表和修改学号的权限给U1,U2*/
    GRANT  ALL PRIVILEGES   ON  TABLE  SC,Student  TO  PUBLIC; /*将SC表和Student表全部权限给所有用户*/
    REVOKE  SELECT   ON TABLE  SC  FROM PUBLIC;

付与

意味は以下のとおりです。指定された操作は、指定したユーザーに付与された指定の操作権限を対象とします。

問題のGRANT文は、データベース・オブジェクトも作成者(すなわち、所有者の所有者)であってもよいし、データベース管理者であることができ、また、すでにこの権限を持つユーザーかもしれません。

権利は、すなわち、すべてのユーザーPUBLICであってもよいし、ユーザが1つ以上の特定のユーザを受け入れることができます

あなたはGRANT OPTION句WITHユーザーGRANT文を指定する場合は、権限のいくつかの種類が他のユーザーに再び、そのような権限を付与するために取得することができます。しかし、循環認証を許可していませんユーザーは、GRANT OPTION句で指定していない場合は、権限のいくつかの種類がこれだけの権限を使用することができ、権限が普及することはできません。

取り消す

ユーザーに付与された権限は、データベース管理者またはREVOKEステートメントを使用する権限を他の人によって回収することができます

CASCADE(カスケード)が同時に撤退する許可をINSERT、カスケード(CASCADE)は、INSERTの許可U6とU7を取り下げ

データベーススキーマを作成する権限

GRANTおよびREVOKEステートメントは、許可またはユーザーに操作権限データを取り消します。ユーザーを作成するときに達成するために、データベース管理者によって許可データベースモジュールなどのデータベースオブジェクトを作成します。

次のように一般的な形式は、CREATE USER文:

CREATE USER <username> [WITH] [DBA |  RESOURCE | CONNECT];

システムのスーパーユーザーだけが新しいデータベース・ユーザーを作成する権限を持っています

CONNECT、RESOURCE、およびDBA:新しく作成されたデータベースのユーザー権限は、3があります

画像20191030144752168.png

データベースロール

データベースの役割は:データベースの操作に関連付けられたアクセス権のセットを命名されています。役割は、アクセス権の集まりです。あなたは承認のプロセスを簡素化し、同じ権限を持つユーザーのグループのための役割を作成することができます。

创建角色:
       CREATE ROLE <角色名>  /*刚创建的角色没有内容*/
给角色授权: 
        GRANT  <权限>[,<权限>]…  [ ON  <对象类型> 对象名 ] 
               TO <角色>[,<角色>]…;
分配角色:
        GRANT  <角色1>[,<角色2>]…  TO  <角色3>[,<用户1>]… 
              [WITH ADMIN OPTION]; 
角色权限的收回 :
        REVOKE  <权限>[,<权限>]…  [ ON  <对象类型> <对象名> ]
                FROM  <角色>[,<角色>]…;

ビュー

  • 役割:ユーザーの機密データは、これらのデータへのアクセスは、データを保護するためのセキュリティの度合いを提供するために、隠されている必要はありません。

  • 主な機能は、完全に要件を満たしていない、データ独立のビューを提供することです。

  • ユーザー定義のアクセス権述語をサポートして間接的に表示します。(大学の先生が唯一のPing学生の情報検索コンピュータを仮定することができ、ディーン張は、学生の情報検索やコンピュータサイエンスのCRUD部門のすべての権限を持っています)

監査

データベースユーザーのすべての操作が自動的にログを監査するためにログインして、DBAは不正な処理を見つけるためにログを使用するセキュリティチェックの後

ユーザー・レベルの監査

  • あなたが作成した監査データベースのテーブルやビューの場合。
  • すべてのユーザーおよび(または)および失敗したアクセスのSQL操作の様々なタイプのレコード成功。

システム・レベルの監査

  • DBAが提供されています。
  • ログイン要件の成否を監視するには、
  • GRANTの動作を監視し、操作し、他のデータベース・レベルの権限を取り消します。

データ暗号化

保管および輸送の暗号化暗号化

データベースの整合性

データベース内のデータの整合性は:を指し、正しいデータ有効と互換

データベース管理システムの方法は取ります

  • 提供整合性制約(ルール)は、ユーザエンティティ整合性制約メカニズムを参照して定義されています
  • データの整合性チェックを提供する方法を変更するDBMSによって自動的に行われます
  • 契約処理の違反

エンティティ整合性

各属性をチェックするためのユニークなマスターキー、マスターキーが空であるかどうかを確認してください

メインコードの自動インデックス、フルテーブルスキャンを避けます

ユーザー定義の整合性

  • 列の非NULL値(NOT NULL)
  • 唯一の列の値(一意)
  • チェック列の値が条件式(CHECKフレーズ)を満たします

整合性は、契約違反ルール

  • ユーザ定義のデフォルトのルールは:拒否操作を

  • デフォルトの処理エンティティの整合性:拒否操作

  • 参照整合性を扱うデフォルト:

    デフォルトの処理基準の関係:拒否操作を

    :デフォルトの参照関係の処理拒否カスケード、NULL値に設定SET NULLを

    • 一般的には、デフォルトのポリシーを設定することを拒否しました
    • カスケード削除または修正参照テーブルのタプル参照テーブルの矛盾した結果を、参照テーブルを削除または修正し、一貫性のないタプルへのすべてのリード。
    • 参照テーブルを削除または変更するタプルとき矛盾ヌルその結果は、表にヌル値タプルに設定一貫性のない対応するプロパティをもたらす、すべての中で参照されます
CREATE TABLE SC 
    (Sno CHAR(9),
     Cno CHAR(4),
     Grade SMALLINT,
     PRIMARY KEY(Sno,Cno),/*在表级定义实体完整性,Sno、Cno都不能取空值*/
     FOREIGN KEY (Sno) REFERENCES Student(Sno)/*在表级定义参照完整性*/
        ON DELETE CASCADE
            /*当删除 Student表中的元组时,级联删除SC表中相应的元组*/
        ON UPDATE CASCADE
            /*当更新 Student表中的sno时,级联更新SC表中相应的元组*/
     FOREIGN KEY(Cno) REFERENCES Course( Cno)/*在表级定义参照完整性*/
        ON DELETE NO ACTION/*当删除 Course表中的元组造成与SC表不一致时,拒绝删除*/
        ON UPDATE CASCADE /*当更新Coue表中的cmo时,级联更新SC表中相应的元组*/

整合性制約句の名前

名前を命名ずに削除高めるために、簡単に名前の各整合性制約を与えることができ、その後、システムが自動的に多くのトラブルを削除します

CONSTRAINT <约束规则名>
      [PRIMARY KEY短语  | FOREIGN KEY短语 | CHECK短语]
      
      CREATE   TABLE   SC (Sno   CHAR(10),Cno   CHAR(4),   
        Grade  SMALLINT 
                CONSTRAINT  C1 CHECK(Grade BETWEEN 0 AND 100),
         PRIMARY KEY(Sno, Cno));
/*Alter修改表中的完整性约束*/
ALTER  TABLE  SC   DROP  CONSTRAINT  C1;

             ALTER  TABLE  SC
                ADD CONSTRAINT C1 CHECK (Grade BETWEEN 0 AND 120);

断言

アサーションを作成した後、関係に関与する任意のアサーション操作トリガうリレーショナルデータベース管理システムのチェックはアサーションのために、アサーションは、任意の真値がされ動作していない実行を拒否します

複雑なアサーション多くのオーバーヘッド

CREATE ASSERTION <断言名>  CHECK  <约束规则>

Create Assertion chk_empid
              Check (Emp_Sal.emp_id in
        (Select emp_id From EmployeeInfo 
            Where emp_name is not null);

おすすめ

転載: www.cnblogs.com/dingruihfut/p/11766144.html