IIS 7 AppPool ID를 SQL Server 로그온으로 추가


233

AppPool 통합 파이프 라인 모드 로 IIS 7 웹 사이트를 실행하고 있습니다. AppPools는 목적에 따라 NetworkService 등에서 실행되지 않지만 고유 한 AppPool Identitiy (IIS AppPool \ MyAppPool)를 사용합니다.

소위 서비스 계정 또는 가상 계정입니다. (전체 계정이 아닌 사용자 계정 ...)

이 서비스 계정 (IIS AppPool \ MyAppPool)에 SQL Server 2008 Express (혼합 인증 모드에서 실행)에 연결할 수있는 권한을 부여하고 싶습니다.

SQL Server는 일반 사용자 계정을 추가 할 수 있지만 IIS AppPool \ MyAppPool 가상 계정은 유효한 로그온에 추가 할 수 없습니다 (SQL Server에 따르면 계정을 찾을 수 없음).

가상 계정이 작동하도록하기 위해 필요한 트릭이 있습니까? (w3wp.exe 프로세스는 taskmgr에 따라이 ID로 실행되지만 NTFS 보안에서도 계정을 사용할 수 없습니다 ...)

당신의 도움을 주셔서 감사합니다!

답변:


380

"IIS APPPOOL \ AppPoolName"은 작동하지만 앞에서 언급 한 것처럼 유효한 AD 이름으로 표시되지 않으므로 "사용자 또는 그룹 선택"대화 상자에서 검색 할 때 실제로 나타나지 않습니다. , 그것을 찾을 수는 있지만 실제 시스템 계정으로 생각하고 그것을 처리하려고 시도합니다 ... 작동하지 않으며 찾을 수 없다는 오류 메시지가 표시됩니다).

내가 작동하게 된 방법은 다음과 같습니다.

  1. SQL Server Management Studio에서 보안 폴더 (각 개별 데이터베이스 내의 보안 폴더가 아닌 데이터베이스, 서버 개체 등 폴더와 동일한 수준의 보안 폴더)를 찾습니다 .
  2. 로그인을 마우스 오른쪽 버튼으로 클릭하고 "새 로그인"을 선택하십시오.
  3. 로그인 이름 필드에 IIS APPPOOL \ YourAppPoolName을 입력 하십시오-검색을 클릭하지 마십시오
  4. 원하는 다른 값을 입력하십시오 (예 : 인증 유형, 기본 데이터베이스 등).
  5. 확인을 클릭하십시오

AppPool 이름이 실제로 존재하는 한 이제 로그인을 작성해야합니다.


4
오래된 게시물을 부활 시켜서 죄송하지만이 작업을 수행하는 것이 실제 환경에서 보안에 영향을 미치는지 아는 사람이 있습니까?
dooburt

34
놀랍도록 도움이되었지만, 놀라 울 정도로 (그리고 무자비한) Microsoftian.
Evan Nagle

16
와. 3 단계에서 "검색을 클릭하지 마십시오"에 차이가있는 것 같습니다 (?)
Jedidja

16
SQL Server 인스턴스가 다른 서버에있는 경우에도 실패하지 않습니까? 예를 들어 - 어떻게합니까 SQL1로컬 / 가상에 대해 알고 IIS AppPool\MyAppPool에를 WEB1?
one.beat.consumer

3
웹 서버와 SQL Server가 다른 컴퓨터에 있다면 어떤 해결책이 있습니까 ??? 로그인을 찾을 수 있지만 새 SQL 로그인을 만들 수 없습니다. (체크 이름을하지 않으면 여전히 작동하지 않습니다)
Dan B

63
CREATE LOGIN [IIS APPPOOL\MyAppPool] FROM WINDOWS;
CREATE USER MyAppPoolUser FOR LOGIN [IIS APPPOOL\MyAppPool];

1
좋은 대답-정답이 맞았지만 Management Studio가 작동하지 않는 상황에 처하게 되어이 원시 TSQL 솔루션이 필요했습니다.
앤드류 패터슨 1

4
나와 같은 멍청한 놈들에 대한 참고 사항 : IIS 응용 프로그램 풀로 액세스하려는 데이터베이스에 대해이 쿼리를 실행해야합니다. 두 번째 문장은 데이터베이스 수준입니다. 사용자를 특정 데이터베이스 역할의 멤버로 만들고와 같은 스키마에 대한 권한을 부여해야 할 수도 있습니다 dbo.
MarioDS

SSMS GUI를 통해 IIS APPPOOL 로그인을 추가 할 수 없다는 것을 알게되면 스크립트를 실행했습니다. 감사! SSMS 18에서는 불가능합니다. 나는 이것이 "기능"이라고 생각합니다
MC9000

6

