Azure Data Studio - Azure 연결

Azure Data Studio는 기본적으로 MSAL(Microsoft 인증 라이브러리)을 사용하여 Microsoft Entra ID에서 액세스 토큰을 획득합니다. Microsoft Entra 인증에 적용되는 설정과 일반적으로 관찰되는 문제 및 해결 방법에 대해 설명합니다.

참고 항목

Microsoft Entra ID는 Azure AD(Azure Active Directory)의 새 이름이지만 기존 환경의 중단을 방지하기 위해 Azure AD는 UI 필드, 연결 공급자, 오류 코드 및 cmdlet과 같은 일부 하드 코드된 요소에서 여전히 다시 기본. 이 문서에서는 두 이름을 서로 교환할 수 있습니다.

Azure: 인증 라이브러리

이 설정은 Azure Data Studio 1.41에서 1.45까지만 사용할 수 있습니다. Azure Data Studio 1.46 이상 버전에서는 더 이상 사용할 수 없습니다.

이 설정은 Microsoft Entra 계정을 추가할 때 Azure Data Studio에서 사용하는 인증 라이브러리를 제어합니다. MSAL(Microsoft 인증 라이브러리)은 OAuth 2.0 및 OIDC(OpenID 커넥트) 1.0의 표준 규격 구현을 사용하여 인증 및 권한 부여 서비스를 제공합니다. MSAL(Microsoft 인증 라이브러리)에 대해 자세히 알아보세요. Azure Data Studio 1.46 이상 버전에서 MSAL은 ADAL(Active Directory 인증 라이브러리)이 더 이상 사용되지 않으므로 사용 중인 유일한 라이브러리입니다.

Azure 인증 방법

Azure Data Studio는 다음 모드를 사용하여 Microsoft Entra MFA(다단계 인증)를 지원합니다.

  • 코드 부여 인증 사용(기본적으로 사용)
  • 디바이스 코드 인증 사용

> 계정 Azure > 인증: 코드 부여

Settings.json

"accounts.azure.auth.codeGrant": true

Screenshot of Azure authentication Code Grant option.

Code Grant 메서드가 검사 브라우저 기반 인증을 사용하여 인증하라는 메시지가 사용자에게 표시됩니다. 기본적으로 이 옵션은 사용하도록 설정됩니다.

> 계정 Azure > 인증: 디바이스 코드

Settings.json

"accounts.azure.auth.deviceCode": true

Screenshot of Azure authentication Device Code option.

디바이스 코드 메서드를 사용하도록 설정하면 사용자에게 로그인하는 데 사용할 수 있는 코드 및 입력 URL이 제공됩니다.

두 옵션이 모두 검사 때 Microsoft Entra 계정을 추가할 때 두 인증 모드 중 하나를 선택하라는 메시지가 사용자에게 표시됩니다.

Azure 클라우드 구성

Azure Data Studio는 국가별 클라우드를 사용한 Microsoft Entra 인증을 지원합니다. Azure 퍼블릭 클라우드 는 기본적으로 사용하도록 설정되어 있지만 사용자는 필요에 따라 다른 국가별 클라우드를 사용하도록 설정할 수 있습니다.

Settings.json

"accounts.azure.cloud.enableChinaCloud": false,
"accounts.azure.cloud.enablePublicCloud": true,
"accounts.azure.cloud.enableUsGovCloud": false

Screenshot of Azure authentication National Clouds.

사용자 지정 클라우드 엔드포인트도 정의할 수 있습니다. 사용자 지정 클라우드 엔드포인트 구성을 참조 하세요.

Azure 리소스 구성

이러한 설정은 Azure 리소스 및 테넌트에 필터를 적용합니다.

  • 리소스 구성 필터: 표시해야 하는 리소스에 포함 필터를 적용합니다.
  • 테넌트 구성 필터: 무시해야 하는 테넌트에 제외 필터를 적용합니다.

Settings.json

"azure.resource.config.filter": [],
"azure.tenant.config.filter": [
    "313b5f9e-9b92-414c-8d87-a317e42d0222"
]

