Udostępnij za pośrednictwem


Programming AMO Security Objects

In Microsoft SQL Server Analysis Services, programming security objects or running applications that use AMO security objects requires being a member of the Server Administrator group or the Database Administrator group.Server Administrator and Database Administrator are an access levels supplied by SQL Server Analysis Services.

W Analysis Services dostęp użytkownika do każdego obiektu jest uzyskiwany za pomocą kombinacji role i uprawnienia przypisane do tego obiektu. Aby uzyskać więcej informacji zobacz AMO Security Classes.

Rola i uprawnienia obiektów

Role serwera zawierają tylko jedną rolę w kolekcja roli Administratorzy.Nie można dodać nowe role do kolekcja ról serwera.Członkostwo w roli Administratorzy pozwala na pełny dostęp do każdego obiektu na serwerze

Role obiekty są tworzone poziom bazy danych.Wymaga obsługi roli tylko dodawanie lub usuwanie członków z roli, lub oraz dodawanie i upuszczenie role do Database obiekt. Nie można go usunąć rolę, jeśli nie ma żadnego Permission obiekt skojarzone z rolą. Aby usunąć rolę, wszystkie Permission obiekty w Database obiekty muszą być przeszukiwany oraz Role usunięta z uprawnienia, zanim Role może być usunięte z Database.

Uprawnienia do definiowania akcji włączonych podano uprawnienia do obiektu.Uprawnienia mogą być dostarczane do następujących obiektów: Database, DataSource, Dimension, Cube, MiningStructure, a MiningModel. Uprawnienie konserwacji polega na przyznanie lub odwoływanie włączony dostęp przez właściwość odpowiedni dostęp.Dla każdego dostępu, włączony istnieje właściwość, która może być ustawiona na żądanym poziomie dostępu.Dostęp może być określony dla następujących czynności: Proces ReadDefinition, Odczyt, zapis i administrowanie. Administrowanie, dostęp jest tylko zdefiniowana Database obiekt. Poziom zabezpieczeń administrator bazy danych jest uzyskiwany przy udzielaniu rolę z uprawnieniami Administruj bazy danych.

Poniższy przykład tworzy cztery role: Administratorzy baz danych, procesory, autorzy i czytelników.

Baza danych administratorzy mogą administrować podanej bazy danych.

Procesorów może przetwarzać wszystkie obiekty w bazie danych i sprawdzić wyniki.Aby zweryfikować wyniki, prawo do odczytu obiektu bazy danych musi być jawnie włączone dostarczonego moduł, ponieważ odczytu, uprawnienie nie ma zastosowania do obiektów podrzędnych.

Autorzy mogą odczytywać i zapisywać dostarczonego moduł, a komórka dostęp jest ograniczony do "USA" w wymiarze odbiorcy.

Czytelnicy mogą odczytywać w odniesieniu do podanego moduł, a komórka dostęp jest ograniczony do "USA" w wymiarze odbiorcy.

        static public void CreateRolesAndPermissions(Database db, Cube cube)
        {
            Role role;
            DatabasePermission dbperm;
            CubePermission cubeperm;

            #region Create the Database Administrators role

            // Create the Database Administrators role.
            role = db.Roles.Add("Database Administrators");
            role.Members.Add(new RoleMember("")); // e.g. domain\user
            role.Update();

            // Assign administrative permissions to this role.
            // Members of this role can perform any operation within the database.
            dbperm = db.DatabasePermissions.Add(role.ID);
            dbperm.Administer = true;
            dbperm.Update();

            #endregion

            #region Create the Processors role

            // Create the Processors role.
            role = db.Roles.Add("Processors");
            role.Members.Add(new RoleMember("")); // e.g. myDomain\johndoe
            role.Update();

            // Assign Read and Process permissions to this role.
            // Members of this role can process objects in the database and query them to verify results.
            // Process permission applies to all contained objects, i.e. all dimensions and cubes.
            // Read permission does not apply to contained objects, so we must assign the permission explicitly on the cubes.
            dbperm = db.DatabasePermissions.Add(role.ID);
            dbperm.Read = ReadAccess.Allowed;
            dbperm.Process = true;
            dbperm.Update();

            cubeperm = cube.CubePermissions.Add(role.ID);
            cubeperm.Read = ReadAccess.Allowed;
            cubeperm.Update();

            #endregion

            #region Create the Writers role

            // Create the Writers role.
            role = db.Roles.Add("Writers");
            role.Members.Add(new RoleMember("")); // e.g. redmond\johndoe
            role.Update();

            // Assign Read and Write permissions to this role.
            // Members of this role can discover, query and writeback to the Adventure Works cube.
            // However cell access and writeback is restricted to the United States (in the Customer dimension).
            dbperm = db.DatabasePermissions.Add(role.ID);
            dbperm.Read = ReadAccess.Allowed;
            dbperm.Update();

            cubeperm = cube.CubePermissions.Add(role.ID);
            cubeperm.Read = ReadAccess.Allowed;
            cubeperm.Write = WriteAccess.Allowed;
            cubeperm.CellPermissions.Add(new CellPermission(CellPermissionAccess.Read, "[Customer].[Country-Region].CurrentMember is [Customer].[Country-Region].[Country-Region].&[United States]"));
            cubeperm.CellPermissions.Add(new CellPermission(CellPermissionAccess.ReadWrite, "[Customer].[Country-Region].CurrentMember is [Customer].[Country-Region].[Country-Region].&[United States]"));
            cubeperm.Update();

            #endregion

            #region Create the Readers role

            // Create the Readers role.
            role = db.Roles.Add("Readers");
            role.Members.Add(new RoleMember("")); // e.g. redmond\johndoe
            role.Update();

            // Assign Read permissions to this role.
            // Members of this role can discover and query the Adventure Works cube.
            // However the Customer dimension is restricted to the United States.
            dbperm = db.DatabasePermissions.Add(role.ID);
            dbperm.Read = ReadAccess.Allowed;
            dbperm.Update();

            cubeperm = cube.CubePermissions.Add(role.ID);
            cubeperm.Read = ReadAccess.Allowed;
            Dimension dim = db.Dimensions.GetByName("Customer");
            DimensionAttribute attr = dim.Attributes.GetByName("Country-Region");
            CubeDimensionPermission cubedimperm = cubeperm.DimensionPermissions.Add(dim.ID);
            cubedimperm.Read = ReadAccess.Allowed;
            AttributePermission attrperm = cubedimperm.AttributePermissions.Add(attr.ID);
            attrperm.AllowedSet = "{[Customer].[Country-Region].[Country-Region].&[United States]}";
            cubeperm.Update();

            #endregion
        }