문제

Windows 사용자 권한과 SQL Server GRANT 집합 간의 차이점은 관련 없는 개념처럼 보입니다.자주는 아니지만 실제로 데이터베이스 역할에 대한 의사 로그인을 사용하여 구현되는 것 같습니다.하지만 이는 Windows 권한에 다시 유용하게 매핑되지 않습니다.단일 로그인 ID 확인을 가정하면 가능한 가장 간단한 데이터베이스 역할을 사용하면 어떨까요?

편집하다:
지금까지 우리는 애플리케이션에 비밀번호를 저장할 필요가 없다는 단 하나의 이점을 살펴보았습니다.하지만 그것은 디자인 목표라기보다는 사소하고 유익한 결과처럼 보입니다.두 세계의 전체 보안 장치를 밀접하게 연결하지 않고도 이를 달성할 수 있는 보다 직접적인 방법이 많이 있습니다.

다시 수정하세요:
단일 로그인 및 SD가 그룹을 유지 관리하여 SQL Server에 이미 존재하는 그룹 기능(동일한 사용자 로그인 기반)을 복제하는 기능 외에 다른 사람이 제안할 수 있는 이점이 없습니까?

그룹 문제에는 AD 관리자가 두 가지를 모두 유지 관리할 수 있는 동등한 자격이 있다고 가정하는 것을 포함하여 몇 가지 결함이 있습니다.AD의 일부가 아닌 모든 네트워크 연결을 제외합니다(따라서 사용자를 MS 기술에 고정시킵니다).

그리고 최선의 방법으로 표현하면 일반적으로 나쁜 것으로 인정되는 시스템 결합을 구축했습니다.

도움이 되었습니까?

해결책

이들 중 다수는 이전 답변과 유사하거나 광고 통합 :

a) 주어진 응용 프로그램에 액세스 할 수있는 사용자에 대해 걱정할 필요가 없습니다. 보안 담당자에게 전달할 수 있습니다.

b) 이미 존재하는 그룹을 기반으로 테이블 수준으로 테이블에서 액세스를 제한 할 수있을뿐만 아니라 표준 사용자가 저장된 Proc 's를 호출 할 수있는 능력 만 강요 할 수 있습니다.

c) 개발자가 내 그룹을 떠날 때, 우리는 모든 DB 비밀번호를 변경할 필요가 없습니다 (즉, 데이터 보안에 관심이있는 경우 ...)

d) 변경을하는 사용자를 기반으로 사용자 정의 로깅을 쉽게 수행하기가 쉽습니다. 이 작업을 수행하는 다른 방법이 있지만, 나는 게으른 것에 관한 것입니다.

e) IIS 인증과 통합됩니다. 인트라넷에 이미 IE & II를 사용하고 있다면 인생이 훨씬 쉬워집니다.

참고 : 사용하지 말아야 할 이유가 훨씬 더 많으며 현재 위치에 사용하지 않았습니다. 여기에서 모든 것이 이미 광고에 정렬되어있는 곳 ... 데이터베이스 보안에서 가장 쉬운 시간 일뿐입니다.

다른 팁

통합 보안을 사용하는 경우 앱은 보안에 대해 아무것도 알거나 처리할 필요가 없습니다. 또한 사용자가 이미 도메인에 로그인한 경우 앱에 로그인할 필요도 없습니다(가장을 사용했다고 가정). 올바르게 설정하세요).

가장 큰 장점은 SQL Server에서 AD 그룹을 로그인으로 사용한다는 것입니다.이 방법을 사용하면 "계정" 그룹의 모든 사람에게 sprocs, 테이블 등의 집합에 대한 액세스 권한을 부여하고 "관리자" 그룹의 모든 사람에게 AD를 사용하여 다른 집합에 대한 액세스 권한을 부여할 수 있습니다.시스템 관리자는 사용자에게 앱에 대한 액세스 권한을 부여하기 위해 Management Studio로 이동할 필요가 없습니다.

기본적으로 "바퀴를 재발 명하지"않고 "많은 눈"효과를 활용하는 것 같아요.

Windows 인증을 사용하면 Windows 통합 보안의 힘을 활용하여 원하는 경우 자신의 물건을 추가 할 수 있습니다. 그것은 이미 수백만 번 테스트 한 이미 성숙한 시스템으로, 당신에게 자신의 실수를 저지르고 나중에 그들을 발견/해결하려는 노력 (그리고 고객, 비용)을 아프게합니다.

그런 다음 많은 사람들이 지속적으로 Windows 인증 프로세스를 스캔하고 취약점을 확인하고, 우회하는 방법을 탐색하는 등을 지속적으로 스캔하고 있습니다. 취약점이 공개적으로 공개되고 수정이 생성되면 응용 프로그램이 "무료"보안 향상을 얻었습니다. .