Screenshot of Azure authentication resource configuration options.

Microsoft Entra 인증을 위한 프록시 설정

프록시 뒤에서 Azure Data Studio를 사용하는 경우 사용자는 외부 엔드포인트와 통신하기 위해 Azure Data Studio에 대한 프록시 설정을 지정해야 합니다. Azure Data Studio에서 사용할 프록시 설정을 제공하는 방법에는 두 가지가 있습니다.

  • Azure Data Studio에서 프록시 구성 설정(설정 > Http: 프록시 설정)
  • 프록시 구성에 대한 환경 변수 설정

Azure Data Studio 설정이 환경 변수보다 우선합니다.

Azure Data Studio 프록시 설정

다음 설정은 Azure Data Studio에서 사용할 수 있습니다.

Settings.json

"http.proxy": "https://userName@fqdn:yourPassword@yourProxyURL.com:8080",
"http.proxyStrictSSL": true,
"http.proxyAuthorization": "",
"http.proxySupport" : "override"

Screenshot of Azure authentication proxy settings.

프록시에 지원되는 환경 변수

  • 'HTTP_PROXY': 'http://userName@fqdn:yourPassword@yourProxyURL.com:8080'
  • 'HTTPS_PROXY': 'https://userName@fqdn:yourPassword@yourProxyURL.com:8080'

허용 목록 URL

프록시 환경에서 사용자 애플리케이션은 Azure Data Studio에서 사용하는 특정 작업을 허용해야 기본 수 있습니다. 통신을 허용해야 하거나 허용할 수 있는 호스트 이름은 다음과 같습니다.

Azure 공용

  • https://management.azure.com
  • https://login.microsoftonline.com/

Azure(미국 정부)

  • https://management.core.usgovcloudapi.net/
  • https://login.microsoftonline.us/

21Vianet에서 운영하는 Azure

  • https://management.core.chinacloudapi.cn/
  • https://login.partner.microsoftonline.cn/

허용할 URL은 경우에 따라 달라질 수 있습니다. URL이 통과하지 못하도록 차단하지 않는지 확인하려면 개발자 도구 토글 도움말 > 로 이동하여 네트워크 탭을 선택합니다. 차단된 모든 URL이 나열되며 해당 URL이 계정을 성공적으로 추가하도록 허용해야 할 수 있습니다.

사용자 지정 클라우드 엔드포인트 구성

Azure Data Studio 1.46에서는 비공개 클라우드에 대한 사용자 지정 엔드포인트 추가를 지원합니다.

사용자 지정 클라우드 엔드포인트 추가

Azure Data Studio(Ctrl/Cmd + Shift + P)에서 설정 열고 Azure: 사용자 지정 공급자 설정 입력한 다음 settings.json에서 편집을 선택하여 파일을 자동으로 열고 다음을 settings.json 추가azure.customProviderSettings합니다.

Screenshot of azure.customProviderSettings added to settings.json file.

엔드포인트가 작동하려면 다음 항목이 필요합니다.

  • host
  • clientId
  • scopes
  • sqlResource
  • microsoftResource
  • armResource
  • graphResource
  • azureStorageResource

한 공급자에 대한 예제 JSON 항목이 가이드로 표시됩니다.

"azure.customProviderSettings": [
    {
        "name": "Azure Custom",
        "settings": {
            "metadata": {
                "displayName": "Azure Custom Cloud",
                "id": "azure_customCloud",
                "endpoints": {
                    "host": "https://hostendpoint.com/",
                    "clientId": "test",
                    "microsoftResource": "https://microsoftresource.com/",
                    "graphResource": "https://graphresource.com/",
                    "msGraphResource": "https://msgraphresource.com/",
                    "armResource": "https://armresource.com/",
                    "sqlResource": "https://sqlresource.net/",
                    "azureKeyVaultResource": "https://azurekeyvault.net/",
                    "azureLogAnalyticsResource": "https://azure.loganalytic.io/",
                    "azureStorageResource": {
                        "endpoint": "",
                        "endpointSuffix": ".azurestorage.net/"
                    },
                    "azureKustoResource": "https://kusto.net/",
                    "powerBiResource": "https://powerbi.net/",
                    "scopes": "https://management.net/scopes",
                    "portalEndpoint": "https://portal.azure.com"
                }
            }
        }
    }
]

