none
הרשאות DBA RRS feed

  • שאלה

  • שלום למומחים, 

    שאלה לי אליכם, 

    מה, לדעתכם, ההרשאות ההכרחיות בשביל DBA אפליקטיבי על השרת?

    למה אני מתכוון? להרשאות אשר DBA, אשר השרת אינו שלו, חייב אותם על מנת ליצור ולפעול ולתחזק Database במסגרת השרת האירגוני.
    ישנו DBA תשתיתי אשר מחלק הרשאות לDatabase ספציפי על השרת הכללי ואי אפשר להקים שרת נפרד.

    נתחיל מהפשוטים, חייבים הרשאת SELECT INSERT UPDATE וגם DELETE
    בנוסף כדאי מאד שיהיה הרשאות CREATE למיניהן על מנת ליצור ולעדכן טבלאות וVIEWS
    עוד הרשאה שלדעתי מאד חשובה היא SHOWPLAN אשר בלעדיה לא יוכל הDBA לצפות בExecution plan של השאילתא ולא יוכל לשפר אותה.
    אני חושב שעוד הרשאה שאי אפשר בלעדיה היא VIEW DATABASE STATE אשר נותנת גישה לצפיה בDMV של הDB(נכון?) ואותם צריך על מנת לנטר את ביצועי הDB באופן כללי.

    הייתי שמח לראות את הצעותיכם, אולי שכחתי משהו, אולי אני מסתכל על זה בכלל לא נכון(צריך להיות ADMIN וזהו זה).

    תודה
    נתן

    יום שני 11 מאי 2015 10:45

תשובות

  • אני לא יודע מה מספיק עבורכם :-)

    בלי רשימה מסודרת של הפעולות שהוא צריך לבצע אנחנו לא יכולים לדעת. האמירה "DBA אפלחיקטיבי"ף אינה קובעת מה הוא בפועל עושה, מעבר לכתיבת שאילתות DML.

    אבטחה לעולם אסור לקבוע לפי "מה אסור למשתמש לבצע" אלא לפי "מה מותר למשתמש לבצע". הסיבה היא שאם שוכחים משהו אז עדיף לשכוח משהו שמותר לו לבצע ואז הוא יבקש את ההרשאותהמתאימות, ולא להגיע למצב ששוכחים משהו שאסור לו לבצע ואז אתם בבעיה של אבטחה.

    אולי תנסה בשלב ראשון לשלב את הדברים. נסה לתאר בכל זאת את הדברים שאתה לא רוצה לאפשר לו לבצע וכן את הדברים שאתה כבר יודע בוודאות שהוא צריך לבצע, אבל בסופו של דבר יהיה עלייך לבחור הרשאות לפי מה מותר לו לבצע. זה פשוט יעזור לנו לכוון אותך.

    אפשרות ראשונה: התבססות על חוקים מובנים. יש חוקים קבועים במסד הנתונים שיכולים אולי לספק לך את מה שאתה. זה הרעיון של חוקים קבועים. במקוםפ לתת למשתמש הרשאה אחרי הרשאה אתה מצמיד לו חוק שכולל מגוון הרשאות. למשל החוק db_owner ייתן ל DBA שלך הרשאות מלאות על מסד הנתונים (מעבר למה שאתם צריכים).

    הקישור הבא כולל רשימה של חוקים קבועים ונפוצים. במקום להגדיר הרשאה אחרי הרשאה אתה יכול לבחור להשתמש בחוקים נפוצים שאולי יתאימו לצרכים שלך:
    https://msdn.microsoft.com/en-us/ms189121.aspx

    אפשרות אחרת: תעבור על הרשימה הבאה וותבחר פשוט את כהרשאות שאתה רוצה לתת למשתמש. תמיד תוכל להוסיף לו הרשאות נוספות. תגדיר חוק (RULE) חדש עם ההרשאות שאתה רוצה בדיוק.


    CREATE TABLE
    CREATE VIEW
    CREATE PROCEDURE
    CREATE FUNCTION
    CREATE RULE
    CREATE DEFAULT
    BACKUP DATABASE
    BACKUP LOG
    CREATE DATABASE
    CREATE TYPE
    CREATE ASSEMBLY
    CREATE XML SCHEMA COLLECTION
    CREATE SCHEMA
    CREATE SYNONYM
    CREATE AGGREGATE
    CREATE ROLE
    CREATE MESSAGE TYPE
    CREATE SERVICE
    CREATE CONTRACT
    CREATE REMOTE SERVICE BINDING
    CREATE ROUTE
    CREATE QUEUE
    CREATE SYMMETRIC KEY
    CREATE ASYMMETRIC KEY
    CREATE FULLTEXT CATALOG
    CREATE CERTIFICATE
    CREATE DATABASE DDL EVENT NOTIFICATION
    CONNECT
    CONNECT REPLICATION
    CHECKPOINT
    SUBSCRIBE QUERY NOTIFICATIONS
    AUTHENTICATE
    SHOWPLAN
    ALTER ANY USER
    ALTER ANY ROLE
    ALTER ANY APPLICATION ROLE
    ALTER ANY SCHEMA
    ALTER ANY ASSEMBLY
    ALTER ANY DATASPACE
    ALTER ANY MESSAGE TYPE
    ALTER ANY CONTRACT
    ALTER ANY SERVICE
    ALTER ANY REMOTE SERVICE BINDING
    ALTER ANY ROUTE
    ALTER ANY FULLTEXT CATALOG
    ALTER ANY SYMMETRIC KEY
    ALTER ANY ASYMMETRIC KEY
    ALTER ANY CERTIFICATE
    SELECT
    INSERT
    UPDATE
    DELETE
    REFERENCES
    EXECUTE
    ALTER ANY DATABASE DDL TRIGGER
    ALTER ANY DATABASE EVENT NOTIFICATION
    ALTER ANY DATABASE AUDIT
    ALTER ANY DATABASE EVENT SESSION
    KILL DATABASE CONNECTION
    VIEW DATABASE STATE
    VIEW DEFINITION
    TAKE OWNERSHIP
    ALTER
    CONTROL


    ** אם אתה רוצה לבדוק מה ההרשאות שלך אתה יכול להריץ את הפונקציה sys.fn_my_permissions

    https://msdn.microsoft.com/en-us/library/ms176097.aspx

    אתה יכול ליצור משתמש חדש לנסיון, לתת לו חוק מסויים ולבדוק את ההרשאות שיש לו, אבל הרבה יותר נכון פשוט לבדוק את ההרשאות של כל חוק מראש בעזרת ה BOL :-)


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]


    • נערך על-ידי pituachMVP, Editor יום שלישי 12 מאי 2015 20:39
    • סומן כתשובה על-ידי Eran Sharvit יום ראשון 17 מאי 2015 09:55
    יום שלישי 12 מאי 2015 20:37
    מנחה דיון

