팁 (조언)
이 콘텐츠는 eBook, Architecting Cloud Native .NET Applications for Azure에서 발췌한 것으로, .NET Docs 또는 오프라인에서 읽을 수 있는 다운로드 가능한 무료 PDF로 제공됩니다.
대부분의 소프트웨어 애플리케이션은 해당 애플리케이션을 호출하는 사용자 또는 프로세스에 대한 지식이 있어야 합니다. 애플리케이션과 상호 작용하는 사용자 또는 프로세스를 보안 주체라고 하며, 이러한 보안 주체를 인증하고 권한을 부여하는 프로세스를 ID 관리 또는 단순히 ID라고 합니다. 간단한 애플리케이션에는 애플리케이션 내에서 모든 ID 관리가 포함될 수 있지만, 이 방법은 많은 애플리케이션 및 다양한 종류의 보안 주체에서 잘 확장되지 않습니다. Windows는 Active Directory를 사용하여 중앙 집중식 인증 및 권한 부여를 제공합니다.
이 솔루션은 회사 네트워크 내에서 효과적이지만 AD 도메인 외부에 있는 사용자 또는 애플리케이션에서 사용하도록 설계되지 않았습니다. 인터넷 기반 애플리케이션의 성장과 클라우드 네이티브 앱의 증가로 보안 모델이 진화했습니다.
오늘날의 클라우드 네이티브 ID 모델에서는 아키텍처가 분산된 것으로 간주됩니다. 앱은 어디서나 배포할 수 있으며 어디서나 다른 앱과 통신할 수 있습니다. 클라이언트는 어디서나 이러한 앱과 통신할 수 있으며, 실제로 클라이언트는 플랫폼과 디바이스의 조합으로 구성됩니다. 클라우드 네이티브 ID 솔루션은 개방형 표준을 사용하여 클라이언트에서 안전한 애플리케이션 액세스를 달성합니다. 이러한 클라이언트는 PC 또는 휴대폰의 사용자부터 온라인 어디서나 호스트되는 다른 앱, 전 세계 어디에서나 소프트웨어 플랫폼을 실행하는 셋톱 박스 및 IOT 디바이스에 이르기까지 다양합니다.
최신 클라우드 네이티브 ID 솔루션은 일반적으로 ID가 결정되면 보안 주체에 대한 STS(보안 토큰 서비스/서버)에서 발급한 액세스 토큰을 사용합니다. 액세스 토큰(일반적으로 JWT(JSON 웹 토큰)에는 보안 주체에 대한 클레임 이 포함됩니다. 이러한 클레임은 사용자의 ID를 최소한으로 포함하지만 애플리케이션에서 보안 주체에게 부여할 액세스 수준을 결정하는 데 사용할 수 있는 다른 클레임도 포함할 수 있습니다.
일반적으로 STS는 원장 인증만 담당합니다. 리소스에 대한 액세스 수준을 결정하는 것은 애플리케이션의 다른 부분에 맡깁니다.
참고문헌
.NET