Compartir a través de


Programar objetos de seguridad AMO

En MicrosoftSQL ServerAnalysis Services, programar objetos de seguridad o ejecutar aplicaciones que usan objetos de seguridad AMO requiere ser un miembro del grupo administrador del servidor o del grupo administrador de base de datos. Tanto el administrador del servidor como el administrador de base de datos son niveles de acceso que proporciona SQL ServerAnalysis Services.

En Analysis Services, el acceso de usuario a cualquier objeto se obtiene a través de la combinación de roles y permisos que se asignan a ese objeto. Para obtener más información, vea Clases Security de AMO.

Objetos de rol y permiso

Los roles del servidor contienen un único rol en la colección, el rol de los administradores. Los nuevos roles no se pueden agregar a la colección de roles del servidor. La pertenencia en el rol de los administradores permite el acceso completo a cada objeto del servidor

Los objetos Role se crean en el nivel de base de datos. El mantenimiento del rol requiere únicamente agregar o quitar miembros al rol o del rol, así como agregar o quitar roles al objeto Database. Un rol no se puede quitar si es cualquier objeto Permission asociado al rol. Para quitar un rol, se deben buscar todos los objetos Permission en los objetos Database y quitar los permisos de Role, antes de que Role se quite de Database.

Los permisos definen las acciones habilitadas en el objeto donde se proporciona el permiso. Se pueden proporcionar permisos a los objetos siguientes: Database, DataSource, Dimension, Cube, MiningStructurey MiningModel. El mantenimiento del permiso implica conceder o revocar acceso habilitado por la propiedad de acceso correspondiente. Para cada acceso habilitado, hay una propiedad que se puede establecer en el nivel de acceso que se desee. El acceso se puede definir para las operaciones siguientes: Procesar, Leer definición, Leer, Escribir y Administrar. Administrar el acceso únicamente se define en el objeto Database. Se obtiene el nivel de seguridad del administrador de bases de datos cuando se concede el rol con el permiso para administrar la base de datos.

En el ejemplo siguiente se crean cuatro roles: Administradores de bases de datos, Procesadores, Escritores y Lectores.

Los administradores de bases de datos pueden administrar la base de datos proporcionada.

Los procesadores pueden procesar todos los objetos en una base de datos y comprobar los resultados. Para comprobar los resultados, se debe habilitar explícitamente al cubo proporcionado el acceso de lectura al objeto de la base de datos, porque el permiso de lectura no se aplica a objetos secundarios.

Los escritores pueden leer y escribir al cubo proporcionado y el acceso a celdas se limita a la dimensión del cliente en 'United States'.

Los lectores pueden leer en el cubo proporcionado y el acceso a celdas se limita a la dimensión del cliente en 'United States'.

        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
        }

Vea también

Referencia

Microsoft.AnalysisServices

Conceptos

Introducción a las clases AMO

Programar objetos de seguridad AMO

Permisos y derechos de acceso (Analysis Services - Datos multidimensionales)

Arquitectura lógica (Analysis Services - Datos multidimensionales)

Objetos de base de datos (Analysis Services - Datos multidimensionales)

Otros recursos

Proteger la instancia de Analysis Services