db_ddladmin 및 db_owner
내가 테스트하고 읽은 내용에서 알 수있는 것에서 대부분 db_ddladmin
DOES가 허용하지 않는 한 목록이 정확 해 보입니다 CREATE SCHEMA
. 나열된 다른 보안 권한이 실제로 거부되었음을 확인했습니다.
DDLADMIN 만 거부 됨 :
[ALTER ANY USER]
[BACKUP DATABASE]
, [BACKUP LOG]
,[CHECKPOINT]
[ALTER ANY APPLICATION ROLE]
, [ALTER ANY ROLE]
[DROP DATABASE]
그 지적. . .
db_datareader
SELECT
모든 테이블에 대한 액세스를 허용 합니다
db_datarwriter
, 및 모든 테이블에 대한 액세스를 허용합니다 INSERT
.UPDATE
DELETE
db_executor
EXECUTE
모든 실행 가능한 개체에 대한 액세스를 허용 합니다
또한 db_ddladmin 역할 권한이 있다는 의미 일 수 있습니다. . .
참고 : 2005-2014 년에 SQL Server 버전이 매우 다양하므로 처음에는 소수의 사용자 만 테스트하여 꼬임 등을 제거하기 위해 비명을 지르는 사람을 확인하는 것이 가장 좋습니다.
이 역할로 소유 한 객체는 DBO가 소유하지 않으므로이 수준의 무언가에 문제가있는 경우 소유권 변경 문제를 처리해야 할 수도 있습니다. 나는 이것이 문제가 될 것이라고 100 % 확신하지는 않지만 단지 경우를 언급 할 가치가 있습니다.
출처 : 소유권 체인
이 역할을 사용하면 (SQL Server 버전에 따라 다를 수 있음) 현재 DB에 정의 된 SQL 보안 원칙을 여전히 소유 한 개체에 추가 할 수 있으며 모든 개체 (소유하지 않은 개체 ) 는 물론 새로운 서버를 추가 할 수 있습니다 -레벨은 보안 수준을 DB 레벨로 정의했습니다.
또한 DBO 역할 권한이 없다는 의미 일 수 있습니다. . .
참고 : 2005-2014 년에 SQL Server 버전이 매우 다양하므로 처음에는 소수의 사용자 만 테스트하여 꼬임 등을 제거하기 위해 비명을 지르는 사람을 확인하는 것이 가장 좋습니다.
다른 고려 사항
사례별로 검토 중이라고 말 했으므로
현재 제한되는 권한 중 하나는 db_owner 권한입니다.
이 권한은 사례별로 검토되고 있지만 일반적인 변경 사항은 db_owner 권한을 다음으로 바꾸는 것입니다.
- db_datareader
- db_datawriter
- db_ddladmin
- db_executor
db_ddladmin
DB 레벨 오브젝트에 실제로 필요한 것보다 더 많은 역할을 부여하므로 역할을 부여하는 대신 각 사용자에게 필요한 "모든 오브젝트"DB 레벨 액세스에 대한 추가 사용자 정의 역할 작성을 고려 했습니까?
나는 보통 그들이 필요로하는 것을 정확하게하고 그들의 일을하기 위해 더 이상 아무것도하지 않으며, DB의 모든 객체에 대한 DB 수준의 객체 접근에 "일반적인"또는 "표준적인"필요가 있다면, 다음과 같은 커스텀 DB 역할을 생성합니다. db_executor
하지만 아래 예를 참조하십시오. 이렇게하면 보안을 위해 DB에 명시적인 객체 수준을 얻지 못하는 경우 사람들에게 특정 DB의 모든 DB 객체에 실제로 필요한 것을 부여 할 수 있습니다.
----Custom Database Roles
/* CREATE A NEW ROLE -- Execute to all stored procs including newly created ones*/
-- Database specific
CREATE ROLE db_All_StoredProc_Execute
GRANT EXECUTE TO db_All_StoredProc_Execute
/* CREATE A NEW ROLE -- Alter to all stored procs including newly created ones*/
-- Database specific
CREATE ROLE db_All_StoredProc_Alter
GRANT ALTER ANY SCHEMA TO db_All_StoredProc_Alter
/* CREATE A NEW ROLE -- View Definition to all stored procs including newly created ones*/
-- Database specific
CREATE ROLE db_All_StoredProc_View
GRANT VIEW DEFINITION TO db_All_StoredProc_View
/* CREATE A NEW ROLE - Any schema alter and create procedure permissions */
-- Database specific
CREATE ROLE db_All_CreateProc_AlterSchema
GRANT ALTER ANY SCHEMA TO db_All_CreateProc_AlterSchema
GRANT CREATE PROCEDURE TO db_All_CreateProc_AlterSchema
GO
/* CREATE A NEW ROLE - Any schema alter and create table permissions */
-- Database specific
CREATE ROLE db_All_CreateTable_AlterSchema
GRANT ALTER ANY SCHEMA TO db_All_CreateTable_AlterSchema
GRANT CREATE TABLE TO db_All_CreateTable_AlterSchema
/* CREATE A NEW ROLE - Any schema alter and create function permissions */
-- Database specific
CREATE ROLE db_All_CreateFunction_AlterSchema
GRANT ALTER ANY SCHEMA TO db_All_CreateFunction_AlterSchema
GRANT CREATE FUNCTION TO db_All_CreateFunction_AlterSchema
/* CREATE A NEW ROLE - Any schema alter and create aggregate permissions */
-- Database specific
CREATE ROLE db_All_CreateAggregate_AlterSchema
GRANT ALTER ANY SCHEMA TO db_All_CreateAggregate_AlterSchema
GRANT CREATE AGGREGATE TO db_All_CreateAggregate_AlterSchema
/* CREATE A NEW ROLE - Any schema alter and create view permissions */
-- Database specific
CREATE ROLE db_All_CreateView_AlterSchema
GRANT ALTER ANY SCHEMA TO db_All_CreateView_AlterSchema
GRANT CREATE VIEW TO db_All_CreateView_AlterSchema
/* CREATE A NEW ROLE - Any schema alter and create schema permissions */
-- Database specific
CREATE ROLE db_All_CreateSchema_AlterSchema
GRANT ALTER ANY SCHEMA TO db_All_CreateSchema_AlterSchema
GRANT CREATE SCHEMA TO db_All_CreateSchema_AlterSchema
나는 또한 당신이 명시 적으로 다르게 만드는 것이 생각 할 수있는 db_DDLAdmin_Restriction 역할 공유하기를 원해요 DENY
것을 제한하는 db_ddladmin
명시 적 당신이 그 (것)들에게이 역할을 부여 할 위치를 적어도 데시벨에이를 만들 수 있도록 액세스 권한을 부여을 설정하고 DENY
실제 객체 유형을 등에 액세스 할 수 없도록하고 싶습니다.
예를 들어, 당신이 알고있는 경우가 확실히 저장 프로 시저 및 함수를 만들 수, 제외 수있는 것이다 DENY CREATE FUNCTION
, DENY CREATE PROCEDURE
, DENY ALTER ANY SCHEMA
.
---Create ddladmin restriction custom DB role
DENY ALTER ANY ASSEMBLY TO db_DDLAdmin_Restriction
DENY ALTER ANY ASYMMETRIC KEY TO db_DDLAdmin_Restriction
DENY ALTER ANY CERTIFICATE TO db_DDLAdmin_Restriction
DENY ALTER ANY CONTRACT TO db_DDLAdmin_Restriction
DENY ALTER ANY DATABASE DDL TRIGGER TO db_DDLAdmin_Restriction
DENY ALTER ANY DATABASE EVENT NOTIFICATION TO db_DDLAdmin_Restriction
DENY ALTER ANY DATASPACE TO db_DDLAdmin_Restriction
DENY ALTER ANY FULLTEXT CATALOG TO db_DDLAdmin_Restriction
DENY ALTER ANY MESSAGE TYPE TO db_DDLAdmin_Restriction
DENY ALTER ANY REMOTE SERVICE BINDING TO db_DDLAdmin_Restriction
DENY ALTER ANY ROUTE TO db_DDLAdmin_Restriction
DENY ALTER ANY SCHEMA TO db_DDLAdmin_Restriction
DENY ALTER ANY SERVICE TO db_DDLAdmin_Restriction
DENY ALTER ANY SYMMETRIC KEY TO db_DDLAdmin_Restriction
DENY CHECKPOINT TO db_DDLAdmin_Restriction
DENY CREATE AGGREGATE TO db_DDLAdmin_Restriction
DENY CREATE DEFAULT TO db_DDLAdmin_Restriction
DENY CREATE FUNCTION TO db_DDLAdmin_Restriction
DENY CREATE PROCEDURE TO db_DDLAdmin_Restriction
DENY CREATE QUEUE TO db_DDLAdmin_Restriction
DENY CREATE RULE TO db_DDLAdmin_Restriction
DENY CREATE SYNONYM TO db_DDLAdmin_Restriction
DENY CREATE TABLE TO db_DDLAdmin_Restriction
DENY CREATE TYPE TO db_DDLAdmin_Restriction
DENY CREATE VIEW TO db_DDLAdmin_Restriction
DENY CREATE XML SCHEMA COLLECTION TO db_DDLAdmin_Restriction
DENY REFERENCES TO db_DDLAdmin_Restriction
GO