AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[security](dba)

Martin Hope
Gunnar
Asked: 2025-01-04 18:11:25 +0800 CST

如何从可公开访问的数据库中隔离敏感信息?

  • 5

我在一家私人医疗诊所工作,我们计划通过网页安装预约系统。预约系统是一个 PHP 应用程序,将其记录存储在 SQL 数据库中,该数据库可以位于 Web 服务器本身或远程服务器上。

由于使用情况,数据库将包含非常敏感的个人信息*,必须对公众保密。

强化对数据库的访问是一方面,但我猜测数据的一个重要入口点是 PHP 应用程序本身。

有没有推荐的方法将敏感数据与公共访问隔离?我可以想象一个如下的系统:

公共-> 通过可公开访问的服务器上的 PHP 应用程序访问 ->带有屏蔽敏感条目的 SQL 数据库<-通过强化 ssh 隧道同步->带有完整条目的私有 SQL 数据库<- 通过非公共服务器上的 PHP 应用程序访问 ->员工

这样,即使 PHP 应用程序将数据公开,敏感数据也会受到保护。此外,获取对公开 SQL 数据库本身的访问权限也并不那么重要。

两个数据库之间的映射将通过每个条目的唯一哈希码进行。实际上,这只是假名化,而不是匿名化。但它仍然是一个额外的安全层。

我只是不知道是否有现成的方法来实现这样的功能。基本上,SQL 数据库中任何带有屏蔽敏感条目的更改都应触发同步并随后进行屏蔽(因为来自公共领域的客户条目需要屏蔽)。

有没有更好的实现?我会非常高兴收到任何建议。


* 患者会在公共数据库中输入敏感数据,我们需要这些数据来完成我们的工作(我们需要姓名、联系方式和一些医疗信息)。但一旦输入这些数据,就应该将其转移到私人数据库,并在公共数据库中不可用。

但是,我还是不想对预制的 PHP 应用程序进行模糊测试。屏蔽公共数据库中的数据(例如,使用 *s)将使 PHP 应用程序正常工作

security
  • 1 个回答
  • 40 Views
Martin Hope
Zikato
Asked: 2023-09-08 17:55:42 +0800 CST

我可以更改 cdc 架构的所有者吗?

  • 9

我已使用以下命令在数据库上启用了更改数据捕获 (CDC)exec sys.sp_cdc_enable_db

这将创建一个由cdc用户拥有的新cdc架构

select
    s.*
    , dp.name
from sys.schemas as s
join sys.database_principals as dp
    on dp.principal_id = s.principal_id

在此输入图像描述

因为我想利用所有权链接并使用 proc 从此架构中读取数据,所以我可以将所有者更改为dbo吗?

ALTER AUTHORIZATION ON SCHEMA::cdc TO dbo

此命令起作用并更改所有者。但疾病预防控制中心已经启用了一段时间,我担心未来会进一步破坏一些东西。

security
  • 2 个回答
  • 116 Views
Martin Hope
IQJWSB0DLT
Asked: 2022-05-18 01:30:49 +0800 CST

是 SSL 证书授权链“秘密”吗

  • 3

我们最近注册使用 MariaDB 的 SkySQL 包,但是在连接时使用 SSL 证书链是新手(过去只真正使用过 SSH 隧道)。

我们有通过我们的门户网站下载的密钥,但是不知道这是否应该像我们使用私钥一样被视为秘密,或者这是否是公共信息。

对不起,可能是一个简单的问题。

谢谢。

security mariadb
  • 1 个回答
  • 76 Views
Martin Hope
folow
Asked: 2022-04-27 04:52:12 +0800 CST

列数据屏蔽安全问题

  • 0

在 Linux 上的 Db2 v11.5.7 中,我有一个简单的表:

create table admin.patient_data (
patientid int not null primary key,
patient_name varchar(10),
illness varchar(15),
doctor_name varchar(10)
);

insert into admin.patient_data values (1, 'Alice', 'illness A', 'DOCTOR1');
insert into admin.patient_data values (2, 'Bob', 'illness B', 'DOCTOR2');
select * from admin.patient_data;

结果:

PATIENTID   PATIENT_NAME ILLNESS         DOCTOR_NAME
----------- ------------ --------------- ----------
          1 Alice        illness A       DOCTOR1
          2 Bob          illness B       DOCTOR2

ILLNESS 列是敏感数据。我希望仅当列 DOCTOR_NAME 与 Db2 登录用户匹配时才显示此列。

create mask admin.patient_data on admin.patient_data
   for column illness return
   case when doctor_name = USER then illness else 'Masked data' end
   enable;
alter table admin.patient_data activate column access control;

现在用户 DOCTOR1 连接到数据库并检查数据:

select * from admin.patient_data

它被退回:

PATIENTID   PATIENT_NAME ILLNESS         DOCTOR_NAME
----------- ------------ --------------- -----------
          1 Alice        illness A       DOCTOR1
          2 Bob          Masked data     DOCTOR2

