[위 에]Chapter 3 Protecting the Data(4):프로그램 캐릭터 생 성 및 사용

원문의 출처:http://blog.csdn.net/dba_huangzj/article/details/39927713
,테마 목록:http://blog.csdn.net/dba_huangzj/article/details/37906349
작가 의 동의 없 이 그 누구 도'오리지널'형식 으로 발표 할 수 없고 상업 용도 로 사용 할 수 없 으 며 본인 은 어떠한 법률 적 책임 도 지지 않 습 니 다.
        전편:http://blog.csdn.net/dba_huangzj/article/details/39639365
 
선언:
 
데이터베이스 역할 은 데이터베이스 내부 의 접근 과 권한 을 관리 하 는 데 사용 된다.데이터베이스 역할 구성원 은 SSMS 와 같은 클 라 이언 트 소프트웨어 를 통 해 SQL Server 를 연결 할 수 있 는 데이터베이스 사용자 이지 만 특정한 사용자 에 게 특권 을 부여 하고 싶 을 수도 있 습 니 다.그러나 SSMS 가 아 닌 특정한 응용 프로그램 에 만 제한 할 때 첫 번 째 해결 방안 은 전용 SQL 계 정 을 응용 프로그램의 로그 인 으로 사용 하 는 것 입 니 다.그러나 이 방안 의 단점 은 SQL Server 인증 을 사용 해 야 하고 어떤 사용자 가 SQL Server 에 연결 하고 있 는 지 표시 할 수 없다 는 것 이다.그러나 같은 프로그램 로그 인 이름 을 사용 하고 윈도 인증 을 사용 할 수 있 기 때문에 프로그램의 사용 자 를 더욱 잘 표시 하고 필요 할 때 권한 을 높 일 수 있다.
 
실현:
 
1.SSMS 를 열 고 특정 데이터베이스 의[안전성]→[캐릭터]아래 에서[응용 프로그램 캐릭터]를 오른쪽 클릭 하고[새 응용 프로그램 캐릭터]를 선택 합 니 다.
 
[置顶] Chapter 3 Protecting the Data(4):创建和使用应用程序角色_第1张图片
 
2.캐릭터 이름,비밀번호,선택 가능 한 기본 구 조 를 입력 하 십시오.비어 있 으 면 dbo 입 니 다.
 
[置顶] Chapter 3 Protecting the Data(4):创建和使用应用程序角色_第2张图片
 
3.[안전 대상]페이지 에서 데이터베이스 역할 과 같이 응용 프로그램 역할 을 관리 할 수 있 는 권한:
 
[置顶] Chapter 3 Protecting the Data(4):创建和使用应用程序角色_第3张图片
 
4.T-SQL 로 도 이 동작 을 수행 할 수 있 습 니 다.
CREATE APPLICATION ROLE MarketingReports WITH PASSWORD = N'A complex password please';

 
5.프로그램 에서 프로그램 캐릭터 를 사용 할 때 sp 사용setapprole 시스템 저장 프로 세 스 수정 세 션 의 상하 문:
EXEC sp_setapprole @rolename = 'MarketingReports',     @password = N'A complex password please';

이 저장 과정 을 실행 하면 현재 세 션 은 응용 프로그램 역할 의 컨 텍스트 에서 실 행 될 것 이 며,기 존 데이터베이스 사용자 의 권한 을 대체 할 수 있 는 권한 을 부여 할 수 있 습 니 다.
 
원리:
 
응용 프로그램 캐릭터 는 코드 에서 사용 할 수 있 으 며 sp 만 사용 할 수 있 습 니 다.setapprole 저장 과정 은 암호 전송 이 명문 이기 때문에 SSL 과 같은 전송 링크 를 암호 화해 야 합 니 다.컨 텍스트 전환 후 응용 프로그램 캐릭터 의 컨 텍스트 는 서버 연결 이 끊 길 때 까지 계 속 됩 니 다.복구 가 필요 하지만 연결 이 끊 어 지면 sp 를 사용 할 수 있 습 니 다.unsetapprole:
DECLARE @cookie varbinary(8000); 
EXEC sp_setapprole @rolename = 'MarketingReports', 
     @password = N'A complex password please', 
     @fCreateCookie = true, @cookie = @cookie OUTPUT; 
-- do something, then revert : 
EXEC sp_unsetapprole @cookie;

 
더 많은:
 
다음 C\#세 션 은 연결 후 바로 응용 프로그램 역할 을 사용 할 수 있 습 니 다.
using (SqlConnection cn = new SqlConnection(connectionString)) 
{ 
    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = cn; 
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = 
               "EXEC sp_setapprole @rolename = 'MarketingReports',  
@password = N'A complex password please'"; 
    cn.Open(); 
    int res = cmd.ExecuteNonQuery(); 
}

다음 편:

좋은 웹페이지 즐겨찾기