Yes, FLS checks are required in batch job execute methods when retrieving or manipulating customer data. To implement proper FLS enforcement in batch classes:
1. **Explicit CRUD/FLS Checks**: Use methods like `isAccessible()`, `isCreateable()`, `isUpdateable()`, and `isDeletable()` from the `Schema.DescribeFieldResult` or `Schema.DescribeSObjectResult` classes to validate field and object permissions before performing DML operations.
2. **Use Schema Methods**: Utilize `Schema.sObjectType` to verify field-level security (FLS) and CRUD permissions before performing DML operations.
3. **SOQL Queries with Security**: Use the `WITH SECURITY_ENFORCED` clause in your SOQL queries to enforce CRUD/FLS checks on fields in the `SELECT` and `FROM` clauses. Note that manual checks are still needed for fields in the `WHERE` or `ORDER BY` clauses.
4. **USER_MODE Execution**: Where applicable, run the batch class in "user mode" to automatically enforce sharing and CRUD/FLS rules.
5. **Apply Sharing Context**: Use the `with sharing` keyword in the batch class to enforce sharing rules, unless there's a specific business need to use `without sharing`.
6. **Code Analysis Tools**: Leverage tools like Salesforce Code Analyzer to identify and address any potential violations.
These practices ensure compliance with security requirements for accessing standard fields and prevent unauthorized access or exposure of sensitive data.