Учебники

Апекс – Безопасность

Под безопасностью Apex понимается процесс применения настроек безопасности и применения правил совместного использования при выполнении кода. Классы Apex имеют настройки безопасности, которыми можно управлять с помощью двух ключевых слов.

Правила безопасности и обмена данными

Apex обычно работает в системном контексте, то есть с правами текущего пользователя. Безопасность на уровне поля и правила совместного использования не учитываются при выполнении кода. Только анонимный блочный код выполняется с разрешения пользователя, выполняющего код.

Наш код Apex не должен предоставлять конфиденциальные данные Пользователю, которые скрыты через настройки безопасности и общего доступа. Следовательно, безопасность Apex и соблюдение правила общего доступа являются наиболее важными.

С общим ключевым словом

Если вы используете это ключевое слово, то для кода Apex будут применены настройки общего доступа текущего пользователя к коду Apex. Это не обеспечивает разрешение профиля, только настройки общего доступа на уровне данных.

Давайте рассмотрим пример, в котором наш пользователь имеет доступ к 5 записям, но общее количество записей равно 10. Поэтому, когда класс Apex будет объявлен с ключевым словом «With Sharing», он вернет только 5 записей, по которым пользователь имеет доступ к.

пример

Во-первых, убедитесь, что вы создали не менее 10 записей в объекте «Клиент» с «Имя» из 5 записей как «Клиент ABC», а остальные 5 записей как «Клиент XYZ». Затем создайте правило общего доступа, в котором «Клиент ABC» будет доступен всем пользователям. Нам также нужно убедиться, что мы установили OWD объекта Customer как Private.

Вставьте приведенный ниже код в блок Anonymous в консоли разработчика.

// 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();

Без обмена ключевым словом

Как следует из названия, класс, объявленный с этим ключевым словом, выполняется в системном режиме, т. Е. Независимо от доступа пользователя к записи, запрос будет извлекать все записи.

// 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.

Настройка безопасности для класса Apex

Вы можете включить или отключить класс Apex для определенного профиля. Шаги для того же самого приведены ниже. Вы можете определить, какой профиль должен иметь доступ к какому классу.

Настройка безопасности класса Apex на странице списка классов

Шаг 1. В меню «Настройка» выберите «Разработка» → «Классы Apex».

Настройка Apex Cass Security Step1

Шаг 2 – Нажмите на название класса, который вы хотите ограничить. Мы нажали на CustomerOperationClass.

Настройка безопасности Apex Cass Step2

Шаг 3 – Нажмите на Безопасность.

Настройка безопасности Apex Cass Step3

Шаг 4. Выберите профили, которые вы хотите включить, в списке «Доступные профили» и нажмите «Добавить», или выберите профили, которые вы хотите отключить, в списке «Включенные профили» и нажмите «Удалить».

Настройка безопасности класса Apex Шаг 3

Шаг 5 – Нажмите на Сохранить.

Настройка безопасности Apex из набора разрешений

Шаг 1. В меню «Настройка» выберите «Управление пользователями» → «Наборы разрешений».

Настройка безопасности класса Apex из Permissionset Step1

Шаг 2 – Выберите набор разрешений.

Настройка безопасности класса Apex из Permissionset Step2

Шаг 3 – Нажмите на Доступ к классу Apex.

Настройка безопасности класса Apex из Permissionset Step3

Шаг 4 – Нажмите на Изменить.

Настройка безопасности класса Apex из Permissionset Step4

Шаг 5 – Выберите классы Apex, которые вы хотите включить, из списка «Доступные классы Apex» и нажмите «Добавить», или выберите классы Apex, которые вы хотите отключить, из списка «Включенные классы Apex» и нажмите «Удалить».

Настройка безопасности класса Apex из Permissionset Step5

Шаг 6 – Нажмите кнопку Сохранить.