Read-Only-User im Enterprise Manager
Der Oracle Enterprise Manager ist eine hilfreiche grafische Oberfläche, mit der sich auch nicht ganz so versierte Anwender Informationen zu Oracle-Datenbanken anzeigen lassen können. „Leider“ (in diesem Zusammenhang 🙂 ) ist der EM auch ein sehr mächtiges Tool und wenn Benutzer zuviele Rechte haben, dann können sie schlimmstenfalls auch Schaden anrichten. Wie kann man also das Prinzip „Nur gucken, aber nichts anfassen“ im Enterprise Manager realisieren?
Oracle Enterprise Manager 12c Cloud Control
Im EM 12c Cloud Control brauchen wir zwei Schritte, um einem Benutzer einen Read-Only-Zugriff auf die Datenbanken zu ermöglichen:
1. Anlegen eines Benutzers im Enterprise Manager
Im Enterprise Manager muss ein Benutzer angelegt werden („Setup -> Security -> Administrators“) , der die Rechte „VIEW ANY TARGET“ bekommt. Alternativ kann auch der Zugriff auf einzelne Ziele gewährt werden, um die Möglichkeiten weiter einzuschränken.
2. Anlegen von Datenbank-Benutzern
Damit sich der EM-Benutzer Datenbank-Informationen anzeigen lassen kann, muss er sich an der Datenbank anmelden. Damit dieser User nur eingeschränkte Rechte auf die Datenbank bekommt, gibt es die Rolle „OEM_MONITOR“. Wenn der User diese Rolle bekommt, erhält er damit folgende Rechte:
SQL> column owner format a10 SQL> column table_name format a30 SQL> column privilege format a30 SQL> set linesize 200 SQL> set pagesize 100 SQL> select privilege from dba_sys_privs where grantee='OEM_MONITOR'; PRIVILEGE ------------------------------ CREATE JOB ANALYZE ANY ANALYZE ANY DICTIONARY MANAGE ANY QUEUE ADVISOR CREATE SESSION SELECT ANY DICTIONARY 7 rows selected. SQL> select granted_role from dba_role_privs where grantee='OEM_MONITOR'; GRANTED_ROLE ------------------------------------------ SELECT_CATALOG_ROLE SQL> select owner,table_name,privilege from dba_tab_privs where grantee='OEM_MONITOR'; OWNER TABLE_NAME PRIVILEGE ---------- ------------------------------ ----------------------- SYS DBMS_DRS EXECUTE SYS DBMS_AQ EXECUTE SYS DBMS_AQADM EXECUTE SYS DBMS_SERVER_ALERT EXECUTE SYS DBMS_MONITOR EXECUTE SYS DBMS_WORKLOAD_REPOSITORY EXECUTE SYS DBMS_SYSTEM EXECUTE DBSNMP MGMT_BASELINE SELECT DBSNMP MGMT_BASELINE_SQL SELECT DBSNMP MGMT_LATEST SELECT DBSNMP MGMT_LATEST_SQL SELECT DBSNMP MGMT_HISTORY SELECT DBSNMP MGMT_HISTORY_SQL SELECT DBSNMP MGMT_RESPONSE EXECUTE DBSNMP BSLN_METRIC_T EXECUTE DBSNMP BSLN_METRIC_SET EXECUTE DBSNMP BSLN_VARIANCE_T EXECUTE DBSNMP BSLN_VARIANCE_SET EXECUTE DBSNMP BSLN_OBSERVATION_T EXECUTE DBSNMP BSLN_OBSERVATION_SET EXECUTE DBSNMP BSLN_STATISTICS_T EXECUTE DBSNMP BSLN_STATISTICS_SET EXECUTE DBSNMP BSLN_METRIC_DEFAULTS SELECT DBSNMP BSLN_TIMEGROUPS SELECT DBSNMP BSLN_BASELINES SELECT DBSNMP BSLN_STATISTICS SELECT DBSNMP BSLN_THRESHOLD_PARAMS SELECT DBSNMP BSLN EXECUTE DBSNMP BSLN_INTERNAL EXECUTE DBSNMP MGMT_BSLN_METRICS SELECT DBSNMP MGMT_BSLN_DATASOURCES SELECT DBSNMP MGMT_BSLN_BASELINES SELECT DBSNMP MGMT_BSLN_INTERVALS SELECT DBSNMP MGMT_BSLN_THRESHOLD_PARMS SELECT DBSNMP MGMT_BSLN_STATISTICS SELECT DBSNMP MGMT_UPDATE_DB_FEATURE_LOG EXECUTE SYS ALERT_QUE DEQUEUE
Weitere Informationen:
- MOS-Note: „Grid Control User Model:Steps to Create Administrator Accounts (Super Admin, Admin, View Only) in Grid Control“ (Doc ID 377310.1)
Oracle Enterprise Manager 12c Database Express
Im Enterprise Manager 12c DB Express, dem „kleinen Bruder“, ist es etwas einfacher. Mit EM 12c DB Express kann immer nur eine Datenbank administriert werden (nämlich die 12c-Datenbank, in der der jeweilige EM 12c Database Express läuft) und die Anmeldung erfolgt als Datenbankbenutzer. Für Read-Only-Benutzer im EM 12c DB Express gibt es die Datenbank-Rolle EM_EXPRESS_BASIC. Diese Rolle beinhaltet folgende Rechte:
SQL> column owner format a10 SQL> column table_name format a30 SQL> column privilege format a30 SQL> set linesize 200 SQL> set pagesize 100 SQL> select privilege from dba_sys_privs where grantee='EM_EXPRESS_BASIC'; PRIVILEGE ------------------------------ EM EXPRESS CONNECT CREATE SESSION SQL> select granted_role from dba_role_privs where grantee='EM_EXPRESS_BASIC'; GRANTED_ROLE ---------------------------------------- SELECT_CATALOG_ROLE SQL> select owner,table_name,privilege from dba_tab_privs where grantee='EM_EXPRESS_BASIC'; OWNER TABLE_NAME PRIVILEGE ---------- ------------------------------ ---------------------- SYS DBMS_PERF EXECUTE SYS PRVTEMX_ADMIN EXECUTE SYS V_$DIAG_INCIDENT SELECT
SQL> create user EM_READONLY identified by EM_READONLY 2 default tablespace USERS temporary tablespace TEMP; User created. SQL> grant EM_EXPRESS_BASIC to EM_READONLY; Grant succeeded.
Ein Benutzer mit diesen Rechten kann sich zwar am Enterprise Manager anmelden:
Aber wenn er versucht etwas in der Datenbank zu ändern (z.B. Tablespace anlegen) dann kommt eine Fehlermeldung:
Weitere Informationen zu EM 12c Database Express:
DBA-Community:
Alles Wichtige rund um Oracle Enterprise Manager 12c Database Express
Werbung (Amazon-Partner-Link)