Puncak - Keamanan
Keamanan Apex mengacu pada proses penerapan pengaturan keamanan dan menegakkan aturan berbagi pada menjalankan kode. Kelas Apex memiliki pengaturan keamanan yang dapat dikontrol melalui dua kata kunci.
Keamanan Data dan Aturan Berbagi
Apex umumnya berjalan dalam konteks sistem, yaitu izin pengguna saat ini. Keamanan tingkat lapangan, dan aturan berbagi tidak diperhitungkan selama eksekusi kode. Hanya kode blok anonim yang dijalankan dengan izin dari pengguna yang menjalankan kode tersebut.
Kode Apex kami tidak boleh mengekspos data sensitif kepada Pengguna yang disembunyikan melalui pengaturan keamanan dan berbagi. Karenanya, keamanan Apex dan menegakkan aturan berbagi adalah yang paling penting.
Dengan Berbagi Kata Kunci
Jika Anda menggunakan kata kunci ini, maka kode Apex akan memberlakukan pengaturan Berbagi dari pengguna saat ini ke kode Apex. Ini tidak memberlakukan izin Profil, hanya setelan berbagi tingkat data.
Mari kita pertimbangkan contoh di mana, Pengguna kita memiliki akses ke 5 catatan, tetapi jumlah total catatan adalah 10. Jadi ketika kelas Apex akan dideklarasikan dengan Kata Kunci "Dengan Berbagi", itu hanya akan mengembalikan 5 catatan di mana pengguna memiliki akses ke.
Example
Pertama, pastikan bahwa Anda telah membuat setidaknya 10 rekaman di objek Pelanggan dengan 'Nama' dari 5 rekaman sebagai 'Pelanggan ABC' dan sisanya 5 rekaman sebagai 'Pelanggan XYZ'. Kemudian, buat aturan berbagi yang akan membagikan 'Pelanggan ABC' dengan semua Pengguna. Kami juga perlu memastikan bahwa kami telah menetapkan OWD objek Pelanggan sebagai Pribadi.
Tempel kode yang diberikan di bawah ini ke blok Anonim di Konsol Pengembang.
// 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();
Tanpa Berbagi Kata Kunci
Seperti namanya, kelas yang dideklarasikan dengan kata kunci ini dijalankan dalam mode Sistem, yaitu, terlepas dari akses Pengguna ke catatan, kueri akan mengambil semua catatan.
// 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.
Mengatur Keamanan untuk Kelas Apex
Anda dapat mengaktifkan atau menonaktifkan kelas Apex untuk profil tertentu. Langkah-langkah yang sama diberikan di bawah ini. Anda dapat menentukan profil mana yang harus memiliki akses ke kelas mana.
Mengatur keamanan kelas Apex dari halaman daftar kelas
Step 1 - Dari Setup, klik Develop → Apex Classes.
Step 2- Klik nama kelas yang ingin Anda batasi. Kami telah mengklik CustomerOperationClass.
Step 3 - Klik Keamanan.
Step 4 - Pilih profil yang ingin Anda aktifkan dari daftar Profil yang Tersedia dan klik Tambah, atau pilih profil yang ingin Anda nonaktifkan dari daftar Profil yang Diaktifkan dan klik Hapus.
Step 5 - Klik Simpan.
Mengatur Keamanan Apex dari Set Izin
Step 1 - Dari Setup, klik Manage Users → Permission Sets.
Step 2 - Pilih satu set izin.
Step 3 - Klik pada Akses Kelas Apex.
Step 4 - Klik Edit.
Step 5 - Pilih kelas Apex yang ingin Anda aktifkan dari daftar Kelas Apex yang Tersedia dan klik Tambah, atau pilih kelas Apex yang ingin Anda nonaktifkan dari daftar Kelas Apex yang Diaktifkan dan klik hapus.
Step 6 - Klik tombol Simpan.