アクセス許可制御機能を実装するために安全な MySQL テーブル構造を設計するにはどうすればよいですか?

王林
リリース: 2023-10-31 12:00:44
オリジナル
942 人が閲覧しました

アクセス許可制御機能を実装するために安全な MySQL テーブル構造を設計するにはどうすればよいですか?

アクセス許可制御機能を実装するために安全な MySQL テーブル構造を設計するにはどうすればよいですか?

インターネットの発展に伴い、システムセキュリティへの注目が高まっています。多くのアプリケーションでは、権限制御は機密データと機能を保護する重要な手段です。 MySQL データベースでは、テーブル構造を適切に設計することで権限制御機能を実装し、許可されたユーザーのみが特定のデータにアクセスできるようにすることができます。

以下は、権限制御機能を実装するための基本的な MySQL テーブル構造設計です:

テーブル名: users
フィールド: id、ユーザー名、パスワード、role_id

Table名前:roles
フィールド:id、role_name

テーブル名:permissions
フィールド:id、permission_name

テーブル名:role_permissions
フィールド:role_id、permission_id

テーブル名: user_roles
フィールド: user_id、role_id

ここでは、関連付けテーブルを使用して、ロールと権限、およびユーザーとロールの間の関係を実現します。テーブルを作成してサンプル データを設定するためのサンプル コードを次に示します。

--Create users table
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
パスワード VARCHAR(255) NOT NULL,
role_id INT
);

-- ロールの作成 table
CREATE TABLE ロール (
id INT PRIMARY KEY AUTO_INCREMENT) ,
role_name VARCHAR(30) NOT NULL
);

-- 権限テーブルの作成
CREATE TABLE 権限 (
id INT PRIMARY KEY AUTO_INCREMENT,
permission_name VARCHAR(30) ) NOT NULL
);

--role_permissions テーブルの作成
CREATE TABLE role_permissions (
role_id INT,
Permission_id INT,
PRIMARY KEY (role_id, Permission_id)
);

--user_roles テーブルの作成
CREATE TABLE user_roles (
user_id INT,
role_id INT,
PRIMARY KEY (user_id, role_id)
);

-- サンプル データを入力してください
INSERT INTO ロール (role_name) VALUES ('Administrator')、('Editor')、('Reader');
INSERT INTO 権限 (permission_name) VALUES ( '記事を作成')、('記事を編集')、('記事を削除');
INSERT INTO role_permissions (role_id,permission_id) VALUES (1, 1), (1, 2), (1, 3), ( 2, 2), (3, 3);
INSERT INTO users (ユーザー名, パスワード, role_id) VALUES ('admin', 'password', 1), ('editor', 'password', 2), ( 'reader', 'password', 3);
INSERT INTO user_roles (user_id, role_id) VALUES (1, 1), (2, 2), (3, 3);

上記を通じてテーブル構造とサンプル データを使用して、次の権限制御機能を実装できます:

  1. 管理者は記事を作成、編集、削除する権限を持ちます;
  2. 編集者は記事を編集する権限を持ちます;
  3. 読者には特別な権限がありません。

アプリケーションでは、ログイン検証が成功した後、以下に示すように、ユーザーのロール ID に基づいてユーザーが持つ権限を照会できます。

SELECT p.permission_name
FROM ユーザー AS u
INNER JOIN user_roles AS ur ON u.id = ur.user_id
INNER JOIN ロール AS r ON ur.role_id = r.id
INNER JOIN role_permissions AS rp ON r.id = rp.role_id
INNER JOIN 権限 AS p ON rp.permission_id = p.id
WHERE u.username = 'admin';

上記のクエリを通じて、次の権限を取得できます。データおよび機能へのユーザー アクセスを権限で制御するために、現在のユーザーが許可されます。

テーブル構造を設計する際には、実際のニーズに基づいて合理的な設計を行う必要があることに注意してください。上記の例の基本的なテーブル構造に加えて、特定のビジネス ニーズに基づいてフィールドやテーブルの関係をさらに追加できます。

つまり、MySQL のテーブル構造を合理的に設計して権限制御機能を実現することで、システムのセキュリティを効果的に保護することができます。上記の内容がお役に立てば幸いです。

以上がアクセス許可制御機能を実装するために安全な MySQL テーブル構造を設計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート