Programmazione di oggetti di sicurezza AMO
Si applica a:
SQL Server Analysis Services
Azure Analysis Services
Power BI Premium
In Analysis Services, la programmazione di oggetti di sicurezza o di applicazioni in esecuzione che utilizzano oggetti di sicurezza AMO richiede l'appartenenza al gruppo Amministratori server o al gruppo Amministratore di database sicurezza. Amministratore del server e Amministratore di database.
In Analysis Services, l'accesso utente a qualsiasi oggetto viene ottenuto tramite la combinazione di ruoli e autorizzazioni assegnati a tale oggetto. Per altre informazioni, vedere Classi di sicurezza AMO.
Oggetti ruolo e autorizzazione
I ruoli del server contengono esclusivamente un ruolo nella raccolta, ovvero il ruolo Administrators. Non è possibile aggiungere nuovi ruoli alla raccolta dei ruoli del server. L'appartenenza al ruolo Administrators consente l'accesso completo a ogni oggetto presente nel server
RoleGli oggetti vengono creati a livello di database. La manutenzione dei ruoli richiede solo l'aggiunta o la rimozione di membri da o verso il ruolo e l'aggiunta o l'eliminazione di ruoli Database all'oggetto. Un ruolo non può essere eliminato se è presente Permission un oggetto associato al ruolo. Per eliminare un ruolo, è necessario cercare tutti gli oggetti negli oggetti e rimuovere dalle autorizzazioni prima di poter Permission Database eliminare da Role Role Database .
Le autorizzazioni definiscono le azioni abilitate sull'oggetto in cui viene fornita l'autorizzazione. Le autorizzazioni possono essere fornite agli oggetti seguenti: Database , , , , e DataSource Dimension Cube MiningStructure MiningModel . La gestione delle autorizzazioni comporta la concessione o la revoca dell'accesso abilitato dalla proprietà di accesso corrispondente. Per ogni accesso abilitato, è disponibile una proprietà che può essere impostata sul livello di accesso desiderato. L'accesso può essere definito per le operazioni Process, ReadDefinition, Read, Write e Administer. L'accesso di amministrazione è definito solo Database nell'oggetto . Il livello di sicurezza di amministratore di database viene ottenuto quando il ruolo viene concesso con l'autorizzazione relativa al database Administer.
Nell'esempio seguente vengono creati quattro ruoli, ovvero Database Administrators, Processors, Writers e Readers.
Gli appartenenti al ruolo Database Administrators possono amministrare il database fornito.
Gli appartenenti al ruolo Processors possono elaborare tutti gli oggetti in un database e verificare i risultati. Per verificare i risultati, è necessario abilitare in modo esplicito l'accesso in lettura all'oggetto di database per il cubo fornito poiché le autorizzazioni di lettura non vengono applicate agli oggetti figlio.
Gli appartenenti al ruolo Writers possono leggere e scrivere nel cubo fornito e l'accesso alla cella è limitato alla dimensione "United States" relativa al cliente.
Gli appartenenti al ruolo Readers possono leggere nel cubo fornito e l'accesso alla cella è limitato alla dimensione "United States" relativa al cliente.
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
}