Non sono sicuro che sia possibile, ma vorrei limitare i miei utenti a specifiche aree di un sito Intranet in base alla loro appartenenza a specifici gruppi globali creati in SQL Server.Script di sicurezza basato sul gruppo globale?
Per esempio, ho il seguente menu in ASP:
<div class="clear hideSkiplink" id="MainMenu">
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu"
IncludeStyleBlock="False" Orientation="Horizontal"
BackColor="#CC3300">
<Items>
<asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home" Selectable="true" />
<asp:MenuItem NavigateUrl="~/Forms/frmCensusList.aspx" Text="Census Editing"/>
<asp:MenuItem NavigateUrl="~/Forms/frmRoster.aspx" Text="Roster Editing"/>
<asp:MenuItem NavigateUrl="~/Forms/frmReportMenu.aspx" Text="Reporting"/>
<asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/>
<%-- <asp:MenuItem NavigateUrl="~/WebForm1.aspx" Text="Test"/>--%>
</Items>
</asp:Menu>
</div>
E allora la seguente nel codice dietro che limita ciò che "livello di sicurezza" può vedere la pagina "About":
protected void Page_Load(object sender, EventArgs e)
{
string path = Request.AppRelativeCurrentExecutionFilePath;
foreach (MenuItem item in NavigationMenu.Items)
{
item.Selected = item.NavigateUrl.Equals(path, StringComparison.InvariantCultureIgnoreCase);
}
// If the user isn't an Admin, hide the About menu option
string ActiveUser = System.Web.HttpContext.Current.User.Identity.Name;
string SecurityLevel = ActiveUser.SecLevel();
if (SecurityLevel != "ADMIN")
{
MenuItem mnuItem = NavigationMenu.FindItem("About"); // Find particular item
if (mnuItem != null)
{
NavigationMenu.Items.Remove(mnuItem);
}
}
}
SecLevel() è una funzione che ho creato basata su una tabella di ID utente, ma mantenere la tabella è un problema, inoltre i progetti futuri saranno un problema per compilare la tabella originale e sarà più semplice se posso farlo in base ai gruppi globali esistenti.
Qualcuno ha qualche suggerimento?
Dipende. DBA e amministratore di rete non sono necessariamente la stessa persona. Hai accesso ai gruppi globali? Di solito DBA rimuove Domain Admin Global Group dagli amministratori locali quando SQL Server è stato configurato/istallato. Temo che potresti scoprire che l'approccio "a tavolo separato" è la tua opzione dopotutto. –
AFAIK, i gruppi globali non vengono creati in SQL Server, sono creati in un dominio (in particolare in AD). Possono quindi essere aggiunti a SQL Server come accesso, ma SQL Server non li gestisce e dispone di funzioni limitate per interrogarli. – RBarryYoung