Per alcuni SE16 potrebbe essere una sigla assolutamente sconosciuta. Per altri il "pane quotidiano". Si tratta di una transazione SAP molto conosciuta agli amministratori. E spesso non solo loro purtroppo.
Ma a cosa serve? Quante versioni ne esistono? Come utilizzarla e quali sono i rischi connessi?
Ne parliamo in questo articolo!
A cosa serve?
È una transazione che permette di avere accesso diretto, in lettura (ma può essere in alcuni casi usata anche per modificare dati), a tutte le tabelle SAP che compongono il database.
In altre parole, con questa transazione è possibile avere accesso a qualsiasi dato salvato in un sistema SAP. Chiaramente tutti i sistemi SAP basati su ABAP (es. Success Factors o SAP Cloud Platform, non rientrano in questo caso)
Ma quali dati ad esempio?
- Elenco materiali, con costi e qualsiasi altro dato
- Distinte base in ogni loro aspetto
- Anagrafiche clienti e fornitori in ogni loro aspetto
- Cedolini e dati personali (nel caso di sistemi SAP HR)
- e qualsiasi altra informazione
Pur essendo una transazione in sola lettura può rappresentare un problema di riservatezza dei dati nel caso sia rilasciata in maniera non "ragionata". Esistono diversi modi per rilasciarla riducendo le criticità tuttavia, se possibile è sempre meglio evitare.
Quante versioni ne esistono?
Diciamo che nel tempo ci sono state diverse evoluzioni per questa transazione. All'inizio esisteva solamente la SE16, poi ne sono state create diverse versioni migliorate e con molte funzionalità aggiuntive ad esempio la SE16N.
Non dobbiamo dimenticare che non esistono solo le transazioni SE16 like, ma esistono diverse ulteriori transazioni come SE11 o SE17 ma anche molte altre che permettono di vedere il contenuto delle tabelle SAP.
Ecco un elenco non esaustivo delle principali SE16*
SE16 Data Browser
SE16H General Table Display
SE16N General Table Display
SE16N_ROLE General Table Display
SE16RFCDESSECU Data Browser RFCDESSECU
SE16S General Table and Value Search
SE16SL Field-Based Table and Value Search
SE16S_CUST Customizing: Tables and Value Search
SE16T Access Search Functions
SE16T000 Data Browser T000
SE16TXCOMSECU Data Browser TXCOMSECU
SE16USR40 Data Browser USR40
SE16USRACL Data Browser USRACL
SE16USRACLEXT Data Browser USRACLEXT
SE16V_T599R Data Browser V_T599R
SE16W3TREES Data Browser W3TREES
SE16WWWFUNC Data Browser WWWFUNC
SE16WWWREPS Data Browser WWWREPS
SE16_AGR_DEFINE Technical View for AGR_DEFINE
SE16_ANEA Data Browser ANEA
SE16_ANEK Data Browser ANEK
SE16_ANEP Data Browser ANEP
SE16_ANLA Data Browser ANLA
SE16_ANLC Data Browser ANLC
SE16_ANLP Data Browser ANLP
SE16_ANLZ Data Browser ANLZ
SE16_BKPF Data Browser BKPF
SE16_BSEG Data Browser BSEG
SE16_BSEG_ADD Data Browser BSEG_ADD
SE16_BSID Data Browser BSID
SE16_BSIK Data Browser BSIK
SE16_BSIS Data Browser BSIS
SE16_ECMCA Data Browser Journal Entries
SE16_ECMCT Data Browser Totals Records
SE16_KNA1 Data Browser KNA1
SE16_KNB1 Data Browser KNB1
SE16_LFA1 Data Browser LFA1
SE16_LFB1 Data Browser LFB1
SE16_MARA Data Browser MARA
SE16_MARC Data Browser MARC
SE16_RFCDESSECU Data Browser RFCDESSECU
SE16_SKA1 Data Browser SKA1
SE16_SKB1 Data Browser SKB1
SE16_T000 Data Browser T000
SE16_T807R Data Browser T807R
SE16_TCJ_CHECK_STACK Data Browser TCJ_CHECK_STACKS
SE16_TCJ_CPD Data Browser TCJ_CPD
SE16_TCJ_C_JOURNALS Data Browser TCJ_C_JOURNALS
SE16_TCJ_DOCUMENTS Data Browser TCJ_DOCUMENTS
SE16_TCJ_POSITIONS Data Browser TCJ_POSITIONS
SE16_TCJ_WTAX_ITEMS Data Browser TCJ_WTAX_ITEMS
SE16_TXCOMSECU Data Browser TXCOMSECU
SE16_USR40 Data Browser USR40
SE16_USRACL Data Browser USRACL
SE16_USRACLEXT Data Browser USRACLEXT
SE16_V_T599R Data Browser V_T599R
SE16_W3TREES Data Browser W3TREES
SE16_WWWFUNC Data Browser WWWFUNC
SE16_WWWREPS Data Browser WWWREPS
Ma esistono anche ulteriori transazioni meno note e con naming diversa che permettono di vedere le tabelle, ad esempio la RSSG_BROWSER.
Utile in alcuni contesti la transazione SE16T che permette di cercare in in base a descrizione le tabelle o transazioni. Vedi "Find Transactions" e "Find Tables"
SE16N back door
A volte viene sollevata la seguente osservazione: "tanto è in sola visualizzazione, possiamo rilasciarla".
Nella maggior parte dei casi è vero, si tratta di una transazione in sola visualizzazione. Tuttavia, può non essere così e dipende dalle autorizzazioni dell'utente e dalla configurazione del sistema.
Premesso che anche la sola visualizzazione è critica (soprattutto nel contesto di policy interne e GDPR per quanto riguarda il trattamento dei dati personali).
Subito dopo il rilascio da parte di SAP della transazione SE16N era stata inserita da SAP una "backdoor" chiamata &sap_edit, dopo la diffusione in rete di questa backdoor la SAP ha deciso di bloccarla.
Tramite il programma RKSE16N_EDIT è possibile tuttavia decidere se questa funzionalità debba essere attiva o meno.
Attenzione non solo le transazioni sono critiche ma anche l'esecuzione dei programmi o function associati alle transazioni SE16* es. RK_SE16N o RSDU_CALL_SE16
Perché può essere critica?
Lo abbiamo già citato sopra. SAP permette di effettuare la segregazione dei dati andando a rilasciare agli utenti le transazioni specifiche per ogni attività di business. Un utente può quindi avere un insieme di queste transazioni che gli permettono di svolgere il proprio lavoro. In base alla responsabilità definite.
Rilasciando la SE16* è come aprire una porta speciale che consente di arrivare a dati non formalmente rilasciati dal perimetro delle transazioni assegnate a questo utente. Di fatto bypassando la segregazione transazionale prevista da SAP.
Inoltre, se l'utente possiede autorizzazioni di debug (oggetto autorizzativo S_DEVELOP in modifica) è possibile effettuare modifiche.
P.S. Le modifiche fatte tramite SE16N si possono vedere nelle tabelle SE16N_CD_KEY e SE16N_CD_DATA. Attenzione anche queste tabelle possono essere modificate
SE16N_EMERGENCY
Cosa fare se qualcuno deve svolgere delle modifiche di emergenza tramite questa transazione in produzione. In questo caso la nota OSS seguente può essere utile 2911103 - SE16N: Alternative edit mode SE16N_EMERGENCY.
Di default la transazione viene bloccata al primo utilizzo. Poi si sblocca solo su specifica richiesta e si ri-blocca tramite la transazione SM01_CUS. tracciando quanto viene fatto.
1) Sblocco della transazione, da parte di un amministratore
2) Utilizzo della transazione, con dettaglio delle modifiche fatte es. Ticket XYZ
3) Documentazione delle modifiche fatte
Ma quali le mitigazioni per rilasciare SE16?
Esistono delle soluzioni alternative per rilasciarla.
Ci sono utenti che devono poter accedere a delle tabelle specifiche. In questo caso, se il numero di tabelle non è elevatissimo, è possibile definire delle transazioni chiamate parametriche (tramite la transazione SE93, vedi immagine sotto)
che permettono di sfruttare la SE16 per leggere direttamente una specifica tabella (senza dare la possibilità di inserirla all'utente), saltando quindi la schermata iniziale.
Nel caso in cui il numero di transazioni da rilasciare sia estremamente elevato possono esserci due scenari a mio avviso:
- Perché l'utente deve accedere a così tante tabelle direttamente?
- Perché non utilizza le transazioni standard SAP
- Se deve visualizzare parti di configurazione del sistema, esiste anche il sistema di QAS eventualmente
- Definire una transazione custom che permetta di selezionare le tabelle da poter visualizzare. In questo caso con una sola transazione rilasciata e sviluppata è possibile rilasciare le tabelle da visualizzare. Non la suggerisco tuttavia (anche se realizzata in alcuni contesti).
Ma se proprio devi rilasciarla come puoi circoscrivere l'accesso?
Puoi:
- utilizzare gli oggetti autorizzativi che SAP mette a disposizione per proteggere l'accesso alle tabelle. Leggi qui il post dedicato agli oggetti autorizzativi specifici.
- usare la funzionalità vista sopra della SE16N_EMERGENCY se già presente
- in ogni caso conviene attivare il security audit log in particolare gli eventi seguenti (potrai vedere chi ha usato una transazione critica e su quali tabelle). Attenzione se attivi i log poi devono essere controllati ed usati. L'alternativa è quella di utilizzare il componente Emergency Access Management (per automatizzare la gestione del provisioning di queste abilitazioni e la gestione dei log)
- DU9 - Generic table access using transactions es. SE16, SE16N, SM30, SM31, SM34, o SQV (OSS note 2041892)
- CUZ - Generic table access by RFC to &A with activity &B
Attenzione quindi alle richieste durante la manutenzione del sistema (AMS) che potrebbero arrivare. Meglio pensarci due volte prima di rilasciarla.