내 프로그램은 ADO.NET API를 사용하여 SQL 데이터베이스를 만들고 SQL 연결/트랜잭션을 조작합니다. 데이터베이스가 생성되면 'sa'자격 증명을 사용하여 서버에 연결합니다. 이것은 'sa'자격 증명을 사용하여 데이터베이스에 연결할 수있는 유일한 시간입니다. 이 초기 연결 중에 로그인과 사용자를 몇 개 만들어야합니다. 그러면 해당 사용자의 자격 증명이 사용됩니다. 이제 어떻게 로그인과 사용자를 만들 수 있는지 알지만 액세스가 제한되는 것 같습니다. 특히, 1 db 로그인과 데이터베이스에 대해 생성 된 모든 저장 프로 시저에 액세스 할 수있는 사용자를 생성해야합니다. 일종의 db admin과 비슷하지만 매우 제한적입니다 (저장된 procs 만). 그리고 두 번째 db login/user는 몇 개의 특정 저장된 procs에만 접근 할 수 있습니다. 어떤 포인터? 감사!
다음답변
)
당신이 필요로하는 모든 당신의 sa 사용자로이 프로 시저를 호출하는 것입니다. 두 번째 사용자의 경우 역할에 포함시킨 다음 2 개의 sprocs에 대한 권한을 거부했습니다. 많은 sprocs에 대한 사용 권한을 거부하고 일부 sprocs에만 사용 권한을 부여하는 경우 부여 할 각 개체에 대해 두 번째 사용자를 역할에 포함시키지 않고 사용 권한을 개별적으로 부여하지 않는 것이 좋습니다. 이는 귀하에게 달려 있으며 귀하의 상황에 가장 적합한 방법입니다.
--Replace db with your database name
USE db
--Create a database role
CREATE ROLE db_execonly
--Grant EXEC permissions to the role
GRANT EXECUTE TO db_execonly
--Add users to the new role
EXEC sp_addrolemember 'db_execonly', 'user1'
EXEC sp_addrolemember 'db_execonly', 'user2'
--Deny permissions to specific objects for user2
DENY EXEC ON OBJECT::dbo.usp_sproc1 TO user2
DENY EXEC ON OBJECT::dbo.usp_sproc2 TO user2
고마워, 브라이언. 두 솔루션 모두를 가지고 노는 것이 더 우아 해 보입니다. 나는 그것을 테스트하고 결과를 게시 할 것이다. – kateroh
당신은 사용자에게 모든 저장 프로 시저에 대한 액세스 권한을 부여하는 저장 프로 시저를 찾을 수 있습니다
간부 인 수있는 권한이 필요 사용자와 그것을 호출하는 것입니다 당신이해야 할 모든 모든 저장 프로 시저를 매개 변수로 사용합니다. 저장 프로 시저에 대한 액세스를 허용하는 데 사용되는 GRANT를 볼 수있는이 스크립트에서
은 다음과 같습니다GRANT EXEC ON ' + '[' + @OwnerName + ']' + '.' + '[' + @ObjectName + ']' + ' TO ' + @user
편집 : 그것이
CREATE PROCEDURE spGrantExectoAllStoredProcs @user sysname
AS
/*----------------------------------------------------------------------------
-- Object Name: spGrantExectoAllStoredProcs
-- Author: Edgewood Solutions
-- Development Date: 03.19.2007
-- Called By: TBD
-- Description: Issue GRANT EXEC statement for all stored procedures
-- based on the user name that is passed in to this stored procedure
-- Project: SQL Server Security
-- Database: User defined databases
-- Business Process: SQL Server Security
--
----------------------------------------------------------------------------
-- Num | CRF ID | Date Modified | Developer | Description
----------------------------------------------------------------------------
-- 001 | N\A | 03.15.2007 | Edgewood | Original code for the GRANT
-- EXEC process
--
--
*/
SET NOCOUNT ON
-- 1 - Variable declarations
DECLARE @CMD1 varchar(8000)
DECLARE @MAXOID int
DECLARE @OwnerName varchar(128)
DECLARE @ObjectName varchar(128)
-- 2 - Create temporary table
CREATE TABLE #StoredProcedures
(OID int IDENTITY (1,1),
StoredProcOwner varchar(128) NOT NULL,
StoredProcName varchar(128) NOT NULL)
-- 3 - Populate temporary table
INSERT INTO #StoredProcedures (StoredProcOwner, StoredProcName)
SELECT ROUTINE_SCHEMA, ROUTINE_NAME
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_NAME NOT LIKE 'dt_%'
AND ROUTINE_TYPE = 'PROCEDURE'
-- 4 - Capture the @MAXOID value
SELECT @MAXOID = MAX(OID) FROM #StoredProcedures
-- 5 - WHILE loop
WHILE @MAXOID > 0
BEGIN
-- 6 - Initialize the variables
SELECT @OwnerName = StoredProcOwner,
@ObjectName = StoredProcName
FROM #StoredProcedures
WHERE OID = @MAXOID
-- 7 - Build the string
SELECT @CMD1 = 'GRANT EXEC ON ' + '[' + @OwnerName + ']' + '.' + '[' + @ObjectName + ']' + ' TO ' + @user
-- 8 - Execute the string
-- SELECT @CMD1
EXEC(@CMD1)
-- 9 - Decrement @MAXOID
SET @MAXOID = @MAXOID - 1
END
-- 10 - Drop the temporary table
DROP TABLE #StoredProcedures
SET NOCOUNT OFF
GO
다음의 링크에서 저장 프로 시저를 붙여 . 나는 데이터베이스 역할을 생성 한 다음에 사용자를 추가 할 수
팁 주셔서 감사합니다. 이 방식으로 데이터베이스에 저장된 모든 procs에 EXEC을 부여 할 수 있어야합니다. – kateroh
@kateroh : 그것은 링크에서 주어진 저장 프로 시저가하는 것입니다. :) 그러나 길기 때문에 붙여 넣기를 원하지 않았습니다. 좋아, 내 게시물을 붙여 넣어 편집합니다. 나는 SQL Server 2005 버전을 사용합니다. 그렇지 않은 경우 링크로 이동하십시오. – LaGrandMere
@LaGandMere : 답변 해 주셔서 감사합니다. 새로운 저장 프로 시저가 추가 될 때마다이 코드를 모든 사용자에게 다시 실행시켜야합니다. 그리 좋지는 않습니다. Isran은 '실행'권한 만 더 부여 된 db 역할을 가진 솔루션을 제안하지 않습니다 (아래 Brian 제안)? 그의 접근 방식에는 단점이 있습니까? 감사! – kateroh
- 1. SQL Server 및 SSIS 사용 권한 문제?
- 2. SQl 서버 2008 사용 권한 및 암호화
- 3. 사용자 권한
- 4. SQL Server - 테이블 단위의 사용 권한?
- 5. PHP 및 사용 권한
- 6. LINQ 및 데이터베이스 사용 권한
- 7. SVN 사용자 그룹 및 권한
- 8. SQL Server 2008의 사용 권한
- 9. 정수의 비트로 사용자 권한 사용
- 10. 사용자 역할 및 권한
- 11. ASP.NET 역할 및 사용 권한
- 12. SQL Server 2005 사용자 권한
- 13. MySQL의 암호 및 사용 권한
- 14. ASP.NET 계정에서 Windows 계정 만들기 및 파일 사용 권한 설정
- 15. 장고 및 파일 사용 권한 : 모범 사례?
- 16. T-SQL 복사 로그인, 사용자, 역할, 사용 권한 등
- 17. ASP.Net 세션 상태 SQL Server 사용자 권한
- 18. 프로세스 권한 제한
- 19. Sql 서버 암호화 또는 보안 사용 권한
- 20. MySQL User AutoIncrement 권한 제한
- 21. IIS7 및 파일 사용 권한
- 22. 장고 - 사용 권한 및 프로필
- 23. 기괴한 SQL Server 사용 권한 질문
- 24. ASP.NET MVC 권한 부여 및 모델 클래스 사용 권한
- 25. 사용자 권한
- 26. 사용자 권한 및 COM 개체
- 27. inet_ntoa() 및 Windows 사용자 권한
- 28. PostgreSQL 사용자 그룹 및 권한
- 29. 개발자를위한 적절한 SQL Server 사용 권한
- 30. Asp.net 사용자 인증 및 권한 부여
편집 된 게시물은 자세한 내용입니다. 내가 쓴 것이 명확하지 않은지 물어보십시오 :) – LaGrandMere