标签: authentication

使用 Microsoft Active Directory 的 Oracle 数据库企业用户和角色?

我们有一个遗留应用程序,我们可以完全访问源代码和运行它的平台,因此如果需要,几乎可以实施任何更改。

该应用程序是一个 Java Swing 重量级 GUI(桌面),通过 JDBC 以 2 层方式直接访问数据库。在应用程序启动时,用户输入由用户和密码组成的他/她的凭据。当前的安全架构是:

  • 带有 Oracle Internet Directory 10g (OID) 的 Oracle Database 10g Enterprise(迁移到 11g)。
  • Oracle 使用企业用户,因此在连接到 DB 时,连接中提供的用户来自 GUI,Oracle 会根据 OID 进行验证。
  • 数据库权限通过企业角色进行管理。DB 中定义的每个 ER 映射 OID 中定义的组,因此用户 DB 对对象(表、过程...)的访问由他/她在 OID 中所属的组控制。
  • 多个 GUI 用户可以创建其他用户,因此在 OID 中创建它们,分配到相应的 OID 组以授予 DB 权限。这是使用 OID 中对该“超级用户”的特殊 Oracle 权限来完成的。这是使用标准 LDAP API 从 GUI 完成的,而不是 OID API。GUI 用户使用其凭据连接到 OID 并执行 LDAP 操作。

这个想法是用 Microsoft Active Directory 替换 OID,因此数据库将根据 AD 验证用户。ER 中定义的 DB 权限也可以根据用户所属的组从 AD 中检索。

假设 Oracle …

oracle authentication windows linux active-directory

5
推荐指数
1
解决办法
2366
查看次数

Oracle 的 dbms_utility.get_hash_value 算法是否记录在任何地方进行逆向工程?

我正在使用一个现有的数据库,其中的密码是这样散列的:

DBMS_UTILITY.GET_HASH_VALUE(the_username || the_password, 1000000000, 1073741824)
Run Code Online (Sandbox Code Playgroud)

我知道由于各种原因这很糟糕(不是正确的加密安全哈希,并且 oracle 使用的算法可能会在版本之间发生变化)。但是该数据库存在,我们不太可能让他们改变这一点,因为他们有很多用户,并且不能简单地切换到正确的散列算法而不让每个人重新输入或重置密码。

现在我需要使用这个数据库进行 LDAP 身份验证(基于 OpenLDAP)。不幸的是,没有办法让 OpenLDAP 将明文密码传递给数据库(然后我可以简单地在明文密码上调用散列函数)。但是,修改 LDAP 客户端是可能的,所以如果我可以创建哈希,一切都会好起来的。

我宁愿避免连接到 Oracle 数据库来执行此操作,因为这也需要该机器上的 Oracle 客户端、数据库登录数据等。因此我想知道是否有关于GET_HASH_VALUE()可用算法的任何信息。我在谷歌上找不到任何东西,但也许它隐藏在所有有些不相关的结果之间......如果算法最近发生了变化,服务器版本是 11.2.0.3.0。

oracle authentication

5
推荐指数
1
解决办法
1395
查看次数

创建链接服务器到 AlwaysOn 可用性组侦听器

我有一个使用 SQL 2014 和 Windows Server 2012 R2 的始终可用组设置。组中有 3 个节点。SQL 服务在每个节点上作为托管服务帐户运行(每个服务器 1 个 MSA)。

我正在尝试在每个节点上创建一个链接服务器以指向当前的活动节点。因此,假设这三个服务器称为 Server1、Server2 和 Server3,而 AlwaysOn 可用性组称为 SQLAAG_PROD。我想创建到 SQLAAG_PROD 的链接服务器。

我能够为每个单独的节点创建一个链接服务器(例如 Server1 与 server2 和 Server3 的链接),并且使用安全选项可以正常工作Be made using the login's current security context

但是,当我尝试为组侦听器创建链接服务器时,我得到了 Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON

如果我将安全模式更改为对当前活动服务器使用 SA 密码,则一切正常,但出于明显的安全原因,这不是可接受的解决方案。

我已经阅读了很多关于需要设置 SPN 并允许帐户进行委派的内容。我Trust this computer for delegation to any service (Kerberos only)在 Active Directory 中打开了 SQLAAG_PROD 对象,但仍然有同样的问题。

有没有人以前见过这个,和/或是否有关于如何设置的指南?

===更新===

不确定它是否有帮助,但是当我跑步时

select auth_scheme from sys.dm_exec_connections where session_id=@@SPID
Run Code Online (Sandbox Code Playgroud)

当直接连接到节点时,我得到 …

authentication sql-server linked-server availability-groups sql-server-2014

5
推荐指数
1
解决办法
9459
查看次数

使用另一台计算机上的 postgres 数据库

我的机器上安装了 PostgreSQL 9.5 版(Windows 7 Enterprise x64 位版本)。我在模式“public”中有几个数据库。我想使用 LAN 连接从另一台机器(Windows 7)使用/访问这些数据库中的一个(以便该数据库可以作为两台机器之间的共享数据库)。我想知道是否可以通过 postgresql.conf 对话窗口中的“listen_addresses”选项来完成?如果没有,有没有其他方法可以做到这一点?

postgresql authentication remote pg-hba.conf postgresql-9.5

5
推荐指数
0
解决办法
2万
查看次数

Postgresql 无法使用 usermap 进行对等身份验证(提供的用户名 (^dbuser^) 和经过身份验证的用户名 (^sysuser^) 不匹配)

我正在尝试使用 usermap 对某些用户进行对等身份验证。我想要做的是映射用户邮件阅读器,如您所见:

