SQL 서버 부여

Sql Seobeo Buyeo



이 문서에서는 SQL Server에서 GRANT 문을 사용하여 보안 개체에 대한 권한을 보안 주체에 부여하는 방법을 이해합니다.

SQL Server 보안 가능 및 보안 주체

보안 개체는 SQL Server 데이터베이스 엔진 권한 부여 시스템이 액세스를 제어하는 ​​리소스를 나타냅니다. 예를 들어 데이터베이스 테이블이 있습니다.

보안 주체는 모든 SQL Server 리소스에 대한 액세스가 필요한 엔터티를 나타냅니다. 예를 들어 테이블에 대한 권한을 요청하는 사용자는 보안 주체입니다.







SQL Server 승인 명세서

다음은 SQL Server에서 GRANT 명령의 구문을 보여줍니다.



GRANT 권한
ON 보안 가능 TO main;

보안 주체에 할당하려는 권한을 쉼표로 구분된 목록으로 지정해야 합니다.



ON 키워드를 사용하면 권한이 적용되는 보안 개체를 지정할 수 있습니다. 마지막으로 TO 키워드를 사용하면 대상 주체를 설정할 수 있습니다.





예를 들어 CREATE USER 문을 사용하여 사용자를 생성하면 해당 사용자에 대한 권한이 정의되지 않습니다. 따라서 GRANT 문을 사용하여 해당 사용자에 대한 권한을 설정하는 것이 필수적입니다.

예를 들어 보겠습니다.



예제 로그인 만들기

설명을 위해 샘플 로그인을 만드는 것으로 시작하겠습니다. 쿼리는 아래와 같습니다.

로그인 linuxhint 생성
with password='비밀번호';

위의 명령은 사용자 이름 linuxhint와 지정된 암호를 사용하여 사용자를 생성해야 합니다.

샘플 데이터베이스 만들기

로그인을 정의하면 사용자가 상주할 데이터베이스를 만들 수 있습니다. 쿼리는 다음과 같습니다.

리졸버가 존재하는 경우 데이터베이스 삭제;

데이터베이스 리졸버 생성;

리졸버 사용;

항목이 있으면 테이블 삭제;

테이블 항목 생성(
id int null이 아닌 ID(1,
1) 기본 키,
서버_이름 varchar(50),
server_address varchar(255) null이 아님,
compression_method varchar(100) 기본값 '없음',
size_on_disk float null이 아님,
size_compressed 플로트,
total_records int null이 아님,
init_date 날짜
);
끼워 넣다
~ 안으로
항목(server_name,
서버 주소,
압축 방법,
size_on_disk,
크기 압축,
total_records,
초기화 날짜)

('MySQL','localhost:3306','lz77',90.66,40.04,560000,'2022-01-02'),
('레디스','localhost:6307','스내피',3.55,998.2,100000,'2022-03-19'),
('PostgreSQL','localhost:5432','pglz',101.2,98.01,340000 ,'2022-11-11'),
('Elasticsearch','localhost:9200','lz4',333.2,300.2,1200000,'2022-10-08'),
('몽고디비','localhost:27017','스내피',4.55,4.10,620000,'2021-12-12'),
('아파치 카산드라','localhost:9042','zstd',300.3,200.12,10000000,'2020-03-21');

로그인을 위한 사용자 생성

데이터베이스와 테이블을 생성했으면 다음과 같이 linuxhint 로그인 사용자를 생성할 수 있습니다.

리졸버 사용
사용자 linuxhint 생성
로그인을 위해 linuxhint;

새 사용자로 로그인

다음으로 새로 만든 사용자로 로그인하겠습니다. 명령은 다음과 같습니다.

setuser 'linuxhint';

로그인하면 select 명령을 실행하여 테이블 보기를 시도할 수 있습니다.

항목에서 *를 선택하십시오.

위의 쿼리를 실행하면 오류가 반환됩니다.

메시지 229, 수준 14, 상태 5, 줄 379
개체 'entries', 데이터베이스 'resolver', 스키마 'dbo'에 대한 SELECT 권한이 거부되었습니다.

이는 linuxhint 사용자가 SELECT 권한을 포함하여 데이터베이스에 대한 권한이 없기 때문입니다.

사용자에게 권한 부여

사용자가 테이블에 저장된 정보를 볼 수 있도록 SELECT 권한을 부여해야 합니다.

이를 위해서는 SQL Server 관리 계정으로 로그인해야 합니다.

다음으로 쿼리를 다음과 같이 실행합니다.

linuxhint 항목에 대한 선택 권한을 부여합니다.

실행되면 linuxhint 사용자로 로그인하고 SELECT 문을 사용하십시오.

항목에서 *를 선택하십시오.

이 경우 명령은 사용자에게 SELECT 권한이 있으므로 테이블을 반환합니다.

다음과 같이 삽입 및 삭제와 같은 다른 권한을 사용자에게 할당할 수도 있습니다.

linuxhint에 대한 항목에 대한 삽입, 삭제 권한을 부여합니다.

이 경우 linuxhint 사용자는 항목 테이블에 대한 SELECT, INSERT 및 DELETE 권한이 있어야 합니다.

결론

이 게시물에서는 SQL Server에서 GRANT 명령의 사용법을 살펴보았습니다. 이 명령을 사용하면 주어진 보안 주체에 권한을 할당할 수 있습니다.