ASP.NET Core 보안 주제
개발자는 ASP.NET Core를 사용하여 보안을 구성 및 관리할 수 있습니다. 다음 목록에서는 보안 항목에 대한 링크를 제공합니다.
이러한 보안 기능을 사용하여 강력하고 안전한 ASP.NET Core 앱을 빌드할 수 있습니다.
Blazor 이 노드의 지침을 추가하거나 대체하는 보안 적용 범위는 ASP.NET Core Blazor 인증 및 권한 부여 및 '보안 및 Identity 노드의 다른 문서를 Blazor참조하세요.
ASP.NET Core 보안 기능
ASP.NET Core는 기본 제공 identity 공급자와 같은 ASP.NET Core 앱과 Facebook, Twitter 및 LinkedIn과 같은 타사 identity 서비스를 보호하는 많은 도구와 라이브러리를 제공합니다. ASP.NET Core는 앱 비밀을 저장하는 몇 가지 접근 방식을 제공합니다.
인증 및 권한 부여
인증은 사용자가 자격 증명을 제공하면 운영 체제, 데이터베이스, 앱 또는 리소스에 저장된 자격 증명과 비교하는 프로세스입니다. 두 자격 증명이 일치하면 사용자 인증이 성공하고 사용자는 권한 부여 프로세스 동안 권한이 부여된 작업을 수행할 수 있습니다. 권한 부여는 사용자가 할 수 있는 작업을 결정하는 프로세스를 말합니다.
인증을 이해하기 위한 또 다른 개념으로 서버, 데이터베이스, 앱, 리소스 등의 공간에 들어가는 것으로 생각할 수 있고, 권한 부여는 사용자가 해당 공간(서버, 데이터베이스 또는 앱) 내에서 어떤 개체에 대해 어떤 작업을 수행할 수 있는지 결정하는 것입니다.
소프트웨어의 일반적인 취약점
ASP.NET Core 및 EF는 앱을 보호하고 보안 위반을 방지하는 기능을 포함하고 있습니다. 다음 링크 목록을 선택하면 웹앱의 가장 일반적인 보안 취약점을 방지하는 기술을 구체적으로 설명하는 문서로 이동합니다.
그 외에도 알고 계셔야 하는 취약점이 더 있습니다. 자세한 내용은 목차의 보안 및 Identity 섹션에 있는 다른 문서를 참조하세요.
보안 인증 흐름
가장 안전한 인증 옵션을 사용하는 것이 좋습니다. Azure 서비스의 경우 가장 안전한 인증은 관리 ID입니다.
리소스 소유자 암호 자격 증명 부여는 다음을 수행하므로 사용하지 마세요.
- 클라이언트에 사용자의 암호를 노출합니다.
- 중요한 보안 위험입니다.
- 다른 인증 흐름을 사용할 수 없는 경우에만 사용해야 합니다.
관리 ID는 코드, 환경 변수 또는 구성 파일에 자격 증명을 저장할 필요 없이 서비스를 인증하는 안전한 방법입니다. 관리 ID는 Azure 서비스에 사용할 수 있으며 Azure SQL, Azure Storage 및 기타 Azure 서비스에서 사용할 수 있습니다.
앱이 테스트 서버에 배포되면 환경 변수를 사용하여 연결 문자열 테스트 데이터베이스 서버로 설정할 수 있습니다. 자세한 내용은 구성을 참고하시기 바랍니다. 환경 변수는 일반적으로 암호화되지 않은 일반 텍스트로 저장됩니다. 머신 또는 프로세스가 손상되면 신뢰할 수 없는 당사자가 환경 변수에 액세스할 수 있습니다. 가장 안전한 방법이 아니기 때문에 환경 변수를 사용하여 프로덕션 연결 문자열 저장하는 것이 좋습니다.
구성 데이터 지침:
- 구성 공급자 코드 또는 일반 텍스트 구성 파일에 암호 또는 기타 중요한 데이터를 절대 저장하지 마세요. 비밀 관리자 도구를 사용하여 개발에 사용되는 비밀을 저장할 수 있습니다.
- 개발 또는 테스트 환경에서 프로덕션 비밀을 사용하지 마세요.
- 의도치 않게 소스 코드 리포지토리에 커밋되는 일이 없도록 프로젝트 외부에서 비밀을 지정하세요.
구성 데이터 지침:
- 구성 공급자 코드 또는 일반 텍스트 구성 파일에 암호 또는 기타 중요한 데이터를 절대 저장하지 마세요. 비밀 관리자 도구를 사용하여 개발에 사용되는 비밀을 저장할 수 있습니다.
- 개발 또는 테스트 환경에서 프로덕션 비밀을 사용하지 마세요.
- 의도치 않게 소스 코드 리포지토리에 커밋되는 일이 없도록 프로젝트 외부에서 비밀을 지정하세요.
자세한 내용은 다음을 참조하세요.
- 관리되는 identity 모범 사례 권장 사항
- 코드에서 자격 증명을 처리하지 않고 애플리케이션에서 리소스에 연결
- 관리 ID를 사용하여 다른 서비스에 액세스할 수 있는 Azure 서비스
- IETF OAuth 2.0 보안 모범 사례
다른 클라우드 공급자에 대한 자세한 내용은 다음을 참조하세요.
추가 리소스
ASP.NET Core