postgres=# \du
                              List of roles
 Role name  |                   Attributes                   | Member of 
------------+------------------------------------------------+-----------
 mailreader |                                                | {}
 postgres   | Superuser, Create role, Create DB, Replication | {}
Run Code Online (Sandbox Code Playgroud)

进入系统的用户root,dovecot,postfix。因此,我编辑了我的pg_ident.conf并放置了以下内容:

mailmap         dovecot                 mailreader
mailmap         postfix                 mailreader
mailmap         root                    mailreader
Run Code Online (Sandbox Code Playgroud)

我还编辑pg_hba.conf并附加了以下内容:

local    mail        all                     peer map=mailmap
Run Code Online (Sandbox Code Playgroud)

当我尝试通过sudo psql -U mailreader -d mail命令连接时,我得到:

psql:致命:用户“mailreader”的对等身份验证失败

错误。

我还尝试了以下配置:

local    mail            all                                     ident map=mailmap
Run Code Online (Sandbox Code Playgroud)

没有任何进展。

我可以帮忙吗?

编辑 1

有关错误的日志是:

2017-06-27 19:10:10 UTC [1188-1] mailreader@mail LOG:  provided user name …
Run Code Online (Sandbox Code Playgroud)

postgresql authentication postgresql-9.4

5
推荐指数
1
解决办法
4678
查看次数

Microsoft SQL Server 说我的登录被禁用,即使在单用户/DAC 模式下

我被锁定在本地数据库之外,过去对我有用的单用户模式选项在这里对我不起作用。我可以使用一些选项来尝试。

据说该帐户已被禁用,我认为这在单用户模式下是不可能的。

我已经尝试过的:

在单用户模式下重启:

C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBNAME\MSSQL\Binn>net stop MSSQL$DBNAME
The SQL Server (DBNAME) service is stopping..
The SQL Server (DBNAME) service was stopped successfully.


C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBNAME\MSSQL\Binn>.\sqlservr -sDBNAME -m -c

[seems to come up]
Run Code Online (Sandbox Code Playgroud)

登录尝试如下所示:

C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBNAME\MSSQL\Binn>sqlcmd -S .\DBNAME
Msg 18470, Level 14, State 1, Server MY-PC\DBNAME, Line 1
Login failed for user 'My-PC\sarahg'. Reason: The account is disabled.
Run Code Online (Sandbox Code Playgroud)

服务器输出:

2012-05-29 15:55:25.11 Logon       Error: 18470, Severity: 14, State: 1.
2012-05-29 15:55:25.11 Logon       Login failed for user …
Run Code Online (Sandbox Code Playgroud)

authentication sql-server

4
推荐指数
1
解决办法
1万
查看次数

安全的连接方式:Windows 身份验证或 SQL Server 身份验证,为什么?

为 SQL Server创建连接字符串的最佳方法是什么?

我应该使用受信任的连接字符串(Windows 身份验证)还是不受信任的连接字符串(sql server 身份验证),为什么?

我关心的是让我的连接字符串更安全,这样它就不会受到攻击的影响。

我在许多论坛上读到 Windows 身份验证更安全,如果我们使用 SQL Server 身份验证,那么用户 ID 和密码可以通过网络嗅探。

authentication security sql-server

4
推荐指数
1
解决办法
2372
查看次数

用于通过脚本运行 mysql 相关作业的凭据文件?

有没有一种方法可以将 mysql 指向凭据文件,而不是直接在脚本中输入帐户密码?

例子:

mysqldump --opt --credfile /etc/mysql_creds mydatabase > output.sql
Run Code Online (Sandbox Code Playgroud)

/etc/mysql_creds

username=myuser
password=ToPsEcReT
Run Code Online (Sandbox Code Playgroud)

mysql authentication

4
推荐指数
1
解决办法
2846
查看次数

PostgeSQL 的代理身份验证

以下似乎可能是一种相当普遍的情况,但我还没有看到任何解决方案。

我有一个 PostgreSQL 数据库,其中包含特定于 的视图,$user以便根据某些特定于数据库的 ACL 逻辑来限制数据。数据库通常通过 JDBC 访问,特别是在 Web 界面的 JSP 中。用户通过 LDAP 密码认证登录网站。

我想要的是利用从 JDBC 连接到数据库的视图。但通常这个中间层连接是使用通用用户创建的,而不是特定于登录网站的人。我相信在 Oracle 中“正确”的方法是Proxy Authentication,但 AFAIAA 没有与 PostgreSQL 等效的方法。那么该怎么做呢?

想到了一些想法:

  • 给所有用户的数据库帐户设置相同的密码,然后使用这个通用密码创建特定于用户的 JDBC 连接(这感觉太不对了……)
  • 将用户的登录密码存储在网站某处,在创建数据库连接时重复使用(再次,这个感觉很错误)

还有其他(希望更好)的建议吗?

postgresql authentication jdbc connections

4
推荐指数
1
解决办法
3716
查看次数

我可以以用户“dbo”的身份连接到数据库吗?

如果不是,为什么?

在安全审计期间,我们被问及 dbo 登录是否是交互式的。我的理解是账户是由SQL server自己自动创建和管理的,不是直接交互的。

我试图在证明一个系统管理员的用户将出现在SESSION_USER作为dbo身份验证时,但他们不完全相信。他们现在的问题是是否可以通过使用其密码登录来直接对 dbo 进行身份验证。

这可能吗?我什至不知道在哪里可以找到 dbo 的密码,如果有的话。

authentication sql-server

4
推荐指数
1
解决办法
4004
查看次数