精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:云計算企業動態 → 正文

管理Azure SQL數據庫的授權安全性

責任編輯:editor006 |來源:企業網D1Net  2015-03-27 14:56:59 本文摘自:51CTO

在規劃微軟Azure SQL Database部署時,一定要考慮所有需要在深度防御策略中實現的安全措施。我們已經在前面一篇文章中詳細介紹了實現基于防火墻的保護措施的一個方面。此外,我們還概括介紹了這個平臺即服務(PaaS)產品中內置的驗證、授權與加密特性。現在是時候更深入了解一些支持細粒度控制數據訪問的授權方法了,它們最多可以深入到控制各個數據庫對象和語句類型。

管理Azure SQL數據庫的授權安全性

在很大程度上,Azure SQLDatabase集成的驗證與授權機制基于成熟SQL Server實例所使用的相同原則,它既可以部署在內部網絡,也可以部署在Azure IaaS虛擬機上。然而,它們之間有一些值得注意的重要區別。在驗證方面,最重要的一點是缺少Windows集成身份驗證的支持。實際上,在每次建立SQL Database連接時,用戶都必須明確指定他們的登錄身份。這種方式與傳統SQL Server身份驗證方式相同,即便如此,還有一個重要的小問題。具體地說就是密碼重置,它會在本地使用場景中觸發自動重新驗證,從而導致會話中斷,即要求中斷當前會話,并且在重新連接之后才能繼續使用Azure SQL Database。(選擇采用這種方式的原因是為了消除自動重新連接可能對性能造成的負面影響,這對于基于云的服務而言尤為重要。)

從授權角度看,Azure SQLDatabase實現了方法更適合用在服務器層次上。最明顯的原因是,現在不能使用權限最高的sa登錄帳號和相應的sysadmin SQL服務器角色(以及所有其他固定的服務器角色)。相反,在管理一個托管各個SQL Database的邏輯SQL Server(包括表示一個數據庫管理單元的Azure平臺結構)時,必須用到主數據庫中預定義的兩個角色,其中包括:

loginmanager -分配了足夠創建和管理登錄帳號的權限(而不是securityadmin固定服務器角色)

dbmanager -分配了創建和管理數據庫的權限(而不是dbcreator固定服務角色)

這個區別體現在服務級安全性的管理方式上,它可以避免管理員過分依賴于Object Explorer of the SQL Server Management Studio中Security文件夾的圖形界面,迫使他們在連接主數據庫時執行相應的T-SQL語句。(雖然SQL ServerManagement Studio會通過將連接自動重定向主數據庫并在查詢窗口自動生成SQL登錄模板來實現透明的登錄過程)。

用戶數據庫角色與傳統SQL Server實現的已有角色相對應,并且包含以下角色:

db_accessadmin分配了用于創建和管理數據庫用戶的權限。

db_backupoperator分配了用于備份數據庫的權限。

db_datareader分配了用于從所有數據庫表和視圖讀取數據的權限。

db_datawriter分配了用于向所有數據庫表和視圖寫入數據的權限。

db_ddladmin分配了用于在數據庫創建和管理對象的權限。

db_denydatareader拒絕從數據庫任何一個表和視圖讀取數據的權限。

db_denydatawriter拒絕向數據庫任何一個表和視圖寫入數據的權限。

db_owner分配了用于執行所有數據庫配置和管理的權限。

db_securityadmin分配了用于管理數據庫角色成員和權限的權限。

如果想要進一步細分訪問權限,那么可以選擇使用模式級和對象級安全性,這就像數據庫角色一樣,與管理員熟悉的本地數據庫管理完全相同。具體地,你可以使用GRANT、REVOKE和DENY T-SQL語句控制每一個模式、對象實例或語句層次的權限。一定要記住,DENY優先級高于顯式分配或基于角色的權限。

要創建登錄帳號,你需要創建一個主數據庫連接會話,而創建用戶帳號需要直接連接目標數據庫。這一點非常重要,因為同一個會話無法切換數據庫上下文(原來通常可以通過執行語句USEdatabase T-SQL語句)——相反,你必須為每一個需要管理的數據庫建立獨立的會話。初始登錄帳號(也就是服務器級主登錄帳號)和主數據庫中相同名稱的用戶都是初始化SQL Server實例時自動創建的,無論是使用AzureManagement Portal、Azure PowerShell模塊還是執行相應的REST API初始化都是這樣。從授權角度看,這個登錄帳號是唯一的,因為它隱含就分配了loginmanager和dbmanager角色所關聯的權限(即便它實際上不是這些角色的成員)。此外,你可以用它連接同一個邏輯服務器的任何一個數據庫。

