Apex - Sicurezza
La sicurezza Apex si riferisce al processo di applicazione delle impostazioni di sicurezza e di applicazione delle regole di condivisione sull'esecuzione del codice. Le classi Apex hanno impostazioni di sicurezza che possono essere controllate tramite due parole chiave.
Sicurezza dei dati e regole di condivisione
Apex viene generalmente eseguito nel contesto del sistema, ovvero le autorizzazioni dell'utente corrente. La sicurezza a livello di campo e le regole di condivisione non vengono prese in considerazione durante l'esecuzione del codice. Solo il codice del blocco anonimo viene eseguito con il permesso dell'utente che sta eseguendo il codice.
Il nostro codice Apex non deve esporre i dati sensibili all'utente che sono nascosti tramite le impostazioni di sicurezza e condivisione. Pertanto, la sicurezza di Apex e l'applicazione della regola di condivisione sono molto importanti.
Con la condivisione delle parole chiave
Se si utilizza questa parola chiave, il codice Apex applicherà le impostazioni di condivisione dell'utente corrente ad Apex code. Ciò non applica l'autorizzazione del profilo, ma solo le impostazioni di condivisione a livello di dati.
Consideriamo un esempio in cui, il nostro utente ha accesso a 5 record, ma il numero totale di record è 10. Quindi quando la classe Apex verrà dichiarata con la parola chiave "With Sharing", restituirà solo 5 record su cui l'utente ha accesso a.
Example
Innanzitutto, assicurati di aver creato almeno 10 record nell'oggetto Cliente con "Nome" di 5 record come "Cliente ABC" e riposa 5 record come "Cliente XYZ". Quindi, crea una regola di condivisione che condividerà il "Cliente ABC" con tutti gli utenti. Dobbiamo anche assicurarci di aver impostato l'OWD dell'oggetto Cliente come Privato.
Incolla il codice fornito di seguito nel blocco Anonimo nella Console per gli sviluppatori.
// Class With Sharing
public with sharing class MyClassWithSharing {
// Query To fetch 10 records
List<apex_customer__c> CustomerList = [SELECT id, Name FROM APEX_Customer__c LIMIT 10];
public Integer executeQuery () {
System.debug('List will have only 5 records and the actual records are'
+ CustomerList.size()+' as user has access to'+CustomerList);
Integer ListSize = CustomerList.size();
return ListSize;
}
}
// Save the above class and then execute as below
// Execute class using the object of class
MyClassWithSharing obj = new MyClassWithSharing();
Integer ListSize = obj.executeQuery();
Senza condividere la parola chiave
Come suggerisce il nome, la classe dichiarata con questa parola chiave viene eseguita in modalità System, cioè, indipendentemente dall'accesso dell'utente al record, la query recupererà tutti i record.
// Class Without Sharing
public without sharing class MyClassWithoutSharing {
List<apex_customer__c> CustomerList = [SELECT id, Name FROM APEX_Customer__c LIMIT 10];
// Query To fetch 10 records, this will return all the records
public Integer executeQuery () {
System.debug('List will have only 5 records and the actula records are'
+ CustomerList.size()+' as user has access to'+CustomerList);
Integer ListSize = CustomerList.size();
return ListSize;
}
}
// Output will be 10 records.
Impostazione della sicurezza per la classe Apex
È possibile abilitare o disabilitare una classe Apex per un profilo particolare. I passaggi per lo stesso sono riportati di seguito. È possibile determinare quale profilo deve avere accesso a quale classe.
Impostazione della sicurezza della classe Apex dalla pagina dell'elenco delle classi
Step 1 - Da Imposta, fai clic su Sviluppo → Classi Apex.
Step 2- Fare clic sul nome della classe che si desidera limitare. Abbiamo cliccato su CustomerOperationClass.
Step 3 - Fare clic su Sicurezza.
Step 4 - Selezionare i profili che si desidera abilitare dall'elenco Profili disponibili e fare clic su Aggiungi, oppure selezionare i profili che si desidera disabilitare dall'elenco Profili abilitati e fare clic su Rimuovi.
Step 5 - Fare clic su Salva.
Impostazione della protezione Apex dal set di autorizzazioni
Step 1 - Da Imposta, fare clic su Gestisci utenti → Set di autorizzazioni.
Step 2 - Seleziona un insieme di autorizzazioni.
Step 3 - Fare clic su Apex Class Access.
Step 4 - Fare clic su Modifica.
Step 5 - Selezionare le classi Apex che si desidera abilitare dall'elenco Classi Apex disponibili e fare clic su Aggiungi oppure selezionare le classi Apex che si desidera disabilitare dall'elenco Classi Apex abilitate e fare clic su Rimuovi.
Step 6 - Fare clic sul pulsante Salva.