כל התגובות

  • ההרשאות נקבעות לפי הצרכים והשימושים של אותו DBA. אם תכין לנו רשימה של מה ה DBA צריך לבצע, אז נוכל להכין רשימה מתאימה של הרשאות שיש לתת לו. המינימום זה לא לתת לו כלום כמובן. אפשרות יותר פתוחה היא לתת לו הרשאות רק על קריאה על טבלה מסויימת או על פעולות מסויימות בלבד ועל מסד נתונים אחד בלבד, בשלב הבא כבר נותנים הרשאות יותר מלאות על מסד הנתונים ואם רוצים אז נותנים לו הרשאות על מסדי נתונים נוספים ואם רוצים וצריכים אז הוא צריך הרשאות SYSADMIN... הכל תלוי במה הוא צריך לבצע 

    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]


    יום שני 11 מאי 2015 13:32
    מנחה דיון
  • תודה רונן על התגובה המהירה.

    אז ככה, כמו שכבר כתבתי, מדובר בDBA אפליקטיבי על כל המשתמע מכך: הוא צריך להקים טבלאות, לתחזק VIEWS ופרוצדורות וכמובן גם לדאוג לביצועים ע"י אינדקסים ושיפור שאילתות הרצות באופן קבוע על הDB.
    הוא לא צריך למחוק DB ולא להגדיר הרשאות עליו. 
    יכול להיות שמספיק לתת לו database_role של DDLAdmin? 
    (אני אומר יכול להיות כיוון שאני מחפש ולא מוצא האם זה כולל הרשאות DMV לבדיקה כללית של אינדקסים וביצועים על DB).

    יום שני 11 מאי 2015 13:54
  • אני לא יודע מה מספיק עבורכם :-)

    בלי רשימה מסודרת של הפעולות שהוא צריך לבצע אנחנו לא יכולים לדעת. האמירה "DBA אפלחיקטיבי"ף אינה קובעת מה הוא בפועל עושה, מעבר לכתיבת שאילתות DML.

    אבטחה לעולם אסור לקבוע לפי "מה אסור למשתמש לבצע" אלא לפי "מה מותר למשתמש לבצע". הסיבה היא שאם שוכחים משהו אז עדיף לשכוח משהו שמותר לו לבצע ואז הוא יבקש את ההרשאותהמתאימות, ולא להגיע למצב ששוכחים משהו שאסור לו לבצע ואז אתם בבעיה של אבטחה.

    אולי תנסה בשלב ראשון לשלב את הדברים. נסה לתאר בכל זאת את הדברים שאתה לא רוצה לאפשר לו לבצע וכן את הדברים שאתה כבר יודע בוודאות שהוא צריך לבצע, אבל בסופו של דבר יהיה עלייך לבחור הרשאות לפי מה מותר לו לבצע. זה פשוט יעזור לנו לכוון אותך.

    אפשרות ראשונה: התבססות על חוקים מובנים. יש חוקים קבועים במסד הנתונים שיכולים אולי לספק לך את מה שאתה. זה הרעיון של חוקים קבועים. במקוםפ לתת למשתמש הרשאה אחרי הרשאה אתה מצמיד לו חוק שכולל מגוון הרשאות. למשל החוק db_owner ייתן ל DBA שלך הרשאות מלאות על מסד הנתונים (מעבר למה שאתם צריכים).

    הקישור הבא כולל רשימה של חוקים קבועים ונפוצים. במקום להגדיר הרשאה אחרי הרשאה אתה יכול לבחור להשתמש בחוקים נפוצים שאולי יתאימו לצרכים שלך:
    https://msdn.microsoft.com/en-us/ms189121.aspx

    אפשרות אחרת: תעבור על הרשימה הבאה וותבחר פשוט את כהרשאות שאתה רוצה לתת למשתמש. תמיד תוכל להוסיף לו הרשאות נוספות. תגדיר חוק (RULE) חדש עם ההרשאות שאתה רוצה בדיוק.


    CREATE TABLE
    CREATE VIEW
    CREATE PROCEDURE
    CREATE FUNCTION
    CREATE RULE
    CREATE DEFAULT
    BACKUP DATABASE
    BACKUP LOG
    CREATE DATABASE
    CREATE TYPE
    CREATE ASSEMBLY
    CREATE XML SCHEMA COLLECTION
    CREATE SCHEMA
    CREATE SYNONYM
    CREATE AGGREGATE
    CREATE ROLE
    CREATE MESSAGE TYPE
    CREATE SERVICE
    CREATE CONTRACT
    CREATE REMOTE SERVICE BINDING
    CREATE ROUTE
    CREATE QUEUE
    CREATE SYMMETRIC KEY
    CREATE ASYMMETRIC KEY
    CREATE FULLTEXT CATALOG
    CREATE CERTIFICATE
    CREATE DATABASE DDL EVENT NOTIFICATION
    CONNECT
    CONNECT REPLICATION
    CHECKPOINT
    SUBSCRIBE QUERY NOTIFICATIONS
    AUTHENTICATE
    SHOWPLAN
    ALTER ANY USER
    ALTER ANY ROLE
    ALTER ANY APPLICATION ROLE
    ALTER ANY SCHEMA
    ALTER ANY ASSEMBLY
    ALTER ANY DATASPACE
    ALTER ANY MESSAGE TYPE
    ALTER ANY CONTRACT
    ALTER ANY SERVICE
    ALTER ANY REMOTE SERVICE BINDING
    ALTER ANY ROUTE
    ALTER ANY FULLTEXT CATALOG
    ALTER ANY SYMMETRIC KEY
    ALTER ANY ASYMMETRIC KEY
    ALTER ANY CERTIFICATE
    SELECT
    INSERT
    UPDATE
    DELETE
    REFERENCES
    EXECUTE
    ALTER ANY DATABASE DDL TRIGGER
    ALTER ANY DATABASE EVENT NOTIFICATION
    ALTER ANY DATABASE AUDIT
    ALTER ANY DATABASE EVENT SESSION
    KILL DATABASE CONNECTION
    VIEW DATABASE STATE
    VIEW DEFINITION
    TAKE OWNERSHIP
    ALTER
    CONTROL


    ** אם אתה רוצה לבדוק מה ההרשאות שלך אתה יכול להריץ את הפונקציה sys.fn_my_permissions

    https://msdn.microsoft.com/en-us/library/ms176097.aspx

    אתה יכול ליצור משתמש חדש לנסיון, לתת לו חוק מסויים ולבדוק את ההרשאות שיש לו, אבל הרבה יותר נכון פשוט לבדוק את ההרשאות של כל חוק מראש בעזרת ה BOL :-)


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]


    • נערך על-ידי pituachMVP, Editor יום שלישי 12 מאי 2015 20:39
    • סומן כתשובה על-ידי Eran Sharvit יום ראשון 17 מאי 2015 09:55
    יום שלישי 12 מאי 2015 20:37
    מנחה דיון
  • לגבי החוק של db_ddladmin


    Members of the db_ddladmin fixed database role can run any Data Definition Language (DDL) command in a database.

    תבדוק אם הקישורים הבאים עוזרים לך לגבי חוקי זה:

    http://www.databasejournal.com/features/mssql/article.php/1479561/SQL-Permissions-More-about-the-Fixed-Roles.htm

    http://akawn.com/blog/2012/02/why-you-should-be-cautious-with-the-dbo_owner-role/


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]

    יום שלישי 12 מאי 2015 20:53
    מנחה דיון