it-swarm-korea.com

보안 관점에서 데이터베이스 연결 문자열을 저장하는 올바른 방법은 무엇입니까?

웹 응용 프로그램에서 연결 문자열 처리와 관련된 권장 사항, 모범 사례 및해야 할 일은 무엇입니까? 우리가 절대로하지 말아야 할 일은 무엇입니까?

12
rem

최선의 방법 : 데이터베이스에 암호를 사용하지 말고 가능한 경우 (Windows) 통합 인증을 사용하고 데이터베이스에 대해 권한이 부여 된 응용 프로그램의 ID를 분리하십시오. 그렇게하면 OS/웹 서버/SCM이 신원을 매우 안전하게 관리 할 수 ​​있습니다.

I 분류 된 방식으로 갈 수 없다면 W Indows A uthentication (IWA), 바람직하게 DPAPI와 같은 것을 사용하여 connstring을 안전하게 암호화하고 (암호화 키를 관리 할 필요가 없음) 강력한 ACL을 사용하여 보호 된 레지스트리 키의 암호화 된 값.
OP.가 아닌 ASP.NET에 의견이있는 경우이를 자동으로 수행하는 기본 제공 도구가 있습니다 (버전에 따라 aspnet_setreg, aspnet_regiis 등).

6
AviD

당신이 절대로해서는 안되는 것들

  • 텍스트 파일에 연결 문자열을 넣습니다.
  • 공용 액세스 가능한 폴더/디렉토리에 구성 파일이 있어야합니다.

당신이해야 할 것들.

  • 데이터베이스 암호를 즉시 생성하는 도우미 기능을 만듭니다.
  • 데이터베이스 비밀번호와 사용자 이름을 자주 변경하십시오.
  • 서버가 올바르게 구성되어 있는지, 실행 가능한 파일을 일반 텍스트로 제공하지 않는지 확인하십시오.
2
Mohamed

웹 사이트 루트 디렉토리 외부에 연결 문자열을 저장하는 것이 좋습니다.

ASP.NET을 사용하는 경우 web.config 파일은 웹 사이트 루트 디렉토리에 있지만 저장하는 Data Protection API를 사용하여 web.config 파일의 섹션을 암호화 할 수 있습니다 암호 해독 키.

웹 애플리케이션에 어떤 프레임 워크를 사용하고 있습니까?

2
KirkJ

옵션으로 응용 프로그램 역할을 사용하여 SQL Server에 액세스

혜택:

  • 일반 네트워크 관리자는 응용 프로그램에 대한 액세스 권한을 가진 사람을 제어하여 데이터베이스 관리자 (DBA)와상의 할 필요없이 데이터 액세스를 관리 할 수 ​​있습니다.
  • SQL Server 자체를 사용하여 사용자를 변경하는 것을 추적 할 필요가 없습니다. 응용 프로그램 역할을 설정하면 해당 역할을 네트워크 수준으로 다시 위임 할 수 있습니다.
  • 단일 응용 프로그램으로 데이터 가용성을 제한 할 수 있습니다. 예를 들어, 사용자는 일반 원장 응용 프로그램을 사용할 때만 SQL 정보에 직접 연결할 때가 아니라 계정 정보를 수정할 수 있습니다.
2
garik