因此,你可以使用CREATE LOGIN T-SQL語句創建更多的登錄帳號(查詢主數據庫的sys.sql_logins視圖就可以列舉所有的登錄帳號)。要想使用這些帳號信息連接任何一個數據庫(包括主數據庫),必須先在該數據庫上創建一個相對應的用戶帳號。實際上,如果想要指定一個loginmanager或dbmanager角色的新成員,則需要先使用服務器級主登錄帳號登錄主數據庫,創建一個新的登錄帳號,然后再創建一個與此登錄帳號相關聯的用戶(使用CREATEUSER (...) FROM LOGIN T-SQL語句),最后再執行sp_addrolemember存儲過程。類似地,如果想讓這些登錄帳號可用于連接或管理任何一個用戶數據庫,則需要先連接該數據庫,在該數據庫上創建一個關聯的用戶帳號(同樣是使用 T-SQL語句),最后再執行sp_addrolemember存儲過程將新創建的用戶分配給一個或多個數據庫級角色。然而,如果dbmanager的成員需要連接他們自己創建的數據,則不受這個要求的限制,因為他們隱含已經關聯到dbo用戶帳號(這意味著它已經是db_owner角色的成員)。

這就是我們總結的Azure SQLDatabase數據保護管理方法,其重點是使用權限作為防御未授權訪問的額外措施。在后續文章中,我們將繼續介紹在云和混合環境中運行SQL Server的相關問題。

關鍵字:數據庫角色dbodbcreator

本文摘自:51CTO

x 管理Azure SQL數據庫的授權安全性 掃一掃
分享本文到朋友圈
當前位置:云計算企業動態 → 正文

管理Azure SQL數據庫的授權安全性

責任編輯:editor006 |來源:企業網D1Net  2015-03-27 14:56:59 本文摘自:51CTO

在規劃微軟Azure SQL Database部署時,一定要考慮所有需要在深度防御策略中實現的安全措施。我們已經在前面一篇文章中詳細介紹了實現基于防火墻的保護措施的一個方面。此外,我們還概括介紹了這個平臺即服務(PaaS)產品中內置的驗證、授權與加密特性。現在是時候更深入了解一些支持細粒度控制數據訪問的授權方法了,它們最多可以深入到控制各個數據庫對象和語句類型。

管理Azure SQL數據庫的授權安全性

在很大程度上,Azure SQLDatabase集成的驗證與授權機制基于成熟SQL Server實例所使用的相同原則,它既可以部署在內部網絡,也可以部署在Azure IaaS虛擬機上。然而,它們之間有一些值得注意的重要區別。在驗證方面,最重要的一點是缺少Windows集成身份驗證的支持。實際上,在每次建立SQL Database連接時,用戶都必須明確指定他們的登錄身份。這種方式與傳統SQL Server身份驗證方式相同,即便如此,還有一個重要的小問題。具體地說就是密碼重置,它會在本地使用場景中觸發自動重新驗證,從而導致會話中斷,即要求中斷當前會話,并且在重新連接之后才能繼續使用Azure SQL Database。(選擇采用這種方式的原因是為了消除自動重新連接可能對性能造成的負面影響,這對于基于云的服務而言尤為重要。)

從授權角度看,Azure SQLDatabase實現了方法更適合用在服務器層次上。最明顯的原因是,現在不能使用權限最高的sa登錄帳號和相應的sysadmin SQL服務器角色(以及所有其他固定的服務器角色)。相反,在管理一個托管各個SQL Database的邏輯SQL Server(包括表示一個數據庫管理單元的Azure平臺結構)時,必須用到主數據庫中預定義的兩個角色,其中包括:

loginmanager -分配了足夠創建和管理登錄帳號的權限(而不是securityadmin固定服務器角色)

dbmanager -分配了創建和管理數據庫的權限(而不是dbcreator固定服務角色)

這個區別體現在服務級安全性的管理方式上,它可以避免管理員過分依賴于Object Explorer of the SQL Server Management Studio中Security文件夾的圖形界面,迫使他們在連接主數據庫時執行相應的T-SQL語句。(雖然SQL ServerManagement Studio會通過將連接自動重定向主數據庫并在查詢窗口自動生成SQL登錄模板來實現透明的登錄過程)。