현재 작업에는 광고 그룹이 SQL 로그인으로 광고 그룹이 있으므로 AD 그룹에 멤버십을 기반으로 SQL 권한을 할당합니다. 따라서 SYS Engineering Group의 모든 구성원은 일부 권한을 가지고 있으며, DBA에는 다른, 다른 사람, 다른 사람, 다른 사람을 보유하고 있습니다. 새로운 사용자를 추가하거나 권한을 변경하는 것은 간단한 일입니다. 데이터베이스에서 가져와야 할 권한.

편집 후:

"휠 재창조"에서 약간 확장 : 광고 계정으로 특정 컴퓨터에 로그인 할 권리를 거부하거나 모든 마치에서 하나 또는 두 개를 저장하지 못하게 할 수 있습니다. 동시에 2 개 이상의 워크 스테이션에서 로그인하는 것을 막을 수 있습니다. 나는 그들이 얼마 후에 암호를 변경하도록 강요하고, 그것들을 최소한으로 강요 할 수 있습니다. 그리고 내 시스템의 보안을 향상시키는 다른 트릭.

SQL S. 사용자는이 중 어느 것도 없습니다. 나는 사람들이 복잡한 SQL 작업이나 일종의 홈 브루 데몬으로 그들을 시행하려는 것을 보았습니다.

그런 다음 사용자 SA (또는 권한있는 사용자)가 모든 컴퓨터에서 로그인하는 것을 중지 할 수 없습니다. 나는 인터넷을 통해 원격 로그인 용 포트를 열었던 SQL S에 대한 무차별적인 공격을 막을 수있는 영리한 방법을 들었습니다. SQL + Windows라면 관리자가 특정 Boxen에서만 로그인하거나 Windows 인증 만 사용하기를 원한다고 말할 수 있습니다.

모두가 Windows 인증의 이점에 대해 논의했으므로 저는 Devil's Advocate 역할을 맡을 것 같습니다...

'Joe User' 계정이 서버에 액세스할 수 있도록 허용한다는 것은 해당 사용자가 앱에 연결할 수 있을 뿐만 아니라 다른 수단(SQL 도구, Excel, 악성 코드 등)을 통해서도 연결할 수 있음을 의미합니다.

SQL 인증을 사용하면 앱이 특정 사용자로 실행된 다음 앱이 데이터베이스 액세스를 처리할 수 있습니다.따라서 'Joe User'가 앱을 실행하면 앱에 SQL 액세스 권한이 부여됩니다.그러나 'Joe User' 자신은 그렇지 않습니다. 이는 앞서 언급한 앱이 데이터베이스에 암시적으로 액세스할 수 없음을 의미합니다.

물론, 애플리케이션 수준 데이터 액세스 계층이 서비스로 실행되는 경우 통합 보안을 사용하여 응용 프로그램 "서비스 계정"을 사용하여 서버에 로그인하여 데이터베이스와 대화 할 수 있습니다. 응용 프로그램 구성 파일에 사용자 비밀번호를 저장하려면 네트워크를 통해 비밀번호를 전달하지 않습니다.

통합 보안은 인트라넷 앱에만 유용합니다. 내가 본 의사 로그인은 대부분 인터넷 웹 응용 프로그램을위한 것입니다.

어쨌든, 그것은 단지 앱에 암호를 저장하지 않는 것 이상입니다. 또한 :

  1. 사용자는 로그인 할 필요가 없습니다. 하루 종일 WebApp으로 뛰어 들거나 여러 내부 WebApps가있는 곳에서 작업하는 경우 큰 문제입니다.

  2. IT 관리자는 Active Directory에서 사용자를 편집해야하므로 사용자 관리는 무료입니다.

  3. 사용자 이름과 역할 이름은 조직 전체에서 일관성이 있습니다.

  4. 사용자 가장은 내부 웹 서비스에 액세스 할 때보다 안전한 방법입니다. (예 : 인터넷 웹 사이트는 인트라넷 웹 서비스에 액세스합니다)

  5. 웹 응용 프로그램은 데이터베이스에서 추가 사용자 승인을 할 필요가 없습니다. 모두 원활하게 처리되기 때문입니다.

  6. 편집] 데이터베이스 개체의 사용자를 알고 있습니다. 따라서 뷰는 그들과 관련된 view return 행을 가질 수 있습니다. (각 앱 사용자에 대해 새 SQLSERVER 사용자를 만들지 않으면 불가능하며 각 앱 사용자에 대해 새 SQLSERVER 사용자를 만드는 것도 불합리합니다).

