Skip to main content

Db2 Hofstetter Aufgabe 5

image.png

image.png

image.png

Übung 1

#!/usr/bin/ksh
#
# ACHTUNG: dies ist ein UNIX Script und KEIN SQL-Script !!!!!
#
# Sie koennen in diesem UNIX Script die notwendigen Statements fuer das Erstellen der
# Gruppen und User erfassen, denken Sie jedoch daran, dass SIe dieses Script als root
# User ausfuehren muessen.
#
# Hier die Commands fuer das Erstellen, Modifizieren und Loeschen von User und Groups:
#
# Groups:     groupadd    groupmod   groupdel
# User:       useradd     usermod    userdel     chage    passwd  
#

if [[ $(whoami) != "root" ]]; then
   echo "sie muessen die Gruppen und User mit dem root User anlegen!!!"
   exit 16
fi

# Erstellen der Groups
groupadd dbusrgrp   # Befehl zum Erstellen einer Gruppe mit dem Namen "dbusrgrp"
groupadd dbadmgrp   # Befehl zum Erstellen einer Gruppe mit dem Namen "dbadmgrp"


# Erstellen der User
useradd dbuser10    # Befehl zum Erstellen eines Benutzers mit dem Namen "dbuser10"
passwd dbuser10     # Befehl zum Festlegen des Passworts für den Benutzer "dbuser10"
chage -I -1 -m 0 -M 99999 -E -1 dbuser10   # Befehl zur Änderung der Passwortrichtlinien für den Benutzer "dbuser10"

useradd dbuser11    # Befehl zum Erstellen eines Benutzers mit dem Namen "dbuser11"
passwd dbuser11     # Befehl zum Festlegen des Passworts für den Benutzer "dbuser11"
chage -I -1 -m 0 -M 99999 -E -1 dbuser11   # Befehl zur Änderung der Passwortrichtlinien für den Benutzer "dbuser11"

useradd dbuser12    # Befehl zum Erstellen eines Benutzers mit dem Namen "dbuser12"
passwd dbuser12     # Befehl zum Festlegen des Passworts für den Benutzer "dbuser12"
chage -I -1 -m 0 -M 99999 -E -1 dbuser12   # Befehl zur Änderung der Passwortrichtlinien für den Benutzer "dbuser12"

usermod -a -G dbusrgrp dbuser11   # Befehl zum Hinzufügen des Benutzers "dbuser11" zur Gruppe "dbusrgrp"
usermod -a -G dbadmgrp dbuser12   # Befehl zum Hinzufügen des Benutzers "dbuser12" zur Gruppe "dbadmgrp"


exit   # Beenden des Skripts

--
-- Speichern Sie in diesem SQL Script die notwendigen GRANT Statements
--

CONNECT TO DBBW001;
-- Autorisierungen für die Gruppe dbusrgrp
GRANT DATAACCESS ON DATABASE TO GROUP dbusrgrp;

-- Autorisierungen für die Gruppe dbadmgrp
GRANT DBADM WITHOUT DATAACCESS ON DATABASE TO GROUP dbadmgrp;

CONNECT TO DBBW002;
-- Autorisierungen für die Gruppe dbusrgrp
GRANT DATAACCESS ON DATABASE TO GROUP dbusrgrp;

-- Autorisierungen für die Gruppe dbadmgrp
GRANT DBADM WITHOUT DATAACCESS ON DATABASE TO GROUP dbadmgrp;
Übung 2
Dokumentieren Sie das Resultat der einzelnen Abfragen (als Resultat ist entweder die Anzahl Datensätze oder die SQL-Fehler-Meldung zu notieren):

mit dbuser10 Resultat:

SQL0551N  The statement failed because the authorization ID does not have the 
required authorization or privilege to perform the operation.  Authorization 
ID: "DBUSER10".  Operation: "SELECT". Object: "BIBLIO.TARTIKEL".  
SQLSTATE=42501
mit dbuser11 Resultat:
[db2inst1@localhost ueb05]$ db2 "SELECT COUNT(*) FROM BIBLIO.TARTIKEL"

1          
-----------
         19

  1 record(s) selected.
mit dbuser12 Resultat:
[db2inst1@localhost ueb05]$ db2 "SELECT COUNT(*) FROM BIBLIO.TARTIKEL"
SQL0551N  The statement failed because the authorization ID does not have the 
required authorization or privilege to perform the operation.  Authorization 
ID: "DBUSER12".  Operation: "SELECT". Object: "BIBLIO.TARTIKEL".  
SQLSTATE=42501
Erstellen Sie in der Datenbank DBBW002 mit dem Instanz-User die Tabelle BIBLIO.TARTIKEL. Das CREATE Statement finden Sie im Übungs-Verzeichnis (CREATE_TABLE_TARTIKEL.sql). Führen Sie nun das SELECT Statement nochmals für diese Tabelle in der Datenbank DBBW002 aus.

