[위 에]Chapter 3 Protecting the Data(4):프로그램 캐릭터 생 성 및 사용
,테마 목록: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 를 열 고 특정 데이터베이스 의[안전성]→[캐릭터]아래 에서[응용 프로그램 캐릭터]를 오른쪽 클릭 하고[새 응용 프로그램 캐릭터]를 선택 합 니 다.
2.캐릭터 이름,비밀번호,선택 가능 한 기본 구 조 를 입력 하 십시오.비어 있 으 면 dbo 입 니 다.
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();
}
다음 편:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깊이 중첩된 객체를 정확히 일치 검색 - PostgreSQL목차 * 🚀 * 🎯 * 🏁 * 🙏 JSON 객체 예시 따라서 우리의 현재 목표는 "고용주"사용자가 입력한 검색어(이 경우에는 '요리')를 얻고 이 용어와 정확히 일치하는 모든 사용자 프로필을 찾는 것입니다. 즐거운 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.