คำถามติดแท็ก security

การอนุญาตให้ผู้ใช้เข้าถึงเฉพาะข้อมูลที่ได้รับอนุญาตให้เข้าถึง นอกจากนี้ยังครอบคลุมการปกป้องข้อมูลในระหว่างการเคลื่อนไหวบนเครือข่ายและการจัดเก็บข้อมูลบนดิสก์และการสำรองข้อมูล

3
วิธีการส่งออกข้อมูลที่เกี่ยวข้องกับความปลอดภัยทั้งหมดจากฐานข้อมูล SQL Server
อย่างที่คุณทราบกันดีว่า SQL Server ไม่ได้นำเสนอโซลูชันแบบทันทีเพื่อส่งออกข้อความเกี่ยวกับความปลอดภัยทั้งหมดที่ประกาศไว้สำหรับแต่ละองค์ประกอบในฐานข้อมูล (ทั้งที่ระดับฐานข้อมูลและระดับวัตถุ) ฉันกำลังพูดถึงความสามารถในการหาข้อมูลนี้ ผู้ใช้ทั้งหมด บทบาททั้งหมดที่ผู้ใช้กำหนด สิทธิ์ทั้งหมดในระดับฐานข้อมูล (เช่นฟังก์ชันสร้าง GRANT) สิทธิ์ทั้งหมดในระดับวัตถุ (เช่น GRANT SELECT ON OBJECT :: xxx) คุณอาจคิดว่า SQL Server ต้องมีสิ่งนี้ แต่ตัวช่วยสร้างการส่งออกเซิร์ฟเวอร์ SQL หรือสคริปต์ต่าง ๆ ที่สร้างขึ้นจากการคลิกขวาที่วัตถุจะจับข้อมูลนี้ ฉันได้เห็น“ วิธีแก้ปัญหาที่เป็นไปได้” ทางออนไลน์มากมายโดยใช้สคริปต์ที่ไม่ได้รับการดูแลซึ่งผู้คนโพสต์ไว้อย่างสง่างาม แต่เนื่องจากฉันต้องมั่นใจ 100% ว่าข้อมูลความปลอดภัยทั้งหมดถูกบันทึกไว้ ฉันมีตัวเลือกในการใช้สิ่งเหล่านี้เป็นจุดเริ่มต้นในการเขียนบางสิ่งบางอย่างด้วยตัวเอง แต่ฉันเกลียดที่จะต้องคิดค้นวงล้อใหม่สำหรับความต้องการที่คุณคิดว่าหลายคนอาจมี มีใครบางคนที่ให้บริการเครื่องมือ (ไม่ว่าจะเป็นส่วนหนึ่งของผลิตภัณฑ์ SQL Server หรือเครื่องมือของบุคคลที่สาม) ที่สามารถให้ข้อมูลนี้กับคุณได้อย่างน่าเชื่อถือใช่ไหม หรืออย่างน้อยจะมีสคริปต์สนับสนุนชุมชนที่คนส่วนใหญ่เห็นด้วย "จะทำงาน" หรือไม่? ขอบคุณ!

3
มีวิธีหาใครเปลี่ยนรหัสผ่านสำหรับการเข้าสู่ระบบหรือไม่?
ฉันพยายามค้นหาว่าใครเปลี่ยนรหัสผ่านสำหรับการเข้าสู่ระบบใน SQL Server 2008 R2 ฉันได้ตรวจสอบการติดตามเริ่มต้นแล้วและไม่ได้บันทึกเหตุการณ์นั้น การติดตามเริ่มต้นจะรวมถึงเหตุการณ์ที่เกี่ยวข้องกับความปลอดภัย: /* Audit Add DB user event Audit Add login to server role event Audit Add Member to DB role event Audit Add Role event Audit Add login event Audit Backup/Restore event Audit Change Database owner Audit DBCC event Audit Database Scope GDR event …

3
จำกัด การเข้าถึงสำหรับผู้ดูแลระบบ Windows
ตามแนวทางปฏิบัติที่ดีที่สุดของSQL Serverกล่าวว่า " โหมดการตรวจสอบ Windows มีความปลอดภัยมากกว่าการรับรองความถูกต้องของ SQL " และตอนนี้ฉันอยากรู้ว่า: มีวิธีปกป้อง SQL Server จากผู้ใช้ด้วยสิทธิ์ผู้ดูแลระบบ Windows หรือไม่?

1
อะไรคือความแตกต่างระหว่างผู้ใช้ `dbo 'และเจ้าของฐานข้อมูลที่เก็บไว้ใน sys.database
เราเพิ่งมีคำถามเกิดขึ้นที่ผู้ใช้dboในฐานข้อมูลมีsidที่ไม่ตรงกับในowner_sid sys.databasesฉันเข้าใจว่าเจ้าของฐานข้อมูลแตกต่างจากสมาชิกของบทบาทอย่างไรdb_ownerแต่ฉันคิดเสมอว่าผู้ใช้dboนั้นเป็นเจ้าของฐานข้อมูลจริง นั่นไม่ใช่กรณีหรือไม่ และถ้าเป็นเช่นนั้นมีความแตกต่างที่แท้จริงระหว่างdboและมีอะไรsys.databasesบ้าง?

1
มุมมองการเข้าถึงตามตารางในฐานข้อมูลอื่นที่ไม่มีบัญชีในฐานข้อมูลอื่นนั้น
ฉันสร้างมุมมองในฐานข้อมูล 1 ตามตารางในฐานข้อมูล 2 ฉันให้SELECTสิทธิ์แก่ผู้ใช้ที่เข้าถึงได้เฉพาะฐานข้อมูล 1 ผู้ใช้ไม่สามารถรับมุมมองนี้ให้ทำงานได้เนื่องจากเขาไม่มีบัญชีในฐานข้อมูล 2 ฉันจะแก้ปัญหานี้ได้อย่างไร ฉันไม่ต้องการสร้างบัญชีในฐานข้อมูล 2

1
ทำไม PL / Python ไม่น่าเชื่อถือ
ตามเอกสาร: PL / Python มีเฉพาะภาษาที่ "ไม่น่าเชื่อถือ" ซึ่งหมายความว่ามันไม่ได้มีวิธี จำกัด การใช้งานสิ่งที่ผู้ใช้สามารถทำได้และจึงตั้งชื่อว่า plpythonu ตัวแปรที่เชื่อถือได้ plpython อาจมีให้ใช้ในอนาคตหากกลไกการดำเนินการที่ปลอดภัยได้รับการพัฒนาใน Python ทำไมมันยากที่จะพัฒนากลไกการดำเนินการที่ปลอดภัยสำหรับ Python แต่ไม่ใช่สำหรับภาษาอื่นเช่น Perl?

2
ล็อคผู้ใช้ sa ของฉันออก
ดังนั้นฉันจึงพยายามเปลี่ยนการตั้งค่าบางอย่างใน Microsoft SQL Server Management Studio 2019 ของฉันฉันเปลี่ยนโหมดการเข้าสู่ระบบจากแบบผสม (การตรวจสอบ Windows และ SQL) เป็น Windows เท่านั้นและตอนนี้ฉันไม่สามารถเข้าสู่ระบบด้วยบัญชี sa ของฉันและฉันไม่ได้ มีบัญชีอื่นที่มีสิทธิ์ของผู้ดูแลระบบ ฉันควรทำอย่างไรดี? ข้อเสนอแนะใด ๆ จะได้รับการชื่นชมอย่างมาก

5
เหตุใดจึงต้องจัดเก็บรหัสผ่านของผู้ใช้
ฉันเห็นคำถามที่ถามวิธีการจัดเก็บรหัสผ่านผู้ใช้อย่างปลอดภัยสำหรับเว็บแอปพลิเคชัน (ใช้ RDBMS ฉันไม่ได้พูดถึง Facebook หรือ Twitter) คำตอบปกติคือ "ใส่รหัสผ่านแล้วแฮชด้วยอัลกอริทึมที่รัดกุมเช่น TDES หรือ SHA512" คำถามของฉันคือ: ในฐานะผู้ใช้ RDBMS เหตุใดฉันจึงต้องกังวลด้วยรหัสผ่านที่เก็บปัญหาได้เนื่องจากเอ็นจิ้นส่วนใหญ่มีกลไกการพิสูจน์ตัวตนในตัว ตัวอย่างเช่นหากผู้ใช้ X บางคนต้องการสร้างรหัสผ่านบัญชีผู้ใช้ Y ในเว็บแอปพลิเคชันของฉันวิธีการออกแบบสอบถามต่อไปนี้ไม่ถูกต้อง: CREATE USER X WITH ENCRYPTED PASSWORD Y IN GROUP baseuser; จากภายในแอปพลิเคชันของฉันผู้ใช้สามารถเปิดการเชื่อมต่อกับฐานข้อมูลโดยใช้ข้อมูลประจำตัวของเขาและฉันไม่ต้องกังวลกับการจัดการรหัสผ่านทั้งหมด ฉันเห็นข้อดีหลายประการสำหรับวิธีนี้: หาก RDBMS ตัดสินใจว่าจำเป็นต้องเปลี่ยนอัลกอริทึมการเข้ารหัสฉันไม่จำเป็นต้องแตะสิ่งใดเลยเพียงเพื่อใช้การปรับปรุงความปลอดภัย มันง่ายสำหรับฉันในการจัดการการอนุญาตผู้ใช้ หากผู้ใช้ได้รับการเลื่อนตำแหน่งเป็นบทบาทของผู้ดูแลระบบฉันแค่ต้องเพิ่มผู้ใช้ในกลุ่มที่เกี่ยวข้อง SQL injections นั้นไม่มีความหมายสำหรับฉันจัดการการอนุญาตให้อนุญาตสิ่งที่ฉันต้องการอนุญาตให้ผู้ใช้แต่ละรายในฐานข้อมูล (ตัวอย่างเช่นในฟอรัมเช่น SO, เพิ่มการโพสต์ใหม่, ตอบกระทู้, แสดงความคิดเห็นและแก้ไข / ลบคำถามของเขาเอง / คำตอบ …
10 security  users 

3
ความเสี่ยงเซิร์ฟเวอร์ที่เชื่อมโยง
ฉันกำลังใช้คุณสมบัติใหม่ที่ต้องการข้อมูลจากฐานข้อมูลบนเซิร์ฟเวอร์หลายเครื่อง ฉันเพียงต้องการรวมข้อมูลจากเซิร์ฟเวอร์ทั้งหมดเหล่านี้และจัดเรียง ตัวเลือกสองตัวที่อยู่ในใจคือ: ใช้เซิร์ฟเวอร์ที่เชื่อมโยงและเขียนแบบสอบถามอย่างง่ายเพื่อรวมและเรียงลำดับข้อมูลซึ่งจะเรียกใช้จากเซิร์ฟเวอร์หนึ่งและรวบรวมข้อมูลจากเซิร์ฟเวอร์อื่น ใช้แอปพลิเคชันเพื่อรวบรวมข้อมูลจากเซิร์ฟเวอร์ทั้งหมดและส่งกลับไปยัง SQL Server เพื่อเรียงลำดับ (ไม่ต้องการใช้การเรียงลำดับในแอปพลิเคชัน) เราเรียกใช้เซิร์ฟเวอร์ของเราในกลุ่มที่ใช้งาน / ใช้งานอยู่ใน SQL Server 2008 r2 ฐานข้อมูลทั้งหมดมีสิทธิ์เหมือนกันถ้าคุณมีสิทธิ์เข้าถึงฐานข้อมูล / เซิร์ฟเวอร์เดียวคุณมีสิทธิ์ทั้งหมด นี่เป็นแอปพลิเคชั่นหันหน้าสู่สาธารณะ (ซึ่งต้องมีการเข้าสู่ระบบของผู้ใช้) การใช้เซิร์ฟเวอร์ที่เชื่อมโยงมีความเสี่ยงอะไรบ้าง มีข้อบกพร่องด้านความปลอดภัยที่ฉันควรจะเกี่ยวข้องกับ? มีปัญหาใด ๆ ในการใช้งานเซิร์ฟเวอร์ที่เชื่อมโยงในกลุ่มที่ใช้งานอยู่หรือไม่? จะมีปัญหาเรื่องประสิทธิภาพที่สำคัญเมื่อเทียบกับทางเลือกหรือไม่ ดูเหมือนจะมี "buzz" เชิงลบทั่วไปเกี่ยวกับเซิร์ฟเวอร์ที่เชื่อมโยง แต่ฉันไม่สามารถค้นหาสิ่งที่เป็นรูปธรรมที่จะทำให้ฉันเชื่อว่ามีข้อกังวลจริง ๆ

3
ฉันจะกำหนดค่า SQL Server 2012 เพื่อให้สามารถเรียกคืนและดูไฟล์ในบัญชีผู้ใช้ของฉันได้อย่างไร
ฉันมีอินสแตนซ์ SQL Server 2012 ที่เรียกใช้เป็นบริการบนคอมพิวเตอร์ของฉันและตามหน้าบริการจะล็อกออนเป็นบัญชี "NT Service \ MSSQLSERVER" อย่างไรก็ตามฉันไม่สามารถเห็นชื่อบัญชีนั้นได้ทุกที่รวมถึงในพื้นที่ "ผู้ใช้ท้องถิ่นและกลุ่ม" ในหน้าจอการจัดการคอมพิวเตอร์เพราะตามที่ลิงค์ด้านล่างบอกว่านั่นไม่ใช่บัญชีผู้ใช้มันเป็นชื่อบริการในกล่องนั้น Microsoft จึงมีข้อความว่า "บัญชี" ที่เป็นประโยชน์ เมื่อมาถึงจุดนี้ฉันสามารถเห็นหลายคนกำลังสับสน งานที่ฉันพยายามทำให้สำเร็จคือการกู้คืนไฟล์โดยใช้กล่องโต้ตอบ "ค้นหาไฟล์สำรองข้อมูล" SSMS ซึ่งใช้ไดอะล็อกอย่างสมบูรณ์ซึ่งไม่เหมือนกับไดอะล็อกเปิดไฟล์ windows มาตรฐานใด ๆ อาจเป็นเพราะทำงาน "รีโมต" และทำงานจาก บริบทความปลอดภัยของเซิร์ฟเวอร์ SQL ซึ่งเป็นอีกแหล่งที่มาของความสับสนของผู้ใช้ขั้นปลายที่ฉันหวังว่าคำถามนี้อาจช่วยให้ชัดเจนขึ้น จนถึงตอนนี้ถ้าฉันต้องการกู้คืนไฟล์. mdf / .bak สำรองที่ฉันมีอยู่ในโฟลเดอร์ใดโฟลเดอร์หนึ่งของฉันฉันต้องตั้งค่าโฟลเดอร์นั้นให้ทุกคนสามารถอ่านได้หรืออย่างอื่นฉันไม่สามารถเข้าไปที่นั่นด้วย SQL Server "ค้นหาการสำรองข้อมูล หน้าต่างไฟล์ " ฉันพบว่าความคิดนี้ว่าคุณกำลังใช้ GUI พูดคุยกับบริการที่มีบัญชีผู้ใช้และสิทธิ์ที่แตกต่างจากคุณซึ่งไม่มีใครใน Microsoft ที่ได้รับการเอาใจใส่ที่จะทำให้คุณชัดเจนและสับสนมากแม้ว่าฉันจะมีประสบการณ์กับการบริหารระบบ windows . ฉันหวังว่าฉันพลาดเอกสารหน้าบางส่วนสำหรับ SQL Server …

1
ความแตกต่างระหว่าง EXECUTE AS USER และ EXECUTE AS LOGIN ที่ทำให้อันที่สองทำงานโดยไม่คาดหมายคืออะไร
เมื่อเร็ว ๆ นี้ฉันใช้ EXECUTE AS LOGIN เพื่อตรวจสอบว่าบางคนสามารถหรือไม่สามารถใช้ฟังก์ชันตารางในฐานข้อมูลของเรา การทดสอบแสดงให้เห็นว่าเขาทำได้ แต่เขารายงานความล้มเหลวซ้ำ ๆ บุคคลนั้นใช้ชื่อเข้าสู่ระบบ 'WEB' เพื่อเชื่อมต่อกับฐานข้อมูลและมีผู้ใช้ 'เว็บ' ในฐานข้อมูลที่เกี่ยวข้องกับชื่อเข้าสู่ระบบ 'เว็บ' ดังนั้นฉันจึงลองใช้สคริปต์ต่อไปนี้: -- part 1 EXECUTE AS USER = 'WEB' GO SELECT USER_NAME() AS 'user_name' ,SUSER_NAME() AS 'suser_name' ,SUSER_SNAME() AS 'suser_sname' ,SYSTEM_USER AS 'system_user' GO REVERT GO และ -- part 2 EXECUTE AS LOGIN = …

6
ภัยคุกคามความปลอดภัยใดที่บัญชี SA และชื่อบัญชีที่รู้จักอื่น ๆ ก่อให้เกิดความปลอดภัย?
ชื่อบัญชีที่รู้จักเช่น sa ก่อให้เกิดภัยคุกคามด้านความปลอดภัยต่อฐานข้อมูลหรือไม่? เมื่อใช้การรับรองความถูกต้องของ windows บน SQL Server มันกำหนดนโยบายรหัสผ่านเดียวกัน (หากถูกตั้งให้พูดการล็อคบัญชีหลังจาก 5 ครั้ง)

3
ผู้ใช้ไม่สามารถดูตารางใน schema ที่ไม่ใช่ค่าเริ่มต้นใน SSMS
ฉันมีปัญหาในการตั้งค่าการVIEW DEFINITIONอนุญาตอย่างเหมาะสมในระดับสคีมาสำหรับผู้ใช้รายหนึ่งของฉัน ฉันสร้างคีมาTestSchemaแล้วเพิ่มบางตาราง ผู้ใช้ปัจจุบันมีสิทธิ์ในการเข้าถึงการตั้งค่าและปรับเปลี่ยนตาราง ( SELECT, UPDATE, DELETEฯลฯ ) ผ่านdbo_datareaderและdbo_datawriterบทบาท อย่างไรก็ตามพวกเขาไม่สามารถมองเห็นตารางใด ๆ ในตัวสำรวจวัตถุ SSMS ฉันลองให้สิทธิ์เพื่อดูคำจำกัดความ: grant view definition on SCHEMA :: [TestSchema] to [User] นั่นไม่ได้ผล ฉันพยายามตั้งค่าการอนุญาตระดับตาราง: grant view definition on [TestSchema].[NewTable] to [User] นั่นก็ไม่ได้ผล จากนั้นฉันก็ลองแค่ให้ผ้าห่ม: grant view definition to [User] และนั่นก็ใช้ได้ ตอนนี้พวกเขาสามารถมองเห็นTestSchemaได้เช่นเดียวกับสกีมาอื่น ๆ ที่พวกเขาไม่ควรเข้าถึง เป้าหมายของฉันที่นี่คืออนุญาตให้ผู้ใช้ดูตารางทั้งหมดภายในสคีมาที่กำหนด ฉันจะทำให้สำเร็จได้อย่างไร หากฉันควรจะทำสิ่งนี้โดยค่าเริ่มต้นฉันควรตรวจสอบสิทธิ์ใดบ้างเพื่อค้นหาสาเหตุที่ทำไม่ได้

1
เหตุใดฐานข้อมูล MSDB จึงเชื่อถือได้
การTRUSTWORTHYตั้งค่าอาจค่อนข้างอันตรายหากคุณไม่ระวังและยกเว้นในบางกรณีคำแนะนำคือให้ปิดไว้ อย่างไรก็ตามโดยค่าเริ่มต้นMSDBฐานข้อมูลได้TRUSTWORHTYตั้งค่าไว้ONตามค่าเริ่มต้น ฉันสงสัยว่าทำไม ฉันอ่านรายการนี้เป็นBOL แล้ว หมายเหตุโดยค่าเริ่มต้นการตั้งค่า TRUSTWORTHY ถูกตั้งค่าเป็น ON สำหรับฐานข้อมูล MSDB การเปลี่ยนแปลงการตั้งค่านี้จากค่าเริ่มต้นอาจส่งผลให้เกิดพฤติกรรมที่ไม่คาดคิดโดยคอมโพเนนต์ของ SQL Server ที่ใช้ฐานข้อมูล MSDB แต่ฉันอยากรู้เกี่ยวกับเฉพาะ ทำไมMSDBต้องTRUSTWORTHYเปิดใช้งานโดยเฉพาะ ฟังก์ชั่นใช้งานอะไร?

1
การติดตาม SQL Server ขึ้นอยู่กับพอร์ต TCP ของไคลเอ็นต์
ฉันมีเทอร์มินัลเซิร์ฟเวอร์ Windows ที่มีผู้ใช้หลายคนลงชื่อเข้าใช้ผ่าน RDP เพื่อเรียกใช้แอปพลิเคชัน แอปพลิเคชันทำให้การเชื่อมต่ออย่างน้อยหนึ่งรายการต่อผู้ใช้กับอินสแตนซ์ของ SQL Server 2008 R2 ผู้ใช้ทั้งหมดเข้าถึงฐานข้อมูลเดียวกันโดยใช้การเข้าสู่ระบบ SQL เดียวกัน ฉันต้องการที่จะสามารถติดตามเซสชัน SQL ของผู้ใช้เฉพาะ แต่ฉันไม่พบวิธีการตรวจสอบเซสชัน SQL ที่เป็นของผู้ใช้ที่ อย่างไรก็ตามฉันสามารถระบุพอร์ต TCP ต้นทางแต่ละอินสแตนซ์ของแอปพลิเคชันที่ใช้ มีวิธีการติดตามเซสชัน SQL ที่ยึดตามพอร์ต TCP ของลูกค้าหรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.