[위 에]Chapter 2 User Authentication,Authorization,and Security(9):로그 인 이름과 사용자 가 메타 데 이 터 를 보 는 것 을 방지 합 니 다.
,테마 목록:http://blog.csdn.net/dba_huangzj/article/details/37906349
작가 의 동의 없 이 그 누구 도'오리지널'형식 으로 발표 할 수 없고 상업 용도 로 사용 할 수 없 으 며 본인 은 어떠한 법률 적 책임 도 지지 않 습 니 다.
전편:http://blog.csdn.net/dba_huangzj/article/details/38944121
선언:
SQL Server 2005 이전에 모든 서버 와 데이터베이스 메타 데 이 터 는 모두 가 볼 수 있 었 다.네트워크 뱅 크 기반 시스템 이 SQL Server 인 스 턴 스 를 고객 에 게 공유 할 때 다른 사용자 의 정 보 를 볼 수 있 습 니 다.2005 년 부터 로그 인 이름 이나 사용자 가 불필요 한 메타 데 이 터 를 볼 수 있 도록 제어 권한 을 통 해 제한 할 수 있 습 니 다.
실현:
모든 로그 인 이름 에 데이터 베 이 스 를 숨 길 필요 가 있다 면,Public 캐릭터 의 VIEW ANY DATABASE 권한 을 제거 할 수 있 습 니 다.
USE master;
GO
REVOKE VIEW ANY DATABASE TO public;
일부 계 정 이 모든 데이터 베 이 스 를 볼 수 있 도록 허용 할 때 사용자 정의 서버 역할 을 만 들 수 있 습 니 다.
USE master;
CREATE SERVER ROLE [DatabaseViewer];
GO
GRANT VIEW ANY DATABASE TO [DatabaseViewer];
ALTER SERVER ROLE [DatabaseViewer] ADD MEMBER [Fred];
master 와 tempdcb 는 항상 모든 로그 인 을 볼 수 있 습 니 다.
일부 데이터베이스 설정 을 선택적으로 볼 수 없습니다.로그 인 은[대상 자원 관리자]에서 모든 데이터 베 이 스 를 볼 수 있 거나 모든 라 이브 러 리 를 볼 수 없습니다.로그 인 이름 이 VIEW ANY DATABASE 서버 권한 을 부여 하면[대상 자원 관리자]에서 서버 의 모든 데이터 베 이 스 를 보 거나 sys.databases 디 렉 터 리 보기에 서 모든 데이터 베 이 스 를 조회 할 수 있 습 니 다.로그 인 이름 이 이 권한 이 없 지만 데이터베이스 에 비 친 사용자 라면 모든 데이터 베 이 스 를 볼 수 없 지만 sys.databases 를 사용 하여 데이터베이스 정 보 를 되 돌려 주 고 USE 데이터베이스 명령 을 사용 하여 데이터 베 이 스 를 전환 할 수 있 습 니 다.
데이터 베 이 스 를 선택적으로 볼 수 있 는 유일한 방법 은 로그 인 이름 을 데이터베이스 의 owner 로 하 는 것 입 니 다.
ALTER AUTHORIZATION ON DATABASE::marketing TO [Fred];
데이터베이스 의 owner 는 데이터베이스 에 있 는 모든 권한 을 가지 고 있 지만,데이터 베 이 스 는 하나의 owner 만 있 습 니 다.여러 로그 인 이름 이 동시에 하나의 데이터 베 이 스 를 owner 설정 할 수 없습니다.
데이터 베이스 에서 특정한 데이터 베이스 대상 을 특정한 사용자 에 게 정의 할 수 있 습 니 다.SSMS 에서 데이터 베 이 스 를 오른쪽 클릭 하 는[안전성]노드 는[사용자]→[속성]중의[안전 대상]을 선택 한 다음 에[찾기]에 특정한 대상 을 추가 할 수 있 습 니 다.예 를 들 어 표,저장 과정 이나 구조 등 입 니 다.그리고[정의 보기]의[수여]열 을 선택 하 십시오.
명령 으로 도 가능 합 니 다.위 그림 의[스 크 립 트]를 주의 하 십시오.명령 을 기억 하지 못 할 때 이 단 추 를 누 르 면 코드 가 자동 으로 생 성 됩 니 다.
use [AdventureWorks2012]
GO
GRANT VIEW DEFINITION ON [dbo].[AWBuildVersion] TO [test]
GO
원리:
권한 을 수 여 받 을 수 있 는 메타 데이터 권한 을 아래 문장 으로 볼 수 있 습 니 다.
SELECT parent_class_desc AS parent ,
class_desc AS class ,
permission_name AS permission
FROM sys.fn_builtin_permissions(NULL)
WHERE permission_name LIKE 'VIEW%'
ORDER BY CASE parent_class_desc
WHEN '' THEN 0
WHEN 'SERVER' THEN 1
WHEN 'DATABASE' THEN 2
WHEN 'SCHEMA' THEN 3
END ,
class ,
permission;
[정의 보기]권한 은 비 서버 범위 내 에서 볼 수 있 는 권한 입 니 다.모든 범위 내 에서 볼 필요 가 있다 면[VIEW ANY DEFINITION]을 사용 해 야 합 니 다.이 권한 을 부여 하면 로그 인 을 통 해 인 스 턴 스 의 모든 정 의 를 볼 수 있 습 니 다.[모든 데이터 베 이 스 를 보기]데이터 베 이 스 를 방문 해 야 하지만 서버 의 다른 대상 에 접근 하지 않 아 도 되 는 로그 인 이름 에 적합 합 니 다.
데이터베이스 에서 사용 자 는 자신 이 권한 이 있 는 대상 을 볼 수 있 습 니 다.기본 적 인 상황 에서 한 사용 자 는 Public 데이터베이스 역할 의 구성원 일 뿐 권한 이 없습니다.db 사용datareader 고정 데이터베이스 역할 은 이 사용자 가 모든 시 계 를 볼 수 있 도록 해 주 고 VIEW DEFINITION 에 저장 과정,함수 또는 트리거 를 부여 하여 바 텀 코드 를 볼 수 있 도록 해 줍 니 다.다른 사람 에 게 보 여주 고 싶 지 않 으 면 대상 을 만 들 때 WITH ENCRYPTION(후속 설명)을 사용 할 수 있 습 니 다.
다음 편:http://blog.csdn.net/dba_huangzj/article/details/39473895
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깊이 중첩된 객체를 정확히 일치 검색 - PostgreSQL목차 * 🚀 * 🎯 * 🏁 * 🙏 JSON 객체 예시 따라서 우리의 현재 목표는 "고용주"사용자가 입력한 검색어(이 경우에는 '요리')를 얻고 이 용어와 정확히 일치하는 모든 사용자 프로필을 찾는 것입니다. 즐거운 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.