在行 PATIENTID=2 列 ILLNESS 预计将被屏蔽。

但是医生受过教育,所以他/她知道所有的疾病,现在瞄准“疾病B”

db2 "select * from admin.patient_data where illness = 'illness B'"

它得到:

PATIENTID   PATIENT_NAME ILLNESS         DOCTOR_NAME
----------- ------------ --------------- -----------
          2 Bob          Masked data     DOCTOR2

字段 ILLNESS 仍按预期标记,但现在因为有条件的 DOCTOR1 知道患者 Bob 患有“疾病 B”。

我希望最终用户可以按条件返回的值进行过滤。即:“疾病A”和“标记数据”。

有没有一些简单的解决方案来防止这种情况?我希望最后一个 select 语句不会返回任何记录。

db2 security
  • 2 个回答
  • 37 Views
Martin Hope
folow
Asked: 2022-04-16 04:57:33 +0800 CST

db2 - 如何获取计算机上所有 Db2 实例的列表

  • 0

我有几台 Linux 服务器,它们上可能有一个或多个 Db2 实例。Db2 实例可以来自不同的 Db2 版本。

对于安全审计,我需要编写一些简单的 bash 脚本来检查所有 Linux 服务器上的一些“dbm cfg”设置。我有一些工具可以让我以 root 访问权限连接到 Linux 服务器,然后我可以在远程 Linux 服务器上执行任何 bash 命令。

问题:我遇到的问题是,如何在不知道 Db2 实例所有者或 Db2 实例名称的情况下以 root 用户获取 Linux 服务器上的 Db2 实例列表?

当我获得所有者时,我可以对那个 Db2 实例所有者 Linux 用户“sudo”或“su”并执行“db2 get dbm cfg”命令。

db2 security
  • 2 个回答
  • 197 Views
Martin Hope
Paul
Asked: 2022-01-11 12:20:43 +0800 CST

MS Sql Server 将数据库级角色链接到服务器级角色

  • 0

我创建了一个名为 ReadOnly 的服务器/实例级别角色,并为其分配了一个用户(基于 Windows 的登录)。

现在我正在尝试添加一个具有相同名称的数据库级别角色,我可以在其中授予对某些数据库级别对象(主要是表)的权限。

但是我看不到如何将数据库级角色链接到 SSMS 中的服务器级角色。

sql-server security
  • 1 个回答
  • 51 Views
Martin Hope
SEarle1986
Asked: 2022-01-05 06:39:01 +0800 CST

如果我备份了我的证书,为什么我需要备份 DMK?

  • 1

如果我有一台使用 TDE 的服务器,配置如下:

USE [master]
CREATE DATABASE MyTDE

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My57r0ngp455';
CREATE CERTIFICATE MyTDECert WITH SUBJECT = 'My Certificate';
GO

/* enable TDE */
USE MyTDE;
GO
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE MyTDECert;
GO

ALTER DATABASE MyTDE SET ENCRYPTION ON;
GO

/* backup the TDE cert */
USE [master];
BACKUP CERTIFICATE [MyTDECert] TO FILE = 'C:\Test\TDECert.cert'
WITH PRIVATE KEY (
                   FILE = 'C:\Test\TDEcert.key', 
                   ENCRYPTION BY PASSWORD = 'MyStr0ngP455w0rd'
                  );

我按计划每晚备份:

BACKUP DATABASE MyTDE
TO     DISK = 'C:\Test\TDEDatabaseBackup.bak'
WITH   INIT,
       FORMAT;

如果运行此数据库的服务器发生某种灾难,我需要将备份还原到另一台服务器,为此,我需要备份MyTDECert以在新服务器上重新创建该证书

在新服务器上,我可以从备份创建 TDE 证书:

USE [master];
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My57r0ngp4552';

CREATE CERTIFICATE MyTDE1
FROM FILE = 'C:\Test\TDEcert.cert'
WITH PRIVATE KEY (FILE = 'C:\Test\TDEcert.key',
DECRYPTION BY PASSWORD = 'MyStr0ngP455w0rd');

这允许我恢复数据库:

RESTORE DATABASE MyTDE
FROM     DISK = 'C:\Test\TDEDatabaseBackup.bak'

同样,如果我有一个未使用 TDE 的数据库,但我使用证书进行备份:

USE [master]
CREATE DATABASE MyDB

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My57r0ngp455';
CREATE CERTIFICATE [BackupCert] WITH SUBJECT = 'Backup Certificate', EXPIRY_DATE = '2022-01-29T15:00:00'

BACKUP CERTIFICATE [BackupCert] TO FILE = 'C:\Test\BackupCert.cert' 
WITH PRIVATE KEY (
                   FILE = 'C:\Test\backupcert.key', 
                   ENCRYPTION BY PASSWORD = 'MyStr0ngP455w0rd'
                  );

