Udostępnij za pośrednictwem


Programowanie AMO zabezpieczeń obiektów

In Microsoft SQL Server Usługi 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 Usługi Analysis Services.

W Usługi Analysis Services użytkownikowi dostępu do dowolnego obiektu jest uzyskiwana poprzez połączenie role i uprawnienia przypisane do tego obiektu.Aby uzyskać więcej informacji, zobacz AMO zabezpieczeń klas.

Rola i uprawnienia obiektów

Role serwera zawiera tylko jedną rolę kolekcja roli Administratorzy.Nie można dodać nowe role do kolekcja role serwera.Członkostwo w roli Administratorzy zezwala na pełny dostęp do wszystkich obiektów na serwerze

Role obiekty są tworzone poziom bazy danych.Konserwacja roli wymaga tylko dodawanie lub usuwanie członków z roli, lub oraz dodawanie i upuszczając ról do Database obiektu.Rola nie można usunąć, jeśli nie ma żadnych Permission obiektu skojarzone z rolą.Aby upuścić roli, wszystkie Permission obiektów w Database obiekty muszą być przeszukiwany oraz Role usunięty z uprawnienia, przed Role można upuszczać z Database.

Uprawnienia zdefiniuj akcje, włączonym obiektu, gdy dostarczone uprawnienie.Uprawnienia mogą być dostarczane do następujących obiektów: Database, DataSource, Dimension, Cube, MiningStructure, and MiningModel.Konserwacja uprawnienie wymaga przyznania lub odwoływanie włączony dostęp przez właściwość odpowiedniego dostępu.Dla każdego dostępu włączony jest właściwość, którą zestaw żądany poziom dostępu.Dostępu można zdefiniować dla następujących operacji: Proces ReadDefinition, Odczyt, zapis i administrowania.Administrowanie dostępu jest definiowana tylko na Database obiektu.Poziom zabezpieczeń administrator bazy danych są uzyskiwane, gdy rola jest przyznawana z uprawnieniami Administruj bazy danych.

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

Bazy danych Administratorzy mogą administrować podanej bazy danych.

Procesory można przetworzyć wszystkie obiekty w bazie danych i sprawdzić wyniki.Aby zweryfikować wyniki, do odczytu obiektu bazy danych musi być jawnie włączone do podanego moduł, ponieważ Odczyt uprawnień nie stosuje się do obiektów podrzędnych.

Autorzy mogą do odczytu i zapisu dostarczonego moduł i komórka dostęp jest ograniczony do Stanów Zjednoczonych w kliencie wymiar.

Czytelnicy mogą odczytywać na podany moduł, a komórka dostęp jest ograniczony do Stanów Zjednoczonych w kliencie wymiar.

        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
        }