Sql-Server

來自 SQL Server 的 Oracle 連結伺服器的安全性

  • April 19, 2017

我試圖通過不讓使用者/傳遞“使用此安全上下文:”欄位來使從 SQL Server 2005 到 Oracle 的連結伺服器更加安全,因此只有特定使用者才能訪問連結伺服器中的數據。

因此,我嘗試將 SQL 安全使用者映射到 Oracle 使用者/密碼,方法是將其插入“本地伺服器登錄到遠端伺服器登錄映射:”區域,然後“對於上面列表中未定義的登錄,連接將:”設置為“不進行”。

當我點擊確定時,我得到:

Access to the remote server is denied because no login-mapping exists

不能將 SQL 登錄映射到 Oracle 登錄嗎?有什麼辦法可以讓它工作嗎?

如果您添加的使用連結伺服器的使用者不是您目前使用的登錄名(並且它是您設置的唯一一個),當您點擊確定時,連接測試將失敗,因為目前使用者將擁有沒有使用連結伺服器的有效映射。

要解決這個問題,只需為您的登錄創建一個有效的映射。這樣,當您點擊“確定”時,測試將成功,因為目前使用者有一個有效的映射 - 如果您在兩個映射中對 Oracle 目標使用相同的設置,您將有信心它將為其他使用者工作( s)。或者忽略測試中的錯誤,並專門檢查您為其創建映射的使用者是否可以成功使用連結伺服器。

這裡的問題是您在兩個不同的 RDBMS 系統中有“使用者”的概念。不幸的是,RDBMS 產品使用文字(而不是引用)樣式標識符來表示它們的域實體(使用者、表、視圖、過程、角色等)。

該解決方案需要具有以下功能的中間件:

  1. 使用標識符的引用樣式表示概念或域實體(命名)(例如,HTTP URI,其中 <#OracleUserID> 和 <#SQLServerUserID> 分別表示 Oracle 和 SQL Server 使用者)
  2. 表達和理解實體關係語義的能力(例如,兩個實體是共指關係的參與者,其中 <#SQLServerUserID> <#sameAs> <#OracleUserID> 其中 <#sameAs> 表示上述關係)
  3. 能夠創建由實體關係語義驅動的數據訪問策略,從而在 SQL Server 和 Oracle 之間實現 DBMS 角色和相關權限的映射
  4. JDBC 連接的 ODBC,這樣您的客戶端可以通過 ODBC 或 JDBC 訪問上述功能,同時還可以通過 ODBC 或 JDBC 與 Oracle 和 SQL Server 進行通信。

最後,如果您樂於將中間件應用於此解決方案,您可以查看提供所描述功能的OpenLink Virtuoso 。

免責聲明:我是 openlink 軟體的創始人/CEO

引用自:https://dba.stackexchange.com/questions/45699