方案:使用行和列访问控制的 ExampleHMO - 数据查询
借助行和列访问控制,具有不同角色的人可以从相同的数据库查询中获得不同的结果集。 例如,具有 DATAACCESS 权限的数据库管理员 Peter 无法查看 PATIENT 表中的任何数据。
Peter、Bob、Dr. Lee、Tom、Jane 和 John 各自连接至数据库并尝试执行以下
SQL 查询:
SELECT SSN, USERID, NAME, ADDRESS, PHARMACY, ACCT_BALANCE, PCP_ID FROM PATIENT;查询结果将随运行该查询的用户而有所不同。 由 Alex
创建的行和列访问控制将应用于这些查询。以下是 Peter 看到的结果集:
SSN USERID NAME ADDRESS PHARMACY ACC_BALANCE PCP_ID
----------- --------- --------- ----------- ----------- ----------- -----------
0 record(s) selected.
即使该表中有数据并且 Peter
是数据库管理员,但他并不具有查看所有数据的权限。以下是 Bob 看到的结果集:
SSN USERID NAME ADDRESS PHARMACY ACC_BALANCE PCP_ID
----------- --------- --------- ----------- ----------- ----------- ------
123-45-6789 BOB Bob 123 Some St.XXXXXXXXXXX 0.00 LEE
1 record(s) selected.
Bob 作为患者只能看到他自己的数据。 Bob 属于
PATIENT 角色。 已对他隐藏 PHARMACY 和 ACC_BALANCE 列数据。以下是 Dr. Lee 看到的结果集:
SSN USERID NAME ADDRESS PHARMACY ACC_BALANCE PCP_ID
----------- -------- -------- ----------- ------------------- ----------- ------
123-55-1234 MAX Max First Strt hypertension 0.00 LEE
123-11-9856 SAM Sam Big Strt High blood pressure 0.00 LEE
123-45-6789 BOB Bob 123 Some St.codeine 0.00 LEE
3 record(s) selected.
Dr. Lee 只能看到他主治的患者的数据。 Dr. Lee 属于 PCP 角色。 对他隐藏了
ACC_BALANCE 列数据。以下是 Tom 看到的结果集:
SSN USERID NAME ADDRESS PHARMACY ACC_BALANCE PCP_ID
----------- -------- -------- ----------- ----------- ----------- -----------
123-55-1234 MAX Max First Strt XXXXXXXXXXX 0.00 LEE
123-58-9812 MIKE Mike Long Strt XXXXXXXXXXX 0.00 JAMES
123-11-9856 SAM Sam Big Strt XXXXXXXXXXX 0.00 LEE
123-19-1454 DUG Dug Good Strt XXXXXXXXXXX 0.00 JAMES
123-45-6789 BOB Bob 123 Some St.XXXXXXXXXXX 0.00 LEE
5 record(s) selected.
Tom 可以看到所有成员。 Tom 属于 MEMBERSHIP 角色。 他不具有查看
PHARM
ACY 和 ACC_BALANCE 列中的任何数据的特权。以下是 Jane 看到的结果集:
SSN USERID NAME ADDRESS PHARMACY ACC_BALANCE PCP_ID
----------- -------- -------- ----------- ------------------- ----------- -------
XXX-XX-1234 MAX Max First Strt XXXXXXXXXXX 0.00 LEE
XXX-XX-9812 MIKE Mike Long Strt XXXXXXXXXXX 0.00 JAMES
XXX-XX-9856 SAM Sam Big Strt High blood pressure 0.00 LEE
XXX-XX-1454 DUG Dug Good Strt Influenza 0.00 JAMES
XXX-XX-6789 BOB Bob 123 Some St.codeine 0.00 LEE
5 record(s) selected.
Jane 可以看到所有成员。 她属于 DRUG_RESEARCH 角色。 对她隐藏了
SSN 和 ACC_BALANCE 列数据。 仅当患者同意与药品研究公司共享他们的数据时,才会提供 PHARMACY 数据。以下是 John 看到的结果集:
SSN USERID NAME ADDRESS PHARMACY ACC_BALANCE PCP_ID
----------- -------- -------- ----------- ----------- ----------- --------
123-55-1234 MAX Max First Strt XXXXXXXXXXX 89.70 LEE
123-58-9812 MIKE Mike Long Strt XXXXXXXXXXX 8.30 JAMES
123-11-9856 SAM Sam Big Strt XXXXXXXXXXX 0.00 LEE
123-19-1454 DUG Dug Good Strt XXXXXXXXXXX 0.00 JAMES
123-45-6789 BOB Bob 123 Some St.XXXXXXXXXXX 9.00 LEE
5 record(s) selected.
John 可以看到所有成员。 他属于 ACCOUNTING 角色。 对他隐藏了 PHARMACY 列数据。