用戶數據庫角色與傳統SQL Server實現的已有角色相對應,并且包含以下角色:

db_accessadmin分配了用于創建和管理數據庫用戶的權限。

db_backupoperator分配了用于備份數據庫的權限。

db_datareader分配了用于從所有數據庫表和視圖讀取數據的權限。

db_datawriter分配了用于向所有數據庫表和視圖寫入數據的權限。

db_ddladmin分配了用于在數據庫創建和管理對象的權限。

db_denydatareader拒絕從數據庫任何一個表和視圖讀取數據的權限。

db_denydatawriter拒絕向數據庫任何一個表和視圖寫入數據的權限。

db_owner分配了用于執行所有數據庫配置和管理的權限。

db_securityadmin分配了用于管理數據庫角色成員和權限的權限。

如果想要進一步細分訪問權限,那么可以選擇使用模式級和對象級安全性,這就像數據庫角色一樣,與管理員熟悉的本地數據庫管理完全相同。具體地,你可以使用GRANT、REVOKE和DENY T-SQL語句控制每一個模式、對象實例或語句層次的權限。一定要記住,DENY優先級高于顯式分配或基于角色的權限。

要創建登錄帳號,你需要創建一個主數據庫連接會話,而創建用戶帳號需要直接連接目標數據庫。這一點非常重要,因為同一個會話無法切換數據庫上下文(原來通常可以通過執行語句USEdatabase T-SQL語句)——相反,你必須為每一個需要管理的數據庫建立獨立的會話。初始登錄帳號(也就是服務器級主登錄帳號)和主數據庫中相同名稱的用戶都是初始化SQL Server實例時自動創建的,無論是使用AzureManagement Portal、Azure PowerShell模塊還是執行相應的REST API初始化都是這樣。從授權角度看,這個登錄帳號是唯一的,因為它隱含就分配了loginmanager和dbmanager角色所關聯的權限(即便它實際上不是這些角色的成員)。此外,你可以用它連接同一個邏輯服務器的任何一個數據庫。

因此,你可以使用CREATE LOGIN T-SQL語句創建更多的登錄帳號(查詢主數據庫的sys.sql_logins視圖就可以列舉所有的登錄帳號)。要想使用這些帳號信息連接任何一個數據庫(包括主數據庫),必須先在該數據庫上創建一個相對應的用戶帳號。實際上,如果想要指定一個loginmanager或dbmanager角色的新成員,則需要先使用服務器級主登錄帳號登錄主數據庫,創建一個新的登錄帳號,然后再創建一個與此登錄帳號相關聯的用戶(使用CREATEUSER (...) FROM LOGIN T-SQL語句),最后再執行sp_addrolemember存儲過程。類似地,如果想讓這些登錄帳號可用于連接或管理任何一個用戶數據庫,則需要先連接該數據庫,在該數據庫上創建一個關聯的用戶帳號(同樣是使用 T-SQL語句),最后再執行sp_addrolemember存儲過程將新創建的用戶分配給一個或多個數據庫級角色。然而,如果dbmanager的成員需要連接他們自己創建的數據,則不受這個要求的限制,因為他們隱含已經關聯到dbo用戶帳號(這意味著它已經是db_owner角色的成員)。

這就是我們總結的Azure SQLDatabase數據保護管理方法,其重點是使用權限作為防御未授權訪問的額外措施。在后續文章中,我們將繼續介紹在云和混合環境中運行SQL Server的相關問題。

關鍵字:數據庫角色dbodbcreator

本文摘自:51CTO

電子周刊
回到頂部

關于我們聯系我們版權聲明隱私條款廣告服務友情鏈接投稿中心招賢納士

企業網版權所有 ©2010-2024 京ICP備09108050號-6 京公網安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 湘乡市| 巢湖市| 高清| 冕宁县| 同江市| 会理县| 光泽县| 房产| 平罗县| 鄂伦春自治旗| 江口县| 左贡县| 随州市| 孝昌县| 高青县| 抚顺市| 青海省| 霍邱县| 墨脱县| 中超| 中牟县| 洛隆县| 宁德市| 喜德县| 乌兰浩特市| 浪卡子县| 郸城县| 西城区| 伊宁县| 油尖旺区| 罗源县| 宝坻区| 商南县| 靖西县| 北海市| 兰溪市| 永川市| 澎湖县| 揭阳市| 聂拉木县| 正镶白旗|