여러 컴퓨터를 사용하는 경우 NETWORK SERVICE, LOCAL SYSTEM, 도메인 계정 또는 SQL 2008 R2 (있는 경우) 관리 서비스 계정 (이러한 인프라가있는 경우 선호)을 사용해야합니다. . Active Directory 도메인에 표시되지 않는 계정은 사용할 수 없습니다.


6

참고로 가상 계정 (NT Service \ MyService 및 IIS AppPool \ MyAppPool)을 사용하는 프로세스는 여전히 "NETWORK SERVICE"계정에서 실행되고 있습니다 ( http://www.adopenstatic.com/cs/blogs/ken/). archive / 2008 / 01 / 29 / 15759.aspx . 유일한 차이점은 이러한 프로세스는 "NT Service \ MyService"또는 "IIS AppPool \ MyAppPool"그룹의 구성원이라는 것 입니다 (실제로는 사용자가 아닌 그룹 임). NETWORK SERVICE 계정과 동일한 방식으로 프로세스가 네트워크에서 시스템으로 인증되는 이유이기도합니다.

액세스를 보호하는 방법은 NETWORK SERVICE 권한이없는이 계정에 의존하는 것이 아니라 "NT Service \ MyService"또는 "IIS AppPool \ MyAppPool"에 더 많은 권한을 부여하고 필요한 경우 "사용자"에 대한 권한을 제거하는 것입니다.

더 정확하거나 모순되는 정보가있는 사람은 게시하십시오.




0

나는 시행 착오를 통해 알아 냈습니다 ... 갑옷의 실제 척 Configuration Editor은 웹 사이트의 IIS에서 약간 알려진 설정이었습니다.

Section: system.webServer/security/authentication/windowsAuthentication

From: ApplicationHost.config <locationpath='ServerName/SiteName' />

호출 됨 useAppPoolCredentials( False기본적으로 설정되어 있습니다.이 설정을하면 True삶이 다시 좋아집니다 !!! 이것이 다음 사람의 고통을 덜어 주길 바랍니다 ....

여기에 이미지 설명을 입력하십시오


나는 같은 과정을 따랐지만 문제는 해결되지 않았다. 당신도 다른 일을했을 것입니다. 제발 공유 할 수 있습니까?
RSB

@RSB-다른 모든 단계를 수행 했습니까? appPools를 설정하고 웹 사이트가있는 파일에 대한 권한을 부여 했습니까? SQL Server에 대한 권한이있는 로그인으로 서버 이름을 추가 했습니까? 권한이있는 SQL Server에 appPool을 적용 했습니까? WindowsAuthentication을 사용하도록 IIS를 수정 했습니까? 어떤 오류가 발생합니까? 프로덕션 환경이 아닌 개발 환경에서 작동합니까?
Dan B

appPool을 설정했지만 웹 사이트가있는 파일에 권한을 부여하는 방법은 무엇입니까? SQL Server에 대한 권한이있는 로그인으로 서버 이름을 추가하는 방법은 무엇입니까? 또한 권한이있는 SQL Server에 appPool을 추가했습니다. WindowsAuthentocation을 사용하도록 IIS를 수정하는 방법. IIS와 SQL Server가 같은 컴퓨터에있을 때 내 개발 환경에서 작동하지만 error-System.ComponentModel.Win32Exception : IIS와 Sql 서버가 다른 컴퓨터에있을 때 액세스 거부 오류가 발생합니다. 제안 해주세요.
RSB

당신이 나에게 당신의 전자 우편을주는 경우에, 나는 당신에게 그것을 전부하는 방법에 관하여 한 문서를 보낼 것이다…. 그것을 추가하기에는 너무 mucj가있다…
Dan B

@RSB 이메일을 보냈습니다. 행운을 빕니다.
Dan B

0

필자의 경우 문제는 Visual Studio / Episerver 확장을 사용하여 MVC Alloy 샘플 프로젝트를 처음부터 작성하기 시작했으며 로컬 Visual Studio iis express를 사용하여 실행할 때 정상적으로 작동한다는 것입니다. 그러나 기본적으로 SQL 데이터베이스는 LocalDB를 가리키고 사이트를 로컬 IIS에 배포 할 때 다음과 같이 해결 한 초기 오류 중 일부를 오류로 표시하기 시작했습니다. 1. 로컬 사이트 URL 바인딩을 C : / Windows / System32 / drivers /에 추가 etc / hosts 2. 그런 다음 application.config를 편집하여 Visual Studio를 사용하여 사이트를 실행할 때 화면 오른쪽 하단에있는 IIS express를 마우스 오른쪽 단추로 클릭하고 로컬 iis URL에 대한 바인딩을 추가하여 파일 위치를 찾았습니다. 3. 마지막으로 "데이터베이스 오류에 액세스 할 수 없습니다"라는 메시지가 표시되었습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.