BACKUP DATABASE MyDB
TO     DISK = 'C:\Test\EncryptedDBBackup.bak'
WITH   INIT,
       ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = BackupCert),
       FORMAT;

同样,要将这些备份恢复到另一台服务器,我需要BackupCert在第二台服务器上创建证书的备份:

USE [master];
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My57r0ngp4552';

CREATE CERTIFICATE [BackupCert]
FROM FILE = 'C:\Test\STEVETEST\BackupCert.cert'
WITH PRIVATE KEY (FILE = 'C:\Test\backupcert.key',
DECRYPTION BY PASSWORD = 'MyStr0ngP455w0rd');

RESTORE DATABASE MyDB
FROM     DISK = 'C:\Test\EncryptedDBBackup.bak'

我不明白的是,我需要在master数据库中备份数据库主密钥吗?我仍然可以使用已备份的证书,并且可以在另一台服务器上重新创建它们,并且它们具有正确的指纹来恢复加密的备份

看这篇文章,它表明如果我将创建密钥的数据库移动到另一台服务器,我需要从备份中重新创建主密钥,但在我的情况下,我并没有移动主数据库本身。

以上场景需要备份DMK吗?

security sql-server-2016
  • 1 个回答
  • 71 Views
Martin Hope
Felipe Felix
Asked: 2021-11-09 08:45:37 +0800 CST

PostgreSQL 中的操作级授权

  • 0

我正在开发一个分析应用程序,它提供 Postgres DB 中数据仓库的多层次可视化。它的要求之一是不同的用户应该对数据具有不同的访问权限。例如,一些用户应该只从特定表中提取指标 ( counts, avgs, sums),而其他用户可以将数据下钻到列级别。

例子:

employee table

 id    | name   | salary
-------+--------+--------+
     1 | josé   |  20000 
     2 | joão   |  80000 
     3 | tiago  |  60000 

user 1 (can drill down)
------
=> select name from employee where id = 1 
=> josé

user 2 (can read only aggregate data)
------
=> select avg(salary) from employee
=> 53333.3333333
=> select name from employee where id = 1 
=> ERROR

我认为任何 RDBMS 都不会原生提供。但我想知道是否有任何工具可以帮助我完成此授权级别,而无需在应用程序级别对其进行硬编码。

postgresql security
  • 2 个回答
  • 31 Views
Martin Hope
variable
Asked: 2021-10-23 00:01:20 +0800 CST

远程用户值应该配置为映射本地登录中定义的用户还是映射登录登录中未定义的用户?

  • 1

链接:https ://learn.microsoft.com/en-us/sql/relational-databases/linked-servers/create-linked-servers-sql-server-database-engine?view=sql-server-ver15#to-创建链接服务器到另一个实例的 sql 服务器使用 sql 服务器管理工​​作室

远程用户

使用远程用户映射本地登录中未定义的用户。远程用户必须是远程服务器上的 SQL Server 身份验证登录名。

这个问题是关于红色标记的部分。选中模拟后,远程用户和远程密码文本框将被禁用。未选中模拟时,我可以在文本框中输入远程用户和远程密码。

上面的定义remote user正确吗?远程用户值应该配置为映射本地登录中定义的用户还是映射本地登录中未定义的用户?

在此处输入图像描述

sql-server security
  • 1 个回答
  • 43 Views
Martin Hope
mabn
Asked: 2021-10-07 15:31:03 +0800 CST

Postgres RLS:如何出错而不是忽略与策略不匹配的行?[复制]

  • 2
这个问题在这里已经有了答案:
当行级别安全策略过滤掉行时记录发生 1 个答案
去年关闭。

在 postgres 中创建策略 (CREATE POLICY) 时,可以指定表达式以在发出 SELECT 查询时过滤掉一些行:

CREATE POLICY ... USING ( using_expression ) ...

也可以指定一个单独的表达式,该表达式在评估为 false 时触发错误,但仅适用于 INSERT/UPDATE - WITH CHECK ( check_expression )。

我希望选择具有相同的行为 - 如果选择查询尝试访问根据某些表达式应该无法访问的行,是否有办法触发错误?

我问的原因是我正在考虑使用 RLS 作为访问控制的附加和冗余层,而第一个将在应用程序逻辑中。这样做的问题是很难在应用程序逻辑中找到问题,这在某种程度上违背了目的:

  • 如果 RLS 配置错误并且错误地允许某些记录通过它,应用程序层将捕获它并触发错误 - 该问题很容易检测到。
  • 但是,如果应用程序层存在错误并且错误地授予对记录的访问权限,则它根本不可见 - RLS 会神奇地将它们过滤掉,直到有人错误配置 RLS 并且数据泄漏。

有没有办法配置 postgres,如果查询尝试读取它不应该读取的行,它会出错?特别是,它可能是一种确保所有代码路径实际上都实施了适当的访问控制检查的方法。

postgresql security
  • 1 个回答
  • 189 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve