Tuesday, June 3, 2014

SQL Server Users and Role Assignments


การสร้าง usesr proxyCMAH ด้วย Management Studio
สร้าง role ใน Master database

Role
Permission
CMAH_SYS
EXECUTE ON [sys].[sp_OADestroy]
EXECUTE ON [sys].[sp_OACreate]
EXECUTE ON [sys].[sp_OAMethod]
EXECUTE ON [sys].[sp_OASetProperty]



สร้าง role ใน CMAH database

Role
Permission
CMAH_APP
Default

เพิ่ม user proxyCMAH เข้า role CMAH_APP
db_owner
Add CMAH_APP role to this role




ตรวจสอบ Server Roles



ทำ User Mapping  และตรวจสอบ Database role



การสร้าง user ด้วย SQL script
หากต้องการเปลี่ยนชื่อให้แทนที่ proxyCMAH_RPT ด้วยชื่อที่ต้องการ

  1. สร้าง User login หากยังไม่มี
USE [master]
GO
CREATE LOGIN [proxyCMAH_RPT] WITH PASSWORD=N'P@ssw0rd', DEFAULT_DATABASE=[CMAH], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
  1. สร้าง Role ใหม่และ Grant Privilege เข้า Role ใน Master database เพื่อใช้งาน System Stored Procesure
USE [master]
GO
CREATE ROLE [CMAH_RPT]
GO
use [master]
GO
GRANT EXECUTE ON [sys].[sp_OACreate] TO [CMAH_RPT]
GO
use [master]
GO
GRANT EXECUTE ON [sys].[sp_OADestroy] TO [CMAH_RPT]
GO
use [master]
GO
GRANT EXECUTE ON [sys].[sp_OAGetErrorInfo] TO [CMAH_RPT]
GO
use [master]
GO
GRANT EXECUTE ON [sys].[sp_OAGetProperty] TO [CMAH_RPT]
GO
use [master]
GO
GRANT EXECUTE ON [sys].[sp_OAMethod] TO [CMAH_RPT]
GO
use [master]
GO
GRANT EXECUTE ON [sys].[sp_OASetProperty] TO [CMAH_RPT]
GO
use [master]
GO
GRANT EXECUTE ON [sys].[sp_OAStop] TO [CMAH_RPT]
GO
  1. สร้าง User ใน Master Database และ Assign role ที่สร้างไว้
USE [master]
GO
CREATE USER [proxyCMAH_RPT] FOR LOGIN [proxyCMAH_RPT] WITH DEFAULT_SCHEMA=[dbo]
GO
USE [master]
GO
EXEC sp_addrolemember N'CMAH_RPT', N'proxyCMAH_RPT'
GO
  1. สร้าง User ใน MSDB database และ Assign role วำหรับจัดการ Job ได้
USE [msdb]
GO
CREATE USER [proxyCMAH_RPT] FOR LOGIN [proxyCMAH_RPT] WITH DEFAULT_SCHEMA=[dbo]
GO
USE [msdb]
GO
EXEC sp_addrolemember N'SQLAgentOperatorRole', N'proxyCMAH_RPT'
GO
  1. สร้าง Role ใหม่
USE [CMAH]
GO
CREATE ROLE [CMAH_RPT]
GO
  1. Grant role ที่สร้างขึ้นใหม่เข้าใน role db_owner
USE [CMAH]
GO
EXEC sp_addrolemember N'db_owner', N'CMAH_RPT'
GO
  1. สร้าง User ใน CMAH database และ Assign role ใหม่ที่สร้าง
USE [CMAH]
GO
CREATE USER [proxyCMAH_RPT] FOR LOGIN [proxyCMAH_RPT] WITH DEFAULT_SCHEMA=[dbo]
GO
USE [CMAH]
GO
EXEC sp_addrolemember N'CMAH_RPT', N'proxyCMAH_RPT'
GO


SQL Server Reporting Service Role Customization

Customizing Role Definitions
Go to Management Studio => Connect Reporting Service

Create new role name “Report Administrator” and select tasks as below
Role Assignment
เนื่องจาก Role ใน Parent folder จะ inherit ไป sub-folder และ report file ด้วย
[Home] =>
[ReportingCMAH] =>
FZDRPT001R01
FZDRPT001R02
ดังนั้นเพื่อให้ user ReportAdminCMAH สามารถทำ Role Assignment ได้เฉพาะ report ของตนเอง
ใน [Home] ให้ assign role เป็น Browser เท่านั้น ดังรูป




For report folder
ใช้ security ที่ inherit จาก [HOME] เป็น Browser เพื่อป้องกันไม่ให้ เปลี่ยนสิทธิเป็น Content Manager และทำอย่างอื่นได้
For each report file
- ให้เลือก report และเลือก tab Properties => Security ดังรูป จะเห็นว่า Default security จะถูก inherit จาก Parent folder
- แต่เราต้องการ Overwrite security ดังนั้นให้เลือก Edit Item Security
ให้กด OK เพื่อยืนยัน




เลือก Edit ที่หน้า user ReportAdminCMAH

Uncheck role Browser และ check ที่ role Report Administrator


ต่อไปให้ลองทดสอบการใช้งานด้วย user ReportAdminCMAH กับ report ที่เรา set security ไป

การทดสอบ
- เข้าใช้งานด้วย ReportAdminCMAH
- สังเกตหน้า [HOME] จะเปลี่ยนแปลงไป
- เข้าไปใน folder ReportingCMAH สังเกตที่หน้าจอ จะได้ปรากฏ toolbar ใดๆ

- เข้าไปใน report FZDRPT001R01 ที่ได้ set security ไว้ จะสังเกตเห็นว่าสามารถทำ role assignment ได้

- เพิ่มเติม!!!  ให้ลองเข้าไป report ที่ยังไม่ได้ set security ไว้จะสังเกตได้ว่าไม่สามารถทำ role assignment ได้