Nie jestem pewien, czy jest to możliwe, ale chciałbym ograniczyć moich użytkowników do określonych obszarów witryny intranetowej w oparciu o ich przynależność do określonych grup globalnych utworzonych w SQL Server.Skrypt zabezpieczający oparty na Global Group?
Na przykład, mam następujące menu w 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>
A potem następne w Kodeksie Behind że ogranicza co „poziom bezpieczeństwa” widzi „O” stronie:
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() to funkcja, którą utworzyłem na podstawie tabeli identyfikatorów użytkownika, ale utrzymanie stołu to ból, a przyszłe projekty będą trudne do skompilowania oryginalnego stołu, a będzie po prostu łatwiej jeśli mogę to zrobić w oparciu o istniejące grupy globalne.
Ktoś ma jakieś sugestie?
to zależy. DBA i administrator sieci to niekoniecznie ta sama osoba. Czy masz dostęp do grup globalnych? Zwykle DBA usuwa Domain Admin Global Group od lokalnych administratorów, gdy SQL Server jest skonfigurowany/zainstalowany. Obawiam się, że może się okazać, że podejście "oddzielnej tabeli" jest Twoją opcją. –
AFAIK, Grupy globalne nie są tworzone w SQL Server, są tworzone w domenie (konkretnie w AD). Można je następnie dodać do SQL Server jako login, ale SQL Server nie administruje nimi i ma ograniczone funkcje do ich przesłuchiwania. – RBarryYoung