엔드포인트를 추가한 후 파일을 저장합니다 settings.json . Azure Data Studio는 애플리케이션을 다시 로드하도록 알 수 있습니다. 다시 로드되면 사용자 지정 엔드포인트가 로드되었다는 알림이 표시됩니다.

Screenshot after reloading Azure Data Studio indicating custom endpoints have been loaded.

이 메시지가 표시되지 않으면 엔드포인트에 대한 모든 항목이 존재하고 채워지게 검사.

사용자 지정 클라우드를 추가한 후 Azure 연결된 계정 창을 열고 사용자 지정 클라우드 뷰렛이 나타납니다. 계정 추가를 선택하고 메시지가 표시되면 인증 모드를 선택합니다. 인증을 위해 호스트 엔드포인트로 이동됩니다.

Screenshot of a custom cloud provider in the Azure accounts pane.

여러 사용자 지정 클라우드 공급자

동일한 형식을 사용하여 추가 클라우드 공급자를 settings.json 파일에 추가할 수 있습니다.

"azure.customProviderSettings": [
    {
        "name": "Azure Custom",
        "settings": {
            "metadata": {
                "displayName": "Azure Custom Cloud",
                "id": "azure_customCloud",
                "endpoints": {
                    "host": "https://hostendpoint.com/",
                    "clientId": "test",
                    "microsoftResource": "https://microsoftresource.com/",
                    "graphResource": "https://graphresource.com/",
                    "msGraphResource": "https://msgraphresource.com/",
                    "armResource": "https://armresource.com/",
                    "sqlResource": "https://sqlresource.net/",
                    "azureKeyVaultResource": "https://azurekeyvault.net/",
                    "azureLogAnalyticsResource": "https://azure.loganalytic.io/",
                    "azureStorageResource": {
                        "endpoint": "",
                        "endpointSuffix": ".azurestorage.net/"
                    },
                    "azureKustoResource": "https://kusto.net/",
                    "powerBiResource": "https://powerbi.net/",
                    "scopes": "https://management.net/scopes",
                    "portalEndpoint": "https://portal.azure.com"
                }
            }
        }
    },
    {
        "name": "Azure Custom 2",
        "settings": {
            "metadata": {
                "displayName": "Azure Custom Cloud 2",
                "id": "azure_customCloud2",
                "endpoints": {
                    "host": "https://hostendpoint.com/",
                    "clientId": "test",
                    "microsoftResource": "https://microsoftresource.com/",
                    "graphResource": "https://graphresource.com/",
                    "msGraphResource": "https://msgraphresource.com/",
                    "armResource": "https://armresource.com/",
                    "sqlResource": "https://sqlresource.net/",
                    "azureKeyVaultResource": "https://azurekeyvault.net/",
                    "azureLogAnalyticsResource": "https://azure.loganalytic.io/",
                    "azureStorageResource": {
                        "endpoint": "",
                        "endpointSuffix": ".azurestorage.net/"
                    },
                    "azureKustoResource": "https://kusto.net/",
                    "powerBiResource": "https://powerbi.net/",
                    "scopes": "https://management.net/scopes",
                    "portalEndpoint": "https://portal.azure.com"
                }
            }
        }
    }
]

일반적인 인증 문제

Azure 계정을 추가할 때 발생할 수 있는 문제 및 해결 방법에 대해 설명합니다.

문제: localhost 페이지의 SSL 오류(ERR_SSL_PROTOCOL_ERROR)

