Share via


App Service 배포에서 기본 인증 사용 안 함

이 문서에서는 App Service 앱에 코드를 배포할 때 기본 인증(사용자 이름 및 암호 인증)을 사용하지 않도록 설정하는 방법을 보여 줍니다.

App Service는 배포 자격 증명을 사용하여 FTP 및 WebDeploy 클라이언트가 연결할 기본 인증을 제공합니다. 이러한 API는 사이트의 파일 시스템을 검색하고, 드라이버 및 유틸리티를 업로드하고, MsBuild를 사용하여 배포하는 데 적합합니다. 그러나 엔터프라이즈에는 Microsoft Entra ID 인증과 같은 기본 인증보다 더 안전한 배포 방법이 필요한 경우가 많습니다(Azure App Service의 배포 방법별 인증 유형 참조). Microsoft Entra는 OAuth 2.0 토큰 기반 권한 부여를 사용하며 기본 인증의 문제를 완화하는 데 도움이 되는 많은 이점과 개선 사항을 제공합니다. 예를 들어 OAuth 액세스 토큰은 사용 가능한 수명이 제한되어 있으며, 발급된 애플리케이션 및 리소스와 관련이 있으므로 다시 사용할 수 없습니다. Microsoft Entra를 사용하면 관리 ID를 사용하여 다른 Azure 서비스에서 배포할 수도 있습니다.

기본 인증 비활성화

기본 인증에 대한 두 가지 컨트롤을 사용할 수 있습니다. 특별한 사항

  1. Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.

  2. 앱의 왼쪽 메뉴에서 구성>일반 설정을 선택합니다.

  3. SCM 기본 인증 게시 자격 증명 또는 FTP 기본 인증 게시 자격 증명의 경우 끄기, 저장을 선택합니다.

    A screenshot showing how to disable basic authentication for Azure App Service in the Azure portal.

FTP 액세스가 차단되어 있는지 확인하려면 FTP/S를 사용하여 앱에 연결해 보세요. 401 Unauthenticted 메시지가 표시됩니다.

Git 액세스가 차단되어 있는지 확인하려면 로컬 Git 배포를 시도합니다. Authentication failed 메시지가 표시됩니다.

기본 인증을 사용하지 않고 배포

기본 인증을 사용하지 않도록 설정하면 기본 인증을 사용하는 배포 방법이 작동하지 않습니다.

다음 표에서는 기본 인증을 사용하지 않도록 설정할 때의 다양한 배포 방법과 대체 메커니즘이 있는지를 보여 줍니다. 자세한 내용은 Azure App Service의 배포 방법별 인증 유형을 참조하세요.

배포 방법 기본 인증이 사용되지 않도록 설정된 경우
Visual Studio 배포 작동하지 않음.
FTP 작동하지 않음.
로컬 Git 작동하지 않음.
Azure CLI Azure CLI 2.48.1 이상에서는 다음 명령이 Microsoft Entra 인증으로 대체됩니다.
- az webapp up
- az webapp deploy
- az webapp deployment source config-zip
- az webapp log deployment show
- az webapp log deployment list
- az webapp log download
- az webapp log tail
- az webapp browse
- az webapp create-remote-connection
- az webapp ssh
- az functionapp deploy
- az functionapp log deployment list
- az functionapp log deployment show
- az functionapp deployment source config-zip 
Maven 플러그 인 또는 Gradle 플러그 인 작동함.
App Service Build Service를 사용하는 GitHub 작동하지 않음.
GitHub Actions - 기본 인증을 사용하는 기존 GitHub Actions 워크플로는 인증할 수 없습니다. 배포 센터에서 기존 GitHub 구성의 연결을 끊고 그 대신 사용자 할당 ID 옵션을 사용하여 새 GitHub Actions 구성을 만듭니다.
- 기존 GitHub Actions 배포가 수동으로 구성된 경우 대신 서비스 주체 또는 OpenID Connect를 사용해 보세요.
- 배포 센터의 새 GitHub Actions 구성의 경우 사용자 할당 ID 옵션을 사용합니다.
만들기 마법사에서 배포 기본 인증사용 안 함으로 설정하고 지속적인 배포사용으로 설정하면 GitHub Actions가 사용자 할당 ID 옵션(OpenID Connect)으로 구성됩니다.
App Service Build Service를 사용하는 Azure Repos 작동하지 않음.
BitBucket 작동하지 않음.
AzureWebApp 작업을 사용하는 Azure Pipelines 작동함.
AzureRmWebAppDeployment 작업을 사용하는 Azure Pipelines - 최신 AzureRmWebAppDeployment 작업을 사용하여 대체 동작을 가져옵니다.
- 게시 프로필(PublishProfile) 연결 형식은 기본 인증을 사용하기 때문에 작동하지 않습니다. 연결 형식을 Azure Resource Manager(AzureRM)로 변경합니다.
- 비 Windows Pipelines 에이전트에서 인증이 작동합니다.
- Windows 에이전트에서는 작업에서 사용하는 배포 방법을 수정해야 할 수 있습니다. 웹 배포를 사용하고(DeploymentType: 'webDeploy') 기본 인증을 사용하지 않도록 설정하면 작업이 Microsoft Entra 토큰으로 인증됩니다. windows-latest 에이전트를 사용하지 않거나 자체 호스팅 에이전트를 사용하는 경우 추가 요구 사항이 있습니다. 자세한 내용은 Windows 에이전트에서 Microsoft Entra 인증을 사용하여 Azure App Service에 웹 배포할 수 없을을 참조하세요.
- zip 배포 또는 패키지에서 실행과 같은 기타 배포 방법이 작동합니다.