통합 보안이 모든 것에 적합한 것은 아니지만 엔터프라이즈에는 많은 값이 부가됩니다.

SQL 로그인 : 와이어를 통해 Offuscated ClearText 암호

NTLM과 함께 Windows 통합 로그인 : 해시가 전선을 통과했습니다.

Kerberos와 Windows 통합 로그인 : 적절한 보안 인증.

보안에 관심이있는 경우 선택은 단 하나뿐입니다.

SQL 인증을 통해 연결할 때 대부분의 응용 프로그램의 데이터베이스에 대한 쿼리의 응답 시간이 상당히 빠르다는 것이 저의 경험이었습니다. 보안 검증을 위해 AD를 지속적으로 요청하여 발생하는 지연을 제거합니다.

성능 현명한 SQL 인증 >> Windows 통합 보안.

보조금 테이블 등을 무시하면 사물의 로그인 측면은 앱의 로그인 측면이 Windows 인증을 사용하여 SQL Server에 연결할 수 있기 때문에 매우 유용합니다.

데이터베이스 사용자 이름과 비밀번호를 어딘가 어딘가에 파일에 넣을 필요가 없습니다.

비밀번호를 일반 텍스트 파일로 넣을 때마다 보안 위험입니다. 그것을 피하는 것은 훌륭합니다.

데이터베이스는 각 사용자마다 많은 설정이 다른 미세한 액세스를 가질 수 있습니다. 애플리케이션 액세스 권한 한 명의 사용자가있는 시나리오 일뿐 만 아니라 모든 데이터 보안입니다.

우리가 팀 개발에 대해 이야기하고 있다면 아마도 사용자 그룹에 데이터베이스에 대한 개발 액세스 권한이 부여 될 것입니다. 이 그룹의 각 사용자는 내부 도메인의 구성원이되며 데이터베이스 관리자가 데이터베이스에 액세스 할 수 있도록 관리하지 말고 알고있는 자체 비밀번호가 있습니다.

통합 보안이 제대로 사용되면 적합하다고 생각합니다. 내가 이해할 수없는 이유로, 내가 일한 많은 회사는 광고, SQL 권한 및 IIS 보안 모델을 매우 활용하지 않습니다.

SQL Server 권한 시스템을 설계 해야하는 경우 AD에 통합 된 주요 요구 사항을 사용하면 매우 유사한 것을 제시 할 수 있습니다. IMHO.

사용자를 광고 그룹으로 그룹화 한 다음 다양한 권한으로 SQL 서버에서 그룹 로그인을 작성하는 것을 좋아합니다. 사람들은 데이터베이스에 연결할 도구가 있기 때문에 데이터에 더 많은 액세스 권한이 없어야합니다. 연결 방법에 관계없이 데이터에 대해 동일한 권한이 있어야합니다.

게스트 사용자 (익명 웹 사용자와 같이)는 IIS 구성에 대한 권장 사항에 따라 광고 그룹에 있어야합니다. 이 그룹에 데이터베이스에서 액세스해야 할 것에 대해서만 액세스 할 수있게하면 언젠가 재난에서 데이터를 저장할 수 있습니다. 데이터가 보호되는지 확인하기 위해 소스 코드를 읽기가 어렵고 데이터베이스 권한 및 보안 구성을 조사하기가 훨씬 쉽습니다.

또한 비밀번호는 항상 비밀번호가 배포되고 구성 파일 등에 넣기 때문에 비 통합 보안이 나쁩니다.

통합 보안은 사용자 액세스 IMO의 유연성을 높입니다. 예를 들어, 내 조직이 개발자 그룹이 서버에 액세스 할 수있는 시간을 제한하려면 통합 보안이 최선의 방법입니다.

그러나 모든 것이 옳지는 않습니다.

편집]도 로깅 액세스에 좋습니다. 대규모 조직에서 각 신규 개발자에 대해 SQL 로그인을 만들어야한다면 ... 아마도 발생을 멈추고 로그인이 공유 될 것입니다. 그러면 테이블.

SQL Server 인증을 사용하는 경우 비밀번호 정보가 네트워크를 명확한 텍스트로 전송한다는 사실은 어떻습니까? 통합 보안에는 그 문제가 없습니다.

광고 환경에서 실행되는 엔터프라이즈 애플리케이션의 경우 Windows 통합 보안을 사용하는 것이 확실히 올바른 접근법입니다. 환경에서 이미 인증 된 사용자가 앱에 대해 별도의 자격 증명 세트를 관리 해야하는 사용자를 원하지 않습니다. 우리가 이야기하고 있습니다 입증... 을 위한 권한 부여 여전히 SQL Server의 역할 기반 보안을 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top