Azure App Service에서 Azure 서비스 및 데이터베이스에 대한 보안 연결
앱 서비스를 데이터베이스, 스토리지 또는 다른 앱과 같은 다른 Azure 서비스에 연결해야 할 수 있습니다. 이 개요에서는 여러 연결 방법 및 사용 시기를 권장합니다.
오늘날 연결 방식에 대한 결정은 비밀 관리와 밀접한 관련이 있습니다. 사용자 이름, 암호, 비밀 키 등과 같은 연결 문자열에 연결 비밀을 사용하는 일반적인 패턴은 더 이상 가장 안전한 연결 방식으로 간주되지 않습니다. 위협 작업자가 실수로 커밋된 연결 비밀을 찾기 위해 공용 GitHub 리포지토리를 정기적으로 크롤링하기 때문에 오늘날 위험은 더욱 높습니다. 클라우드 애플리케이션의 경우 최고의 비밀 관리는 비밀이 전혀 없는 것입니다. Azure App Service로 마이그레이션하면 앱이 비밀 기반 연결로 시작될 수 있으며 App Service를 사용하면 비밀을 안전하게 유지할 수 있습니다. 그러나 Azure는 앱에서 비밀을 완전히 제거하는 Microsoft Entra 인증을 통해 앱의 백 엔드 연결을 보호하는 데 도움을 줄 수 있습니다.
연결 방법 | 사용 시기 |
---|---|
앱 ID와 연결 | * 애플리케이션에서 자격 증명, 키 또는 비밀을 완전히 제거하려고 합니다. * 다운스트림 Azure 서비스는 Microsoft Graph와 같은 Microsoft Entra 인증을 지원합니다. * 다운스트림 리소스는 현재 로그인한 사용자를 알 필요가 없거나 현재 로그인한 사용자의 세부적인 권한 부여가 필요하지 않습니다. |
로그인한 사용자를 대신하여 연결 | * 앱은 로그인한 사용자를 대신하여 다운스트림 리소스에 액세스해야 합니다. * 다운스트림 Azure 서비스는 Microsoft Graph와 같은 Microsoft Entra 인증을 지원합니다. * 다운스트림 리소스는 현재 로그인한 사용자에 대한 세부적인 권한 부여를 수행해야 합니다. |
비밀을 사용하여 연결 | * 다운스트림 리소스에는 연결 비밀이 필요합니다. * 앱은 온-프레미스 데이터베이스 서버와 같은 비 Azure 서비스에 연결됩니다. * 다운스트림 Azure 서비스는 아직 Microsoft Entra 인증을 지원하지 않습니다. |
앱 ID로 연결
앱이 이미 단일 자격 증명 집합을 사용하여 다운스트림 Azure 서비스에 액세스하는 경우 대신 앱 ID를 사용하도록 연결을 빠르게 변환할 수 있습니다. Microsoft Entra ID의 관리 ID를 사용하면 App Service가 비밀 없이 리소스에 액세스할 수 있으며 RBAC(역할 기반 액세스 제어)를 통해 해당 액세스를 관리할 수 있습니다. 관리 ID는 Microsoft Entra 인증을 지원하는 모든 Azure 리소스에 연결할 수 있으며 인증은 단기 토큰을 사용하여 수행됩니다.
다음 이미지는 다른 Azure 서비스에 연결하는 다음 App Service를 보여줍니다.
- A: 사용자가 Azure App Service 웹 사이트에 방문합니다.
- B: 관리 ID를 사용하여 App Service에서 다른 Azure 서비스로 안전하게 연결합니다.
- C: 관리 ID를 사용하여 App Service에서 Microsoft Graph로 안전하게 연결합니다.
애플리케이션 비밀을 사용하여 데이터베이스에 연결하는 예제:
- 자습서: 관리 ID를 사용하여 비밀 없이 App Service에서 Azure 데이터베이스에 연결
- 자습서: 관리 ID를 사용하여 비밀 없이 .NET App Service에서 SQL Database 연결
- 자습서: 관리 ID를 사용하여 비밀 없이 Java Tomcat App Service에서 PostgreSQL Database에 연결
로그인한 사용자를 대신하여 연결
앱은 로그인한 사용자를 대신하여 다운스트림 서비스에 연결해야 할 수도 있습니다. App Service를 사용하면 가장 일반적인 ID 공급자를 사용하여 사용자를 쉽게 인증할 수 있습니다(Azure App Service 및 Azure Functions의 인증 및 권한 부여 참조). Microsoft 공급자(Microsoft Entra 인증)를 사용하는 경우 로그인한 사용자를 모든 다운스트림 서비스로 전달할 수 있습니다. 예시:
- 로그인한 사용자가 읽을 수 있는 권한이 있는 기밀 데이터를 반환하는 데이터베이스 쿼리를 실행합니다.
- Microsoft Graph에 로그인한 사용자로서 개인 데이터를 검색하거나 조치를 취합니다.
다음 이미지는 로그인한 사용자를 대신하여 SQL 데이터베이스에 안전하게 액세스하는 애플리케이션을 보여 줍니다.
기타 일반적인 시나리오는 다음과 같습니다.
- 사용자를 대신하여 Microsoft Graph에 연결
- 사용자를 대신하여 SQL 데이터베이스에 연결
- 사용자를 대신하여 다른 App Service 앱에 연결
- 다운스트림 서비스의 여러 계층을 통해 로그인한 사용자 흐름
비밀을 사용하여 연결
앱에서 비밀을 사용하는 두 가지 권장 방법은 Azure Key Vault에 저장된 비밀 또는 App Service 앱 설정의 비밀을 사용하는 것입니다.
Key Vault에서 비밀 사용
Azure Key Vault를 사용하여 비밀과 키를 안전하게 저장하고, 비밀의 액세스 및 사용을 모니터링하고, 애플리케이션 비밀 관리를 간소화할 수 있습니다. 앱의 다운스트림 서비스가 Microsoft Entra 인증을 지원하지 않거나 연결 문자열 또는 키가 필요한 경우 Key Vault를 사용하여 비밀을 저장하고 관리 ID를 사용하여 Key Vault에 앱을 연결하고 비밀을 검색합니다. 앱은 앱 설정에서 Key Vault 참조로 키 자격 증명 모음 비밀에 액세스할 수 있습니다.
Key Vault와 통합된 관리 ID의 이점은 다음과 같습니다.
- 키 자격 증명 모음 비밀에 대한 액세스는 앱으로 제한됩니다.
- 관리자와 같은 앱 contributor는 App Service 리소스를 완전히 컨트롤할 수 있으며 동시에 키 자격 증명 모음 비밀에 액세스할 수 없습니다.
- 애플리케이션 코드가 앱 설정을 사용하여 연결 비밀에 이미 액세스한 경우에는 코드를 변경할 필요가 없습니다.
- Key Vault는 비밀에 액세스한 사용자 모니터링 및 감사를 제공합니다.
- 키 자격 증명 모음 비밀을 회전하려면 App Service를 변경할 필요가 없습니다.
다음 이미지는 관리 ID를 사용하여 Key Vault에 연결한 다음, Key Vault에 저장된 비밀을 사용하여 Azure 서비스에 액세스하는 App Service를 보여 줍니다.
앱 설정에서 비밀 사용
비밀(예: 사용자 이름, 암호, API 키)을 사용하여 서비스에 연결하는 앱의 경우 App Service는 이를 앱 설정에 안전하게 저장할 수 있습니다. 이러한 비밀은 앱 시작 시 환경 변수로서 애플리케이션 코드에 삽입됩니다. 앱 설정은 저장될 때 항상 암호화됩니다(미사용 암호화). 비밀 회전, 액세스 정책, 감사 기록 등 고급 비밀 관리를 위해서는 Key Vault를 사용해 보세요.
애플리케이션 비밀을 사용하여 데이터베이스에 연결하는 예제:
- 자습서: Azure App Service로 ASP.NET Core 및 Azure SQL Database 앱 배포
- 자습서: Azure SQL Database를 사용하여 Azure에 ASP.NET 앱 배포
- 자습서: Azure App Service에 PHP, MySQL 및 Redis 앱 배포
- Azure에 Node.js + MongoDB 웹앱 배포
- Azure에서 PostgreSQL을 사용하여 Python(Django 또는 Flask) 웹앱 배포
- 자습서: Azure App Service on Linux 및 MySQL을 사용하여 Tomcat 웹앱 빌드
- 자습서: Azure App Service on Linux 및 Azure Cosmos DB를 사용하여 Java Spring Boot 웹앱 빌드
다음 단계
다음의 방법을 알아보세요.
- Azure Key Vault에 안전하게 비밀을 저장합니다.
- 관리 ID를 사용하여 리소스에 액세스합니다.
- App Service 앱 설정을 사용하여 비밀을 저장합니다.
- 사용자 권한으로 Microsoft Graph에 연결합니다.
- 사용자 권한으로 SQL 데이터베이스에 연결합니다.
- 사용자 권한으로 다른 App Service 앱에 연결합니다.
- 사용자 권한으로 다른 App Service 앱에 연결한 다음, 다운스트림 서비스에 연결합니다.