기본 인증에 대한 권한 없이 사용자 지정 역할 만들기

권한이 낮은 사용자가 모든 앱에 대해 기본 인증을 사용하도록 설정하지 않도록 하려면 사용자 지정 역할을 만들고 사용자를 역할에 할당할 수 있습니다.

  1. Azure Portal의 위쪽 메뉴에서 사용자 지정 역할을 만들려는 구독을 검색하여 선택합니다.

  2. 왼쪽 탐색 영역에서 액세스 제어(IAM)>추가>사용자 지정 역할 추가를 선택합니다.

  3. 원하는 대로 기본 탭을 설정한 후, 다음을 선택합니다.

  4. 사용 권한 탭에서 권한 제외를 선택합니다.

  5. Microsoft Web Apps를 찾아서 선택한 후, 다음 작업을 검색합니다.

    연산 설명
    microsoft.web/sites/basicPublishingCredentialsPolicies/ftp App Service 앱에 대한 FTP 게시 자격 증명입니다.
    microsoft.web/sites/basicPublishingCredentialsPolicies/scm App Service 앱에 대한 SCM 게시 자격 증명입니다.
    microsoft.web/sites/slots/basicPublishingCredentialsPolicies/ftp App Service 슬롯에 대한 FTP 게시 자격 증명입니다.
    microsoft.web/sites/slots/basicPublishingCredentialsPolicies/scm App Service 슬롯에 대한 SCM 게시 자격 증명입니다.
  6. 이러한 각 작업에서 쓰기 상자를 선택한 다음 추가를 선택합니다. 이 단계에서는 역할에 대한 NotActions로 작업을 추가합니다.

    사용 권한 탭은 다음 스크린샷과 같이 표시됩니다.

    A screenshot showing the creation of a custom role with all basic authentication permissions excluded.

  7. 검토 + 생성를 선택한 다음, 생성를 선택합니다.

  8. 이제 조직의 사용자에게 이 역할을 할당할 수 있습니다.

자세한 내용은 Azure CLI를 사용하여 사용자 지정 역할 만들기 또는 업데이트를 참조하세요.

기본 인증 시도 모니터링

시도했거나 성공한 모든 로그인은 Azure Monitor AppServiceAuditLogs 로그 형식에 기록됩니다. FTP 및 WebDeploy에서 시도했거나 성공한 로그인을 감사하려면 Azure Monitor에 로그 보내기의 단계를 수행하고 AppServiceAuditLogs 로그 형식의 전달을 사용하도록 설정합니다.

로그가 선택한 서비스로 전달되는지 확인하려면 FTP 또는 WebDeploy를 통해 로그인해 보세요. 다음 예에서는 스토리지 계정 로그를 보여 줍니다.

{
  "time": "2023-10-16T17:42:32.9322528Z",
  "ResourceId": "/SUBSCRIPTIONS/EF90E930-9D7F-4A60-8A99-748E0EEA69DE/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.WEB/SITES/MY-DEMO-APP",
  "Category": "AppServiceAuditLogs",
  "OperationName": "Authorization",
  "Properties": {
    "User": "$my-demo-app",
    "UserDisplayName": "$my-demo-app",
    "UserAddress": "24.19.191.170",
    "Protocol": "FTP"
  }
}

Azure Policy를 통해 조직 표준을 적용하고 규모에 맞게 규정 준수를 평가할 수 있습니다. Azure Policy를 사용하여 여전히 기본 인증을 사용하는 모든 앱에 대해 감사하고 비준수 리소스를 수정할 수 있습니다. 다음은 App Service에서 기본 인증을 감사하고 수정하기 위한 기본 제공 정책입니다.

슬롯에 해당하는 정책은 다음과 같습니다.

자주 묻는 질문

Visual Studio에서 기본 인증이 비활성화되었다는 경고가 표시되는 이유는 무엇인가요?

Visual Studio에서 Azure App Service에 배포하려면 기본 인증이 필요합니다. 경고는 앱의 구성이 변경되었으므로 더 이상 앱에 배포할 수 없음을 알려 줍니다. 앱에서 직접 기본 인증을 사용하지 않도록 설정했거나 조직 정책에 따라 App Service 앱에 대해 기본 인증을 사용하지 않도록 설정되어 있습니다.