mit dbuser10 Resultat:

[db2inst1@localhost ueb05]$ db2 "SELECT COUNT(*) FROM BIBLIO.TARTIKEL"

1          
-----------
          0

  1 record(s) selected.
mit dbuser11 Resultat:
[db2inst1@localhost ueb05]$ db2 "SELECT COUNT(*) FROM BIBLIO.TARTIKEL"

1          
-----------
          0

  1 record(s) selected.
mit dbuser12 Resultat:
[db2inst1@localhost ueb05]$ db2 "SELECT COUNT(*) FROM BIBLIO.TARTIKEL"

1          
-----------
          0

  1 record(s) selected.
Übung 3
--
-- Create Statements fuer Uebung Database Security
--

CREATE TABLE TDBS_PERSON ( 
    PERSONID    INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1, CACHE 20) NOT NULL,
    NAME        VARCHAR(50) NOT NULL,
    VORNAME     VARCHAR(50) NOT NULL,
    KLASSE      VARCHAR(25) NOT NULL,
    LEHRBETRIEB VARCHAR(50) 
)
;

CREATE TABLE TDBS_ABTEILUNG ( 
    ABTEILUNGID INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1, CACHE 20) NOT NULL,
    NAMEID      VARCHAR(10) NOT NULL,
    BEZEICHNUNG VARCHAR(50) NOT NULL,
    MANAGERIDFS INTEGER
)
;

CREATE UNIQUE INDEX IU03ABTEILUNG_PK
    ON TDBS_ABTEILUNG (ABTEILUNGID)
    PCTFREE 10
    MINPCTUSED 10
    ALLOW REVERSE SCANS 
;   

ALTER TABLE TDBS_ABTEILUNG
    ADD CONSTRAINT PK_TDBS_ABTEILUNG
    PRIMARY KEY (ABTEILUNGID)
;

CREATE UNIQUE INDEX IU03PERSON_PK
    ON TDBS_PERSON (PERSONID)
    PCTFREE 10
    MINPCTUSED 10
    ALLOW REVERSE SCANS 
;   

ALTER TABLE TDBS_PERSON
    ADD CONSTRAINT PK_TDBS_PERSON
    PRIMARY KEY (PERSONID)
;


SELECT * FROM TDBS_PERSON;

SELECT * FROM TDBS_ABTEILUNG;

-- Autorisierungen für User dbuser10
GRANT CREATETAB, IMPLICIT_SCHEMA ON DATABASE TO USER dbuser10;
GRANT USE OF TABLESPACE USERSPACE1 TO USER dbuser10;

-- Autorisierungen für User dbuser11
GRANT CREATETAB, IMPLICIT_SCHEMA ON DATABASE TO USER dbuser11;
GRANT USE OF TABLESPACE USERSPACE1 TO USER dbuser11;

-- Autorisierungen für User dbuser12
GRANT CREATETAB, IMPLICIT_SCHEMA ON DATABASE TO USER dbuser12;
GRANT USE OF TABLESPACE USERSPACE1 TO USER dbuser12;
Übung 4
--
-- Speichern Sie in diesem SQL Script die notwendigen GRANT Statements
--

CONNECT TO DBBW002

-- Erstellen der Rolle "TESTER"
CREATE ROLE TESTER;

-- Autorisierungen für die Rolle "TESTER"
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE DBUSER10.TDBS_PERSON TO ROLE TESTER;
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE DBUSER11.TDBS_PERSON TO ROLE TESTER;
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE DBUSER12.TDBS_PERSON TO ROLE TESTER;

GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE DBUSER10.TDBS_ABTEILUNG TO ROLE TESTER;
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE DBUSER11.TDBS_ABTEILUNG TO ROLE TESTER;
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE DBUSER12.TDBS_ABTEILUNG TO ROLE TESTER;

-- Setzen der Rolle "TESTER" für die Benutzer "tester01" und "tester02"
GRANT ROLE TESTER TO USER tester01;
GRANT ROLE TESTER TO USER tester02;

GRANT CONNECT ON DATABASE TO ROLE TESTER;
grant usage on workload SYSDEFAULTUSERWORKLOAD to ROLE TESTER;
GRANT EXECUTE ON PACKAGE NULLID.SQLC2P31 TO ROLE TESTER;