사용자가 자신의 계정에 로그인할 때 SSL 오류가 표시 될 수 있습니다. 이 흐름은 일반적으로 사용자에게 표준 Microsoft 인증 프롬프트를 통해 로그인하라는 메시지를 표시하는 외부 웹 페이지를 localhost엽니다. 이 페이지의 URL은 다음과 유사합니다. http://localhost:50055/signin?nonce=...

일부 브라우저는 모든 http 링크를 https자동으로 리디렉션하도록 설정할 수 있습니다. 웹 페이지를 제공하는 로컬 서버가 https를 지원하지 않으므로 이 프로세스가 중단됩니다. 주소 표시줄의 링크가 시작 https되면 SSL 오류가 표시되고 페이지를 로드할 수 없습니다. 이 경우 여기에 나열된 해결 방법으로 문제를 해결할 수 있습니다.

URL을 http로 변경

먼저 URL을 .로 https:// 수동으로 변경합니다 http://. 브라우저에서 https로 다시 변경할 수 있습니다. 이 경우 다른 옵션을 시도해야 합니다.

HSTS 사용 안 함(HTTP 엄격한 전송 보안)

Edge/Chrome 브라우저의 경우 localhost에 대해 HSTS를 사용하지 않도록 설정할 수 있습니다.

  1. Edge/Chrome을 열고 주소 표시줄에서 (또는 chrome://net-internals/#hsts Chrome의 경우) 입력 edge://net-internals/#hsts 합니다.
  2. 페이지 아래쪽으로 스크롤하고 Delete domain security policies 섹션에서 입력 localhost 하고 누릅니다 Delete.

완료되면 로그인할 수 있어야 하며 브라우저에서 링크를 자동으로 리디렉션 localhost 하지 않아야 합니다 https.

문제: 프록시 뒤에 계정을 추가할 수 없음

사용자 애플리케이션이 프록시 뒤에 있는 환경에서 실행 중인 경우 사용자 인증이 완료되지 않을 수 있으며 이러한 단계를 사용하여 문제를 해결할 수 있습니다.

  1. Azure Data Studio에서 환경 변수 및 http.proxy 설정을 다시 검사. 프록시에 사용자 인증이 필요한 경우 http.proxy URL에 사용자 이름/암호를 제공하면 인증 문제가 해결될 수 있습니다. 그렇지 않으면 Azure Data Studio에서 로그인한 사용자 자격 증명을 읽을 수 없습니다. 또는 프록시 인증 문제를 해결하는 데 도움이 될 수 있으므로 다른 사용자로 Azure Data Studio를 실행해 볼 수 있습니다. 그러나 후자는 일부 시나리오에서만 작동합니다.

  2. 허용할 URL은 대/소문자별로 다를 수 있습니다. URL의 통과를 차단하지 않는지 확인하려면 개발자 도구 토글 도움말 > 로 이동하여 네트워크 탭을 선택합니다. 여기에 계정을 성공적으로 추가하도록 허용해야 할 수 있는 차단되는 URL이 표시됩니다.

  3. un검사 http: Proxy Strict SSL. 신뢰할 수 있는 CA 목록에 대해 프록시 인증서를 확인할 수 없는 것일 수 있습니다. Strict SSL을 사용하지 않도록 설정하면 프록시 인증서를 문제로 배제할 수 있습니다.

결론을 내릴 수 있습니다.

플랫폼 간 애플리케이션인 Azure Data Studio 프록시 확인은 애플리케이션 내의 설정 또는 환경 변수를 통해 프록시를 가져옵니다. 다른 운영 체제에서 크게 달라질 수 있는 시스템 설정과의 상호 작용을 방지하는 것이 목표입니다.

문제: Azure Core 확장을 사용할 수 없음

Azure Core 확장은 Azure Data Studio의 기본 제공 확장입니다. 실수로 비활성화되거나 제거되지 않았는지 확인합니다. 이 확장은 Microsoft Entra 계정을 인증하고 MFA를 사용하여 리소스에 연결하는 데 필요합니다.

Screenshot of built-in Azure Core extension.

문제: 시스템 CA 인증서가 만료되었습니다.

Azure Data Studio의 기본 동작에는 HTTPS 프로토콜을 사용하여 REST API를 호출할 때 시스템의 루트 CA 인증서 유효성 검사가 포함됩니다. 유효성 검사는 기본적으로 사용하도록 설정된 설정으로 http:systemCertificates 제어됩니다.

Screenshot of system certificates setting.

"http.systemCertificates": true

시스템의 루트 CA 인증서가 만료되면 Microsoft Entra ID에 대한 인증 요청이 실패하고 Azure 계정 로그에 오류가 캡처됩니다.

error: certificate is expired

이 오류를 완화하려면 만료된 루트 CA 인증서를 제거하거나 시스템 인증서의 유효성을 검사하지 않도록 설정을 사용하지 않도록 설정해야 합니다.

Azure 인증에 대한 로그 캡처

Azure Data Studio는 기본적으로 Microsoft Entra 계정 활동에 대한 오류 이벤트를 캡처합니다. 더 자세한 추적을 사용하도록 설정하기 위해 사용자는 다음 설정을 수정할 수 있습니다.

Azure: 로깅 수준

이 설정은 Azure Data Studio에서 캡처할 수 있는 Azure Core의 정보에 대한 로깅 수준을 구성합니다. 자세한 로그를 캡처하려면 자세한 정보 표시 또는 모두 로 변경하여 인증 실패를 진단하는 데 유용할 수 있습니다. 자세한 내용은 Azure Data Studio 로그 및 위치를 참조하여 로깅 정보를 캡처하는 방법을 알아봅니다.

Settings.json

"azure.loggingLevel": "Verbose"

Screenshot of Azure authentication logging Level configuration.

Azure: PII 로깅

사용자는 로컬 테스트 및 디버깅을 위해 PII(개인 식별 정보) 로깅을 사용하도록 설정할 수 있습니다. 이 설정을 사용하면 인증 프로세스를 보다 철저하게 로깅할 수 있지만 Microsoft Entra ID로 인증할 때 액세스 토큰 또는 사용자 ID와 같은 중요한 정보가 포함될 수 있습니다. 이 로깅은 중요한 정보를 캡처하므로 다음을 수행하는 것이 좋습니다.

  • 특히 GitHub 문제에 로그를 추가할 때 다른 사용자와 이러한 로그를 공유하지 않음
  • 필요한 정보가 수집되면 설정을 사용하지 않도록 설정합니다.
  • 설정을 사용하지 않도록 설정하면 로그 파일을 삭제합니다.

Settings.json

"azure.piiLogging": true

Screenshot of Azure authentication PII logging option.

Azure: 시스템 키체인 없음

이 설정은 macOS에서 반복되는 키체인 액세스 프롬프트를 방지하기 위해 시스템 키체인 통합을 사용하지 않도록 설정합니다. 사용자 자격 증명은 사용자의 홈 디렉터리에 있는 플랫 파일에 저장됩니다.

Settings.json

"azure.noSystemKeychain": true

Screenshot of Azure authentication keychain configuration.

Microsoft Entra 계정 토큰 캐시 지우기

Azure Data Studio는 microsoft Entra ID에 대한 토큰 요청의 제한을 방지하기 위해 액세스 토큰 캐시를 기본. Azure Data Studio의 토큰 캐시가 오래되어 애플리케이션 캐시에서 만료된 액세스 토큰을 클린 필요할 수 있습니다.

명령 팔레트(Ctrl/CMD + Shift + P)에서 이 명령을 실행하여 연결된 Microsoft Entra 계정에 대한 액세스 토큰을 지웁니다.

Azure Accounts: Clear Azure Account Token Cache (accounts.clearTokenCache)

저장된 모든 Microsoft Entra 계정 지우기

명령 팔레트(Ctrl/CMD + Shift + P)에서 이 명령을 실행하여 Azure Data Studio에서 연결된 모든 Microsoft Entra 계정을 제거합니다.

저장된 모든 계정 지우기(clearSavedAccounts)