Read-Only-User im Enterprise Manager

30. November 2015 Aus Von Markus Flechtner

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:

em_anmeldung

Aber wenn er versucht etwas in der Datenbank zu ändern (z.B. Tablespace anlegen) dann kommt eine Fehlermeldung:

em_fehler

Weitere Informationen zu EM 12c Database Express:

DBA-Community: 
Alles Wichtige rund um Oracle Enterprise Manager 12c Database Express


Werbung (Amazon-Partner-Link)